Submits multiple payout orders in a single request. Each order references a quoteId from the bulk quote endpoint and includes full recipient details. Orders are validated and processed independently — a failure in one order does not block the others.
| Status | Message | What it means | How to fix |
|---|---|---|---|
| 400 | Insufficient wallet balance for transaction | Wallet balance cannot cover the total payout amount plus fees. | Top up the wallet or reduce the number of orders before retrying. |
| 400 | Quotes only last for 10 minutes | One or more referenced quotes expired before submission. | Generate fresh bulk quotes and submit the payout immediately. |
| 400 | Invalid country or currency ISO code | Unsupported country/currency combination in a recipient. | Use corridor-supported ISO codes for both quote and recipient data. |
| 400 | Account name mismatch, use account enquiry endpoint | Account name in payload differs from bank enquiry results. | Re-run account enquiry and match the returned account name. |
| 400 | Invalid Bank Sortcode | Sort code missing, malformed, or unsupported. | Fetch the correct sort code from the bank list and verify formatting. |
| 400 | {field_name} cannot be empty | Required recipient field omitted from the payload. | Fill in every mandatory field (name, account number, etc.) before submitting. |
| 401 | API key missing or incorrect | x-api-key header absent, invalid, or expired. | Supply the correct API key for the environment you are targeting. |
| 403 | IP not whitelisted | Request originated from an unapproved IP. | Add your server IP to the dashboard allowlist. |
| 422 | Invalid quote ID provided | Quote ID missing, invalid, expired, or already consumed. | Create new bulk quotes and reference them in the payout call. |
| 500 | Service temporarily unavailable | Temporary backend/service disruption. | Retry with exponential backoff; contact support if it persists. |