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:
-
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. -
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. -
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. -
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:
Parameter | Data Type | Required | Description |
---|---|---|---|
reference | String | True | A unique reference for the payment. The reference must be at least 8 characters long. |
amount | Number | True | The amount for the charge. |
currency | String | True | The currency for the charge. |
bank_code | String | True | The bank code for the charge |
customer.name | String | False | The name of your customer |
customer.email | String | True | The email of your customer |
merchant_bears_cost | String | False | This 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_url | String | False | The webhook URL to be called when the transaction is complete. |
metadata | Object | False | It 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:
Bank | Bank Code |
---|---|
ABSA | 0001 |
African Bank | 0002 |
Bidvest Bank Gro | 0003 |
FNB | 0006 |
Investec | 0007 |
Nedbank | 0008 |
Standard Bank | 0009 |
Tymebank | 0010 |
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.
Updated 3 months ago