Billing (₹)
Vocobase bills usage in Indian Rupees (₹). Your account holds a ₹ balance that is drawn down as your agents handle voice calls or chat sessions.Unit change (May 2026): Vocobase previously used an abstract “credits” unit. The wallet now stores rupees directly. The JSON field name
credits on billing endpoints is unchanged for backward compatibility, but the numeric value now represents ₹ instead of credits.How voice calls are billed
Voice calls are billed in 15-second buckets at a per-tier per-minute rate. Any call duration > 0 is rounded up to the next 15-second bucket.Per-tier default rates
The tier of a call is determined by the voice configuration assigned to the agent. Agents without a voice configuration assigned default to VA 1.
15-second rounding examples
Cost examples (VA 1 default, ₹3.60/min)
Pricing overrides
Vocobase supports per-tier rate overrides at three scopes. At call end, the system walks the override chain and uses the first match for the call’s tier; if no override matches, the default rate applies.How chat is billed
Chat messages cost ₹0.035 per message. Each user message and each agent response is counted.How Build with AI is billed
Each message you send to Build with AI in the IVR flow editor is charged from your balance (1 credit = ₹1), for what that message really used. The cost depends on the model and the thinking level you pick next to the message box, and on how much the assistant has to write: a bigger change costs more. Before you send, the panel shows what a message like it usually costs, for example “Usually about 8 credits”. It is a guide, not a limit. After each answer the panel shows what it used.- When you send, the usual cost is set aside from your balance. When the answer arrives, you pay what the message really used: anything set aside that it didn’t need comes back, and a longer answer takes the rest from your balance.
- You are charged when the assistant answers: a proposed change, a question back to you, or an explanation.
- A request that fails (the assistant is unavailable or times out) is free, and so is one whose answer never reaches you because you closed the page first.
- If your balance is below the usual cost, the message can’t be sent until you add credits. Messages sent at the same time each need their own.
When ₹ is deducted
₹ is deducted automatically when a session ends — not when the call starts:- A call is placed to the recipient
- The agent handles the conversation
- The call ends (hang up, timeout, or disconnect)
- Vocobase rounds the duration up to the next 15-second bucket, resolves the tier and rate, and deducts ₹
- A
session.completedwebhook fires withcredits_usedin the payload (note: value is in ₹)
credits_used value of 8.10 above means ₹8.10 — the call was 127s actual → 135s billed (9 buckets) at the VA 1 default ₹3.60/min = 135 × 3.60 / 60 = ₹8.10 after rounding (worked example; check your transaction for exact rate at session time, since overrides may apply).
If a call fails to connect (e.g., no answer, busy), no ₹ is deducted.
Initial balance
When your account is approved by the Vocobase team, an initial ₹ balance is assigned. The amount depends on your plan and agreement. To add more balance you can top up from the API (below) or contact the Vocobase team at support@vocobase.com.Topping up from the API
Four endpoints under/api/v2/billing/topup let a script add money to your wallet without a browser. You get a Razorpay-hosted payment link; whoever pays it funds your wallet, the same balance GET /billing/balance reports. GST (18%) is added on top of the amount you ask for, and only the base amount lands in the wallet.
The typical loop:
statusisCREDITED— the wallet moved. This is the only status that means money landed.statusisEXPIREDorMISMATCH— the link is dead. Mint a new one.MISMATCHmeans Razorpay reported an amount that does not match the link; contact support@vocobase.com with thepayment_order_id.expires_athas passed — stop polling even if the status still readsCREATED. The status flips toEXPIREDon an hourly sweep, so it can lagexpires_atby up to an hour.
CREATED, ATTEMPTED, and FAILED. FAILED is not final: a payer whose first attempt failed can retry on the same link.
Things to know:
- Links expire after 24 hours. Mint a fresh one rather than reusing an old URL.
- At most 5 open links per account. A link counts as open until it is paid, expires, or a payment attempt is made on it. A sixth returns
409 OPEN_ORDER_LIMIT. Link creation is also limited to 10 per hour per account (429); in practice the 5-link cap is the limit you will hit first. - A
502 RAZORPAY_LINK_CREATE_FAILEDis safe to retry, but back off. If the provider timed out, the attempt may still hold one of your 5 open slots for up to 24 hours. Do not retry in a tight loop. - Amounts are whole rupees, sent as a JSON number (not a string) within the
min/maxfrom/topup/config(currently ₹1,000 to ₹4,00,000). Anything else is400 INVALID_AMOUNT. - Credit normally lands within seconds of payment. If Razorpay’s webhook is missed, an hourly reconciliation job catches it, so allow up to about an hour before treating a paid link as stuck.
- UPI may be capped by the payer’s bank on large amounts. Cards and netbanking cover the full range.
payment_order_id.
Checking your balance
Via the Dashboard
Log in to the Vocobase Dashboard and navigate to Settings. Your current ₹ balance is displayed on the account overview.Via the API
Three read endpoints, all under/api/v2/billing (top-up endpoints are covered above). Full parameters and response schemas are in the
API Reference.
credits.
Reading the numbers correctly:
- Usage rows are negative. A
usagetransaction withamount: -8.55means ₹8.55 was deducted. credits_usedin the summary is positive, even though the rows behind it are negative.usage-summaryrequires both dates. Omitting either returns400 VALIDATION_ERROR.
session_id.
Insufficient balance
If your ₹ balance reaches zero, API calls that start new sessions will fail with:Monitoring usage
Webhook tracking
The most reliable way to track usage is through webhooks. Everysession.completed event includes the credits_used field (₹). Accumulate these values in your system to track spend in real time.
Frequently asked questions
Can I set a per-agent or per-workspace pricing?
Yes. Pricing overrides can be set at Account, Project (Workspace), or Agent scope. Overrides are managed by the Vocobase team — contact support@vocobase.com.What happens if balance runs out mid-call?
Active calls are never interrupted. The deduction happens after the call ends, so your balance may temporarily go negative. Contact the Vocobase team promptly to replenish balance if this occurs.Can I get a refund for failed calls?
Calls that fail to connect (no answer, busy, provider error) do not consume ₹. If you believe ₹ was incorrectly deducted, contact support@vocobase.com with thesession_id.
Why does the API return the field as credits if it’s now in ₹?
To keep existing integrations working without changes. The JSON field name credits (and credits_used, credits_added) is kept verbatim; only its numeric meaning shifted from abstract credits to Indian Rupees in May 2026.
Next steps
Webhook Payloads
See the full session.completed payload including credits_used.
Quick Start
Make your first API call and start using ₹.