Verification
Verify one receipt directly or detect its provider.
Use POST /verify for automatic routing. Dedicated provider routes remain available when you already know the receipt source.
Universal verification
POST
/verifyAny plan with creditsDetects CBE, Telebirr, CBE Birr, Dashen, or Bank of Abyssinia from the reference and optional secondary fields. M-Pesa is not auto-detected.
json
{
"reference": "FT12AB34CD56",
"suffix": "12345678",
"phoneNumber": "251911223344"
}Only reference is always required. Send only the secondary field required by the receipt.
typescript
import { veritas } from "@/lib/veritas";
const result = await veritas<{
success: boolean;
data?: unknown;
}>("/verify", {
method: "POST",
body: JSON.stringify({
reference: "FT12AB34CD56",
suffix: "12345678",
}),
});Dedicated routes
| Provider | Routes | Required input |
|---|---|---|
| CBE | GET/POST /verify-cbe | reference; accountSuffix for bare legacy FT references |
| Telebirr | POST /verify-telebirr | reference |
| Dashen | GET/POST /verify-dashen | reference |
| Abyssinia | GET/POST /verify-abyssinia | reference and five-digit suffix |
| CBE Birr | GET/POST /verify-cbebirr | receiptNumber and 251 phoneNumber |
| M-Pesa | GET/POST /verify-mpesa | reference |
typescript
import { veritas } from "@/lib/veritas";
const cbe = await veritas("/verify-cbe", {
method: "POST",
body: JSON.stringify({
reference: "FT12AB34CD56",
accountSuffix: "12345678",
}),
});
const telebirr = await veritas("/verify-telebirr", {
method: "POST",
body: JSON.stringify({ reference: "ABC123DE45" }),
});
const dashen = await veritas("/verify-dashen", {
method: "POST",
body: JSON.stringify({ reference: "1234567890123456" }),
});
const abyssinia = await veritas("/verify-abyssinia", {
method: "POST",
body: JSON.stringify({
reference: "FT12AB34CD56",
suffix: "12345",
}),
});
const cbeBirr = await veritas("/verify-cbebirr", {
method: "POST",
body: JSON.stringify({
receiptNumber: "ABC123DE45",
phoneNumber: "251911223344",
}),
});
const mpesa = await veritas("/verify-mpesa", {
method: "POST",
body: JSON.stringify({ reference: "ABC123DE45" }),
});Credit behavior
A single verification consumes one monthly verification credit before provider validation and upstream lookup. A malformed or unsuccessful provider response can therefore still consume a credit.
Response envelopes
CBE and M-Pesa commonly return top-level result fields. Telebirr wraps receipt data in data. Abyssinia uses an outer success envelope with provider data nested inside. Avoid one rigid response interface across every provider.