Get a transfer
The full transfer, including its timeline (the Tracking list on Sent and in the transaction drawer), the NIP
session id once sent, the customer-safe failure when it failed, its approval if it needed one, and
reversal_of / reversed_by links.
Error codes: invalid_api_key, parameter_invalid, resource_not_found, scope_missing, rate_limited.
Authorizations
Server API key, scoped. pk_test_ keys hit the sandbox tenant.
Headers
Optional client correlation id, up to 128 characters. It is not echoed: the response's X-Request-Id is always
our own req_… id. We log your value with the request as client_request_id, so support can find a request by
either id. A longer value is refused with 400 parameter_invalid.
128Path Parameters
trf_…
^trf_[0-9A-HJKMNP-TV-Z]{26}$Response
The transfer.
Money leaving (or, for a reversal, coming back to) an account. Lifecycle is MovementStatus.
A payout always has one source account and, once sent, one NIP session id.
Carries the ISO 8583 outcome (ResponseOutcome, CONVENTIONS §7a). Batch rows and scheduled-payment runs are
transfers, so they carry it too:
Two-character ISO 8583 response code, using the NIBSS NIP meanings (CONVENTIONS §7a). 00 is success.
Carried on every error (mapped from error.code, see errors.yaml x-codes) and on every money-movement
object (the bank's final code, or our own while it is in flight). Clients must tolerate codes added later.
00, 01, 03, 05, 06, 07, 08, 09, 12, 13, 14, 15, 16, 17, 21, 25, 26, 30, 34, 35, 51, 57, 58, 61, 63, 65, 68, 91, 92, 94, 96, 97 ^[0-9A-Z]{2}$Standard meaning of the code (the x-codes text), not customer copy. Customer-safe wording is in status_reason / error.message.
"Approved or completed successfully"
trf_…
Always transfer.
"transfer"payout: to a bank account outside PanoFlow, over NIP.own_account: between two of this business's accounts in the same currency.reversal: created by PanoFlow to reverse a completed transfer; read-only for customers and linked byreversal_of.
payout, own_account, reversal Lifecycle shared by every money-moving resource (CONVENTIONS §8). UI labels: completed → "Settled", pending_approval → "Pending approval".
draft, pending_approval, scheduled, processing, completed, failed, rejected, canceled, reversed What the recipient receives.
Fee charged on top (zero for own_account). Refunded with the amount if the transfer fails.
Amount + fee taken from the source account.
Who did something. Shown in activity, approvals and the audit log.
RFC 3339, UTC.
"2026-10-27T08:41:00Z"
RFC 3339, UTC.
"2026-10-27T08:41:00Z"
Sub-state of status (clients must tolerate new values):
awaiting_approval, awaiting_run_date, queued, sent_to_bank, awaiting_bank_confirmation, settled, rejected_by_receiving_bank, name_enquiry_failed, insufficient_balance, limit_exceeded, could_not_process, rejected_by_approver, canceled_by_user, approval_expired, schedule_skipped, schedule_canceled, batch_canceled, reversed Account the money left. Omitted on a reversal (the other side is not shown).
For own_account and reversal, this business's account that received the money.
rcp_… when paid to (or saved as) a recipient.
Who was paid, as the UI shows it ("Kano Freight Services", "Naira · Payroll").
For payouts, the account paid, with the name-enquiry account_name.
Shows on the recipient's bank statement.
Why it was made (shown to approvers; sent by agents).
NIP session id, present once the payout has been sent. Quote it to the receiving bank.
^\d{30}$txn_…, the line in the Transactions view and on the receipt.
Present when status is failed.
The approval, when this transfer needed one (not on batch rows; see the batch).
bat_… when this is a row of a batch.
The row's line number in the batch file.
x >= 1sch_… when this is a run of a scheduled payment.
Run date, for a scheduled transfer.
"2026-11-07"
agt_… when an agent created it.
On a reversal, the trf_… it reverses.
On a reversed transfer, the trf_… of the reversal.
doc_… files kept with the payment (invoice, receipt).
Expected arrival while processing.
"2026-10-27T08:41:00Z"
Tracking steps, oldest first. Returned on GET /transfers/{id}; omitted in lists.
RFC 3339, UTC.
"2026-10-27T08:41:00Z"
Up to 20 string keys (≤ 40 chars) with string values (≤ 500 chars). Returned on the resource and its events.