Documentation

API reference

Base URL: https://verify.qbirr.com

Stable since v1. Backwards-compatible changes are added regularly; breaking changes get a new path prefix.

Find your API key at /dashboard/keys. Treat it like a password — never expose it in browser code.

Authentication

Every request needs your API key in the X-API-Key header. The key looks like abc12345.LONGRANDOMSECRET — send the whole string.

POST /api/v1/verify

Verifies one transaction. Returns verified: true only if the receipt is real, the amount matches, and the receiver name matches.

curl -X POST https://verify.qbirr.com/api/v1/verify \
  -H "X-API-Key: $QBIRR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "cbe",
    "ref": "FT23001234ABC",
    "amount": 500,
    "receiver_name": "YOUR FULL NAME",
    "receiver_account": "1000017692643"
  }'

Request fields

Field Type Notes
providerstringcbe · telebirr · abyssinia · dashen · mpesa · awash · ebirr
refstringTransaction ref. For awash, paste the SMS URL or its token. For ebirr, paste the URL or "tenant/token"
amountnumberExpected amount in ETB. Overpayment OK; underpayment up to 10 ETB tolerated
receiver_namestringRequired. Case-insensitive whitespace-normalised match against the receipt
receiver_accountstringRequired for cbe and abyssinia

Response

{
  "verified": true,
  "payer":    "JANE DOE",
  "amount":   500,
  "error":    ""
}

GET /api/v1/usage

Returns the current calendar month's quota status.

curl https://verify.qbirr.com/api/v1/usage -H "X-API-Key: $QBIRR_API_KEY"

{
  "used": 124,
  "limit": 1000,
  "remaining": 876,
  "plan": "Starter",
  "period_start": "2026-05-01T00:00:00Z",
  "period_end":   "2026-06-01T00:00:00Z"
}

HTTP status codes

Code Meaning
200Processed. Check verified — could be true or false
400Malformed request
401Missing or invalid API key
402No active plan or plan expired
403Account suspended
429Quota or per-IP rate limit (60 req/min)

Provider notes

C

CBE cbe

Commercial Bank of Ethiopia.

Requires receiver_account.

T

Telebirr telebirr

Ethio Telecom mobile money.

Geo-blocked to Ethiopian IPs — handled automatically by our relay.

A

Awash Bank awash

Private bank.

Paste the SMS URL or just the URL token as ref.

D

Dashen Bank dashen

Super App.

M

M-Pesa mpesa

Safaricom Ethiopia.

Geo-blocked to Ethiopian IPs — handled automatically by our relay.

B

Bank of Abyssinia abyssinia

Private bank.

Requires receiver_account.

E

eBirr ebirr

COOPay · KAAFI · Nib · Wegagen · Ahadu.

Paste the URL or "tenant/token" as ref.

Official SDKs

Node.js

Node 18+ · zero deps

npm install @qbirr/sdk

Python

Python 3.8+ · requests

pip install qbirr

PHP

PHP 7.4+ · curl + json

composer require qbirr/sdk

Go

Go 1.21+ · stdlib only

go get github.com/qbirr/sdk-go

For Ruby, .NET, Java, Rust, or anything else — see the cURL example above; it's the same HTTP shape everywhere.

Best practices