> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zavu.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Sending Limits

> What a new account can send, how the limits rise with verification, and the destination_not_verified and daily_limit_exceeded errors

Every account can send from the first minute. Two things change as an account proves who it is: which phone numbers it may reach on the carrier channels, and how much it may send per day.

## Account levels

| Level          | How it is reached                                                                         | What it can do                                                                                                    |
| -------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Unverified** | A new account that has proven nothing yet                                                 | Sends on every channel, but `sms`, `sms_oneway` and `voice` reach only the phone numbers the project has verified |
| **Verified**   | Any one of: identity verification, a saved payment method, a settled deposit, a paid plan | Sends to any destination, within the daily ceilings below                                                         |
| **Business**   | Business verification (KYB)                                                               | Everything above, plus 10DLC brand and campaign registration for US SMS                                           |

Business verification is never required to send. It gates 10DLC registration only, because carriers register a brand against a vetted legal entity.

Accounts created before 24 August 2026 start at Verified.

## Verifying a phone number

An unverified account can text and call the numbers it has verified. A number is verified from the phone itself, which is what makes the check mean something:

1. In the dashboard, go to **Sandbox** and click **Generate Verification Code**.
2. Scan the QR code or click **Open WhatsApp** on the phone you want to verify.
3. Send the pre-filled `VERIFY-` message to Zavu's sandbox number.

The number is marked verified automatically. One verification covers WhatsApp, SMS and calls. Up to 5 numbers per project; a code expires after 10 minutes. There is nothing to type into the dashboard, no API call, and no support ticket.

## Sending to any number

Do any one of these in the dashboard. Each is self-serve:

* Verify your identity under **Identity verification** (`/kyc`): an ID document and a selfie, a few minutes.
* Add a payment method under **Billing**: about half a minute. Nothing is charged.
* Settle a deposit under **Billing**.
* Subscribe to a paid plan.

Any one of them moves the account to Verified. From then on `sms`, `sms_oneway` and `voice` reach any destination.

## Daily ceilings

Channels that share a budget share one counter. Counts reset at 00:00 UTC.

| Budget         | Channels                                         | Unverified | Verified                                                                  |
| -------------- | ------------------------------------------------ | ---------- | ------------------------------------------------------------------------- |
| SMS            | `sms`, `sms_oneway`                              | 25/day     | 200/day, or 10,000/day once identity or business verification is approved |
| Voice          | `voice`                                          | 5/day      | 50/day on Free, no ceiling on paid plans                                  |
| Conversational | `whatsapp`, `telegram`, `instagram`, `messenger` | 100/day    | 250/day on Free, no ceiling on paid plans                                 |
| Email          | `email`                                          | Plan quota | Plan quota                                                                |

* The SMS ceiling above Sandbox keys on identity, not on the level: an account that reached Verified by saving a card sends 200 a day until its identity or business verification is approved. A higher limit can be agreed for an account.
* Email has no verification gate on single sends. A sender with a verified domain sends from day one, within the plan's quota: 100 a day and 3,000 a month on Free.
* A daily ceiling never reduces a monthly allowance: 100 a day on the conversational group still reaches the 2,000 messages a month Free includes.
* Broadcasts count each recipient against the same ceiling. Recipients beyond it are marked `failed` with `errorCode` `DAILY_LIMIT_EXCEEDED` and are not retried the next day.

## Errors

### `destination_not_verified` (403)

Returned by `POST /v1/messages` on `sms`, `sms_oneway` and `voice`, and by `POST /v1/calls`, when an unverified account targets a number it has not verified.

```json theme={null}
{
  "code": "destination_not_verified",
  "message": "This account can only send to numbers it has verified. Verify your identity or add a payment method to send anywhere.",
  "details": {
    "verifiedNumbers": ["+56912345678"],
    "dashboardUrl": "/kyc"
  }
}
```

Send to one of `details.verifiedNumbers`, verify the number you meant to reach, or move the account to Verified.

### `daily_limit_exceeded` (429)

Returned by `POST /v1/messages` and `POST /v1/calls` when the channel group's ceiling for today is spent.

```json theme={null}
{
  "code": "daily_limit_exceeded",
  "message": "Daily SMS limit reached (25/day). Verify your identity or add a payment method to raise it.",
  "details": {
    "limit": 25,
    "remaining": 0,
    "dashboardUrl": "/kyc"
  }
}
```

`details.limit` is the ceiling that applied. Wait for 00:00 UTC, or raise it: identity verification or a payment method for the SMS, voice and conversational groups, a plan upgrade for email.

### `kyc_required` (403) on broadcasts

`POST /v1/broadcasts/{broadcastId}/send` refuses an unverified account on every channel except `whatsapp`, where Meta's approval of the template is the review. Any one of the four routes to Verified lifts it. Drafts can be created and edited without it.

```json theme={null}
{
  "code": "kyc_required",
  "message": "Verify your identity, add a payment method, or upgrade before sending broadcasts. You can keep editing this draft in the meantime.",
  "details": {
    "dashboardUrl": "/kyc"
  }
}
```

See [Broadcasts](/guides/broadcasts/overview).

## Test-mode keys

A `zv_test_` key is separate from the levels above. Whatever the account has proven, it sends WhatsApp, Telegram, Instagram and Messenger only to verified numbers, and it cannot place calls.

## Next Steps

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart-messaging">
    Send your first message
  </Card>

  <Card title="Rate Limiting" icon="gauge" href="/concepts/rate-limiting">
    Per-minute API request limits
  </Card>
</CardGroup>
