Skip to main content
Every PanoFlow resource that moves money (transfers, batch rows, scheduled payment runs, inbound credits, pay-run lines and agent payments) follows one lifecycle in its status field, and carries a response_code and response_message that tell you the outcome in ISO 8583 terms.

Lifecycle

Clients must tolerate status values added later.

Sub-states

Transfers explain their status further in status_reason: New status_reason values can be added; don’t fail on one you don’t recognise.

Following a payment to the end

POST /v1/transfers returns 202 with status: processing for a payout, or 201 with status: pending_approval when it needs an approval. To learn the outcome, either:
  • wait for the payment.completed or payment.failed webhook, or
  • poll GET /v1/transfers/{transfer_id} until status is final.

Response codes on money movements

response_message is the standard meaning of the code, not text for your customers. For customer-facing wording, use status_reason or error.message. Successful responses that don’t move money carry no response_code.

Response code meanings

New codes can be added; treat an unknown code by its status.