Endpoint specification
GET /api/banks: Returns a list of all supported banks and wallets. No parameters, no authentication. The response is a JSON object with a banks array; each entry carries its id, status, endpoint URL and verification requirements. Only banks with status live can be verified; the others answer 404 from /api/verify.
Bank object fields
Each entry in banks contains:
- id: short identifier to send as bank (cbe, telebirr, boa, mpesa, etc.)
- name: full bank name
- type: 'bank', 'wallet', or 'mobile'
- status: 'live' or 'in-development'
- requiresAccount: whether an account number is needed for verification
- accountDigits: how many trailing digits of the account are required (omitted when not needed)
- requiresPhone: true when a payer phone number is needed (omitted otherwise)
- swift: the bank's SWIFT code, when it has one
- endpoint: the bank's receipt URL pattern
- color and initials: for UI display
Building a bank picker
Show the live banks in your bank picker and use each bank's requiresAccount, accountDigits and requiresPhone to decide which extra field to ask for. When you have a receipt link instead of a reference, you can skip the picker: send the link as the reference and cheki detects the bank from it.
Frequently asked questions
What does GET /api/banks return?
A JSON object { banks: [...] } listing every bank and wallet, live or in development. Each bank has id (the value to send as bank), name, type (bank, wallet or mobile), status (live or in-development), requiresAccount, endpoint, color and initials, plus swift, accountDigits and requiresPhone when they apply.
How many banks are supported?
cheki currently supports 8 live banks and wallets: CBE, Telebirr, Bank of Abyssinia, M-Pesa, Dashen Bank, Awash Bank, Siinqee Bank, and eBirr. New banks are added as their public endpoints are discovered.
Can I use this to auto-detect which bank a reference belongs to?
Not from this endpoint: it does not return reference formats. If you have the receipt link (from a QR code or a shared receipt), send it as the reference without a bank and cheki detects the bank from the link.
Read full API docs
Open cheki