Skip to main content
A Flow payments request that the API rejects returns an HTTP error and leaves the flow unchanged. This page lists the errors per endpoint and says which ones are worth retrying. A flow that fails after a request succeeded, for example because a transaction reverted, reports that in its failure field instead. Failures and refunds covers those.

Error response

Flow payments endpoints return a JSON body with error, a human-readable message, and code, a stable identifier, on most errors:
Branch on the status and code, not on error, because messages can change. These errors have no code:
  • Validation errors on create and payment-link requests.
  • 404 responses from the fee claim endpoints.
  • 400 responses for missing or invalid request fields.
  • A quote with no route, which returns quoteFailures instead, as described in Quote failures.
A 401 comes from authentication rather than from the flow, and its body can include other fields.

Retrying

The safe default is to read the flow, then decide the next request from its current state, as described in Resume and retry by state. Retry the same request only where the tables below say so.
  • 409 responses. See the 409 codes below.
  • 5xx responses. The request may or may not have taken effect, so read the flow before you retry.
  • The session token. A 401 on the quote, prepare, broadcast, or cancel endpoints means the session token is missing, revoked, or expired, or that the flow ID is unknown. If the payment has not been sent, attach the source again to get a new token. These endpoints return 401, not 404, for a flow ID that does not exist.

409 codes

Every 409 from a Flow payments endpoint carries one of these codes: flow_tx_hash_already_recorded does not mean that this flow recorded the hash. Read the flow: if it is broadcasted or later, the payment is on its way.

Server endpoints

POST /server/{environmentId}/flow/{mode} and POST /server/{environmentId}/payment-links

Read a flow

GET /server/{environmentId}/flow/{flowId}

Cancel a flow

POST /server/{environmentId}/flow/{flowId}/cancel

Fees

The fee balance and claim endpoints return 400 when recipientAddress is not a valid EVM address, and 404 without a code when there is nothing to claim or the claim request is unknown. See Fees API.

Payer endpoints

Read a flow and list exchanges

GET /sdk/{environmentId}/flow/{flowId} and GET /sdk/{environmentId}/flow/{flowId}/exchanges

Attach a source

POST /sdk/{environmentId}/flow/{flowId}/source

Get a quote

POST /sdk/{environmentId}/flow/{flowId}/quote

Prepare signing

POST /sdk/{environmentId}/flow/{flowId}/prepare

Report the transaction

POST /sdk/{environmentId}/flow/{flowId}/broadcast

Cancel as the payer

POST /sdk/{environmentId}/flow/{flowId}/cancel

Quote failures

When no route can settle the payment, the quote returns 422 with a quoteFailures list. Each entry names a settlement token you configured and the reason it could not be quoted:
Treat a reason you do not recognize as unknown.
Last modified on October 28, 2026