Skip to main content
This walks you from an empty sandbox to a delivered payout. It takes about five minutes if you already have sandbox OAuth credentials and a working DPoP proof signer.
Every request below uses the sandbox (https://api.antonpayments.dev) and a test OAuth client (ant_oc_test_...). No real funds move. Switch to https://api.antonpayments.com with ant_oc_live_* credentials when you’re ready for production — see Going Live.

Before you start

You need:
  • Sandbox OAuth credentials from the merchant dashboardclient_id, client_secret, and the DPoP private key the portal generated for you. Sandbox access is available before KYB — you do not need an approved merchant account to finish this quickstart.
  • A working DPoP proof signer. The Authentication page has a copy-paste curl + openssl + python script. Use it (or a JOSE library in your language) to mint an access token and sign per-request proofs.
  • curl, Node 18+, PHP 8+, or Go 1.21+ — any one is enough for the examples.
Mint an access token and store it. Examples below assume:
The Authorization: DPoP $ANTON_ACCESS_TOKEN header is shown on every example. The DPoP: <proof> header is implied — refer to Authentication for the per-request signing.

Step 1: Verify your token

Hit any authenticated endpoint with your token. Reference data like /v1/currencies works as a zero-side-effect smoke test.
A 200 OK with a currency list means your key is authenticated and ready to go.

Step 2: Create a beneficiary

A beneficiary is who you’re paying — a person or business. Personal details (name, address, DOB) are tokenized in Basis Theory on creation; Anton’s database never holds them in plaintext.
Save the returned id (prefixed ben_). You’ll use it in the next step.

Step 3: Attach a payment instrument

A beneficiary is the identity; an instrument is where the money goes — a bank account, wallet, or card. One beneficiary can have many instruments. Credentials (account numbers, wallet addresses, card PANs) are tokenized in Basis Theory on receipt. This example attaches a UK bank account. See GET /v1/payment-methods for the complete per-country catalog.
Save the returned id (prefixed ins_).

Step 4: Send a payout

Now send a payout from your sandbox balance to the beneficiary’s instrument. You specify both a source_amount (what you pay) and a dest_amount (what the beneficiary receives) plus fixed_side to tell Anton which is authoritative. For same-currency payouts these are identical.
The payout starts at pending_screening. In the sandbox, it moves through the full lifecycle in seconds:
Every transition fires a payout.* webhook event — see How Anton Evaluates Payouts for what each state means and how to handle manual_review.
Polling works while you’re developing, but production integrations should subscribe to webhooks. Create a subscription pointing at an HTTPS endpoint you control:
cURL
The response includes a one-time secret (whsec_...). Store it securely — you’ll use it to verify every delivery. See Webhook Signing for the HMAC-SHA256 verification recipe.
Never poll in production. Polling wastes your rate-limit budget and misses events. Webhook deliveries are signed, retried on failure, and replayable from the event history via GET /v1/webhooks/events/{id}/deliveries.

What’s next?

Send a payout

The full payout flow with economics, corridors, and FX.

Handle webhooks

Set up real-time notifications with signed deliveries.

Manage beneficiaries

Deduplication, PII updates, archive/restore, and ops workflows.

How Anton evaluates payouts

Screening, velocity, and the Anton Engine — what each state means.

Batch payouts

Upload a CSV and send thousands of payouts in one call.

Go live

Checklist to promote your integration from sandbox to production.