Pay with Bank (Instant EFT)

This payment method is only available for South African (ZAR) payments

Kora enables business to accept payments from South African customers by setting up the Pay with Bank (Instant Electronic Fund Transfer or Instant EFT) mandates on their customers’ bank account. This will not only streamline collections for the business but also enable effortless payments for customers. The Pay with Bank (Instant FET) method on Kora is available on Checkout and API.


Pay with Bank (Instant EFT) on Checkout

The Pay with Bank (Instant EFT) payment method is straightforward, secure and fast - customers can make payments in four (4) simple steps:

  1. Customer selects a bank:
    The customer first chooses the “Pay with Bank” payment option on the Checkout. The customer is then expected to select their bank from the list of available banks for this payment method. If the customer’s preferred bank is not one of the options on the list, they can recommend the bank to Kora to make it available in a future update. We are continuously updating the list of banks for this payment method.

  2. Customer enters bank details:
    Depending on the bank, the customer would be redirected to their bank portal where they can safely enter either their account number, user number or any such unique ID as required by their bank. This information is used to validate that the customer is an account holder with the bank.

  3. Transaction is authorized:
    The customer’s bank usually requires the customer to authenticate the transaction before it can be completed. This authentication may be done using an account password, an account PIN, an OTP (one-time PIN) generated through their banking app, or any other form of authentication set by the customer’s bank. With a successful authorization, authentication checks and sufficient balance a successful charge is made on the customer’s account.

  4. Payment is verified:
    Once the customer has been charged successfully, the transaction will be recorded on the Kora dashboard as successful.

🚧

Please, note that customers who choose to use Pay by Bank (Instant EFT) on Checkout should have online/internet banking enabled on their bank accounts.


Pay with Bank (Instant EFT) via API

Kora allows you to integrate our Pay with Bank (Instant EFT) APIs to accept ZAR payments. Simply call Kora’s API with the following endpoint, after which you will receive a redirect URL that will be used to complete the payment process.

{{baseurl}}//api/v1/charge/pay-with-bank

These are the parameters for the request:

ParameterData TypeRequiredDescription
referenceStringTrueA unique reference for the payment. The reference must be at least 8 characters long.
amountNumberTrueThe amount for the charge.
currencyStringTrueThe currency for the charge.
bank_codeStringTrueThe bank code for the charge
customer.nameStringFalseThe name of your customer
customer.emailStringTrueThe email of your customer
merchant_bears_costStringFalseThis sets who bear the fees of the transaction. If it is set to true, the merchant will bear the fee. If it is set to false, the customer will bear the fee. By default, it is false.
notification_urlStringFalseThe webhook URL to be called when the transaction is complete.
metadataObjectFalseIt takes a JSON object with a maximum of 5 fields/keys. Empty JSON objects are not allowed.

Each field name has a maximum length of 20 characters. Allowed characters: A-Z, a-z, 0-9, and -.

See an example of a request:

{
    "bank_code": "0001",
    "amount": 1450,
    "currency": "ZAR",
    "reference": "CPY-DFvv144ar18881811021",
    "customer": {
        "name": "John Doe",
        "email": "[email protected]"
    },
    "merchant_bears_cost": false,
    "notification_url": "https://webhook.site/b97227be-3cc0-4572-9a45-0cf944b976d3"
}

And, this is an example of the response you will get:

{
    "status": true,
    "message": "Pay With Bank initiated successfully",
    "data": {
        "currency": "ZAR",
        "amount": 600,
        "amount_expected": 600,
      	"fee":0,
        "vat":0,
        "reference": "KPY-CA-yzeIw00fYNVhJxY",
        "payment_reference": "CPY-DF-hdjkdhjjd245ssdd1",
        "status": "processing",
        "narration": "Payment on Microsoft Inc",
        "merchant_bears_cost": false,
        "auth_data": {
            "redirect_url": "http://example.com/KPY-CA-yzeIw00fYNVhJxY"
        },
        "bank_account": {
            "bank_name": "ABSA"
        },
        "customer": {
            "name": "John Doe",
            "email": "[email protected]"
        }
    }
}

After this, you should expect to receive a webhook notification.

You can set your application to receive a confirmation via webhooks when a payment is successful. Please visit Webhooks to see more information about the webhook request body and how to verify and handle the webhook request.


ZAR BANK CODES:

These are the list of supported ZAR banks and their codes:

BankBank Code
ABSA0001
African Bank0002
Bidvest Bank Gro0003
FNB0006
Investec0007
Nedbank0008
Standard Bank0009
Tymebank0010

Testing Pay with Bank (Instant EFT) on the Sandbox environment

To test this payment method (without using live credentials and actual funds), a sandbox implementation has also been provided, with appropriate test instructions. Simply switch to test mode on your dashboard to use test Instant EFT on Checkouts.