Z Zise Developers 简体中文

QR payment order list

GET /v1/qrpay/orders scope: qrpay:read
On behalf of a member · x-on-behalf-of required

Merge forward by status_version, allowing only newer updates. For two out-of-order events, this is your only criterion for which is newer.

⚠ Amounts, customer_total / fee, are fixed-point decimal strings with precision from the row’s ledger_scale. This differs from GET /v1/qrpay/orders/{id}, which returns integer strings.

⚠ failure_code is a public error code, not an internal reason, and is empty on successful orders. Risk failures are normalized to request_rejected, without reasons, rule names, or scores.

⚠ This endpoint only exposes fee, the fee we charge the member. Upstream costs, premiums, and net profit are never returned.

Query Parameters

FieldTypeRequiredDescription
limit integer Optional Default 20, maximum 100.
cursor string Optional Previous page’s next_cursor, an opaque string.
FieldTypeRequiredDescription
x-on-behalf-of string Required Member whose QR payment orders are queried.

Response

200status values match POST /v1/qrpay/payments. payee / acquirer_* may be empty strings on very early orders before the upstream responds.
{
  "data": [
    {
      "id": "qrp_9f2c1b40-0e2a-4d7c-9d21-6f0c1c3e5a11",
      "status": "completed",
      "status_version": 3,
      "source_asset": "USDT",
      "ledger_scale": 6,
      "customer_total": "128.500000",
      "fee": "0.500000",
      "payee": "Bangkok Coffee Co.",
      "acquirer_currency": "THB",
      "acquirer_amount": "4500.00",
      "failure_code": "",
      "created_at": "2026-08-12T09:30:00Z",
      "updated_at": "2026-08-12T09:30:12Z"
    }
  ],
  "next_cursor": null,
  "has_more": false
}
400member_context_required · member_not_found
403insufficient_scope
Request
curl -X GET 'https://api.zinfra.vip/v1/qrpay/orders' \
  -H 'x-auth-token: Bearer $TOKEN' \
  -H 'x-on-behalf-of: $MEMBER_ID'
const res = await fetch("https://api.zinfra.vip/v1/qrpay/orders", {
  method: "GET",
  headers: {
    "x-auth-token": "Bearer $TOKEN",
    "x-on-behalf-of": "$MEMBER_ID",
  },
});
// Keep monetary amounts as strings, never numbers.
const data = await res.json();
import requests

res = requests.get(
    "https://api.zinfra.vip/v1/qrpay/orders",
    headers={
        "x-auth-token": "Bearer $TOKEN",
        "x-on-behalf-of": "$MEMBER_ID",
    },
)
# Use Decimal(str(...)) for amounts, not float.
data = res.json()
req, _ := http.NewRequest("GET", "https://api.zinfra.vip/v1/qrpay/orders",
    nil)
req.Header.Set("x-auth-token", "Bearer $TOKEN")
req.Header.Set("x-on-behalf-of", "$MEMBER_ID")
res, err := http.DefaultClient.Do(req)
// Decode amount fields as string, not float64.
HttpRequest req = HttpRequest.newBuilder()
    .uri(URI.create("https://api.zinfra.vip/v1/qrpay/orders"))
    .header("x-auth-token", "Bearer $TOKEN")
    .header("x-on-behalf-of", "$MEMBER_ID")
    .method("GET", HttpRequest.BodyPublishers.noBody())
    .build();
// Use String / BigDecimal for amounts, not double.
$ch = curl_init('https://api.zinfra.vip/v1/qrpay/orders');
curl_setopt_array($ch, [
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'x-auth-token: Bearer $TOKEN',
    'x-on-behalf-of: $MEMBER_ID',
  ],
]);
$res = curl_exec($ch);
// Use bcmath / strings for amounts, not floatval.
200
{
  "data": [
    {
      "id": "qrp_9f2c1b40-0e2a-4d7c-9d21-6f0c1c3e5a11",
      "status": "completed",
      "status_version": 3,
      "source_asset": "USDT",
      "ledger_scale": 6,
      "customer_total": "128.500000",
      "fee": "0.500000",
      "payee": "Bangkok Coffee Co.",
      "acquirer_currency": "THB",
      "acquirer_amount": "4500.00",
      "failure_code": "",
      "created_at": "2026-08-12T09:30:00Z",
      "updated_at": "2026-08-12T09:30:12Z"
    }
  ],
  "next_cursor": null,
  "has_more": false
}