Skip to main content
POST

Authorizations

DPoP
string
header
required

Per-request DPoP proof JWT (RFC 9449). MUST accompany the Authorization: DPoP <access_token> header on every protected operation. The proof is signed by the merchant's private DPoP key and carries htm, htu, iat, jti, and ath claims.

Headers

Idempotency-Key
string
required

Unique key identifying this operation. Sending the same key twice returns the original response instead of creating a duplicate. Keys are retained for 24 hours.

Maximum string length: 255

Body

application/json
beneficiary_id
string
required
Pattern: ^ben_[a-zA-Z0-9]+$
instrument_id
string
required

Must belong to the beneficiary named above and be in active status.

Pattern: ^ins_[a-zA-Z0-9]+$
source_amount
string
required

Amount debited from your merchant balance (before fees).

Pattern: ^-?\d{1,12}(\.\d+)?$
Example:

"1234.56"

dest_amount
string
required

Amount the beneficiary receives.

Pattern: ^-?\d{1,12}(\.\d+)?$
Example:

"1234.56"

dest_currency
string
required

ISO 4217 three-letter currency code.

Pattern: ^[A-Z]{3}$
Example:

"USD"

method
enum<string>
required

How the payout will be delivered. Distinct from an Instrument's method (which is the credential format) — this is the rail-family selection.

Available options:
bank_transfer,
wire,
sepa,
swift,
ach,
faster_payment,
mobile_money,
wallet,
crypto,
layer2,
exchange,
stablecoin
purpose
string
required

Payment purpose code. Used for compliance reporting and corridor-specific rail requirements. Examples — contractor_payment, supplier_payment, salary, refund.

Maximum string length: 255
Example:

"contractor_payment"

reference
string
required

Your own reference. Surfaces to the beneficiary where the rail supports it.

Maximum string length: 100
Example:

"INV-1042"

source_currency
string

ISO 4217 three-letter currency code.

Pattern: ^[A-Z]{3}$
Example:

"USD"

rail_type
enum<string>

Hint for rail routing. Anton may override based on corridor availability.

Available options:
fiat,
crypto,
stablecoin
fixed_side
enum<string>
default:fixed_dest

Which amount is authoritative — Anton recomputes the other using current corridor pricing.

Available options:
fixed_source,
fixed_dest
fee_bearer
enum<string>
default:merchant

Who absorbs the fee. beneficiary reduces the amount credited to them by the fee.

Available options:
merchant,
beneficiary
metadata
object
end_user_ip
string

IP of the merchant's end-user who initiated the payout. Used for risk signals. Superseded by session.ip — when both are present, session.ip wins; prefer sending the session object.

session
object

End-user session context for the action, as observed by YOUR edge — the person who initiated this payout in your product, not your server. Every field is optional, but richer context makes Anton's risk assessment of the payout materially better (IP geolocation and network type, timezone-vs-location consistency, device continuity).

Data-quality issues never fail the payout: only a syntactically invalid ip is rejected (422). Everything else — a private ip (usually a misconfigured proxy forwarding your own LB address), an unrecognized timezone, a future started_at — is accepted and reported back in the response's session_quality array so you can fix your integration.

By sending session data you confirm you collected it lawfully from your end user (under your own privacy notice) and are authorized to share it with Anton for fraud prevention and AML transaction-monitoring purposes.

quote_id
string

Optional bindable pricing quote id returned by POST /v1/pricing/quote. When present, the payout fee is locked to the quoted value. The quote must be unexpired, unbound, and match the payout's currencies + amount, otherwise the create returns 422 quote_expired / 422 quote_already_used / 422 quote_mismatch.

Pattern: ^pq_[a-zA-Z0-9]+$

Response

Payout created. Subsequent lifecycle is reported via webhooks.

data
object
required

A single payment from your merchant balance to a beneficiary's instrument. Moves through a 13-state machine — see the How Anton Evaluates Payouts guide.

Rail-specific fields (rail_provider, rail_reference, network, wallet_address, tx_hash, etc.) populate as the payout moves through approved -> processing -> sent -> completed.

Example: