Verify any Ethiopian bank payment with one POST
CBE, Telebirr, Dashen and 6 more providers. Pass a reference number, a receipt URL, a PDF, or OCR text - the response is always the same structured JSON.
9
banks & wallets
4
input methods
< 3s
avg response
curl -X POST https://api.check.et/api/v1/verify \
-H "Authorization: Bearer $CHECK_ET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"bank": "cbe",
"transaction_number": "FT26144SG2ST",
"account_number": "1000876543218"
}'{
"success": true,
"exists": true,
"duplicate": false,
"message": null,
"data": {
"bank": "cbe",
"bank_name": "Commercial Bank of Ethiopia",
"verification_method": "official",
"receipt": {
"status": "completed",
"amount": 1350.00,
"currency": "ETB",
"transaction_date": "2025-06-10T14:30:00+03:00",
"payer_name": "Hayat Ahmed",
"receiver_name": "Abebe Bekele"
}
}
}
4 ways to verify - same endpoint
Send whichever input you have. Check.et routes, parses, and verifies automatically.
Reference number
The most direct method - pass bank code and the FT/transaction reference.
Receipt URL
Paste the app share link. Bank and reference auto-extracted, no parsing needed.
PDF or image
Upload the bank PDF. For images, also send OCR text from your mobile SDK.
OCR / pasted text
Send raw receipt text and Check.et extracts the bank and reference for you.
9 banks & wallets
All providers return identical JSON - write the integration once.
CBE
cbe
account req.Telebirr
telebirr
Dashen
dashen
Awash
awash
BOA
boa
account req.Zemen
zemen
CBE Birr
cbebirr
account req.M-Pesa
mpesa
Siinqee
siinqee
Amhara
amhara
account req. means you must pass account_number - your receiving account, or the payer's phone for CBE Birr.
Up and running in 3 steps
Create a business account
API keys are available to business accounts only. Personal accounts can use the dashboard but cannot generate keys.
Create business account →Generate an API key
Dashboard → API Keys → Create Key. Name it (e.g. "production"), copy the displayed key. It is shown once - store it in your secrets manager or .env file.
Open dashboard →# Store the key as an env variable - never hard-code it
export CHECK_ET_API_KEY=chk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMake your first call
POST to /api/v1/verify. Check success in the response to decide whether to fulfil the order.
Full API reference →curl -X POST https://api.check.et/api/v1/verify \
-H "Authorization: Bearer $CHECK_ET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"bank":"telebirr","transaction_number":"DEL889NG4S"}'
# → { "success": true, "data": { "receipt": { "amount": 500 } } }Identical shape across all providers
No matter which bank or input method - the envelope is always the same. One response handler covers all 9 providers.
successboolean- true = payment confirmed by the bankexistsboolean- true = transaction found in bank recordsduplicateboolean- true = already verified in this branchdata.receipt.amountnumber- ETB amount as reported by the bankdata.receipt.payer_namestring- Sender name from the bankdata.receipt.transaction_dateISO 8601- Bank-reported timestamp
{
"success": true,
"exists": true,
"duplicate": false,
"message": null,
"data": {
"bank": "cbe",
"bank_name": "Commercial Bank of Ethiopia",
"verification_method": "official",
"receipt": {
"status": "completed",
"amount": 1350.00,
"currency": "ETB",
"transaction_date": "2025-06-10T14:30:00+03:00",
"payer_name": "Hayat Ahmed",
"receiver_name": "Abebe Bekele"
}
}
}
Built for production
< 3 s response
Fast enough to block a checkout in real time. Most verifications complete in 1–3 seconds.
Duplicate detection
The same receipt can't verify twice per branch. Idempotent by design - safe to retry.
Branch-scoped keys
Create separate API keys per branch or environment. Revoke without touching other keys.
Full audit trail
Every call logged with amount, payer, timestamp, and the API key name that triggered it.
Ready to integrate?
Create a business account to unlock API keys, branch isolation, team management, and unlimited verifications on Pro.