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.
Editability note: this guide was drafted from the OpenAPI spec. If the product/engineering team has an updated batch flow (file schema, row limits, validation rules), edit inline — each H2 is self-contained.
When to use batches
- Payroll — one upload per pay cycle
- Marketplace disbursements — nightly seller settlements
- Contractor payments — monthly or bi-weekly payouts to many contractors
POST /v1/payouts.
The file format
Download the template to start:external_ref— your beneficiary reference (used to match existing beneficiaries or create new ones)- Beneficiary identity fields — populated only when creating a new beneficiary from the row
source_amountordest_amount— decimal stringdest_currency,dest_countrymethod,reference,purpose- Method-specific credential columns (e.g.,
iban,sort_code,wallet_address)
Upload a batch
- Max file size: 32 MB
- Max rows: contact support for current limits
uploaded status. Anton queues an async validation job — polling the batch endpoint will show the status moving through uploaded → validating → validated (or validation_failed).
Duplicate uploads of the exact same file within 24 hours return 409 duplicate_file — use Idempotency-Key on the upload if you want deterministic retries (the file hash already acts as one, but explicit keys give clearer error handling).
Watch for validation
Validation is asynchronous. Poll or subscribe to webhooks:status moves to validated, the response includes a summary block:
new_beneficiaries/matched_beneficiaries/existing_beneficiaries- Method mix (count of rows per payment method)
- Estimated debits per funding currency
- FX markup in basis points
- Balance-sufficiency check per currency
expires_at — confirm before it expires, or the validated batch is marked expired and you have to re-upload.
Inspect errors before confirming
Row-level validation errors and warnings:- Missing required columns
- Invalid currency / country codes
- Amount formatting (non-decimal, too many digits)
- Beneficiary mismatch (PII conflicts with existing record at same
external_ref) - Unsupported method for the destination country
Confirm a validated batch
Confirmation is irrevocable — once confirmed, Anton creates payouts from valid rows and starts processing.source_currency in the body is the default funding currency for rows that didn’t specify one. Omit to let Anton use your account default.
Watch processing
Status progression after confirmation:completed— every valid row became a successful payoutpartial— some rows succeeded, some failed during processingfailed— all rows failed
batch.completed and batch.failed webhook events rather than polling.
Inspect per-row results
Once processing finishes, pull the per-row outcomes:success / failed / skipped / pending), and the created payout_id (if any). Use this to reconcile your source file with what actually shipped.
For the created payouts themselves:
Payout records — the full state machine applies, and each fires its own payout.* webhook events as it moves through processing and settlement.
Cancelling
Before processing starts (states:uploaded, validating, validated, validation_failed, confirmed before worker picks it up), cancel the whole batch:
processing starts, cancel individual payouts instead.
Resumability
Anton tracks a per-batchcurrent_row_index checkpoint — if the batch worker restarts mid-process, it resumes from the last successfully processed row rather than re-processing everything. You don’t have to do anything for this to work; it’s platform behavior.
Next steps
Send a single payout
For low-volume, per-event payout flows.
Handle webhooks
Subscribe to
batch.* and payout.* events for real-time status.