All errors from the Payments API share one structure. Whether an error appears in an error response, on a failed payment, or in a webhook payload, it is the same object:
| Attribute | Required | Description |
|---|---|---|
code | Yes | A unique error code identifying the issue |
title | Yes | A short summary of the error |
detail | Yes | A detailed explanation of the error |
data | No | Per-attribute validation messages (e.g. on 400 and 422 responses) |
links | No | Related documentation links (e.g. on 401 and 503 responses) |
Error Responses
Requests that fail return an errors array at the top level of the response body.
API error (400)
Returned when request parameters fail contract validation. The data attribute contains per-attribute messages.
{
"errors": [
{
"code": "ZIS01",
"title": "Bad Request",
"detail": "The request parameters are invalid.",
"data": {
"amount": ["can't be blank"],
"uid": ["can't be blank"]
}
}
]
}Failed Payments
When a payment fails asynchronously, the payment resource in subsequent responses includes an errors array describing the cause.
{
"data": {
"status": "failed",
"errors": [
{
"code": "ZIC01",
"title": "Creditor Account Alias Not Resolved",
"detail": "The creditor account alias could not be resolved."
}
]
}
}A failed payment's payments_payout.finalised webhook carries the same errors array — see the Webhooks page.
Failure Code Prefixes
All codes use the ZI prefix (Zepto payment Initiation). The third character indicates the responsible party:
- S — Shared (applies regardless of side)
- D — Debtor (originator of the payment)
- C — Creditor (recipient of the payment)
Shared Failure Codes
Codes that may apply to any request or payment, regardless of which side caused the issue.
| Code | Title | Description |
|---|---|---|
| ZIS01 | Bad Request | The request parameters are invalid. |
| ZIS02 | Unprocessable Entity | The request could not be processed. |
| ZIS03 | Duplicate UID | A payment with the given UID already exists. |
| ZIS04 | Retention Period Expired | The payment is outside the retention period and is no longer available. |
| ZIS05 | Over Per-Transaction Limit | The requested amount exceeds your per-transaction limit. |
| ZIS06 | Debtor and Creditor Are the Same Account | Please use transfers to move money between internal accounts. |
| ZIS07 | Client Not Found | The client could not be found. |
| ZIS08 | Unauthorised Access Token | Access token is expired or not valid |
| ZIS09 | Unauthorised User | This user has not yet confirmed their account or is suspended |
| ZIS10 | Forbidden | This user is not permitted to perform the requested action. |
| ZIS11 | Invalid Accept Format | Accepted formats: '/', 'application/json' |
| ZIS12 | Invalid Request Body | The request body could not be parsed as JSON. |
| ZIS13 | Gateway Timeout | The server did not receive a timely response. Please try again later. |
| ZIS14 | Timeout Acquiring Lock | Timed out waiting for another request to finish. Retry in 5 seconds. |
| ZIS15 | Invalid Request Parameters | One or more request parameters are invalid. |
| ZIS16 | Payment Not Cancellable | The payment can't be cancelled in its current status. |
| ZIS99 | Unknown Payment Error | An unknown error occurred while processing the payment. Please contact Zepto for assistance. |
Debtor Failure Codes
Codes indicating the issue originated from the debtor side (e.g. account configuration, available funds).
| Code | Title | Description |
|---|---|---|
| ZID01 | Debtor Account Not Found | The debtor account could not be found. |
| ZID02 | Debtor Account Insufficient Funds | The debtor account had insufficient funds to process this payment. |
| ZID03 | Debtor Account Not Active | The debtor account is not active. |
| ZID04 | Debtor Account Not Configured | The debtor account is not configured for payments. |
| ZID05 | Debtor Account Unsupported Channel | The debtor account does not support the selected payment channel. |
| ZID06 | Debtor Account Debit Blocked | The debtor account has an active debit block. |
Creditor Failure Codes
Codes indicating the issue originated from the creditor side (e.g. unable to resolve the destination account).
| Code | Title | Description |
|---|---|---|
| ZIC01 | Creditor Account Alias Not Resolved | The creditor account alias could not be resolved. |
| ZIC02 | Creditor Account Closed | The creditor account is closed. |
| ZIC03 | Intermittent Outage At Target Institution | The target financial institution is experiencing technical difficulties. Please try again later. |
| ZIC04 | Creditor Account Blocked | The creditor account is blocked from receiving funds. |
| ZIC05 | Creditor Account Cannot Accept NPP Payments | The creditor account cannot accept this payment via NPP. |
| ZIC06 | Creditor Account Blocked By Institution | The creditor account is blocked by its financial institution and cannot receive funds. |
