Verify eBirr Payments via API — Real-Time, Non-Custodial
Quick Answer: ShegerPay verifies eBirr payments in under 2 seconds through one REST API call. The customer pays from their eBirr wallet, the money lands in the merchant's eBirr account, and ShegerPay's webhook fires with payment.verified. ShegerPay never holds the funds — no merchant license required.
What is eBirr?
eBirr is an Ethiopian mobile money wallet operated under the HelloCash / Kaafi / Coop Bank ecosystem. It lets users send, receive, pay merchants, and cash in/out at agents from a phone number. eBirr is one of the newer mobile money players in Ethiopia and is gaining traction with merchants who want an alternative to Telebirr.
How eBirr verification works with ShegerPay
- Customer initiates payment from the eBirr app or USSD to the merchant's eBirr number
- eBirr settles the transfer into the merchant's wallet and SMS-delivers a Receipt Link to the customer
- Customer pastes the full Receipt Link into your checkout (or your backend POSTs it to
/api/v1/verifyastransaction_id) - ShegerPay returns
verified=truewith sender, amount, and timestamp, then fires the webhook
Important: Since 2026 the numeric eBirr Ref/Id is no longer enough. Always pass the full Receipt Link (starts with
https://receipt.ebirr.com/…). Passing the bare number returnserror_code: EBIRR_NUMERIC_ID_ONLY.
Code example
curl -X POST https://api.shegerpay.com/api/v1/verify \
-H "X-API-Key: sk_test_demo" \
-H "Content-Type: application/json" \
-d '{"provider":"ebirr","transaction_id":"https://receipt.ebirr.com/kaafimf/<receipt-link-from-sms>","amount":300}'
import ShegerPay from '@shegerpay/sdk';
const sp = new ShegerPay('sk_test_demo');
const result = await sp.verify({
provider: 'ebirr',
transactionId: 'https://receipt.ebirr.com/kaafimf/<receipt-link-from-sms>',
amount: 300
});
from shegerpay import ShegerPay
sp = ShegerPay('sk_test_demo')
result = sp.verify(provider='ebirr', transaction_id='https://receipt.ebirr.com/kaafimf/<receipt-link-from-sms>', amount=300)
$sp = new ShegerPay\Client('sk_test_demo');
$result = $sp->verify([
'provider' => 'ebirr',
'transaction_id' => 'https://receipt.ebirr.com/kaafimf/<receipt-link-from-sms>',
'amount' => 300
]);
eBirr-specific features
- Reference parsing — ShegerPay validates the eBirr reference format before upstream lookup
- Phone-number receipts — eBirr receipts include sender phone; surfaced in the verification response
- App + USSD coverage — same payload handles app and USSD-originated payments
- SMS detection — eBirr credit SMS can be POSTed to
/api/v1/verify-text - Receipt OCR — eBirr screenshots upload cleanly to
/api/v1/verify-image
Why ShegerPay for eBirr
- Non-custodial — funds settle directly to your eBirr wallet
- No merchant license required
- Sub-2-second verification on the eBirr rail
- Free tier includes eBirr
- Works with WooCommerce plugin out of the box
- HMAC-SHA256 webhook signatures
- 12 official SDKs
Pricing for eBirr verification
- Free: 100 verifications/month
- Startup ($9/mo): 2,000 verifications
- Business ($29/mo): 10,000 verifications + crypto
- Enterprise: custom
Comparison
| Feature | ShegerPay | Chapa | Arifpay | Manual |
|---|---|---|---|---|
| eBirr supported | Yes | Limited | Limited | Yes |
| Verification time | <2s | 5–30s | 5–30s | Minutes |
| Non-custodial | Yes | No | No | — |
| Receipt OCR | Yes | No | No | — |
| Free tier | Yes | Limited | No | — |
FAQ
How fast is eBirr verification with ShegerPay? Under 2 seconds typical.
Do I need an eBirr merchant account? No — any eBirr number works. A merchant short code is optional and makes paying faster for customers.
Can I verify eBirr from a screenshot?
Yes — POST to /api/v1/verify-image.
Does ShegerPay hold eBirr funds? No — funds settle directly to your wallet.
Is there a sandbox/demo for eBirr?
Yes — use sk_test_demo on any endpoint without signup.
What happens if eBirr verification fails?
API returns verified=false with reason: not_found, pending, amount_mismatch, or wrong_recipient.
Related: Pricing · Docs · ShegerPay vs Chapa · Verify Telebirr · Verify M-Pesa
Contact: [email protected] · +251 998 169 242