REST API
Payout statuses
A payout moves through these statuses:
Provider events move it: kyc_approved, kyc_rejected, payment_processing, payment_paid, payment_failed, payment_returned. Without a rail you record them yourself; with the simulated rail the service records them.
POST /api/payouts/{id}/execute answers one of:
status: "paid"with aproviderReference— settled.status: "processing"— accepted, settlement pending; poll the payout.status: "processing", unresolved: true— the rail did not confirm. The payment may or may not have gone out. Do not resend; a retry is refused until the rail reports. The report arrives aspayment_paidorpayment_failed.400— refused, with the reason. Refused before sending leaves the status unchanged and adds a history note; rejected by the rail setsfailed.
Amounts have at most two decimals. A returned payout still counts against the mandate's total.