curl --request POST \
--url https://api.qint.ch/api/v1/intents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": 49.9,
"currency": "CHF",
"title": "Order #1001",
"idempotencyKey": "order-1001"
}
'{
"id": "pi_x7k2m9p4q1w8",
"status": "initiated",
"amount": 49.9,
"currency": "CHF",
"title": "Order #1001",
"assetSymbol": null,
"cryptoAmount": null,
"depositAddress": null,
"checkoutUrl": "https://checkout.qint.ch/pay/pi_x7k2m9p4q1w8",
"returnUrl": "https://shop.example.ch/checkout/order-received/1001",
"createdAt": "2026-07-08T09:15:00+00:00",
"expiresAt": "2026-07-08T09:30:00+00:00",
"confirmedAt": null,
"settledAt": null,
"reversedAt": null,
"reversed": false,
"underpaid": false,
"feeAmount": null,
"netAmount": null,
"settledAmount": null,
"receivedAmount": null,
"underpaidBps": null,
"creditAmount": null,
"creditCurrency": null,
"creditRate": null
}Create a payment intent
Creates a standalone payment intent and returns a checkoutUrl to send
the buyer to. The payment window is 15 minutes from creation
(expiresAt).
Requires the Write scope.
Idempotency — an idempotencyKey (unique per merchant, e.g.
your order id) is required. Retrying the same request returns the
original intent with 200 OK instead of creating a duplicate
(201 Created).
curl --request POST \
--url https://api.qint.ch/api/v1/intents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": 49.9,
"currency": "CHF",
"title": "Order #1001",
"idempotencyKey": "order-1001"
}
'{
"id": "pi_x7k2m9p4q1w8",
"status": "initiated",
"amount": 49.9,
"currency": "CHF",
"title": "Order #1001",
"assetSymbol": null,
"cryptoAmount": null,
"depositAddress": null,
"checkoutUrl": "https://checkout.qint.ch/pay/pi_x7k2m9p4q1w8",
"returnUrl": "https://shop.example.ch/checkout/order-received/1001",
"createdAt": "2026-07-08T09:15:00+00:00",
"expiresAt": "2026-07-08T09:30:00+00:00",
"confirmedAt": null,
"settledAt": null,
"reversedAt": null,
"reversed": false,
"underpaid": false,
"feeAmount": null,
"netAmount": null,
"settledAmount": null,
"receivedAmount": null,
"underpaidBps": null,
"creditAmount": null,
"creditCurrency": null,
"creditRate": null
}Authorizations
Authorization: Bearer qk_live_… — a Qint API key created in the dashboard under Developers → API keys.
Body
Amount to charge, in the given fiat currency. Must be positive and, converted to CHF, between 10 and 100'000 (or your agreed cap).
49.9
Invoice currency. One of CHF, EUR, USD or GBP, and only while Qint offers it: a currency switched off for new payments is refused with 400 and no code (check GET /api/v1/public/currencies first). It need not match your Account Currency: the payment is credited in your Account Currency at the rate fixed when the buyer is quoted.
CHF, EUR, USD, GBP Required. Unique per merchant (use your own order or reference id). Retrying a request with the same key returns the original intent (200) instead of creating a duplicate (201). Requests without an idempotencyKey are rejected with 400.
Shown to the buyer on the hosted checkout (e.g. "Order #1001"). When omitted, the checkout falls back to your merchant display name.
Absolute https URL (max 500 characters). When set, the hosted checkout shows a "Return to merchant" action that navigates back to this URL with ?qint_intent={id}&status={status} appended.
500Response
Idempotent replay — an intent with this idempotencyKey already exists for your merchant; the original intent is returned.
A payment intent as returned by the merchant API.
Payment intent id (pi_…).
"pi_x7k2m9p4q1w8"
Lifecycle of a payment intent. Transitions follow
initiated → pending → confirmed → settled, with failed, expired
and cancelled branches. Terminal states never change again —
except that a merchant may resolve an underpaid, expired payment as
accepted from the dashboard review queue, which moves it
expired → settled.
initiated, pending, confirmed, settled, failed, expired, cancelled The fiat amount charged.
49.9
The invoice currency. amount, feeAmount, netAmount, settledAmount and receivedAmount are in it; the credit to your balance is in creditCurrency.
CHF, EUR, USD, GBP The hosted checkout URL for this intent — redirect the buyer here.
"https://checkout.qint.ch/pay/pi_x7k2m9p4q1w8"
End of the payment window — 15 minutes after creation. An unpaid intent is expired after this instant.
true once the payment has been reversed (reversedAt is set), otherwise false. A flag, not a status: status stays settled. Treat a reversed payment as not paid.
false
true when the buyer sent less crypto than quoted. A flag, not a status. On an open or expired intent it means a short payment was detected; on a settled intent it means the payment settled short within your accepted underpayment (or was accepted from the review queue) and was credited on receivedAmount. See underpayments.
false
The title passed at creation, if any.
The crypto asset the buyer selected at checkout (e.g. USDT). null until the buyer picks one.
The exact crypto amount the buyer must send, as an 8-decimal-place string (e.g. "49.90000000"). null until an asset is selected.
The deposit address the buyer pays to. null until an asset is selected.
The returnUrl passed at creation, if any.
When the deposit was confirmed on-chain, if it was.
When the payment settled, if it did.
Set when the payment partner reversed the payment after it had settled. status stays settled; treat a reversed payment as not paid. See the webhook reversal fields.
Qint's fee deducted for this payment, in currency. 0 when the buyer paid the fee on top. Computed on the quote (on receivedAmount for a payment settled underpaid), so it agrees with the credit and does not change afterwards. null until status is settled.
0.25
The credit basis less feeAmount, in currency: amount, or receivedAmount for a payment settled underpaid. Computed on the quote. null until status is settled. The amount added to your balance is creditAmount, in your Account Currency.
49.65
The fiat amount (in currency) the payment partner realised for the payment. Booked after settlement, so it is null at first and on most freshly settled payments. For information only: it changes neither feeAmount, netAmount nor the credit.
null
For a payment that is underpaid and short: the fiat amount actually paid (in currency), the basis you are credited on before the fee. null otherwise.
null
How short an underpaid payment is, in basis points of the expected crypto amount (30 = 0.3 %). null unless the payment is underpaid and short.
null
What the payment added to your balance, in creditCurrency, 2 decimal places: netAmount × creditRate, rounded to the cent. Fixed at settlement and never recomputed. null until the payment is credited, and on payments settled before 20 October 2026.
49.65
Your Account Currency at the time of the quote — the currency creditAmount is in. null until credited.
CHF, EUR, USD, GBP Units of creditCurrency per 1 unit of currency, fixed when the buyer was quoted (e.g. 0.9389 for EUR into CHF). 1 when the two currencies match. null until credited. Before 20 October 2026 this field meant fiat per stablecoin unit.
1