2.1 KiB
2.1 KiB
@qbirr/sdk
Verify Ethiopian bank transfer receipts in real time — CBE, Telebirr, Awash, Dashen, M-Pesa, Bank of Abyssinia, and eBirr.
Install
npm install @qbirr/sdk
Requires Node.js 18+ (uses built-in fetch). Zero dependencies.
Quick start
import { Qbirr } from '@qbirr/sdk';
const qb = new Qbirr({ apiKey: process.env.QBIRR_API_KEY });
const r = await qb.verify({
provider: 'cbe',
ref: 'FT23001234ABC',
amount: 500,
receiverName: 'YOUR FULL NAME',
receiverAccount: '1000017692643',
});
if (r.verified) {
console.log(`✓ Paid by ${r.payer}, amount: ${r.amount}`);
} else {
console.log(`✗ ${r.error}`);
}
API
new Qbirr(options)
| Option | Required | Default | Description |
|---|---|---|---|
apiKey |
✓ | — | Your key from the qbirr dashboard |
baseUrl |
https://verify.qbirr.com |
Override (e.g. for self-hosted) | |
timeoutMs |
30000 |
Per-request timeout |
qb.verify(req)
| Field | Type | Required | Notes |
|---|---|---|---|
provider |
string | ✓ | cbe · telebirr · abyssinia · dashen · mpesa · awash · ebirr |
ref |
string | ✓ | Transaction reference. For Awash, paste the SMS URL or its token. For eBirr, paste the URL or "tenant/token". |
amount |
number | ✓ | Expected payment amount in ETB |
receiverName |
string | ✓ | Exact name on your receiving account |
receiverAccount |
string | for CBE & Abyssinia | Your account number |
Returns { verified, payer, amount, error }.
qb.usage()
Returns the current month's { used, limit, remaining, plan, period_start, period_end }.
Errors
QbirrError is thrown for network failures, HTTP 4xx/5xx, or non-JSON responses. Verification failures (wrong amount, wrong receiver, expired receipt) are NOT thrown — they're returned as { verified: false, error: '...' }.
import { Qbirr, QbirrError } from '@qbirr/sdk';
try {
const r = await qb.verify({ ... });
} catch (e) {
if (e instanceof QbirrError) {
console.error(`API error ${e.status}: ${e.message}`);
}
}
License
MIT