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). For CBE, Method 1 works with FT references; Method 2 scans QR/OCR from a receipt photo. 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. Use Method 2 to upload a receipt photo (QR / OCR). For CBE, Method 1 verifies FT references; Method 2 reads the receipt QR share token when present.
Method 1 — Verify by transaction ID
Send JSON with provider and the bank reference as transactionId. Content-Type: application/json. For CBE, prefer the FT reference (and save your account number under My providers so the last 8 digits can be appended).
Loading…Method 2 — Verify by receipt photo
Send multipart/form-data with provider and receipt (JPEG or PNG, max 8 MB). Do not send transactionId — the photo replaces it (QR / OCR). Same success response as Method 1. Useful for CBE when the receipt QR has a v2- share token.
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 CBE FT references, save your account number under My providers (Method 1) or use Method 2 for receipt photos.
| 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 | Not required — Method 1 or 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…OCR_NO_TRANSACTION_IDReceipt photo — no ID foundMethod 2 could not read a transaction ID from the receipt photo. Use a clearer image, or use Method 1 with a typed transaction ID.
Loading…MISSING_RECEIPTMissing receipt imageMethod 2 requires a receipt image file in the multipart request.
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. 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.