Create Onramp
curl --request POST \
--url https://sandbox-api.kotanipay.com/api/v3/onramp \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fiatAmount": 123,
"currency": "KES",
"receiverAddress": "<string>",
"referenceId": "<string>",
"callbackUrl": "<string>",
"rateId": "<string>",
"fiatWalletId": "<string>"
}
'import requests
url = "https://sandbox-api.kotanipay.com/api/v3/onramp"
payload = {
"fiatAmount": 123,
"currency": "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: 'KES',
receiverAddress: '<string>',
referenceId: '<string>',
callbackUrl: '<string>',
rateId: '<string>',
fiatWalletId: '<string>'
})
};
fetch('https://sandbox-api.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://sandbox-api.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' => '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://sandbox-api.kotanipay.com/api/v3/onramp"
payload := strings.NewReader("{\n \"fiatAmount\": 123,\n \"currency\": \"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://sandbox-api.kotanipay.com/api/v3/onramp")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"fiatAmount\": 123,\n \"currency\": \"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://sandbox-api.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\": \"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://sandbox-api.kotanipay.com/api/v3/onramp \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fiatAmount": 123,
"currency": "KES",
"receiverAddress": "<string>",
"referenceId": "<string>",
"callbackUrl": "<string>",
"rateId": "<string>",
"fiatWalletId": "<string>"
}
'import requests
url = "https://sandbox-api.kotanipay.com/api/v3/onramp"
payload = {
"fiatAmount": 123,
"currency": "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: 'KES',
receiverAddress: '<string>',
referenceId: '<string>',
callbackUrl: '<string>',
rateId: '<string>',
fiatWalletId: '<string>'
})
};
fetch('https://sandbox-api.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://sandbox-api.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' => '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://sandbox-api.kotanipay.com/api/v3/onramp"
payload := strings.NewReader("{\n \"fiatAmount\": 123,\n \"currency\": \"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://sandbox-api.kotanipay.com/api/v3/onramp")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"fiatAmount\": 123,\n \"currency\": \"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://sandbox-api.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\": \"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
Example:
"KES"
Chain
Available options:
ETHEREUM, CELO, AVALANCHE, POLYGON, ARBITRUM, OPTIMISM, BINANCE, 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
Mobile Money details
Show child attributes
Show child attributes
Bank Checkout details
Show child attributes
Show child attributes
Webhook URL for the terminal status. Falls back to your default webhook URL.
Rate ID
Links this transaction to a fiat wallet for currency resolution. No fiat is debited.
⌘I