Guides
Payments & the wallet
All prices are EUR, quoted retail, per year, and VAT-inclusive — the
number you are quoted is the number you pay. The quote you act on comes from
GET /api/v1/check (registration) or GET /api/v1/tlds (register / renew /
transfer per TLD).
The wallet
Every workspace has a wallet; every purchase debits it. Fund it either way:
Top up — dashboard → Billing → Top up (Stripe Checkout). The balance is credited when the payment completes.
Pay as you go — pass a payment instrument on the spending call itself:
{
"domain": "example.com",
"duration": 1,
"confirm_price": 18,
"payment_method": "pm_…"
}
The exact price is charged, credited to the wallet, and debited by the
purchase — net card movement equals the price, no standing balance needed.
shared_payment_token is accepted in place of payment_method for agent
frameworks that issue Stripe shared payment tokens.
confirm_price
Spending verbs (POST /domains, POST /domains/{name}/renew,
POST /domains/{name}/transfer) require confirm_price — the total you were
quoted (unit price × duration for multi-year operations). The server
re-resolves the live price and compares within €0.01:
- Match → the operation proceeds and the wallet is debited on success.
- Mismatch →
409 price_changedwith both prices indetails; nothing is charged. Re-quote and retry with the current price if it's acceptable:
{ "error": "price_changed", "details": {
"message": "The price has changed. Re-check before purchasing.",
"confirmed_price": 18, "current_price": 21, "currency": "EUR" } }
Failure semantics — why there are no refunds to wait for
The order of operations is: charge (if pay-as-you-go) → credit wallet → verify balance → registry action → debit wallet. If the registry action fails, the debit never happens: the money stays as wallet credit and the retry uses it without touching your card again. You are never waiting on a refund to retry.
If the wallet can't cover the price and no payment instrument was passed, you
get 402 insufficient_balance with required and available amounts in
cents — top up or attach a payment method and retry.
Invoices and history
Each completed purchase produces an invoice, visible under Billing in the
dashboard along with the full balance history. Its single line item names the
operation and the domain (Registration: example.com (2y)) and carries the
service period that operation bought — for a renewal, the term appended to the
existing expiry, not the date you paid.
Topping up is not itself a purchase, so it produces a Stripe payment
receipt rather than an invoice: at that moment nothing has been supplied
yet. The per-purchase invoices are the tax documents, and prices are
VAT-inclusive — the figure you confirm through confirm_price is the figure
debited and the figure on the invoice, with any VAT broken out inside it.
Business customers: set your workspace's default contact to an organization contact and fill in its VAT number. That number goes onto your invoices, and for EU businesses outside our country it applies reverse charge (0% VAT). An individual default contact is invoiced as a consumer.
Workspaces on invoiced (postpaid) billing — available by arrangement — skip the upfront balance requirement and receive a monthly invoice for what accrued instead.