Adding credit
Kallo is prepaid. You add credit to your workspace balance, and participant-minutes are deducted from it as calls run. All projects in a workspace draw from the same balance. Credit does not expire.
This page covers how to add credit, what each payment status means, and what happens when a payment is refunded. For how usage is measured and charged, see Usage & billing.
Add credit from the dashboard
- Open Billing in the dashboard.
- Enter an amount in USD under Add credit.
- Choose Continue to payment and pay on the secure Stripe checkout page. Cards, Apple Pay and Google Pay are offered when available for your device and country.
- Stripe returns you to the Billing page. Your balance updates as soon as Stripe confirms the payment, usually within a minute.
Only workspace owners and admins can add credit. Members can see the balance but not the payment form.
Amounts
| Limit | Amount |
|---|---|
| Minimum top-up | $5.00 |
| Maximum online top-up | $10,000.00 |
Amounts are in US dollars with up to two decimal places. For a larger amount, contact support and we will send a sales invoice.
Payment statuses
Every attempt appears under Top-ups on the Billing page with one of these statuses.
| Status | Meaning |
|---|---|
| Creating | The checkout page is being set up. This lasts a few seconds. |
| Pending | Waiting for you to pay, or for the bank to confirm. A checkout page expires after one hour. |
| Successful | Payment confirmed. The amount is now in your balance and appears in the ledger. |
| Failed | The payment was declined or could not be completed. Nothing was charged. Try again or use another payment method. |
| Expired | The checkout page was not completed within one hour. Nothing was charged. Start a new top-up. |
| Canceled | You left the checkout page before paying. Nothing was charged. |
Only a Successful payment adds credit. If a payment stays Pending for longer than the checkout hour, start a new top-up; a pending payment that never completes is never charged.
Receipts and records
- The Ledger on the Billing page lists every change to your balance: top-ups, usage charges, refunds and adjustments. Entries are never edited; a correction is a new entry.
- Every paid top-up has an invoice and a receipt. Stripe emails them to your workspace's billing email, and Receipt next to each payment under Top-ups opens them.
- To put your company on the invoice, fill in the optional business name on the checkout page. Invoices show the name and email only, not a postal address.
- Tick the option to save your payment details at checkout to reuse the card on your next top-up. Saved cards are only used when you start a top-up yourself.
Refunds and disputes
To request a refund, contact support with the payment ID. A refund is returned to the original payment method through Stripe.
When a top-up is refunded, the refunded amount is deducted from your balance and a Refund entry appears in the ledger. If you have already used that credit, the balance can go below zero. While the balance is at or below zero, new calls cannot start until you add credit. Calls already running are not cut off.
A payment dispute (chargeback) that you lose is treated like a refund of the disputed amount. Disputes that are still open do not change your balance.
Low balance
The Billing page shows a credit status:
- Healthy: new calls can start.
- Low: the balance is under the low-credit alert shown on the page. Add credit soon.
- Out of credit: new calls are blocked until you add credit.
Subscribe your server to the credit.low, credit.exhausted and credit.restored webhooks to be notified automatically.
Top up from your backend
If you manage credit from your own server, create a top-up with an API key that has the billing:write scope. An Idempotency-Key header is required, so a retried request never creates a second payment.
POST /v1/billing/topups
Authorization: Bearer sk_live_xxx
Idempotency-Key: topup-order-123
Content-Type: application/json
{
"amount": "100.00",
"metadata": { "reference": "customer-topup-123" }
}
The response contains an authorize_url. Send the payer to that Stripe checkout page. Poll GET /v1/billing/topups/{payment_id}, or subscribe to the payment.succeeded, payment.failed, payment.expired, payment.canceled and payment.refunded webhooks, to learn the outcome. See the REST API reference for the full request and error format.
Reusing an Idempotency-Key with a different amount returns 409 conflict.