Create an account
Register and choose a subscription plan that fits your verification volume.
Sign up freeDeveloper API
A single REST endpoint to verify Telebirr, CBE, CBE Birr, Dashen Super App, BOA and more, with ready-to-paste code samples in 7 languages.
Quick start
Register and choose a subscription plan that fits your verification volume.
Sign up freeCreate an API key in your dashboard and enable providers under My providers. For dashboard verification you can save defaults there; for API calls you can also pass accountNumber or phone per request when needed.
DashboardVerify with Method 1 (JSON + transaction ID) or Method 2 (receipt photo). CBE requires Method 2 — a receipt image is mandatory. For BOA and CBE Birr, include accountNumber or phone when needed.
See endpointAuthenticate with X-API-Key (keys start with vk_live_). Use a short provider key from the table below — not a UUID. Choose one way to identify the payment: send the transaction ID, or upload a receipt photo.
POSThttps://veriq.company/api/verifyX-API-Key: YOUR_API_KEYHow to verify
Use Method 1 when you already have a bank reference (most providers). Use Method 2 to upload a receipt photo. CBE (provider=cbe) requires Method 2 — a receipt image is mandatory.
Method 1 — Verify by transaction ID
Fastest path for providers other than CBE. Send JSON with provider and the bank reference as transactionId. Content-Type: application/json. Not allowed for CBE — use Method 2 instead.
Loading…Method 2 — Verify by receipt photo
Required for CBE. Optional for other providers. Send multipart/form-data with provider and receipt (JPEG or PNG, max 8 MB). Do not send transactionId — the photo replaces it. Same success response as Method 1.
Loading…Returns the providers you enabled under My providers. Requires an active subscription. Authenticate with X-API-Key (same as verify) or Authorization: Bearer from login.
GEThttps://veriq.company/api/my-providersX-API-Key: YOUR_API_KEYSuccess response (200)
Loading…Use each provider key as provider in POST /api/verify. Without a subscription you get HTTP 403 with code: "PLAN_REQUIRED".
Supported provider keys for the API. Enable each provider in your dashboard under My providers, then list what you enabled with GET /api/my-providers. For BOA and CBE Birr you can send accountNumber or phone on every API request, or save defaults in My providers for dashboard verification only. CBE requires a receipt photo (Method 2).
| API key | Provider | Requirements |
|---|---|---|
amhara | Not required — Method 1 or Method 2 | |
boa | Pass accountNumber in the API request body (at least 5 digits), or save a default under My providers for dashboard verification. | |
cbebirr | Pass phone in the API request body (251XXXXXXXXX) — Ethio Telecom (2519…) or Safaricom Ethiopia (2517…), e.g. 251947431170 or 251712345678. Or save a default wallet under My providers for dashboard verification. | |
cbe | Receipt photo required (Method 2) | |
dashen-super-app | Not required — Method 1 or Method 2 | |
mpesa | Not required — Method 1 or Method 2 | |
telebirr | Not required — Method 1 or Method 2 | |
wegagen | Not required — Method 1 or Method 2 |
Same response for Method 1 and Method 2. On HTTP 200, check success === true and read payment details from receipt.
Loading…Common failures. Use message for display and code for programmatic handling when present.
Missing, invalid, or revoked API key.
Loading…MISSING_ACCOUNTMissing account configurationSome providers require an account number or CBE Birr wallet phone. Send them in the request body, or save defaults under My providers.
Loading…RECEIPT_REQUIREDCBE requires a receipt photoCommercial Bank of Ethiopia (provider cbe) only accepts Method 2 — multipart with a receipt image. Typed transactionId alone is rejected.
Loading…OCR_NO_TRANSACTION_IDReceipt photo — no ID foundMethod 2 could not read a transaction ID from the receipt photo. Use a clearer image. For non-CBE providers you can also use Method 1.
Loading…MISSING_RECEIPTMissing receipt imageMethod 2 requires a receipt image file. For CBE this is the only allowed method.
Loading…Invalid JSON or invalid provider key format.
Loading…PLAN_REQUIREDNo subscription planUser has not selected an active payment plan.
Loading…TEST_QUOTA_EXCEEDEDDaily test limit reachedTest API keys (vk_test_…) use a free daily quota that does not bill your subscription.
Loading…QUOTA_EXCEEDEDMonthly limit reachedAPI and dashboard verification attempts exceeded the plan limit for this month.
Loading…The provider key exists but is not enabled for your account.
Loading…No provider with this API key is configured.
Loading…INVALID_TRANSACTION_IDTransaction not foundBank could not find a receipt for this reference (wrong ID or account).
Loading…NETWORK_FAILEDBank temporarily unavailableUpstream bank or receipt service timed out or returned a server error.
Loading…PROVIDER_FETCH_BLOCKEDProvider blocked server requestThe receipt host rejected the request from your server IP (common on overseas hosting). Use an Ethiopian HTTP proxy via TELEBIRR_HTTP_PROXY.
Loading…Switch between Method 1 (transaction ID) and Method 2 (receipt photo), pick a provider, then copy a language sample. CBE is locked to Method 2. Replace your API key and either YOUR_TRANSACTION_ID or the receipt file path.
Loading…All providers return the same receipt object shape when verification succeeds.
Get started
Free account. No card required. API access after choosing a plan.