Check any transaction
Transaction Status API
Look up any transaction that belongs to your business by its reference and read both the current state and the full timeline of how it got there.
POST
https://zonmpay.com/api/public/v1/statusStep by step
- 1
Authenticate the request
Send your secret key in the x-api-key header (or as Authorization: Bearer KEY). Keys are created in the developer area and shown only once — store yours server-side and never in browser code.
- 2
Send the reference
POST the reference you stored. Only transactions belonging to your business are returned.
- 3
Read the status
status is one of PENDING, SUCCESS, FAILED, CANCELLED, REVERSED or REFUNDED. The timeline array lists every recorded state change.
- 4
Poll sensibly
Webhooks are the primary channel. If you must poll, do it every few seconds and stop once the status is final.
Request body
referencestringRequiredThe reference returned when the transaction was created
| Field | Type | Required | Description |
|---|---|---|---|
| reference | string | Yes | The reference returned when the transaction was created |
Example request
cURL
curl -X POST https://zonmpay.com/api/public/v1/status \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{ "reference": "A1B2C3D4E5" }'Responses
Pending
{
"type": "info",
"message": "Transaction is being processed",
"data": {
"reference": "A1B2C3D4E5",
"type": "API Payin",
"direction": "credit",
"amount": "5000.00",
"currency": "TZS",
"status": "PENDING",
"channel": "MOBILE",
"channelprovider": "Vodacom Tanzania",
"accountnumber": "255712345678",
"timeline": [
{ "status": "PENDING", "note": "Payment request created", "at": "2026-09-19T14:30:45.000Z" }
]
}
}Not found
{
"type": "error",
"message": "Transaction reference not found",
"data": { "error_code": "not_found" }
}Things that can go wrong
reference_requiredNo reference was supplied.not_foundNo transaction with that reference belongs to your business.