Billing and credit

Why your balance reads what it reads.

How you pay

Prepaid credit. There is no plan, no subscription object and nothing that renews — you buy a balance and calls draw against it. Minimum top-up €10; the buttons offer €10 / €25 / €50. Prices are ex-VAT. Credit does not expire. Every top-up produces a real invoice, not just a card receipt, and checkout asks for your company name (required) and a VAT ID (optional).

What a call costs

€0.29 per minute, Lithuania → Lithuania, billed in whole 60-second increments, always rounded up. A 12-second call bills one minute. A 65-second call bills two.

Why your balance drops before the call ends

Ringspine takes the money for a call when the call is dialled, not when it hangs up. At dial it puts a hold on the most that call could possibly cost: the ten-minute duration cap, at €0.29 a minute — €2.90. When the call settles, the hold is released in full and the call's real cost is charged instead. A two-minute call ends up costing €0.58; €2.32 of the €2.90 comes back.

This is why a balance can read lower than you expect while calls are running. It is not a charge, and nothing has been taken from your card.

A worked example. You top up €10.00 and start three calls at once:

Top up                       balance  10.00   reserved  0.00
Three calls dialled          balance   1.30   reserved  8.70
All three end, ~2 min each   balance   8.26   reserved  0.00

Between the second line and the third, €1.30 is genuinely all you can spend — a fourth call would be refused for want of credit even though you have paid in €10. The money is not gone; it is committed to calls that have not finished.

Holds always get released. If the end-of-call report from the telephony provider never arrives, a sweep closes the call out at its duration cap, releases the hold and frees the concurrency slot. A hold cannot outlive its call.

Reading your balance in the API

GET /api/v1/balance returns balance and reserved. balance has already had every open hold taken out of it. Do not compute balance - reserved as what you can spend — that subtracts the hold twice. reserved is there to explain why balance moved, and it reads "0.0000" when nothing is in flight.

An empty balance refuses the call

Reading your balance always works; placing a call on an empty one does not.

402 Payment Required

{
  "error": "Credit balance is 0.0000 EUR. Top up to place calls.",
  "reason": "insufficient-balance"
}

A thin balance shortens the call rather than refusing it

If your credit cannot fund the full ten minutes, the call is dialled with a lower duration cap — whatever the balance can afford, rounded down to a whole minute. It is refused only when it cannot fund even one minute.