Coinland Pay
Accept payments from Coinland customers on your own site, settled instantly from their balance with no network fee
Coinland Pay lets your site take payment from anyone who holds a balance on Coinland. You create a checkout session on your server, send the customer to a hosted widget, and the amount moves from their Coinland balance into your Coinland business account.
There is no blockchain in that path. Both accounts live on Coinland, so a payment is an internal ledger transfer: it settles in one hop, it confirms in the same request the customer approves it in, and it costs no network fee at any amount. A 4 USDT payment is as economical as a 4,000 USDT one.
What the integration looks like
You create a session with POST /api/pay/v1/sessions, server-side, using your secret key. You
give it your own order id, a title, and the price in each coin you are willing to accept.
The customer pays in the hosted widget. You either open it in a popup with the embed script or
redirect to the session's checkout_url. They sign in to Coinland, pick one of your coins, confirm,
and the transfer settles.
You are notified and you fulfil. Coinland POSTs a signed payment.completed webhook; you read
the authoritative record with GET /api/pay/v1/payments/{id} and release the goods.
Start with the Quickstart for the copy-paste version of all three.
Why it is shaped this way
The widget is hosted, and that is the point. The customer authenticates and confirms on Coinland's own origin, never on yours. No Coinland password, OTP or TOTP code is ever typed into a page you serve, which means a compromise of your frontend cannot become a compromise of your customers' Coinland accounts. Your site never handles a credential and never needs to be trusted with one.
You price in coins, and Coinland converts nothing. A session carries a list of
{currency, amount} options and the customer picks exactly one of them. If you list 10.5 USDT and
0.00012 BTC, then whichever they choose, that is the number that moves. This rail quotes no spot
rate and applies no conversion, so the amount you asked for is the amount you can reconcile against.
Payments cannot be faked. Every completed payment carries a receipt token signed with your webhook secret. A customer cannot fabricate one without that secret, so a receipt is portable proof of payment that any of your systems can check offline. It is still not what you fulfil on -- that stays the webhook and the API.
Before you write any code
Two things have to exist first, and neither is self-serve from the API:
- Your account is promoted to a business. Coinland staff do this. It turns your ordinary customer account into a business, which gets its own business wallet for your takings, kept apart from your personal balance.
- You have an API key. You mint it yourself in the business console once you are promoted, and it is shown once.
Quickstart walks through both.
Where to go next
| If you want to | Read |
|---|---|
| The shortest path to a working payment | Quickstart |
| To embed the widget in your checkout page | Widget |
| To understand the session lifecycle and retries | Sessions |
| To reconcile fees and receipt numbers | Payments |
| To verify a receipt without calling us | Receipts |
| To send money to a customer, or refund a payment | Payouts |
| To handle notifications correctly | Webhooks |
| Every endpoint, field by field | API reference |
The machine-readable versions of this site are at /llms.txt and
/llms-full.txt, and every page has a Markdown twin at its own path plus .md. The
OpenAPI document is published at /openapi.json.