Skip to main content
POST
/
v1
/
payouts
curl --request POST \
  --url https://api.antonpayments.com/v1/payouts \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '
{
  "beneficiary_id": "ben_01HX8Z9K0M2N3P4Q5R6S7T8UA1",
  "instrument_id": "ins_01HX8Z9K0M2N3P4Q5R6S7T8UA2",
  "source_amount": "500.00",
  "source_currency": "USD",
  "dest_amount": "500.00",
  "dest_currency": "USD",
  "method": "ach",
  "rail_type": "fiat",
  "fixed_side": "fixed_dest",
  "purpose": "contractor_payment",
  "reference": "INV-1042"
}
'
{
  "id": "pay_01HX8Z9K0M2N3P4Q5R6S7T8UAB",
  "merchant_id": "mer_01HX8Z9K0M2N3P4Q5R6S7T8UZZ",
  "beneficiary_id": "ben_01HX8Z9K0M2N3P4Q5R6S7T8UA1",
  "instrument_id": "ins_01HX8Z9K0M2N3P4Q5R6S7T8UA2",
  "status": "processing",
  "method": "sepa",
  "source_amount": "550.00",
  "source_currency": "USD",
  "dest_amount": "500.00",
  "dest_currency": "EUR",
  "exchange_rate": "0.9091",
  "fee": "5.00",
  "fee_currency": "USD",
  "fee_bearer": "merchant",
  "fixed_side": "fixed_dest",
  "total_debited": "557.50",
  "total_debited_currency": "USD",
  "fee_finalized": false,
  "buffer_amount": "2.50",
  "buffer_currency": "USD",
  "rail_type": "fiat",
  "rail_provider": "openpayd",
  "rail_reference": "OP-2026-04-15-778812",
  "network": "sepa",
  "purpose": "supplier_payment",
  "reference": "PO-8821",
  "created_at": "2026-04-15T14:30:00Z",
  "updated_at": "2026-04-15T14:30:05Z",
  "screened_at": "2026-04-15T14:30:02Z",
  "approved_at": "2026-04-15T14:30:04Z",
  "processed_at": "2026-04-15T14:30:05Z"
}

Authorizations

Authorization
string
header
required

API keys are opaque strings prefixed by environment:

  • ak_live_* — production keys, accepted only on api.antonpayments.com.
  • ak_test_* — sandbox keys, accepted only on api.antonpayments.dev.

Include your key in the Authorization header: Bearer ak_test_....

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,
on_chain,
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.

Response

Payout created. Subsequent lifecycle is reported via webhooks.

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,
on_chain,
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"