Create Onramp
curl --request POST \
--url https://preview.kotanipay.com/api/v3/onramp \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fiatAmount": 123,
"currency": "eg NGN or GHS or KES",
"receiverAddress": "<string>",
"referenceId": "<string>",
"callbackUrl": "<string>",
"rateId": "<string>",
"fiatWalletId": "<string>"
}
'import requests
url = "https://preview.kotanipay.com/api/v3/onramp"
payload = {
"fiatAmount": 123,
"currency": "eg NGN or GHS or KES",
"receiverAddress": "<string>",
"referenceId": "<string>",
"callbackUrl": "<string>",
"rateId": "<string>",
"fiatWalletId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
fiatAmount: 123,
currency: 'eg NGN or GHS or KES',
receiverAddress: '<string>',
referenceId: '<string>',
callbackUrl: '<string>',
rateId: '<string>',
fiatWalletId: '<string>'
})
};
fetch('https://preview.kotanipay.com/api/v3/onramp', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://preview.kotanipay.com/api/v3/onramp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'fiatAmount' => 123,
'currency' => 'eg NGN or GHS or KES',
'receiverAddress' => '<string>',
'referenceId' => '<string>',
'callbackUrl' => '<string>',
'rateId' => '<string>',
'fiatWalletId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://preview.kotanipay.com/api/v3/onramp"
payload := strings.NewReader("{\n \"fiatAmount\": 123,\n \"currency\": \"eg NGN or GHS or KES\",\n \"receiverAddress\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"callbackUrl\": \"<string>\",\n \"rateId\": \"<string>\",\n \"fiatWalletId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://preview.kotanipay.com/api/v3/onramp")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"fiatAmount\": 123,\n \"currency\": \"eg NGN or GHS or KES\",\n \"receiverAddress\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"callbackUrl\": \"<string>\",\n \"rateId\": \"<string>\",\n \"fiatWalletId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://preview.kotanipay.com/api/v3/onramp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fiatAmount\": 123,\n \"currency\": \"eg NGN or GHS or KES\",\n \"receiverAddress\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"callbackUrl\": \"<string>\",\n \"rateId\": \"<string>\",\n \"fiatWalletId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Request has been successfully created",
"data": {
"id": "<string>",
"referenceId": "<string>",
"referenceNumber": 123,
"message": "<string>",
"customerKey": "<string>",
"redirectUrl": "<string>"
}
}{
"success": false,
"message": "Bad Request",
"data": {}
}{
"success": false,
"message": "Invalid API Key",
"data": {}
}Onramp (Buy Crypto)
Create Onramp
You can create an onramp request with either mobile money or bank checkout
POST
/
api
/
v3
/
onramp
Create Onramp
curl --request POST \
--url https://preview.kotanipay.com/api/v3/onramp \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fiatAmount": 123,
"currency": "eg NGN or GHS or KES",
"receiverAddress": "<string>",
"referenceId": "<string>",
"callbackUrl": "<string>",
"rateId": "<string>",
"fiatWalletId": "<string>"
}
'import requests
url = "https://preview.kotanipay.com/api/v3/onramp"
payload = {
"fiatAmount": 123,
"currency": "eg NGN or GHS or KES",
"receiverAddress": "<string>",
"referenceId": "<string>",
"callbackUrl": "<string>",
"rateId": "<string>",
"fiatWalletId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
fiatAmount: 123,
currency: 'eg NGN or GHS or KES',
receiverAddress: '<string>',
referenceId: '<string>',
callbackUrl: '<string>',
rateId: '<string>',
fiatWalletId: '<string>'
})
};
fetch('https://preview.kotanipay.com/api/v3/onramp', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://preview.kotanipay.com/api/v3/onramp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'fiatAmount' => 123,
'currency' => 'eg NGN or GHS or KES',
'receiverAddress' => '<string>',
'referenceId' => '<string>',
'callbackUrl' => '<string>',
'rateId' => '<string>',
'fiatWalletId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://preview.kotanipay.com/api/v3/onramp"
payload := strings.NewReader("{\n \"fiatAmount\": 123,\n \"currency\": \"eg NGN or GHS or KES\",\n \"receiverAddress\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"callbackUrl\": \"<string>\",\n \"rateId\": \"<string>\",\n \"fiatWalletId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://preview.kotanipay.com/api/v3/onramp")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"fiatAmount\": 123,\n \"currency\": \"eg NGN or GHS or KES\",\n \"receiverAddress\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"callbackUrl\": \"<string>\",\n \"rateId\": \"<string>\",\n \"fiatWalletId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://preview.kotanipay.com/api/v3/onramp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fiatAmount\": 123,\n \"currency\": \"eg NGN or GHS or KES\",\n \"receiverAddress\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"callbackUrl\": \"<string>\",\n \"rateId\": \"<string>\",\n \"fiatWalletId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Request has been successfully created",
"data": {
"id": "<string>",
"referenceId": "<string>",
"referenceNumber": 123,
"message": "<string>",
"customerKey": "<string>",
"redirectUrl": "<string>"
}
}{
"success": false,
"message": "Bad Request",
"data": {}
}{
"success": false,
"message": "Invalid API Key",
"data": {}
}You can create an onramp request with either mobile money or bank checkout to convert fiat to crypto.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Fiat amount
The currency of the wallet
Available options:
KES, GHS, NGN, ZAR, ZAR, USD, XOF, ZMW, XAF, SLE, CDF, TZS, UGX, EGP, MWK, RWF, ETB, MZN, LSL, GNF, USDT, BTC, ETH, USDC Example:
"eg NGN or GHS or KES"
Chain
Available options:
ETHEREUM, CELO, AVALANCHE, POLYGON, ARBITRUM, OPTIMISM, STELLAR, TRON, FUSE, LIGHTNING, SOLANA, PROVENANCE, CARDANO, HEDERA, BASE, LISK, VICTION, SCROLL Stable Coin
Available options:
CUSD, USDC, USDT, USDT0, SAT, BTC, HASH, FUSE, HBAR, USDGLO, CKES, CGHS, MSAT, XLM, ADA Receiver address
Reference ID
Reference ID
Mobile Money details
Show child attributes
Show child attributes
Bank Checkout details
Show child attributes
Show child attributes
Rate ID
Specific fiat wallet ID to use for fiat-to-crypto conversion. If not provided, a wallet will be selected automatically based on currency.