Esc to close · ⌘K / Ctrl-K opens search anywhere
BharatRouter is prepaid, in rupees. You top up a credit balance; each request debits
it at the per-token rates shown on the model catalog (₹ per
million tokens, no FX surprises). There is no card on file and nothing to cancel —
when credits run out, standard keys stop with
insufficient_credits until you top up again.
Every new org gets ₹100 of credit at signup — enough to evaluate seriously before
paying anything. It appears in the ledger as a promo entry and is spendable
immediately.
Top-ups go through Razorpay (UPI, cards, netbanking) from the dashboard. During beta a single top-up is ₹100–₹1,000 (whole rupees). Before the first top-up you'll be asked for a billing address — GST place-of-supply requires it; the PIN-code field auto-fills city and state.
Credit is applied when Razorpay confirms capture, through two idempotent paths (checkout callback and webhook), so a flaky redirect can't double-credit or lose a payment.
A promo code adds bonus credit on top of a top-up. Enter it at checkout — it is
validated before you pay (POST /me/billing/promo/check) and consumed when
the payment captures. One redemption per org per code; invalid or already-used codes
fail with promo_invalid / promo_redeemed before any money moves.
GET /me/billing (the dashboard's Billing tab) shows the money-event
ledger — top-ups, promo credits, signup credit — kept deliberately separate from
per-request noise. Request-level detail lives in usage analytics
(GET /me/usage, GET /me/usage/daily): requests and tokens per
key and per model, today (IST) and over 30 days.
Set a threshold (₹) on the dashboard and you'll get an email when the balance drops below it — at most one per 24 hours. Clear the threshold to disable.
Every captured payment has a printable receipt at
GET /me/billing/receipts/:paymentId — payment ID, order ID, amount, payer,
billing address, method, and paid-at time (IST). These are payment receipts, not GST tax
invoices; GST invoicing arrives once our GSTIN registration completes.
| Code | HTTP | Meaning |
|---|---|---|
insufficient_credits | 402 | Standard key with zero/negative balance — top up to resume. |
budget_exceeded | 429 | The key's monthly ₹ budget is spent — raise it or wait for the new month (IST). |
address_required | 400 | Add a billing address before creating an order. |
promo_invalid / promo_redeemed | 400 | Bad, expired, or already-redeemed promo code. |
Full error envelope and the complete code table: Errors.