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

  1. Customer initiates payment from the eBirr app or USSD to the merchant's eBirr number
  2. eBirr settles the transfer into the merchant's wallet and SMS-delivers a Receipt Link to the customer
  3. Customer pastes the full Receipt Link into your checkout (or your backend POSTs it to /api/v1/verify as transaction_id)
  4. ShegerPay returns verified=true with 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 returns error_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