---
title: Pricing and billing
description: How email, SMS, WhatsApp, and Verify are priced, where to find your rates, and how Zev Credit pays for sends.
---

ZevSend has two billing layers. Plans cover what your team is
allowed to do: which channels, how much included credit, how
many domains and members. Per-send pricing covers what each
message actually costs, and is set on the template you send it
through.

## What you pay for

Each plan is a flat monthly or annual fee. Pick yearly on
checkout to lock the discounted rate. The plan price covers:

- Email up to the daily and monthly quotas printed on the plan
- The monthly **Zev Credit allowance** that drains as you send
  paid messages
- The channels the plan enables. Free is email only; paid plans
  add SMS, WhatsApp, and Verify
- Team members and verified sending domains within the plan
  limits

Anything beyond the included quotas drains from your Zev Credit
balance. You can top up Zev Credit any time from the dashboard.

## Where to find your rates

Open the **Templates** page in the dashboard. Every template
shows its per-send price next to its name. Sample row:

```
otp_login_sms   from ₦5 / send
```

The "from" prefix appears when the template has country-specific
pricing. Open the template to see the full breakdown of the
default rate and every per-country override.

The price is always shown in your team's billing currency, set
when the team was created.

## Per-channel pricing

Each channel has its own pricing shape. The model behind the
scenes is the same (read the price off the template you're
sending through), but the dimensions that affect cost differ.

### Email

Included in your plan up to the monthly quota. Past the quota,
each additional send drains the template's per-send price from
Zev Credit. Most email templates ship priced at zero so customers
who stay inside their plan never see a charge.

### SMS

SMS templates carry a per-send price. The price you see on the
template is the default rate. Some templates additionally have
**per-country overrides**: sending to recipients in those
countries uses the override rate instead of the default. We
surface every applicable rate inline on the template detail
panel so there is no hidden routing.

- We never expose which upstream carrier we use to deliver. The
  template tells you what you pay, end of story.
- The rate is debited from Zev Credit the moment the carrier
  accepts the send. Carrier rejection refunds the credit
  automatically. Failed sends never burn balance.
- Sandbox sends are always free. Switch to live to start
  draining credit.

### WhatsApp

WhatsApp pricing follows the same per-template plus per-country
override model as SMS. WhatsApp's network only delivers
pre-approved template bodies, so the template you see in the
dashboard is also the only thing we can actually send.

WhatsApp providers price by **category** internally
(authentication, utility, marketing) and by destination country.
Both of those land in your per-template rate before you see it.
You only need to look at the template's price, never compute it
yourself.

### Verify (OTP)

Verify has a flat per-currency rate set by the platform admin,
with no per-country variation. Each `start` call drains the
rate; the matching `check` call is free. See the
[Verify (OTP) API reference](/api/verify) for the request shape.

## How sends are charged

Every paid send runs the same cascade:

1. **Plan gate.** Your plan must enable the channel. If it
   doesn't, the send fails with `feature_not_on_plan` before any
   carrier work happens.
2. **Credit check.** Your Zev Credit balance must cover the
   template's price for this send. Insufficient balance returns
   `insufficient_credit` and the send doesn't dispatch.
3. **Dispatch.** We hand the message to the carrier.
4. **Debit.** On a successful submit, we drain the credit. Each
   debit is keyed by the message's public id, so retries never
   double-charge.

Carrier rejections happen before step four, so you only pay for
sends the carrier accepted.

## Currency

Your team's billing currency is set when the team is created and
stays fixed for the team's lifetime. Every invoice, every
template price, and every credit grant or debit uses that
currency. To bill in a different currency, create a separate
team. You can be the owner of multiple teams from the same
account.

## Topping up Zev Credit

Open **Credits** in the dashboard to add credit at any time. You
pick the amount, the payment method (ZevPay hosted checkout or
bank transfer), and the funds land on your team within minutes of
the payment settling. Bank transfers wait on operations to
confirm receipt; ZevPay credits the balance the moment the
webhook fires.