Skip to content
DocumentationSign in

Channels and billing

Channel order

VERYO picks the channel. The cheapest enabled channel is tried first: Telegram, then WhatsApp, then SMS. If a channel does not deliver the code, the session moves to the next, more expensive one. The code stays the same.

The starting channel is determined as follows:

  1. options.preferred_channel from the request, if that channel is enabled.
  2. The channel that delivered a code to this number in your account, if the number was verified in the last 30 days.
  3. The cheapest enabled channel.

The cascade only moves toward more expensive channels. A request with preferred_channel: "sms" will not fall back to Telegram, even if the SMS does not get through.

When a code counts as delivered

Channel Delivered Moves to the next channel
Telegram Status “delivered” or “read” The number has no Telegram, an error occurred, or no confirmation arrived in the allotted time
WhatsApp Delivery report An error occurred or no report arrived in the allotted time
SMS Carrier delivery report There is no next channel; the session ends as failed

A messenger has about 10 seconds to confirm delivery. If the carrier accepted an SMS but no report arrives within 15 seconds, the SMS counts as delivered and is charged: carrier reports are often late.

What you pay for

You are charged only the price of the channel that delivered the code. Attempts that did not get through are not charged. Current prices are on the pricing page.

Requesting a code requires a balance that covers the most expensive channel, SMS; otherwise the API returns 402 insufficient_balance. The amount actually charged is the price of the channel that delivered the code.

Amounts in the API are in tiyn: *_tiyn fields, 1 ₸ = 100 tiyn. *_kzt fields are in tenge.

You can top up your balance by invoice in the dashboard. The daily spending limit and the low-balance alert are configured in the Alerts & limits section.