Initiate Payments
Start a direct charge payment with Chapa's Direct Charge API.
Designed for physical stores and ERP integrations that need a fully custom payment flow.
Chapa Inline, Standard, and HTML checkout bundle UI and flow. Direct charge is for when you need full control and collect payment details yourself. Integrate separately for each method you support.
How does direct charge work?
- Initiate the payment: Send transaction + customer payment details to the relevant charge endpoint.
- Authorize the charge: Customer authorizes via their provider (wallet/bank/USSD/OTP).
- Verify the payment: Call verify to confirm success before delivering value.
Flows vary by payment method (some require OTP or USSD steps).
Direct charge options
- telebirr
- mpesa
- cbebirr
- ebirr
- enat_bank (portal view)
- awashbirr
- yaya
Query
| Parameter | Required | Type | Description |
|---|---|---|---|
| type | yes | string | Payment method to charge. Allowed: telebirr, mpesa, cbebirr, ebirr, enat_bank. |
Body Params
Provide customer and transaction details:
Required fields
| Parameter | Required | Type | Description |
|---|---|---|---|
| key | yes | Bearer Key | Private key (test or live). |
| amount | yes | digits | Charge amount. |
| mobile | yes | digits | Customer phone number. |
| tx_ref | yes | string | Unique transaction reference. |
| currency | yes | string | Currency (ETB). |
Optional fields
| Parameter | Required | Type | Description |
|---|---|---|---|
| no | Customer email. | ||
| first_name | no | string | Customer first name. |
| last_name | no | string | Customer last name. |
Initialize the transaction
Endpoint: https://api.chapa.co/v1/charges?type={payment_method_name}
Method: POST
Types of Direct charges
-
USSD — push to customer for authorization (telebirr, mpesa, AwashBirr, Yaya Wallet, CBEBirr, Coopay-Ebirr).
Example response: -
Portal View — response includes HTML to open in a new tab for completion (e.g., Enat Bank).
Example response:
Refer to Error Codes for response details.