Usage and billing
Prepaid, per SMS part, from your organization’s wallet.
What’s charged
| Action | Charge |
|---|---|
| SMS (single or bulk) | Price per part × parts, by destination network. |
| OTP code (each send and resend) | OTP price per part. Checking codes is free. |
| Sandbox requests | Free. |
| Failed before reaching the network (not_sent) | Nothing — the hold is released. |
Current prices are shown in the dashboard (Wallet) and with each cost estimate. Prices can change; each message records the price applied to it.
How a charge works
- When you send, the price is calculated and held in your wallet (it moves from available to reserved). If the wallet can’t cover it, the request fails with
INSUFFICIENT_FUNDSand nothing is sent. - When the network accepts the message the hold becomes a charge.
- If the message is never sent the hold is released in full.
Every message carries its charge, and every wallet movement is listed in Wallet → Transactions.
Balance
curl -X GET "https://api.nopexo.com/v1/account/balance" \
-H "Authorization: Bearer $NOPEXO_API_KEY"Usage
More → Developers → Usage shows API requests per day, errors, response times and which keys and endpoints were used. Each request has a trace ID (the X-Request-Id header) you can quote to support. Spending per project is in Wallet → Usage; delivery results are in /v1/sms/reports.
Limits
| Limit | Default |
|---|---|
| Requests per API key | 120 per minute |
| SMS per project | 60 per minute (use bulk for more) |
| OTP codes per project | 30 per minute |
| OTP codes per number | 5 per hour per project (configurable); 10 per hour across all of Nopexo for production codes (sandbox codes never count) |
| Bulk batch | 10,000 recipients per request |
| Sandbox | 200 SMS and 100 OTP codes per project per day |