Attach a receipt or invoice
“Receipt or invoice”: attach an uploaded document with purpose transaction_attachment. Up to 10 per transaction.
Error codes: invalid_api_key, parameter_invalid, resource_not_found, invalid_state, document_rejected, csrf_token_invalid, idempotency_key_reused, 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.
128Optional on non-money POSTs; honoured when sent.
1 - 255Path Parameters
Transaction.
^txn_[0-9A-HJKMNP-TV-Z]{26}$Body
"Attach it so your accountant sees why this was paid."
An uploaded doc_… with purpose transaction_attachment.
^doc_[0-9A-HJKMNP-TV-Z]{26}$Response
OK.
One movement on the business's accounts, as customers see it (Transactions, account Activity). Read-only view of payments, collections and other account movements. Carries the ISO 8583 outcome of the underlying movement: 09 while pending_approval/scheduled/processing, 01 while a status query is unresolved, 00 when completed, the bank's NIP code (or ours) when failed or rejected.
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"
Transaction id.
^txn_[0-9A-HJKMNP-TV-Z]{26}$Always transaction.
"transaction"When it was created.
"2026-10-27T08:41:00Z"
When it was created.
"2026-10-27T08:41:00Z"
payout: money out to another bank (single or part of a batch, pay run or agent payment).
payout, collection, transfer, fee, reversal, conversion, card Lifecycle (CONVENTIONS §8). UI labels: completed → "Settled", processing → "Processing", pending_approval → "Pending approval".
draft, pending_approval, scheduled, processing, completed, failed, rejected, canceled, reversed in: money into account_id. out: money out of account_id. internal: from account_id to counterparty.account_id, both the business's own.
in, out, internal Always positive; sign comes from direction and the account viewed. A failed payout shows its original amount; its money is back ("Failed, money returned").
Account debited (out, internal) or credited (in).
^acc_[0-9A-HJKMNP-TV-Z]{26}$"Naira · Main".
The other side of a transaction.
Main line in lists, e.g. "Kano Freight Services" or "Naira · Main to Naira · Payroll".
Second line and "Narration": invoice number, payment reference or note sent with the payment, e.g. "INV-0142", "Diesel supply".
Where the transaction came from.
"Receipt or invoice" files attached.
A doc_… with purpose transaction_attachment.
^doc_[0-9A-HJKMNP-TV-Z]{26}$Progress timeline, oldest first.
False for sandbox (TEST) transactions.
Fee charged on top, if any.
"Created by".
Second approver, when the payment needed one.
Spending or income category, e.g. "Fuel", "Sales".
40"Note" added by the team.
500Why it failed, safe to show. Null unless failed.
NIP session id (30 digits) for NIP transfers.
^\d{30}$When it settled.