Verify Receipt API Endpoint
POST /api/verify: verify a single Ethiopian bank receipt.
Read full API docsEndpoint specification
POST /api/verify: Verifies a single Ethiopian bank receipt. Accepts a JSON body with bank, reference, and optionally accountNumber. Returns a JSON response with the receipt data or an error message.
Request format
Send a POST request with Content-Type: application/json. The body must contain the bank code (e.g. 'cbe', 'telebirr', 'boa'), the transaction reference number, and for banks that require it, the account number.
- bank (required): bank code: cbe, telebirr, boa, mpesa, dashen, awash, zemen, cbebirr, siinqee
- reference (required): transaction reference number (e.g. FT26140P01YB)
- accountNumber (conditional): last 8 digits for CBE, last 5 for BOA, not required for Telebirr/M-Pesa
Response format
The response is a JSON object. On success: verified=true, with senderName, receiverName, amount, currency, date, reference, sourceUrl. On failure: verified=false, with an error message explaining what went wrong (receipt not found, geo-blocked, invalid reference format).
Frequently asked questions
What does POST /api/verify do?
It verifies a single Ethiopian bank receipt. You send a JSON body with the bank code, reference number, and (for some banks) the account number. The endpoint fetches the receipt from the bank's public URL, parses it, and returns structured JSON with sender name, receiver name, amount, date, and the source URL.
Do I need an API key for /api/verify?
No. cheki's API requires no authentication. No API key, no bearer token, no OAuth. Just POST with a JSON content type and the receipt details.
What's the rate limit?
There is no rate limit. You can call /api/verify as many times as you want. For bulk verification, use POST /api/verify/batch to verify up to 50 receipts in a single request.
Read full API docs
Open cheki