Skip to content

Batches

Batches

POST /api/v1/batches with { "reference": "...", "payouts": [ <payout objects> ] } (max 500). Validated and reserved atomically — one bad row rejects the whole batch with nothing reserved. Returns 202 with the batch; items are submitted individually in the background (the provider has no bulk API). Batch status: processing, completed, completed_with_failures, needs_review, cancelled.

Request example

json
{
    "reference": "batch-2026-001",
    "payouts": [
        {
            "reference": "WD-2026-000123",
            "amount": "100.00",
            "currency": "ZAR",
            "method": "standard_bank_instant_money",
            "recipient": {
                "first_name": "Alex",
                "surname": "Example",
                "phone": "27821234567",
                "id_type": "Passport",
                "id_number": "EXAMPLE123",
                "country_of_issue": "ZW",
                "nationality": "ZW"
            },
            "metadata": {
                "withdrawal_id": "123"
            }
        }
    ]
}

Requires payouts:write. Each item carries its own unique vendor reference. Replaying an identical batch reference returns the existing batch; changed details produce REFERENCE_CONFLICT.

GET /api/v1/batches/

Requires payouts:read. Returns the batch and its items. Poll individual item statuses; only paid completes a withdrawal.

Download the dashboard CSV template. The API accepts JSON.

BatchRequest fields

FieldTypeRequired
referencestringYes
payoutsarrayYes

Batch fields

FieldTypeValues
idstring
referencestring
statusstringprocessing, completed, completed_with_failures, needs_review, cancelled
total_amountstring
total_feestring
item_countinteger
payoutsarray
created_atstring
currencystringZAR