Find your keys on the Klasha Dashboard → Settings → Generate API Keys (here)
Klasha Dashboard, Generate API Keys page
Generate bearer token
Using the Token endpoint on the Postman collection, the token can be obtained from the headers under the header name: token. See the screenshot below for an example:
Fetch bank codes
From the bank code API on the Postman collection here, you can fetch the bank codes. see the screenshot below for an example
Verify account number
Using the Resolve account number endpoint on the Postman collection here, verify the account number by making use of the bank codes gotten from here. See an example in the screenshot below
Generate a transfer reference
It’s a unique reference sent as requestId that can be used to uniquely identify a transfer.
Initiate a transfer
Create payload
{"amount":1000,"country":"NG","currency":"NGN","bankCode":"044","bankName":"Access Bank","accountNumber":"0690000032","accountName":"Pastor Bright","requestId":"kbtr-3857-011-null-166993253334816","description":"certification"}Fields specification:- amount is the amount to payout- country is the country of the beneficiary- currency is the currency of payout- bankcode is the code of the bank which can be gotten by calling the Bank code endpoint- bankName is the name of the bank- accountNumber is the beneficiary account number- accountName is the beneficiary account name- requestId is the transaction reference- description is the narration or reason for the payout
Serialize the payload
Encryption Algorithm
You need to encrypt the entire create transfer payload that we specify on the previous point (here). In order to encrypt the body correctly, you’d need the encryptionKey (that you can obtain following this guide here). Find an encryption algorithm code snippet below:
You would need to pass, as a header the x-auth-token. This can be obtained from your merchant dashboard → Settings → Generate API keys → Merchant public key.
Headers
Key
Value
Content-Type
application/json
x-auth-token
Your merchant public key
Authorization
Bearer <token here>
Request body (encrypted):
{ "message":"encrypted-request-body"}
Listen for a status response
When a transfer is initiated, it could take a few seconds or minutes to be processed. This is why we recommend relying on webhooks for verification as opposed to polling.
Once a transfer is processed, we send the final status of the transfer as a POST request to your webhook URL.
{"data": {"reference":"kbtr-3857-011-null-166993253334816","createdAt":"2023-03-28T23:01:45.336","amount":1000,"accountName":"Pastor Bright","narration":"certification","name":"Steph and sons","currency":"NGN","bankName":"ACCESS BANK NIGERIA","accountNumber":"0690000032","status":"failed" },"event":"payout"}
{"data": {"reference":"kbtr-3857-011-null-166993253331236","createdAt":"2023-03-28T23:01:45.336","amount":1000,"accountName":"Pastor Bright","narration":"certification","name":"Steph and sons","currency":"NGN","bankName":"ACCESS BANK NIGERIA","accountNumber":"0690000032","status":"successful" },"event":"payout"}
Get wallet balance
To get your wallet balance you would need to make a GET request to the API below: