Availability & Pricing
Which countries and number types are available, what each costs, and which capabilities they support
Availability & Pricing
Numbers are available in 54 countries. Each country has a monthly price, a number type, and a set of supported capabilities. The countries endpoint is the live source of truth; the tables below are a snapshot.
All 54 countries are available on the usage-based Usage plan, which telephony requires. Numbers provision inline and bill per month on your usage-based invoice. See billing model.
Check availability (live)
listPhoneNumberCountries (GET /v1/phone-numbers/countries) returns every offerable country with its current monthly price and per-capability flags. Use it to drive a country picker instead of hardcoding the tables below.
const { data } = await zernio.phonenumbers.listPhoneNumberCountries();
data.countries.forEach(c =>
console.log(c.code, `$${(c.monthlyCents / 100).toFixed(2)}/mo`, {
calls: c.callsAvailable, // PSTN voice (every country)
sms: c.smsAvailable, // SMS stock (subset)
whatsapp: c.whatsappAvailable, // connect a WABA
kyc: c.needsKyc, // regulated country
})
);response = client.phone_numbers.list_phone_number_countries()
for c in response.countries:
print(c.code, f"${c.monthly_cents / 100:.2f}/mo",
{"calls": c.calls_available, "sms": c.sms_available,
"whatsapp": c.whatsapp_available, "kyc": c.needs_kyc})curl "https://zernio.com/api/v1/phone-numbers/countries" \
-H "Authorization: Bearer YOUR_API_KEY"Pricing by country
Price is per number, per month, billed by the active day, and is separate from usage (call minutes, SMS segments). Countries marked † provision instantly; every other country is flagged needsKyc by the countries endpoint and requires a one-time KYC form, activating within 1-3 business days of the regulatory review.
| Price / mo | Countries |
|---|---|
| $2 | United States †, Canada †, U.S. Virgin Islands †, Ireland, Austria, Belgium, Czechia, Finland, France, Germany, Greece, Hungary, Italy, Lithuania, Luxembourg, New Zealand, Norway, Portugal, Romania, Slovakia, Spain, Switzerland, United Kingdom |
| $3 | Puerto Rico †, Netherlands †, Brazil, Croatia, Estonia |
| $4 | Israel †, Latvia |
| $5 | Cyprus, Mexico, Singapore |
| $6 | Iceland †, Australia |
| $8 | Denmark †, Argentina, Chile, Dominican Republic, Réunion, Turkey |
| $10 | El Salvador †, Guadeloupe, Martinique, Panama, Poland, South Africa, Sweden, French Guiana |
| $12 | Costa Rica |
| $15 | Georgia, Thailand |
| $20 | Colombia †, Indonesia |
Prices are computed server-side (carrier cost snapped up to a fixed ladder, $2 floor, $25 cap). A country whose cost would exceed $25 is not offered. The countries endpoint always returns the current price; treat these tiers as indicative.
Number types
Numbers are local, mobile, or national, depending on the country's inventory. We do not sell toll-free numbers through this flow. The type is chosen automatically per country to be the one that works across capabilities; you do not pick it.
Capabilities by country
Not every country supports every feature. The countries endpoint returns a flag per capability so you never have to guess.
| Capability | Where |
|---|---|
| Calls (PSTN) | Every country. Voice is available on every number we provision, on by default. |
| SMS | A subset only: Australia, Belgium, Canada, United Kingdom, Lithuania, Netherlands, Poland, Puerto Rico, Sweden, United States, U.S. Virgin Islands, South Africa. Even there, SMS support is confirmed per number, not per country (see below). |
| Every country. Any number can be connected to a WhatsApp Business Account. | |
| WhatsApp outbound calling | Everywhere except US, Canada, Egypt, Vietnam, and Nigeria, where Meta blocks business-initiated calls (inbound still works). This is WhatsApp Business Calling, a different feature from PSTN Calls. |
SMS is a per-number capability, not just a per-country one. The country list above tells you where SMS-capable stock generally exists, but the real check happens when you enable SMS on a specific number: if that number cannot text, enabling is refused. Search with sms=true to draw only from the SMS-capable pool.