Payment Channels

Chapa accepts payments from customers through various payment methods such as card banks.

Cards

If using cards as a source of payment, we strongly discourage adding card information directly to the API to avoid transmitting card data through systems that are not PCI compliant.

Bank Accounts

Chapa offers customers to pay through what is most suitable for them. When paying through a bank, customers have the option to either pay through an internet banking portal or by providing their bank account number. The banks should be listed in a format easily accessible for your customers to pick from.

Customers can pay through the following banks:

  1. Awash International Bank
  2. Bank of Abyssinia
  3. Berhan International Bank
  4. Buna International Bank
  5. Commercial Bank of Ethiopia
  6. Cooperative Bank of Oromia
  7. Dashen Bank
  8. Lion International Bank
  9. Nib International Bank
  10. Oromia International Bank
  11. Hibret Bank
  12. Wegagen Bank
  13. Zemen Bank

Collecting Bank Details

To collect a customer’s account number, you will need to make a GET request to the List Banks endpoint in addition to a pay_with_bank=true.

Creating a charge

To start, information such as email, amount, bank with account_number should be sent to our Charge endpoint:

curl https://api.chapa.co/charge
    -H "Authorization: Bearer YOUR_SECRET_KEY"
    -H "Content-Type: application/json"
    -d '{ "email": "customer@email.com", 
          "amount": "10000", 
          "bank": {
            "code": "057", 
            "phone": "+2519123456",
            "token": "123456"
          }
        }'
    -X POST

Once the API is called, the payment will start being processed and the value of data.success key will be set to pending. Depending on the success or failure of the transaction, the data.status will be updated to either, success or failed.

The charge.success event is created when a payment is successful. The sample response to be sent to the user’s webhook would look like:

{
  "event": "charge.success",
  "data": {
    "id": 53561,
    "domain": "live",
    "status": "success",
    "reference": "2ofkbk0yie6dvzb",
    "amount": 150000,
    "message": "madePayment",
    "gateway_response": "Payment successful",
    "paid_at": "2020-06-25T12:42:58.000Z",
    "created_at": "2020-06-25T12:38:59.000Z",
    "channel": "ussd",
    "currency": "ETB",
    "ip_address": "54.246.237.22, 162.158.38.1831.15.210",
    "metadata": "",
    "log": null,
    "fees": null,
    "fees_split": null,
    "authorization": {
      "authorization_code": "AUTH_4c6mhnmmeusp4yd",
      "bin": "XXXXXX",
      "last4": "XXXX",
      "exp_month": "05",
      "exp_year": "2020",
      "channel": "ussd",
      "card_type": "offline",
      "bank": "Zemen Bank",
      "country_code": "ET",
      "brand": "offline",
      "reusable": false,
      "signature": null,
      "account_name": null
    },
    "customer": {
      "id": 16200,
      "first_name": "Abebe",
      "last_name": "Kebede",
      "email": "customer@email.com",
      "customer_code": "CUS_bpy9ciomcstg55y",
      "phone": "",
      "metadata": null,
      "risk_action": "default"
    },
    "plan": {
      
    },
    "subaccount": {
      
    },
    "paidAt": "2020-06-25T12:42:58.000Z"
  }
}

Verify Payments
Subscription
Next →