Get a batch
The batch with its totals, per-status row counts and skipped rows. Row results are GET /batches/{id}/items.
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
bat_…
^bat_[0-9A-HJKMNP-TV-Z]{26}$Response
The batch.
A Pay many batch. Its rows are transfers with batch_id.
bat_…
Always batch.
"batch"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 Enough of a PanoFlow account to show it ("Naira · Main · ••••6789"). Full account in the Accounts API.
Sum of the rows being paid.
Sum of the rows' fees.
How many of the batch's rows are in each state.
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 a batch's status. Clients must tolerate new values.
awaiting_approval, sending, all_items_completed, some_items_failed, all_items_failed, rejected_by_approver, canceled_by_user, approval_expired File name, or "Pasted rows".
Rows that were skipped and will never be paid. Returned on GET /batches/{id}; omitted in lists.
The batch's approval, when it needed one.
Why it was made (shown to the approver).
When the last row became final.
"2026-10-27T08:41:00Z"
Up to 20 string keys (≤ 40 chars) with string values (≤ 500 chars). Returned on the resource and its events.