Integrate payment verification in minutes

A single REST endpoint to verify Telebirr, CBE, CBE Birr, BOA and more, with ready-to-paste code samples in 7 languages.

1
Endpoint
7
Languages
6+
Providers
<5s
Response time

Up and running in 3 steps

01

Create an account

Register and choose a subscription plan that fits your verification volume.

Sign up free
02

Generate an API key

Create 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.

Dashboard
03

Call POST /api/verify

Send a provider key and transaction ID. For CBE, BOA, and CBE Birr, include accountNumber or phone in the request body — see the code examples for each provider.

See endpoint

Verify request

Send a POST with your API key in the header and a JSON body. Keys start with vk_live_. Use the short provider key from the table below, not a UUID.

Method
POST
URL
https://veriq.company/api/verify
Header
X-API-Key: YOUR_API_KEY
Content-Type
application/json

Request body

application/json
Loading…
provider
Required. Lowercase API key from the supported providers table.
transactionId
Required. Bank reference / receipt ID (max 128 characters).
accountNumber
Optional. Required for CBE and Bank of Abyssinia when you have not saved a default under My providers. Shown in code examples for those providers.
phone
Optional. Required for CBE Birr when you have not saved a default wallet under My providers. Ethio Telecom: 2519XXXXXXXX (e.g. 251947431170). Safaricom: 2517XXXXXXXX (e.g. 251712345678). Shown in code examples for CBE Birr.

Supported providers

Supported provider keys for the API. Enable each provider in your dashboard under My providers. For CBE, BOA, and CBE Birr you can send accountNumber or phone on every API request, or save defaults in My providers for dashboard verification only.

API keyProviderCredentials
amhara
Amhara Bank
Not required
boa
Bank of Abyssinia
Pass accountNumber in the API request body (at least 5 digits), or save a default under My providers for dashboard verification.
cbebirr
CBE Birr
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
Commercial Bank of Ethiopia
Pass accountNumber in the API request body, or save a default under My providers for dashboard verification.
mpesa
M-PESA
Not required
telebirr
Telebirr
Not required
wegagen
Wegagen Bank
Not required

Success response (200)

On HTTP 200, check success === true and read payment details from receipt.

200 OK
Loading…

Error responses

Common failures. Use message for display and code for programmatic handling when present.

HTTP 401Unauthorized

Missing, invalid, or revoked API key.

401 example
Loading…
HTTP 400MISSING_ACCOUNTMissing account configuration

Some providers require an account number or CBE Birr wallet phone. Send them in the request body, or save defaults under My providers.

400 example
Loading…
HTTP 400Validation failed

Invalid JSON or invalid provider key format.

400 example
Loading…
HTTP 403PLAN_REQUIREDNo subscription plan

User has not selected an active payment plan.

403 example
Loading…
HTTP 429TEST_QUOTA_EXCEEDEDDaily test limit reached

Test API keys (vk_test_…) use a free daily quota that does not bill your subscription.

429 example
Loading…
HTTP 429QUOTA_EXCEEDEDMonthly limit reached

API and dashboard verification attempts exceeded the plan limit for this month.

429 example
Loading…
HTTP 403Provider not enabled

The provider key exists but is not enabled for your account.

403 example
Loading…
HTTP 404Unknown provider key

No provider with this API key is configured.

404 example
Loading…
HTTP 404INVALID_TRANSACTION_IDTransaction not found

Bank could not find a receipt for this reference (wrong ID or account).

404 example
Loading…
HTTP 502NETWORK_FAILEDBank temporarily unavailable

Upstream bank or receipt service timed out or returned a server error.

502 example
Loading…
HTTP 502PROVIDER_FETCH_BLOCKEDProvider blocked server request

The receipt host rejected the request from your server IP (common on overseas hosting). Use an Ethiopian HTTP proxy via TELEBIRR_HTTP_PROXY.

502 example
Loading…

Code examples

Replace YOUR_TRANSACTION_ID and your API key. Pick a provider — code samples include accountNumber or phone only when that provider needs them.

bash
Loading…

Receipt fields

All providers return the same receipt object shape when verification succeeds.

transactionId
Bank reference or receipt ID
payer
Who paid
receiver
Who received
amount
Transferred amount
totalAmount
Total debited
commissionAmount
Fee or service charge (e.g. CBE Birr), if shown on receipt
vatAmount
VAT (e.g. CBE Birr), if shown on receipt
date
Payment date and time
reason
Payment reason or remark, when available
creditedAccount
Credited account, when available
status
VERIFIED on success

Start verifying payments today

Free account. No card required. API access after choosing a plan.