Skip to main content
GET
Retrieve a payout

Authorizations

Authorization
string
header
required

OAuth 2.0 client_credentials grant (RFC 6749 §4.4) bound to a DPoP keypair (RFC 9449).

Flow (every authenticated /v1 call requires both an access token AND a fresh per-request DPoP proof):

  1. Register a credential via the merchant portal. Anton issues a client_id (ant_oc_<env>_<32hex>) and a client_secret (ant_ocs_<env>_<48hex>, shown ONCE). The portal generates an ES256 or Ed25519 DPoP keypair in your browser; you store the private half.
  2. Mint an access token: POST /oauth/token with Authorization: Basic <client_id:client_secret> and Content-Type: application/x-www-form-urlencoded. Body: grant_type=client_credentials. A DPoP header carrying a proof signed for the token endpoint is required (no ath claim on this proof).
  3. Use the token: send Authorization: DPoP <access_token> plus a fresh DPoP: <proof> header on every /v1 request. The proof JWT MUST carry htm (request method), htu (request URL, no query/fragment), iat (within ±60s), jti (unique within 5 min), and ath (SHA-256 of the access token, base64url).

Tokens expire in 1 hour in production / staging and 8 hours in sandbox. There are no refresh tokens — call /oauth/token again with your secret. Anton's public signing key is published at /.well-known/jwks.json.

OpenAPI 3.0 has no native DPoP scheme; this declaration plus dpopHeader together convey both the access-token Authorization and the per-request proof header.

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.

Path Parameters

id
string
required

Payout ID (prefixed pay_).

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

"pay_01HX8Z9K0M2N3P4Q5R6S7T8UAB"

Response

Payout.

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.

id
string
required
Pattern: ^pay_[a-zA-Z0-9]+$
Example:

"pay_01HX8Z9K0M2N3P4Q5R6S7T8UAB"

merchant_id
string
required
Pattern: ^mer_[a-zA-Z0-9]+$
beneficiary_id
string
required
Pattern: ^ben_[a-zA-Z0-9]+$
instrument_id
string
required
Pattern: ^ins_[a-zA-Z0-9]+$
status
enum<string>
required

Payout lifecycle state. See the How Anton Evaluates Payouts guide for the full state machine and integration guidance.

Available options:
created,
pending_screening,
screening_failed,
pending_approval,
approved,
processing,
sent,
completed,
failed,
returned,
cancelled,
manual_review,
velocity_blocked,
pending_engine_review
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
source_amount
string
required

Decimal amount as a string, never a float. Up to 12 whole digits.

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

"1234.56"

source_currency
string
required

ISO 4217 three-letter currency code.

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

"USD"

dest_amount
string
required

Decimal amount as a string, never a float. Up to 12 whole digits.

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

"1234.56"

dest_currency
string
required

ISO 4217 three-letter currency code.

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

"USD"

rail_type
enum<string>
required
Available options:
fiat,
crypto,
stablecoin
purpose
string
required
reference
string
required
created_at
string<date-time>
required

RFC 3339 / ISO 8601 timestamp in UTC.

Example:

"2026-04-15T14:30:00Z"

updated_at
string<date-time>
required

RFC 3339 / ISO 8601 timestamp in UTC.

Example:

"2026-04-15T14:30:00Z"

batch_id
string | null

Set when the payout was created as part of a batch upload.

Pattern: ^bat_[a-zA-Z0-9]+$
exchange_rate
string

Source-to-dest rate. Present on cross-currency payouts.

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

"1234.56"

fee
string

Decimal amount as a string, never a float. Up to 12 whole digits.

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

"1234.56"

fee_currency
string

ISO 4217 three-letter currency code.

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

"USD"

fee_bearer
enum<string>
Available options:
merchant,
beneficiary
fixed_side
enum<string>
Available options:
fixed_source,
fixed_dest
total_debited
string

Total drawn from your balance — source_amount + fee + buffer during processing. Buffer releases on finalization.

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

"1234.56"

total_debited_currency
string

ISO 4217 three-letter currency code.

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

"USD"

fee_finalized
boolean

Whether fee reflects the final rate from the rail.

buffer_amount
string

Cross-currency rate buffer held during processing, released on settlement.

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

"1234.56"

buffer_currency
string

ISO 4217 three-letter currency code.

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

"USD"

pricing_plan_id
string

Which pricing plan was used for the quote.

rail_provider
string

External rail name. Populated at rail-submission time.

Example:

"openpayd"

rail_reference
string

External provider reference. Useful for support tickets.

network
enum<string>

Specific rail or chain. Populated by the rail adapter when the payout is submitted.

Available options:
swift,
sepa,
ach,
fps,
rtgs,
ethereum,
bitcoin,
tron,
solana,
polygon,
arbitrum,
optimism,
base,
avalanche,
bsc,
lightning,
stellar,
ripple
wallet_address
string

Destination wallet address. Present for crypto/stablecoin payouts.

token_contract
string

ERC-20 / TRC-20 contract address. Present for stablecoin payouts.

token_symbol
string
Example:

"USDC"

tx_hash
string

On-chain transaction hash. Present once sent for crypto/stablecoin payouts.

block_confirmations
integer

Number of confirmations observed so far.

required_confirms
integer

Confirmations required before the payout reaches completed.

network_fee
string

Gas / network fee. Deducted from the settlement, not from your balance.

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

"1234.56"

network_fee_currency
string

ISO 4217 three-letter currency code.

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

"USD"

cancelled_reason
string

Populated on cancelled, failed, velocity_blocked, screening_failed.

engine_unavailable_at
string<date-time>

Present if the payout entered pending_engine_review because the Anton Engine was unreachable.

Example:

"2026-04-15T14:30:00Z"

metadata
object
screened_at
string<date-time>

RFC 3339 / ISO 8601 timestamp in UTC.

Example:

"2026-04-15T14:30:00Z"

screening_failed_at
string<date-time>

RFC 3339 / ISO 8601 timestamp in UTC.

Example:

"2026-04-15T14:30:00Z"

approved_at
string<date-time>

RFC 3339 / ISO 8601 timestamp in UTC.

Example:

"2026-04-15T14:30:00Z"

processed_at
string<date-time>

RFC 3339 / ISO 8601 timestamp in UTC.

Example:

"2026-04-15T14:30:00Z"

completed_at
string<date-time>

RFC 3339 / ISO 8601 timestamp in UTC.

Example:

"2026-04-15T14:30:00Z"

failed_at
string<date-time>

RFC 3339 / ISO 8601 timestamp in UTC.

Example:

"2026-04-15T14:30:00Z"

cancelled_at
string<date-time>

RFC 3339 / ISO 8601 timestamp in UTC.

Example:

"2026-04-15T14:30:00Z"