REST API · v1

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

POST /api/v1/verify200 OK
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"
  }'
Response
{
  "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"
    }
  }
}
POST /api/v1/verify

4 ways to verify - same endpoint

Send whichever input you have. Check.et routes, parses, and verifies automatically.

bank + tx_number

Reference number

The most direct method - pass bank code and the FT/transaction reference.

receipt_url

Receipt URL

Paste the app share link. Bank and reference auto-extracted, no parsing needed.

receipt_file

PDF or image

Upload the bank PDF. For images, also send OCR text from your mobile SDK.

receipt_text

OCR / pasted text

Send raw receipt text and Check.et extracts the bank and reference for you.

GET /api/v1/banks

9 banks & wallets

All providers return identical JSON - write the integration once.

Full bank list
Commercial Bank of Ethiopia

CBE

cbe

account req.
Telebirr

Telebirr

telebirr

Dashen Bank

Dashen

dashen

Awash Bank

Awash

awash

Bank of Abyssinia

BOA

boa

account req.
Zemen Bank

Zemen

zemen

CBE Birr

CBE Birr

cbebirr

account req.
M-Pesa Ethiopia

M-Pesa

mpesa

Siinqee Bank

Siinqee

siinqee

Amhara Bank

Amhara

amhara

account req. means you must pass account_number - your receiving account, or the payer's phone for CBE Birr.

Quickstart

Up and running in 3 steps

01

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 →
02

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 →
bash
# Store the key as an env variable - never hard-code it
export CHECK_ET_API_KEY=chk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
03

Make your first call

POST to /api/v1/verify. Check success in the response to decide whether to fulfil the order.

Full API reference →
bash
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 } } }
Response schema

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 bank
  • existsboolean- true = transaction found in bank records
  • duplicateboolean- true = already verified in this branch
  • data.receipt.amountnumber- ETB amount as reported by the bank
  • data.receipt.payer_namestring- Sender name from the bank
  • data.receipt.transaction_dateISO 8601- Bank-reported timestamp
Full schema reference
response.json
{
  "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.

Business account required

Ready to integrate?

Create a business account to unlock API keys, branch isolation, team management, and unlimited verifications on Pro.