
Proof a payment really landed.
Mela checks CBE, Telebirr, and Bank of Abyssinia references against the bank before you release an order.
From the slip to JSON.
Send the reference
One POST with the bank code and the FT or TB number your customer paid with.
FT24123ABCDE
Mela reads the bank
QR first, OCR if needed. The bank's own page is the source, not the screenshot.
You get the record
Payer, amount, and date come back as JSON. Pass an expected amount to flag mismatches.
{ "verified": true, "amount": 1500 }
A call, not a claim.
This is what your backend gets back: the bank's own record of who paid, how much, and when.
- No SDK, one POST
- JSON in, JSON out
- Batch up to 50 references
$ curl -X POST https://verifypayment.tec.et/api/v1/verify \ -H "Authorization: Bearer mela_live_..." \ -d '{ "bank": "cbe", "reference": "FT24123ABCDE", "expected_amount": 1500 }'
{
"verified": true,
"bank": "cbe",
"receipt": {
"payer_name": "Abebe Kebede",
"amount": 1500,
"currency": "ETB"
},
"amount_matches": true
}Built for businesses that can't afford to guess.
The bank is the source of truth
Every field comes from the bank's own records, never from a screenshot a customer could have edited.
Signed webhooks
Verification results pushed to your backend with HMAC signatures, retries, and a delivery log.
Screenshots welcome
QR decode first, OCR fallback. Drop a receipt in the playground or send it to /verify/image.
Test keys, real shapes
mela_test_ keys return deterministic simulated receipts so you can build before spending live quota.
Banks and wallets we read.
See full coverage- Commercial Bank of Ethiopia
- Telebirr
- Bank of Abyssinia
- CBE Birr
- Dashen Bank
- Awash Bank
- Siinqee Bank
Stop trusting screenshots.
Start checking the bank.
Free to start, test mode included, and your first verification is minutes away.