Skip to main content
GET
/
api
/
v1
/
intents
/
{id}
Retrieve a payment intent
curl --request GET \
  --url https://qint-api.fly.dev/api/v1/intents/{id} \
  --header 'Authorization: Bearer <token>'
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://qint-api.fly.dev/api/v1/intents/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://qint-api.fly.dev/api/v1/intents/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests

url = "https://qint-api.fly.dev/api/v1/intents/{id}"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
{
  "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
}
{
"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"
}
{
"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.

Path Parameters

id
string
required

The payment intent id (pi_…).

Response

The payment intent.

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.