Skip to main content

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)

A 0-second / never-connected call bills ₹0.

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.
This means you can negotiate a custom rate at the Account level, then optionally tighten or relax it for a specific Project or Agent. Overrides are managed by the Vocobase team — contact support@vocobase.com to set up custom pricing.

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.
Build with AI charges appear in your transactions as Build with AI.

When ₹ is deducted

₹ is deducted automatically when a session ends — not when the call starts:
  1. A call is placed to the recipient
  2. The agent handles the conversation
  3. The call ends (hang up, timeout, or disconnect)
  4. Vocobase rounds the duration up to the next 15-second bucket, resolves the tier and rate, and deducts ₹
  5. A session.completed webhook fires with credits_used in the payload (note: value is in ₹)
The 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:
Polling. Check the link every 30–60 seconds. Stop when:
  • status is CREDITED — the wallet moved. This is the only status that means money landed.
  • status is EXPIRED or MISMATCH — the link is dead. Mint a new one. MISMATCH means Razorpay reported an amount that does not match the link; contact support@vocobase.com with the payment_order_id.
  • expires_at has passed — stop polling even if the status still reads CREATED. The status flips to EXPIRED on an hourly sweep, so it can lag expires_at by up to an hour.
Keep polling on 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_FAILED is 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/max from /topup/config (currently ₹1,000 to ₹4,00,000). Anything else is 400 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.
The link always credits your wallet. Do not forward it to your own customers as a way to bill them: the money lands in your account, not theirs, and a chargeback on their card is charged back to you.
Tax invoices for top-ups are issued by the Vocobase team; contact support@vocobase.com with the 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.
That value means ₹1,250.50 — see the FAQ below for why the field is still called credits. Reading the numbers correctly:
  • Usage rows are negative. A usage transaction with amount: -8.55 means ₹8.55 was deducted.
  • credits_used in the summary is positive, even though the rows behind it are negative.
  • usage-summary requires both dates. Omitting either returns 400 VALIDATION_ERROR.
If you need a detailed billing audit for one call, contact support with the session_id.

Insufficient balance

If your ₹ balance reaches zero, API calls that start new sessions will fail with:
Calls that are already in progress will not be interrupted. However, you will not be able to start new calls until balance is replenished.

Monitoring usage

Webhook tracking

The most reliable way to track usage is through webhooks. Every session.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 the session_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 ₹.