Get a payout
Retrieve the full, enriched detail of a single payout you own, by its payout_id (the transfer UUID returned at creation and by GET /v1/payouts). Works for payouts from every source — API payouts and virtual-account settlement/payout flows.
The response is a bare JSON object (no { message, data } wrapper). Notable fields:
status— the client-facing status. A payout that hit a terminal error surfaces as"FAILED"(it aligns with thepayout.failedwebhook); other values areCREATED,KYT_PENDING(a Know-Your-Transaction compliance screen, non-terminal),PENDING,PROCESSING,COMPLETED,CANCELLED,IN_REVIEW.origin—"api","payout", or"deposit".from_amount/from_currencyandto_amount/to_currency— decimal strings;feeis the derived difference (ornullwhen currencies differ).payment_method— lowercased recipient rail (wire,wallet,ach).txn_hash(crypto),reference_number(the sending bank’s tracking reference on any fiat rail — an IMAD, an ACH trace number, or a UETR), andprovider_referencewhen available.uetris still returned for wire payouts but is deprecated in favour ofreference_number.senderandrecipient— bank account numbers and CLABEs are masked to the last 4 digits (****1234).events[]— a client-facing audit trail of status changes.extra_info.supporting_documents[].url— short-lived (10-minute) pre-signed download links.extra_info.nature_of_payment— the payout reason supplied at creation (vendor,pobo,first_party,spot_3p,spot_1p,related_entities, orother), echoed back unchanged.quotation— present only when the payout was priced by the itemized quotation engine; it is the same object returned byPOST /v1/quotations.
Errors: 404 when no payout matches the id; 403 when the payout belongs to a different client.
Example response (200):
{
"payout_id": "550e8400-e29b-41d4-a716-446655440000",
"user_id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"recipient_id": "6ba7b811-9dad-11d1-80b4-00c04fd430c8",
"quote_id": "6ba7b812-9dad-11d1-80b4-00c04fd430c8",
"reference": "INV-2026-0042",
"memo": "April consulting services",
"origin": "payout",
"from_amount": "1000.00",
"from_currency": "USD",
"to_amount": "997.50",
"to_currency": "USD",
"fee": "2.50",
"payment_method": "wire",
"txn_hash": null,
"uetr": "a1b2c3d4-1111-2222-3333-444455556666",
"reference_number": "a1b2c3d4-1111-2222-3333-444455556666",
"provider_reference": "provider-tx-7788",
"status": "COMPLETED",
"extra_info": {
"nature_of_payment": "vendor",
"supporting_documents": [
{
"type": "invoice",
"url": "https://files.balampay.com/...signed...",
"description": "Invoice PDF"
}
]
},
"metadata": {
"order_id": "ord_12345"
},
"sender": {
"name": "Acme Holdings LLC",
"company_name": "Acme Holdings LLC",
"country": "US",
"bank_name": "Example Bank, N.A.",
"bank_account": "****6789"
},
"recipient": {
"name": "Jane Doe",
"company_name": null,
"country": "MX",
"account_type": "WIRE",
"bank_name": "BBVA Mexico",
"account_number": "****4321",
"routing_number": "021000021",
"account_details": {
"bank_name": "BBVA Mexico",
"address": "Av. Reforma 123, CDMX",
"account_number": "****4321",
"bank_code": "012",
"swift_bic": "BCMRMXMM"
}
},
"events": [
{
"event_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "CREATED",
"message": "Payout created",
"created_at": "2026-06-25T14:00:00.000Z"
},
{
"event_id": "7c9e6679-7425-40de-944b-e07fc1f90ae8",
"status": "COMPLETED",
"message": "Payout settled",
"created_at": "2026-06-25T14:05:00.000Z"
}
],
"created_at": "2026-06-25T14:00:00.000Z",
"updated_at": "2026-06-25T14:05:00.000Z"
}
Authorizations
Access token from POST /auth (the data.access_token value).
API key issued by Kira. Required on every request, including /auth.
Headers
Optional. The date-versioned API version to apply for this request (e.g. 2026-04-14). When sent it always wins, even over your pinned account default. When omitted, the API uses your account's pinned version if set, otherwise a baseline default.
"2026-06-01"
Path Parameters
Payout UUID.
Response
Success.
Full enriched detail of a single payout (a bare object, not wrapped in an envelope). See the GET /v1/payouts/{payout_id} operation description for a complete example and field-by-field notes.
How this payment record originated. Enum is exactly deposit | payout | api (a bad value on the list endpoint's ?origin= filter is rejected with 400 echoing this list). payout = a payout initiated from a virtual account (confirmed on every payout created). deposit = the inbound funding/settlement leg of a virtual account. api = a payout created directly through the API, not tied to a virtual account.
api, payout, deposit Decimal string. The amount on the SOURCE/funding side of the payout, denominated in from_currency. "100.00" on a crypto-funded ($100.00 USDC) payout.
ISO-4217 currency code (or stablecoin ticker) of the source/funding side (from_amount). "USD" for a fiat-funded payout, "USDC" for a crypto-funded payout (mode: "CRYPTO") — NOT always USD.
Client-facing status (UPPERCASE): CREATED, KYT_PENDING, PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED, IN_REVIEW.
The quote this payout was priced against. Populated on every virtual-account payout — settlement always reserves a quote, even when you did not explicitly reserve one via POST .../payout/preview with create_quote: true (unlike the preview response's quote_id, which appears only when a quote was requested).
Your own reference string from the payout create request, echoed back unchanged. Sending reference: "my-ref-123" on create returned reference: "my-ref-123" on the payout detail. null when none was supplied.
The customer-supplied memo from the create request (extra_info.memo), surfaced at top level. Sending extra_info: {memo: "pay for services"} on create returned top-level memo: "pay for services" on the payout detail. null when no memo was supplied.
Decimal string. The amount on the DESTINATION side — what the recipient receives after fees/FX, denominated in to_currency. May differ in currency from from_amount — a payout with from_currency: "USDC" returned to_amount: "86.69", to_currency: "USD".
ISO-4217 currency code (or stablecoin ticker) of the destination side (to_amount) — the currency the recipient is paid in. "USD" on a crypto-funded payout with no saved recipient (settles back to a fiat leg).
Derived from_amount − to_amount; null when the currencies differ.
Lowercased recipient rail: wire, wallet, ach.
Present for crypto payouts.
Deprecated — use reference_number. Present for wire payouts. Still populated, and scheduled for removal; migrate to reference_number, which reports the equivalent value on every rail.
The tracking reference the sending bank assigned to this payout, in whatever form the rail uses: an IMAD for Fedwire (20260807MFP00407000001), a trace number for ACH (122245530000175), or a UETR (cdf55f20-1290-4f43-8a54-00cbe812c30a) on rails whose bank reports one. Quote it to the receiving bank to trace the payment.
null until the payment has actually been sent — a payout still being created, reviewed, or processing has no reference yet — and null for crypto payouts, which have a txn_hash instead.
The downstream payout provider's own reference/identifier for this payout. null on a payout still awaiting its crypto deposit (status: "CREATED").
Free-form object carrying create-time extras and derived record-keeping data. Keys observed on a crypto payout: memo, invoice_number (nested under extra_info.extra_info), nature_of_payment, customer_reference, virtualAccountId, paymentType, payoutMode, depositWallet ({walletId, address, network, currency}), and the fee breakdown under extra_info.fees. Exact keys are provider/mode-shaped and vary by payout type.
Your own key/value object attached at payout create time and returned verbatim. metadata: {order_id: "abc123"} sent on create was echoed back unchanged. {} when you set no keys.
The party funding/initiating the payout — your end-user / virtual-account owner who is paying. company_name/country come from that user; bank_name/bank_account are populated for virtual-account-sourced payouts (e.g. bank_name: "SLOVAK_SAVINGS_BANK", bank_account: "****7748" — masked to the last 4 digits).
The payee. When the recipient can't be resolved (e.g. a crypto payout with no saved recipient), every field is null and account_type reads the literal string "UNKNOWN".
Client-facing audit trail of status changes.
Present only when the payout was priced by the itemized quotation engine; the same object returned by POST /v1/quotations.