Skip to content

Pricing

One meter: characters of text you send. The list price is 10 paise per 1,000 characters (₹100 per million), the same for every voice, endpoint and format. Roughly 1,000 characters is about a minute of speech. Prices exclude GST (18 %). Plans are per organisation and cover all its projects and keys; months are calendar months in IST.

Pay as you go10 paise per 1,000 characters. Prepaid credits, no card on file, top up from ₹100.

Commit ₹10,000 / month12.5 crore characters included every month (8 paise per 1,000 effective), then 8 paise per 1,000.

Commit ₹25,000 / month40 crore characters included every month (6.25 paise per 1,000 effective), then 6 paise per 1,000.

Pay as you go Commit ₹10,000 Commit ₹25,000
Monthly fee ₹0 ₹10,000 ₹25,000
Included characters per month — 12.5 crore (125,000,000) 40 crore (400,000,000)
Beyond the included block from prepaid credits, 10 p / 1,000 credits first, then 8 p / 1,000 credits first, then 6 p / 1,000
How you pay top-ups through Razorpay Checkout monthly invoice monthly invoice
When credits run out 402 until you top up never cut off never cut off

Launch offer

The first 1,000 sign-ups get 10 lakh (1,000,000) characters of free credit, granted once the e-mail address is verified (Google sign-ins are verified already). It lands on your own organisation. The portal shows how many offers are left.

What counts

Billed characters are the Unicode code points of the request's text, trimmed, counted before normalisation.

  • Digits count as you typed them, not as the words they expand to: 4821 is 4 characters, however long it takes to say.
  • Spaces and punctuation count.
  • Every Devanagari vowel sign (मात्रा), halant (्) and nukta is a character of its own: नमस्ते is 6 (न म स ् त े).
  • On the WebSocket, each message's text is billed the same way.
  • A cancelled request is billed for its full text: it is metered when the stream ends, whether it finished or you closed it.
  • Requests refused with 4xx or 503, or that fail with 500, are not billed. /v1/normalize and /v1/voices are free.

Every request in Usage shows its billed_chars; the portal API's request rows and usage totals carry the same field (chars there is the normalised length, which is not what you pay for). To check a line before sending it, count code points:

count.py
text = "आपका OTP 4821 है"
print(len(text.strip()))   # 16

Examples

Example Characters Pay as you go Commit ₹10,000 Commit ₹25,000
One OTP call, आपका OTP 4821 है 16 0.16 paise (₹0.0016) included included
A 60-crore-character month 600,000,000 ₹60,000 of credits ₹10,000 + ₹38,000 overage = ₹48,000 ₹25,000 + ₹12,000 overage = ₹37,000
The same month with 18 % GST ₹70,800 ₹56,640 ₹43,660

The 60-crore month on each plan: pay as you go draws 600,000 × 10 paise (one unit per 1,000 characters) from credits. Commit ₹10,000 includes 12.5 crore and bills the other 47.5 crore (475,000,000) at 8 paise per 1,000. Commit ₹25,000 includes 40 crore and bills the other 20 crore (200,000,000) at 6 paise per 1,000. Any prepaid credits a committed organisation holds are used before overage is billed.

Credits and the 402

On pay as you go every call draws on the organisation's prepaid credit balance. When the balance reaches zero the API refuses new requests until you top up:

402.json
{"error":"out of credits: top up at https://tts.vartalaap.si/billing (or move to a monthly plan)"}

REST returns it as HTTP 402; the WebSocket sends an error event with "status":402. A request already in flight finishes, so the balance can go slightly below zero; the next top-up covers it. Pay as you go is never invoiced after the fact. Organisations on a monthly commitment are never cut off: usage beyond the block draws credits first and then goes on the monthly invoice.

How you pay

Payments run on Razorpay (UPI, cards, net banking); card details never reach our servers. GST at 18 % is added to everything.

  • Pay as you go. Top up between ₹100 and ₹1,00,000 under Billing in the portal (₹100 buys 10 lakh characters), paid once through Razorpay Checkout. Credits land as soon as Razorpay confirms the payment, and each top-up gets its own GST invoice. No card is kept on file.
  • Monthly commitment. The first month is paid up front through Checkout (fee + GST) and covers the current calendar month in full, whatever day you start. After that the fee is charged on the 1st of every month whatever the usage. Unused characters do not roll over. Overage is billed on the monthly invoice issued on the 1st, together with the next month's fee.
  • Monthly invoices are charged automatically to a card saved through Razorpay's e-mandate when the invoice is ₹15,000 or less (the RBI limit for a debit without a fresh OTP); otherwise Razorpay e-mails a payment link and the invoice shows a Pay now button in the portal.
  • Switching from a commitment back to pay as you go takes effect from the next month.
  • Every invoice is a tax invoice with your legal name and GSTIN (set them under Billing → Invoice details), viewable and printable in the portal.

For larger commitments, SLAs or a dedicated node, talk to us.

Roadmap pricing

The engine gets cheaper as we keep squeezing audio out of each CPU core, and the list price follows:

When List price
Today 10 paise per 1,000 characters
In about six months 5 paise per 1,000 characters
In about a year under 1 paisa per 1,000 characters

New rates are announced in the changelog. They only ever go down.