The verifyToken API returns a different set of status codes than standard gateway responses. Use this table only for interpreting results from the verifyToken request.
This applies when confirming payment status after token creation
(e.g., webhook failed, reconciliation, status polling).
Result Codes
| Code | Meaning |
|---|---|
| 000 | Transaction paid |
| 001 | Authorized (not yet captured/settled) |
| 002 | Overpaid / underpaid |
| 003 | Pending at bank |
| 005 | Queued for authorization |
| 007 | Partially paid / split payment pending |
| 800–899 | Reserved for platform use |
| 801 | Missing CompanyToken |
| 802 | CompanyToken does not exist |
| 803 | Invalid request name |
| 804 | XML error |
| 900 | Transaction not yet paid |
| 901 | Transaction declined |
| 902 | Data mismatch — field provided in explanation |
| 903 | Payment time limit exceeded |
| 904 | Transaction cancelled |
| 950 | Missing mandatory field(s) — field name included |
Key Response Fields
| Field | Description |
|---|---|
Result | Status code (see table above) |
ResultExplanation | Human-readable message |
CustomerName | Shopper name (returned if paid/failed) |
CustomerCredit | Last 4 digits of card |
CustomerCreditType | Card type |
TransactionApproval | Approval number (if paid) |
TransactionCurrency | Final charged currency |
TransactionAmount | Amount paid |
TransactionNetAmount | Net amount after fees |
TransactionSettlementDate | Settlement date |
TransactionRollingReserveAmount | Reserve held |
TransactionRollingReserveDate | Reserve release date |
FraudAlert | Fraud status indicator (see below) |
FraudExplanation | Fraud detail / reason |
CustomerPhone | Phone |
CustomerCountry | Country |
CustomerAddress | Street address |
CustomerCity | City |
CustomerZip | Postal code |
MobilePaymentRequest | Mobile money status |
AccRef | Internal accounting reference |
Not all fields return for all states (e.g. only paid/failed return customer info)
Fraud Codes
| Code | Meaning |
|---|---|
| 000 | Genuine transaction |
| 001 | Low risk (not checked) |
| 002 | Suspected fraud |
| 003 | Fraud cleared (merchant manually cleared) |
| 004 | Suspect fraud alert |
| 005 | Fraud cleared (system) |
| 006 | Blacklisted / confirmed fraud |
Notes
- A result of 900 means the payment hasn't happened yet — not an error
001means authorized but not yet captured002is rare — customer paid a different amount- If callback fails, system may email merchant after ~30 min
(DPO’s fraud/monitoring logic)
Developer Tip
Use this to interpret verifyToken:
| If Result | Then… |
|---|---|
000 | Mark as paid |
001 | Await settlement / capture |
900 | Pending — retry later |
901 | Decline — retry allowed |
903 | Token expired — re-initiate checkout |
904 | User canceled checkout |
002 | Flag for manual review (amount mismatch) |
Recommended Usage
- Poll only if webhook fails
- Log all verifyToken responses for audit
- Compare
CompanyRef,Amount,Currencyto your DB before marking paid

