Skip to main content
POST
/
api
/
v1
/
intents
curl --request POST \
  --url https://qint-api.fly.dev/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
}
{
"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
}
{
"title": "An error occurred while processing your request.",
"status": 400,
"detail": "Currency must be one of CHF, EUR, USD."
}
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "An error occurred while processing your request.",
"status": 400,
"detail": "Currency must be one of CHF, EUR, USD.",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-00"
}
{
"title": "An error occurred while processing your request.",
"status": 403,
"detail": "This API key lacks the Write scope."
}
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "An error occurred while processing your request.",
"status": 400,
"detail": "Currency must be one of CHF, EUR, USD.",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-00"
}
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "An error occurred while processing your request.",
"status": 400,
"detail": "Currency must be one of CHF, EUR, USD.",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-00"
}

Authorizations

Authorization
string
header
required

Authorization: Bearer qk_live_… — a Qint API key created in the dashboard under Developers → API keys.

Body

application/json
amount
number
required

Amount to charge, in the given fiat currency. Must be positive.

Example:

49.9

currency
enum<string>
required

Settlement currency. One of CHF, EUR or USD.

Available options:
CHF,
EUR,
USD
title
string

Shown to the buyer on the hosted checkout (e.g. "Order #1001"). When omitted, the checkout falls back to your merchant display name.

idempotencyKey
string

Unique per merchant. Retrying a request with the same key returns the original intent (200) instead of creating a duplicate. Use your own order or reference id.

returnUrl
string<uri>

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.

Maximum string length: 500

Response

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.

id
string
required

Payment intent id (pi_…).

Example:

"pi_x7k2m9p4q1w8"

status
enum<string>
required

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.

Available options:
initiated,
pending,
confirmed,
settled,
failed,
expired,
cancelled
amount
number
required

The fiat amount charged.

Example:

49.9

currency
enum<string>
required

The settlement currency.

Available options:
CHF,
EUR,
USD
checkoutUrl
string<uri>
required

The hosted checkout URL for this intent — redirect the buyer here.

Example:

"https://checkout.qint.ch/pay/pi_x7k2m9p4q1w8"

createdAt
string<date-time>
required
expiresAt
string<date-time>
required

End of the payment window — 15 minutes after creation. An unpaid intent is expired after this instant.

title
string | null

The title passed at creation, if any.

assetSymbol
string | null

The crypto asset the buyer selected at checkout (e.g. USDT). null until the buyer picks one.

cryptoAmount
string | null

The exact crypto amount the buyer must send, as an 8-decimal-place string (e.g. "49.90000000"). null until an asset is selected.

depositAddress
string | null

The deposit address the buyer pays to. null until an asset is selected.

returnUrl
string<uri> | null

The returnUrl passed at creation, if any.

confirmedAt
string<date-time> | null

When the deposit was confirmed on-chain, if it was.

settledAt
string<date-time> | null

When the payment settled, if it did.