Recommended flow
POST /v1/payoutswith a uniqueIdempotency-Keyand store the returned Payout ID.GET /v1/payouts/{payout_id}when you need the latest state recorded by Flowlix.- Use
GET /v1/payoutsto reconcile payouts and page or filter the result. - Subscribe to the four Payout webhooks to receive lifecycle changes. Retrieve the Payout when reconciling delayed or out-of-order events.
Create a Payout
Send card data only from your secure server environment:initiator_ip_address is the IP address of the human
initiating the Payout. recipient.country, first and last names are required.
Each name must contain a non-whitespace character and be 1–255 characters long.
Names are preserved as submitted; do not rely on trimming or normalization.
The response is 201 Created with a Payout object. Store its id, masked
destination summary, status, and timestamps. A 201 response acknowledges
the Payout submission; interpret the status using the table below. Every returned
Payout includes both recipient names as strings, including reads and webhook snapshots.
A provider rate limit or another uncertain provider response is recorded as a
201 Payout with status: PENDING, not as a retryable provider HTTP error.
Store the Payout ID and retrieve its latest recorded state; do not resubmit it
with a new key.
List Payouts
- literal, case-insensitive
searchacross Payout IDs, merchant references, and recipient names; exactly four digits also match the destination card’s last four digits; - cursor pagination with
starting_afterorending_before; - repeated
status,currency, andcard_brandfilters; card_last4, creation-time, and amount-range filters.
search also matches an exact major-unit
amount. For example, search=49.99¤cy=EUR matches amount: 4999.
A decimal comma is accepted. Without one currency, numeric search matches only
text or the card’s last four digits. % and _ are literal characters, not
wildcards; all structured filters still constrain the results.
For the next page, pass the last returned Payout id as starting_after.
For a previous page, pass the first returned Payout id as
ending_before. The response does not contain separate cursor fields.
total_count is the number of matching Payouts before cursor pagination.
Retrieve a Payout
Payout statuses
Payouts have two nonterminal states and two terminal states:
A Payout can move directly from
PENDING to a terminal state; you do not need
to observe PROCESSING first. There is no guaranteed completion deadline.
The Payout result is not a separate banking-settlement receipt.
Every response includes the recipient summary and masked destination. The
failure_code and failure_message fields are returned only for FAILED
and omitted in other states. These are public operation-failure fields, not
the HTTP error.code envelope or raw provider details.
Retry safely
If the create request times out or returns a retryable HTTP error, retry only while the same destination card data remains available inside your approved PCI handling boundary. Preserve the sameIdempotency-Key and an equivalent
effective request identity, but do not persist the complete card-data body for
retries. Never substitute a new key just because the response was lost. Use a
new key only for a distinct business Payout.
A same-key retry returns the saved creation response, which can still show
PROCESSING after the Payout has completed. Use GET /v1/payouts/{payout_id}
to read the current state; replaying POST is not polling.
See Idempotency and
operation failures for conflict and error
handling.