Appearance
Error Codes
System error codes and handling strategies.
Important
These are system error codes, not transaction states. If you receive any error on Confirm or Find requests, do not create a new transaction — retry the same request instead.
Error Code Reference
Authentication & Access (1-9)
| Code | Description | Action |
|---|---|---|
1 | Auth failed | Check credentials in request |
2 | Bad request | Check request format and retry |
5 | POS sales not active | Contact support |
Transaction Lookup (20-29)
| Code | Description | Action |
|---|---|---|
20 | Transaction not found | Retry the request |
22 | External transaction not found | Check external_transaction_id in request |
23 | Could not get transaction info | Retry the request |
Input Validation (50-99)
| Code | Description | Action |
|---|---|---|
50 | Wrong input data | Check input data (e.g., phone number format) |
60 | Service provider error | On Confirm: retry until you get transaction info |
Product & Service (100-199)
| Code | Description | Action |
|---|---|---|
101 | Product is not available | Product is temporarily inactive |
105 | External transaction id already exists | Transaction with this ID already created |
Account Validation (200-299)
| Code | Description | Action |
|---|---|---|
201 | Wrong account number | Check account number and retry |
Balance & Limits (1000-1199)
| Code | Description | Action |
|---|---|---|
1000 | Transactions limit exceeded | Not enough balance on account |
1001 | Not enough funds | Not enough balance on account |
Customer Restrictions (1200+)
| Code | Description | Action |
|---|---|---|
1200 | Customer is banned | Transaction cannot be done for this account |
Error Response Format
Standard Error
json
{
"error": {
"code": 1001,
"message": "Not enough funds for this transaction"
}
}Error with Display Message
When display_error is present, you can show it directly to the customer:
json
{
"error": {
"code": 1200,
"message": "This customer is banned in our system",
"display_error": "This customer is banned"
}
}Retry Strategy
When to Retry
| Scenario | Action |
|---|---|
| HTTP error (timeout, 5xx) | Retry with exponential backoff |
Error codes 20, 23, 60 | Retry the same request |
| Error on Confirm/Find | Never create a new transaction, always retry |
Best Practices
Always use
external_transaction_id— This allows you to safely retry requests without creating duplicates.On Confirm errors — Keep retrying until you get a valid transaction state. Never create a new transaction.
On Find errors — Retry periodically (every 1-60 minutes) until you receive a final state.
Log all responses — Keep detailed logs for troubleshooting with support.
Contact Support
If you consistently encounter the same error:
- Technical issues: [email protected]
- Transaction issues: [email protected]