Documentation Index
Fetch the complete documentation index at: https://docs.antonpayments.com/llms.txt
Use this file to discover all available pages before exploring further.
Editability note: this guide was drafted against the OpenAPI spec. If the product/engineering team hasn’t validated it against a recent end-to-end trace, flag anything that reads off and edit the relevant section — each H2 below is self-contained.
The data model
Three entities come together on every payout:- Beneficiary — who you’re paying. Identity only; PII is tokenized on creation.
- Instrument — where the money goes. Bank account, wallet, or card, attached to a beneficiary. Credentials are tokenized.
- Payout — the single payment. Links a beneficiary and one of their instruments to an amount, currency, and rail.
Economics: source vs dest amounts
Every payout has two amounts:source_amount— what’s debited from your merchant balance in your source currency.dest_amount— what the beneficiary receives in their destination currency.
fixed_side field tells Anton which amount is authoritative:
fixed_dest(default) — beneficiary receives exactlydest_amount; Anton computessource_amountincluding FX and fees.fixed_source— merchant pays exactlysource_amount; Anton computes how much the beneficiary receives after FX and fees.
fee_bearer controls who absorbs the fee:
merchant(default) — fee is added on top ofsource_amount.beneficiary— fee is deducted fromdest_amount, so the beneficiary receives less than the stated amount.
Corridors, methods, and rails
A corridor is a(currency, country, method, network) combination Anton can deliver through. Before attempting a payout, verify the corridor is enabled on your account:
method field on POST /v1/payouts selects the delivery method. For fiat:
faster_payment— UK Faster Paymentssepa— SEPA Credit Transfer (EUR)ach— US ACHswift— SWIFT international wirewire— generic domestic wirebank_transfer— generic bank transfer (rail picks based on corridor)mobile_money— M-Pesa, MTN, etc.
rail_type (fiat, crypto, or stablecoin) is a hint Anton may override based on corridor availability.
Purpose and reference
Two required fields that serve different audiences:purpose— a compliance-facing payment-purpose code. Examples:contractor_payment,supplier_payment,salary,refund,services,goods. Used for reporting and some rails require it.reference— your own free-form string, up to 100 chars. Appears on the beneficiary’s statement where the rail supports it. Use your invoice or order number so both sides can reconcile.
Idempotency
POST /v1/payouts requires an Idempotency-Key header. Derive it from your own business data so retries after a network failure converge on the same payout:
X-Idempotent-Replayed: true. Different bodies with the same key return 409 idempotency_conflict. See Idempotency for details.
The state machine
Payouts move through a 13-state machine. The full detail is in How Anton Evaluates Payouts; the short version:| State | Meaning | What to do |
|---|---|---|
created | Payout record exists. Next: screening. | No action. |
pending_screening | OFAC + velocity + engine scoring running. | No action. Transient. |
pending_approval | Clear to submit; waiting for maker-checker if configured. | No action. |
approved | Ready for the rail. | No action. |
processing | Submitted to the rail. | Surface “in flight” in your UI. |
sent | Rail confirmed dispatch. | Surface “sent” in your UI. |
completed | Funds delivered and settled. | Mark the payout done in your system. |
failed | Rail returned a hard failure. | Review failure reason; may retry with a different instrument. |
returned | Funds were returned after send. | Handle the return in your accounting. |
screening_failed | Sanctions or compliance block. | Do NOT retry with same beneficiary. |
velocity_blocked | Merchant velocity rule rejected. | Wait for velocity window to reset, or request a higher threshold. |
manual_review | Held for human review — usually Anton Engine flagged risk. | Treat as a normal “pending” state; can take minutes to hours. |
cancelled | Cancelled before rail submission. | Final. |
Subscribe to webhooks — don’t poll
Every state transition fires apayout.* event. Subscribe once via POST /v1/webhooks and handle the events you care about:
payout.completed— funds deliveredpayout.failed,payout.returned— terminal failure pathspayout.screening_failed,payout.velocity_blocked— compliance/risk blockspayout.cancelled— operator or API cancellation
GET /v1/payouts/{id} works in development but wastes rate-limit budget at scale and misses transitions.
Cancelling a payout
You can cancel a payout that has not yet been submitted to a rail — fromcreated, pending_screening, pending_approval, pending_engine_review, or manual_review:
processing, the rail has it — cancellation is no longer possible via the API. Contact support if you need to halt an in-flight payout.
On successful cancellation, the debited funds (source amount, fee, and any FX buffer) are released back to your balance.
What can go wrong
422 insufficient_balance
422 insufficient_balance
Your merchant balance in the source currency can’t cover
source_amount + fee + buffer. Top up the balance or reduce the payout.403 corridor_not_enabled
403 corridor_not_enabled
The requested
(source_currency, dest_currency, country, method) isn’t active on your account. Call GET /v1/corridors to see active ones, or contact support to enable a new corridor.404 beneficiary_not_found / instrument_not_found
404 beneficiary_not_found / instrument_not_found
The ID doesn’t exist or belongs to a different merchant. Double-check the ID, including prefix (
ben_..., ins_...).422 invalid_instrument
422 invalid_instrument
The instrument is archived, disabled, or its method/currency doesn’t match the payout. Instruments are scoped to a single country + method at creation.
429 rate_limit_exceeded
429 rate_limit_exceeded
Honor
Retry-After and back off. See Rate Limits.Next steps
Manage beneficiaries
Dedup, update PII, archive, restore.
Handle webhooks
Subscription, signing, delivery semantics.
Crypto & stablecoin
Network selection, finality, memo/tag fields.
FX & exchange
Lockable quotes and cross-currency payouts.