Accepting Telebirr and Chapa payments: a practical guide
Checkout, verification, webhooks and the edge cases that cost you money if you skip them.
Taking a payment is the easy part. Knowing for certain that the money arrived, and only once, is where most integrations go wrong.
Choose a gateway
Chapa gives you one hosted checkout that accepts Telebirr, CBE Birr and cards. A direct Telebirr integration takes more setup but can lower fees for businesses where most customers pay by mobile money.
Start every checkout on your server
Create the transaction on your server, never in the browser, and give it a reference you control, such as your order ID. Store that reference before redirecting the customer.
Never mark an order paid because the customer came back to your site. Verify it from your server.
Verify every payment
- Receive the webhook and check its signature.
- Call the verify endpoint with your reference.
- Compare amount and currency with the order.
- Mark it paid inside a database transaction, so it happens once.
Handle failures calmly
Payments fail for ordinary reasons: low balance, a closed app, a dropped connection. Keep the order pending, let the customer retry, and run a daily job that verifies anything still pending.
More from the team
Why our booking flow checks availability before taking money
What we learned building Zuret with tour agencies.
Building HR software that handles Ethiopian fiscal years
Leave balances, payroll periods and the calendar problem.
Designing interfaces that work in Amharic and English
Type, line length and labels that grow.