Swap API
Summary
Give merchants the ability to swap funds between their wallets via API using our internal Klasha rates.
You can swap money in three easy steps:
Generate a bearer token
Generate a quote for the swap
Confirm swap
Encryption Algorithm can be gotten here
Integration step
Generate a bearer token
Using the Token endpoint on the Postman collection, the token can be obtained from the headers under the header name: token
POST
{{env_url}}
/auth/account/v2/login
Request Body
username*
username
password*
password
{
"message": "success",
"error": null,
"data": {
"token": "This is your token"
}
}
Generate a quote
Make a POST call to the Create Quote API to generate your swap quote
POST
{{env_url}}
/wallet/swap/generate/quote
Make a POST call to the Create Quote API to generate your quote. See an example of the payload you need to encrypt and send in order to generate your quote.
The encrypted JSON body for the request can be found in the Postman link as well as other APIs.
You’d need to pass, as header the x-auth-token
. This can be obtained from your merchant dashboard → Settings → Generate API keys → Merchant public key.
Headers
Authorization
Bearer {{token}}
x-auth-token
MERCHANT PUBLIC KEY
Request Body
sourceCurrency*
String
NGN
destinationCurrency*
String
USD
destinationAmount*
1000.00
{
"message": "encrypted request"
}
Confirm swap
Make a POST call to the Confirm swap API
POST
{{env_url}}
/wallet/swap/initiate
Make a POST call to the Confirm swap API to convert your quote into wallet swap transaction.
See an example of the payload you need to encrypt and send in order to generate your quote.
The encrypted JSON body for the request can be found in the Postman link as well as other APIs
You’d need to pass, as header the x-auth-token
. This can be obtained from your merchant dashboard → Settings → Generate API keys → Merchant public key.
Headers
Authorization
Bearer {{token}}
x-auth-token
MERCHANT PUBLIC KEY
Request Body
quoteToken*
String
97f20109-54e8-4861-ba12-0ea7d32351e9
{
"message": "encrypted request"
}
Fetch all your payments
Make a GET call to the Fetch by swap reference API
GET
{{env_url}}
/wallet/swap/fetch/by/reference/
{{transactionReference}}
Make a GET call to the Fetch by swap reference to retrieve a swap transaction.
You’d need to pass the transactionReference
you obtained when you initiated the swap, as a path variable.
You’d need to pass, as header the x-auth-token
. This can be obtained from your merchant dashboard → Settings → Generate API keys → Merchant public key.
Headers
Authorization
Bearer {{token}}
x-auth-token
MERCHANT PUBLIC KEY
Response
{
"message": "success",
"error": null,
"data": {
"id": 1,
"sourceCurrency": "NGN",
"sourceAmount": 1697792.87,
"destinationCurrency": "USD",
"destinationAmount": 1000,
"destinationFees": 20,
"sourceFees": 33955.86,
"rate": 0.000589,
"transactionStatus": "SUCCESSFUL",
"transactionReference": "swap-9b1e2c71-43a2-490b-a0be-e4a0337d0911",
"quoteToken": "97f20109-54e8-4861-ba12-0ea7d32351e9",
"createdAt": "2024-08-07T18:56:28.633",
"updatedAt": "2024-08-07T18:58:38.426"
}
}
Fetch a single payment by quote token
Fetch by token API to retrieve all your previously initiated quoted swaps.
GET
{{env_url}}
/wallet/swap/fetch/by/token/
{{quoteToken}}
Make a GET call to the Fetch by token API to retrieve all your previously initiated quoted swaps.
You’d need to pass the quoteToken
you obtained when you initiated the swap, as a path variable.
You’d need to pass, as header the x-auth-token
. This can be obtained from your merchant dashboard → Settings → Generate API keys → Merchant public key.
Headers
Authorization
Bearer {{token}}
x-auth-token
MERCHANT PUBLIC KEY
Response
{
"message": "success",
"error": null,
"data": {
"id": 1,
"sourceCurrency": "NGN",
"sourceAmount": 1697792.87,
"destinationCurrency": "USD",
"destinationAmount": 1000,
"destinationFees": 20,
"sourceFees": 33955.86,
"rate": 0.000589,
"transactionStatus": "SUCCESSFUL",
"transactionReference": "swap-9b1e2c71-43a2-490b-a0be-e4a0337d0911",
"quoteToken": "97f20109-54e8-4861-ba12-0ea7d32351e9",
"createdAt": "2024-08-07T18:56:28.633",
"updatedAt": "2024-08-07T18:58:38.426"
}
}
Quote expiry logic
After you proceeded generating your quote, you can now convert that quote to confirm a swap transactions.
The confirmation would be successful if the quote is NOT expired.
A quote does not expire because of time but just if the rate in our system changed.
In case you try to initiate a payment with an expired quote, you’d have a Bad Request response with the the following body:
{
"message": "Rate has changed!",
"error": "RateChangeException",
"data": null
}
Last updated