# Channels and Limits

> Set the maximum concurrent calls on an Edesy termination trunk, and see what happens when a call goes over a trunk, workspace or wallet limit.

Source: https://edesy.in/docs/sip-trunking/termination-trunks/channels-and-limits

Each Edesy termination trunk has a **max concurrent calls** setting, from 1 to 10,000, with a default of 50. It caps how many calls the trunk carries at the same time. When a new outbound call would go over a limit, Edesy declines it at the SIP layer with a clear response code, so your PBX or platform can retry or fail over.

## Set the limit

In the portal, set **Max concurrent calls** when you create the trunk, or change it later from the trunk page. With the API:

```bash
curl -X PATCH https://voice-api.edesy.in/v1/trunks/TRUNK_ID \
  -H "Authorization: Bearer sk_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"max_concurrent_calls": 100}'
```

Match it to the channel count on your side. In FreePBX, set the trunk's **Maximum Channels** to the same value.

## Limits that can decline a call

| Limit | SIP response | What to do |
|---|---|---|
| Workspace concurrent calls reached | `503 Channel Limit Reached` | Wait for calls to end, or ask support to raise your allowance |
| Workspace call rate (new calls per second) reached | `503 Call Rate Limit Exceeded` | Pace new calls, or ask support for a higher rate |
| Wallet cannot cover the call | `402 Payment Required` | Top up the wallet |
| Caller ID not owned by you | `403 Caller ID Not Authorized` | Send an Edesy number you own as `From` |
| No destination number | `400 Missing Destination` | Put the dialled number in the Request-URI |

All of these happen before the call is placed, so a declined call costs nothing. See [Common SIP Response Codes](https://edesy.in/docs/sip-trunking/troubleshooting/common-sip-response-codes) for the full list.

## Suspend a trunk

Set `status` to `suspended` to stop a trunk without deleting it, and back to `active` to resume:

```bash
curl -X PATCH https://voice-api.edesy.in/v1/trunks/TRUNK_ID \
  -H "Authorization: Bearer sk_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status": "suspended"}'
```

Test calls are disabled while a trunk is suspended.

## FAQ

### Does an inbound call count toward my concurrent calls?

Inbound calls are counted toward the workspace total but are never declined for it. A busy inbound period can therefore cause new outbound calls to get `503 Channel Limit Reached`.

### Is there a charge for a higher channel limit?

The per-trunk cap is free to change. For a higher workspace-wide allowance, [contact us](https://edesy.in/contact).

### Why do my calls stop at 50?

50 is the default per-trunk cap. Raise `max_concurrent_calls` on the trunk.

### Do test calls count toward the limits?

Test calls from the portal are exempt from the channel limits, but are limited to 5 per hour per workspace.
