Skip to main content
POST
/
v1
/
pricing
/
quote
Quote a fee for a hypothetical payout
curl --request POST \
  --url https://api.antonpayments.com/v1/pricing/quote \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'DPoP: <api-key>' \
  --data '
{
  "source_currency": "USD",
  "dest_currency": "USD",
  "amount": "1234.56",
  "dest_country": "US"
}
'
{ "fee": "1234.56", "fee_currency": "USD", "plan_id": "<string>", "quote_id": "<string>", "expires_at": "2026-04-15T14:30:00Z" }

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.

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.

Body

application/json
source_currency
string
required

ISO 4217 three-letter currency code.

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

"USD"

dest_currency
string
required

ISO 4217 three-letter currency code.

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

"USD"

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_country
string

ISO 3166-1 alpha-2 country code.

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

"US"

method
enum<string>

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

Response

Fee quote.

fee
string
required

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

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

"1234.56"

fee_currency
string
required

ISO 4217 three-letter currency code.

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

"USD"

fee_type
enum<string>
required
Available options:
fixed,
percentage,
hybrid,
tiered
plan_id
string
required
Pattern: ^prc_[a-zA-Z0-9]+$
quote_id
string
required

Bindable quote identifier. Pass on POST /v1/payouts to lock this fee.

Pattern: ^pq_[a-zA-Z0-9]+$
expires_at
string<date-time>
required

RFC 3339 / ISO 8601 timestamp in UTC.

Example:

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