All systems operational · 99.99% uptime

Product · How it works

One API call. Here is everything after it.

The full lifecycle of a payout run — validation, screening, routing, clearing, returns, and reconciliation. Nothing hand-waved.

Step 01 · Create a run

Post payouts. Get back a run.

One request creates a run of 1 to 1,000,000 payouts. Every item is validated synchronously — currency, amount, recipient, rail eligibility — and invalid items are rejected with reason codes in the response, before any money moves.

  • Bearer keys, HMAC-signed requests, Idempotency-Key on every write — retry a timeout without double-paying
  • Full sandbox that simulates rails, returns, and delays before you go live
Read the API reference

Steps 02–03 · Screen, then price.

Nothing touches a rail until it passes every gate. Then each payout gets a rail and a locked price.

02 · Account validation

Routing numbers and IBANs are checksum- and directory-validated; recipient ownership checks run for first-time destinations. Bad account data fails here, synchronously — not as a return next week.

02 · Sanctions & policy

Every payout is screened against sanctions lists, then evaluated against your configurable approval policy — amount thresholds that require a second approver, velocity limits per recipient and per day. A held payout waits; it never leaks.

03 · Routing & pricing

The router scores cost, speed target, destination coverage, and live rail health for each payout, assigns a rail, and locks the price. The run summary comes back with per-rail counts and total fees before anything is sent.

How the router decides — and what happens when a rail degrades — is covered in depth on the platform page

Step 04 · Clearing

Each rail clears on its own clock.

Payouts fan out to their rails and clear independently. You see every state change as it happens — created → sent → settled — per payout, not per batch.

  • RTP and SEPA Instant — seconds, 24/7, <2s median RTP acknowledgement
  • Same-day ACH — hours, within the day's submission windows
  • Standard ACH — T+1; Fedwire — same day, before the network cutoff
Live rail status

Step 05 · Returns & exceptions

Money bounces. Here is exactly what happens.

ACH returns arrive days after send — R01 insufficient funds, R03 no account, R29 not authorized. Each one flips the payout to returned, fires payout.returned with the code, and enters a decision.

  • Retryable codes (R01) — automatic retry on a schedule you set, up to your cap
  • Bad-destination codes (R03) — failover to another rail if one is viable, else fail cleanly and flag the recipient for re-verification
  • Everything else lands in the exception queue with the code, the history, and one-click resolution — no payout is ever silently abandoned

Returned funds land back in your segregated account and post to the ledger the moment they arrive. Money in motion deserves a paranoid rail.

Step 06 · Reconciliation & close

Close is continuous, not monthly.

Every state change fires a signed webhook, and every money movement — disbursement, return, fee — is matched to its bank statement line in real time. Your books agree with the bank's before you ask.

  • Signed webhooks: payout.created, payout.sent, payout.settled, payout.returned, run.completed
  • Line-level matching against bank statements — mismatches surface as exceptions the moment they occur
  • Immutable ledger, exportable to your warehouse for audit and close

Step 07 · What you never do again

The list you retire.

Manual bank files

No NACHA files hand-built at 4pm, no SFTP drops, no per-bank formats. The API is the file.

Month-end spreadsheet recon

No exporting statements into a spreadsheet to hunt for the $14.20 that does not match. Every line is already matched.

Chasing bounced payouts by email

Returns arrive as webhooks with codes and dispositions, not as a support thread three weeks later.

That is the whole lifecycle.

Seven steps, no hand-waving. The sandbox lets you run all of them today.