Your payout requests (read-only; no initiation endpoint)
⚠ There is also no POST, for the same reason as the address book: machine APIs cannot ensure human step-up authentication. Initiate payouts through the merchant portal. This page lets your finance system determine the review stage of a requested payout. Reading it creates no new withdrawal destination.
Query Parameters
| Field | Type | Required | Description |
|---|---|---|---|
limit |
integer | Optional | Defaults to 20, maximum 100. |
cursor |
string | Optional | The previous page's next_cursor, an opaque string. |
Response
{
"data": [
{
"id": "91b0f5c2-1d4a-4f77-8f01-6a2e9b3c7d10",
"asset": "USDT",
"amount_text": "20000",
"amount": "20000000000",
"ledger_scale": 6,
"address": "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed",
"status": "dispatching",
"review_note": "",
"tx_hash": "",
"created_at": "2026-08-12T08:00:11.021Z",
"updated_at": "2026-08-12T09:14:53.700Z"
}
],
"next_cursor": null,
"has_more": false
}insufficient_scope: missing merchant:read.Additional Details
Seven statuses; display unknown values unchanged
status | Meaning |
|---|---|
pending_review | Not yet reviewed by us |
approved | Approved, awaiting dispatch |
rejected | Rejected; reason in review_note |
dispatching | Sent to custodian, awaiting on-chain confirmation |
dispatch_unknown | Outcome unknown; see below |
paid | Paid; transaction hash in tx_hash |
failed | Final failure |
⚠ dispatch_unknown means neither success nor failure: the request was sent, but its outcome is unknown and money may already have left. It is an isolated state: all our paths that could move the funds again reject it. Only manual investigation can finalize it. Do not submit another payout because of this state.
⚠ We may add states at any time. Display unknown values unchanged; do not default to processing, which would hide a new state in your interface.
Two amount fields with different formats
amount_text: the original requested amount entered in the portal, as decimal text.amount: the approved settlement amount, parsed using the asset's precision as a fixed-point integer string, without a decimal point; seeledger_scaleon the same row.
⚠ For unapproved requests, amount is "0". This means the settlement amount has not yet been parsed, not that the requested amount is zero. Both the entered amount and the amount used for payout must be traceable, hence the separate fields.
address is a snapshot taken at order creation, not the current address-book value. Changing a label or revoking an address does not alter any character of the destination on historical orders.
Keyset pagination, strictly descending by (created_at, id).
curl -X GET 'https://api.zinfra.vip/v1/merchant/payouts' \
-H 'x-auth-token: Bearer $TOKEN'const res = await fetch("https://api.zinfra.vip/v1/merchant/payouts", {
method: "GET",
headers: {
"x-auth-token": "Bearer $TOKEN",
},
});
// Keep monetary amounts as strings, never numbers.
const data = await res.json();import requests
res = requests.get(
"https://api.zinfra.vip/v1/merchant/payouts",
headers={
"x-auth-token": "Bearer $TOKEN",
},
)
# Use Decimal(str(...)) for amounts, not float.
data = res.json()req, _ := http.NewRequest("GET", "https://api.zinfra.vip/v1/merchant/payouts",
nil)
req.Header.Set("x-auth-token", "Bearer $TOKEN")
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/merchant/payouts"))
.header("x-auth-token", "Bearer $TOKEN")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
// Use String / BigDecimal for amounts, not double.$ch = curl_init('https://api.zinfra.vip/v1/merchant/payouts');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'x-auth-token: Bearer $TOKEN',
],
]);
$res = curl_exec($ch);
// Use bcmath / strings for amounts, not floatval.
{
"data": [
{
"id": "91b0f5c2-1d4a-4f77-8f01-6a2e9b3c7d10",
"asset": "USDT",
"amount_text": "20000",
"amount": "20000000000",
"ledger_scale": 6,
"address": "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed",
"status": "dispatching",
"review_note": "",
"tx_hash": "",
"created_at": "2026-08-12T08:00:11.021Z",
"updated_at": "2026-08-12T09:14:53.700Z"
}
],
"next_cursor": null,
"has_more": false
}