A single API that turns a receipt id into trusted, structured data
Payment·Verify reads Telebirr and CBE receipts straight from each bank’s own endpoint, parses them into clean JSON, and (optionally) confirms the money landed in your account. No screenshots, no manual checking.
Four jobs, one endpoint shape
Learn the pattern once. Every bank and every operation follows it.
1 · Read
You send a transaction id, full receipt URL, or FT reference. We fetch the live receipt from the bank.
2 · Parse
We extract payer, receiver, amount, currency, date and status into a consistent JSON object.
3 · Verify
Optionally pass your account/name — we compare it to the receiver and return a true/false match.
4 · Decide
auto_eligible tells your app when it’s safe to auto-approve an order or top-up.
The full surface
All POST, all JSON, all behind your Authorization: Bearer pk_live_… key.
| Endpoint | Purpose | Required body |
|---|---|---|
POST /api/check/telebirr | Parse a Telebirr receipt | url |
POST /api/check/cbe | Parse a CBE receipt | url (+ receiver_account for bare FT) |
POST /api/verify/telebirr | Parse and match receiver | url + receiver_name/receiver_account |
POST /api/verify/cbe | Parse and match receiver | url + receiver_account |
POST /check · /verify | Generic — pick bank in body | bank + url |
GET /health | Service status (no key) | — |
Try them live with your key in the tester or the interactive docs.
Request in, structured data out
POST /api/check/telebirr
{
"url": "DDQ18SQ4KF"
}POST /api/check/cbe
{
"url": "FT261459C214",
"receiver_account": "1000310163957"
}POST /api/verify/telebirr
{
"url": "DDQ18SQ4KF",
"receiver_name": "Abebe Kebede",
"receiver_account": "251911223344"
}bank- telebirr or cbe
payer- Who sent the money
receiver- Who was paid
amount- Numeric value
currency- ETB
status- Completed / Unknown
verified- Match result (verify only)
auto_eligible- Safe to auto-approve?
How we keep results honest
Read from the source
We query the bank’s own receipt endpoint — never an uploaded image that can be edited.
No false positives
Invalid, expired or unreadable ids return status: "Unknown" and auto_eligible: false — never a fake “Completed”.
Receiver matching
Verify endpoints confirm the money reached your account, defeating “paid someone else” screenshots.
Hashed keys
API keys are stored only as a hash. Lost a key? Revoke and mint a new one from your dashboard.
Clear errors
Bad input → 400, your key inactive → 402, upstream bank down → 502, timeout → 504. Easy to handle.
Usage tracking
See your calls per day in the dashboard so you always know what you’re using.
Built for anyone accepting Ethiopian payments
E-commerce
Auto-confirm an order the moment a customer pastes their transfer id at checkout.
Top-up & wallets
Credit balances instantly once a Telebirr/CBE payment to your account is verified.
Bookings & events
Validate ticket and reservation payments without a human checking screenshots.
SaaS & subscriptions
Activate or renew accounts automatically from a pasted receipt — like we do.
Marketplaces
Confirm buyer→seller payments before releasing goods or payouts.
Bots & automations
Telegram/WhatsApp bots can verify a payment in a single API call.
Telebirr & CBE live — more banks shipping soon
Same API, growing list. See what’s live and what’s next.