Credits and billing
The API runs on prepaid credits. You buy them by card, each paid call spends some, and the console shows where every credit went.
How credits work
GET /v1/balance returns the balance of the key's mode.{
"object": "balance",
"livemode": true,
"available": 1204,
"held": 140,
"frozen": 0,
"low_balance_threshold": 140,
"expiring_soon": [{ "credits": 25, "expires_at": "2026-11-28T09:00:00Z" }]
}Holds and charges
Work that finishes later holds credits first: they leave your available balance but aren't spent. When the work is done they are charged; if it doesn't happen they are released. You never pay for a verification your customer didn't submit, or a screening that failed.
A verification
- 1Created: the price is held
- 2Customer submits: the hold is charged
- 3Link expires or you cancel first: the hold is released
A screening
- 1Held while it runs
- 2Charged when it completes
- 3Provider down: released, nothing charged
A batch
- 1The whole batch is held up front
- 2Each subject is charged as it is screened
- 3What's left is released at the end
Credits are spent soonest-expiring first, then bonus before paid, then oldest first. Every movement is recorded in an append-only ledger you can read in the console.
Running out
A paid call your balance can't cover is refused with 402 insufficient_credits; nothing is held or charged. The error says how many credits were needed and how many you have:
HTTP/1.1 402 Payment Required
Content-Type: application/problem+json
{
"type": "https://vindexgrid.com/docs/api/errors/#insufficient_credits",
"title": "Not enough credits",
"status": 402,
"detail": "Creating this verification needs 70 credits; your live balance has 12. Buy credits or turn on auto-recharge in the Developers console.",
"code": "insufficient_credits",
"required": 70,
"available": 12,
"request_id": "req_0vZ3pQ8rS1tU2vW3xY4zA5"
}billing.balance_low webhook. At zero: billing.credits_exhausted. Set the level under Developers → Settings.403 usage_limit_reached, a guard against runaway loops.Buying credits
Owners, admins and the billing team buy credits under Developers → Credits & billing, once your account is approved for live use. Choose a pack, or an amount of your own, and pay by card on Stripe's secure checkout. Credits appear as soon as the payment succeeds, with a billing.credits_purchased webhook, and a paid invoice is ready to download.
Taxes
Your invoice shows any tax that applies to where your company is based. Enter your company's tax id at checkout so it appears on the invoice.
Auto-recharge
Never run dry: when your balance falls to a level you choose, Vindex tops it back up to a target, charging the card you saved at your last purchase. You set the trigger, the target and a monthly cap. If a charge fails, auto-recharge pauses and your billing team is told by email and with a billing.auto_recharge_failed webhook.
Cards issued in India
The Reserve Bank of India's e-mandate rules don't allow these automatic, variable charges on Indian-issued cards. With an Indian card, rely on low-balance alerts and one-click top-ups instead; Vindex tells you when it's time.
Expiry, refunds and disputes
billing.credits_expiring webhook. Test credits never expire.See every purchase, invoice and ledger entry under Developers → Credits & billing, and the credit errors.
Something missing or unclear? Signed-in users can tell us from Feedback in the app.
