Verify an Ethiopian receipt for free against the bank's own record.

Checked

Bank

The banks publish receipts on public pages

Ethiopian banks and wallets publish each transaction receipt at a public address. cheki asks that page, reads it, and returns the same JSON for every bank, with the source link so you can open it yourself.

Telebirr and M-Pesa block cloud servers, so cheki opens the official receipt page for you to check the amount and receiver yourself. Direct checks return once a local relay is live.

Everything you need, nothing you don't

  1. Answers in seconds

    Each check asks the bank's own public receipt page, live. Fast enough for a checkout counter.

  2. No API key, no signup

    Start checking immediately. No account, no business plan, no credit limit.

  3. Honest results

    Green only when the bank's record confirms the receipt. A decoded QR or pasted text is marked as not confirmed.

  4. Batch reconciliation

    Check up to 20 receipts in one API call, or drop a folder of screenshots on the page.

  5. QR, photo and OCR

    Scan the QR with your camera, paste a screenshot, or let OCR read the transaction number.

  6. Self-host with Docker

    Run cheki on an Ethiopian network to reach the wallets that block foreign servers.

  7. Same JSON for every bank

    Every bank returns the same response shape. Write the integration once. SDKs for TS, Python, Dart, PHP and Go.

  8. Open source

    MIT licensed. Read the code, contribute, fork it. No black box.

Receipt verification for your business

Free for a business of any size: no per-check fee, no subscription, no signup. Fake screenshots, reused receipts and made-up references are caught the same way, by asking the bank.

  1. Shops and counters

    Staff check a transfer on cheki.et before the goods leave the counter. No integration, no accounts to set up.

  2. Online orders

    Your backend calls POST /api/verify before an order ships, or the SDK for TypeScript, Python, Go, PHP or Dart.

  3. Delivery

    Riders check cash-on-delivery transfers at the door, and the day's receipts are checked again in one batch.

  4. Accounting

    POST /api/verify/batch checks up to 20 receipts per call for end-of-day reconciliation. Self-host if you need more.

Guides and articles

All 11 articles

9 banks and wallets checked directly

Plus Telebirr and M-Pesa through their official receipt pages. 20 more in research. All use public receipt pages.

Built by the community, for the community

cheki is MIT licensed and lives on GitHub. No company owns it. If a bank changes its receipt page, anyone can submit a fix.

License
MIT
Banks
31 (9 checked directly, 2 via official page)
SDKs
TS, Python, Dart, PHP, Go
CLI
cheki verify, info, health
Self-hosting
Docker included

Questions people actually ask

Is cheki really free?

Yes. cheki is free: no signup, no API key and no credit card. The hosted API has fair per-IP rate limits (verify 30 per minute, batch 5 per minute); self-host for more. check.et charges 499 ETB/month or 4,990 ETB/year after 200 free verifications (one-time, not monthly). verify.et has a free tier of 200 verifications a month, then API plans from 500 to 3,000 ETB/month, or app plans of 699 ETB/month (team) or 4,000 ETB/year. Prices as listed on each service's site on 15 October 2026. cheki is MIT licensed, so you can also read the source and self-host it.

How does receipt verification work?

Every Ethiopian bank and mobile wallet publishes transaction receipts at publicly accessible URLs, and those URLs require no authentication. cheki fetches the URL, parses the response (PDF, HTML, or JSON), and returns clean structured JSON with sender, receiver, amount, date, and reference number, plus the source URL it came from. Telebirr and M-Pesa block cloud servers, so for those cheki.et opens the official receipt page instead.

Which banks are supported?

cheki checks 9 banks and wallets directly with the bank: CBE, Bank of Abyssinia, Dashen Bank, Awash Bank, CBE Birr, Siinqee Bank, eBirr, Bunna International Bank, and ZamZam Bank. Telebirr and M-Pesa block cloud servers, so cheki opens the official receipt page for you to check the amount and receiver yourself. Direct checks return once a local relay is live. Others are in research and anyone can contribute one. The endpoint formats live in a single file in the repo.

Do I need an API key?

No. cheki's API requires no authentication at all: no API key, no bearer token, no OAuth. Just POST to /api/verify with a JSON body containing the bank code, the reference number, and for some banks the account number.

Can I self-host cheki?

Yes. cheki is MIT licensed and ships with Docker support: clone the repo, run docker-compose up, and the API is live on localhost:3000. Self-hosting from an Ethiopian IP also bypasses geo-blocks on the Telebirr and M-Pesa endpoints.

Can I integrate cheki into my POS system?

Yes. cheki has a REST API and SDKs for TypeScript, Python, Go, PHP and Dart, and needs no API key, so any POS, online shop or accounting system can call it. Staff can also check receipts on cheki.et with no integration at all.

How do I reconcile a day's receipts?

Send them to POST /api/verify/batch, up to 20 receipts per call, and match the results against your orders. Count a receipt as paid only when it comes back verified: true, which means the bank's own record confirmed it.

Does cheki.et track visitors?

Only as anonymous page-view counts. cheki.et uses Vercel Web Analytics, which sets no cookies and keeps no personal identifier. Each page view is recorded with its query string and # part removed, API calls are never counted, and an address that is not one of cheki's pages is not recorded at all, so no receipt reference, receipt link or account number reaches analytics.