curl --request POST \
--url https://sandbox.zapyd.com/pos/api/v1/remittance-payout/quotation \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'X-SIGNATURE: <api-key>' \
--header 'X-TIMESTAMP: <api-key>' \
--data '
{
"asset": "USDT",
"fiat": "INR",
"customer_id": "84737c7d-7b62-4204-80d6-80f6ecb3ceb4",
"bank_id": "cab47575-bbcb-4294-81a3-30774104f3b6",
"remitter_id": "e14fa86f-2a5e-437a-a031-949c68ade933",
"risk_parameters": {},
"payment_method": "IMPS",
"is_self_transfer": false,
"network": "tron",
"sending_amount": "100",
"receiving_amount": "5100"
}
'import requests
url = "https://sandbox.zapyd.com/pos/api/v1/remittance-payout/quotation"
payload = {
"asset": "USDT",
"fiat": "INR",
"customer_id": "84737c7d-7b62-4204-80d6-80f6ecb3ceb4",
"bank_id": "cab47575-bbcb-4294-81a3-30774104f3b6",
"remitter_id": "e14fa86f-2a5e-437a-a031-949c68ade933",
"risk_parameters": {},
"payment_method": "IMPS",
"is_self_transfer": False,
"network": "tron",
"sending_amount": "100",
"receiving_amount": "5100"
}
headers = {
"X-API-KEY": "<api-key>",
"X-TIMESTAMP": "<api-key>",
"X-SIGNATURE": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-API-KEY': '<api-key>',
'X-TIMESTAMP': '<api-key>',
'X-SIGNATURE': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
asset: 'USDT',
fiat: 'INR',
customer_id: '84737c7d-7b62-4204-80d6-80f6ecb3ceb4',
bank_id: 'cab47575-bbcb-4294-81a3-30774104f3b6',
remitter_id: 'e14fa86f-2a5e-437a-a031-949c68ade933',
risk_parameters: {},
payment_method: 'IMPS',
is_self_transfer: false,
network: 'tron',
sending_amount: '100',
receiving_amount: '5100'
})
};
fetch('https://sandbox.zapyd.com/pos/api/v1/remittance-payout/quotation', 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.zapyd.com/pos/api/v1/remittance-payout/quotation",
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([
'asset' => 'USDT',
'fiat' => 'INR',
'customer_id' => '84737c7d-7b62-4204-80d6-80f6ecb3ceb4',
'bank_id' => 'cab47575-bbcb-4294-81a3-30774104f3b6',
'remitter_id' => 'e14fa86f-2a5e-437a-a031-949c68ade933',
'risk_parameters' => [
],
'payment_method' => 'IMPS',
'is_self_transfer' => false,
'network' => 'tron',
'sending_amount' => '100',
'receiving_amount' => '5100'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>",
"X-SIGNATURE: <api-key>",
"X-TIMESTAMP: <api-key>"
],
]);
$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.zapyd.com/pos/api/v1/remittance-payout/quotation"
payload := strings.NewReader("{\n \"asset\": \"USDT\",\n \"fiat\": \"INR\",\n \"customer_id\": \"84737c7d-7b62-4204-80d6-80f6ecb3ceb4\",\n \"bank_id\": \"cab47575-bbcb-4294-81a3-30774104f3b6\",\n \"remitter_id\": \"e14fa86f-2a5e-437a-a031-949c68ade933\",\n \"risk_parameters\": {},\n \"payment_method\": \"IMPS\",\n \"is_self_transfer\": false,\n \"network\": \"tron\",\n \"sending_amount\": \"100\",\n \"receiving_amount\": \"5100\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("X-TIMESTAMP", "<api-key>")
req.Header.Add("X-SIGNATURE", "<api-key>")
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.zapyd.com/pos/api/v1/remittance-payout/quotation")
.header("X-API-KEY", "<api-key>")
.header("X-TIMESTAMP", "<api-key>")
.header("X-SIGNATURE", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"asset\": \"USDT\",\n \"fiat\": \"INR\",\n \"customer_id\": \"84737c7d-7b62-4204-80d6-80f6ecb3ceb4\",\n \"bank_id\": \"cab47575-bbcb-4294-81a3-30774104f3b6\",\n \"remitter_id\": \"e14fa86f-2a5e-437a-a031-949c68ade933\",\n \"risk_parameters\": {},\n \"payment_method\": \"IMPS\",\n \"is_self_transfer\": false,\n \"network\": \"tron\",\n \"sending_amount\": \"100\",\n \"receiving_amount\": \"5100\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.zapyd.com/pos/api/v1/remittance-payout/quotation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["X-TIMESTAMP"] = '<api-key>'
request["X-SIGNATURE"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"asset\": \"USDT\",\n \"fiat\": \"INR\",\n \"customer_id\": \"84737c7d-7b62-4204-80d6-80f6ecb3ceb4\",\n \"bank_id\": \"cab47575-bbcb-4294-81a3-30774104f3b6\",\n \"remitter_id\": \"e14fa86f-2a5e-437a-a031-949c68ade933\",\n \"risk_parameters\": {},\n \"payment_method\": \"IMPS\",\n \"is_self_transfer\": false,\n \"network\": \"tron\",\n \"sending_amount\": \"100\",\n \"receiving_amount\": \"5100\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Success",
"data": {
"id": "59bf60c3-e9af-40a7-9d5c-2a1aa191e769",
"customer_id": "84737c7d-7b62-4204-80d6-80f6ecb3ceb4",
"bank_id": "cab47575-bbcb-4294-81a3-30774104f3b6",
"remitter_id": "e14fa86f-2a5e-437a-a031-949c68ade933",
"asset": "USDT",
"fiat": "INR",
"network": "tron",
"sending_amount": "60.00",
"rate": "85.00",
"receiving_amount": "5100.00",
"fees": {
"zapyd_fee": "0.00",
"client_fee": "0.00",
"client_gst": "0.00",
"tds": "0"
},
"wallet_address": "TXqH4MnDw46f3yyrRwau3JF92Y1ie3pAXf",
"created_at": "2026-09-30T10:00:00Z",
"expiry_time": "2026-09-30T10:10:00Z"
}
}{
"status": false,
"message": "Bad Request",
"error": {
"remitter_id": [
"This field is required."
]
}
}{
"status": false,
"message": "Internal Server Error"
}Create Quotation
Creates a remittance payout quotation from receiving_amount, the fiat amount the beneficiary receives.
curl --request POST \
--url https://sandbox.zapyd.com/pos/api/v1/remittance-payout/quotation \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'X-SIGNATURE: <api-key>' \
--header 'X-TIMESTAMP: <api-key>' \
--data '
{
"asset": "USDT",
"fiat": "INR",
"customer_id": "84737c7d-7b62-4204-80d6-80f6ecb3ceb4",
"bank_id": "cab47575-bbcb-4294-81a3-30774104f3b6",
"remitter_id": "e14fa86f-2a5e-437a-a031-949c68ade933",
"risk_parameters": {},
"payment_method": "IMPS",
"is_self_transfer": false,
"network": "tron",
"sending_amount": "100",
"receiving_amount": "5100"
}
'import requests
url = "https://sandbox.zapyd.com/pos/api/v1/remittance-payout/quotation"
payload = {
"asset": "USDT",
"fiat": "INR",
"customer_id": "84737c7d-7b62-4204-80d6-80f6ecb3ceb4",
"bank_id": "cab47575-bbcb-4294-81a3-30774104f3b6",
"remitter_id": "e14fa86f-2a5e-437a-a031-949c68ade933",
"risk_parameters": {},
"payment_method": "IMPS",
"is_self_transfer": False,
"network": "tron",
"sending_amount": "100",
"receiving_amount": "5100"
}
headers = {
"X-API-KEY": "<api-key>",
"X-TIMESTAMP": "<api-key>",
"X-SIGNATURE": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-API-KEY': '<api-key>',
'X-TIMESTAMP': '<api-key>',
'X-SIGNATURE': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
asset: 'USDT',
fiat: 'INR',
customer_id: '84737c7d-7b62-4204-80d6-80f6ecb3ceb4',
bank_id: 'cab47575-bbcb-4294-81a3-30774104f3b6',
remitter_id: 'e14fa86f-2a5e-437a-a031-949c68ade933',
risk_parameters: {},
payment_method: 'IMPS',
is_self_transfer: false,
network: 'tron',
sending_amount: '100',
receiving_amount: '5100'
})
};
fetch('https://sandbox.zapyd.com/pos/api/v1/remittance-payout/quotation', 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.zapyd.com/pos/api/v1/remittance-payout/quotation",
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([
'asset' => 'USDT',
'fiat' => 'INR',
'customer_id' => '84737c7d-7b62-4204-80d6-80f6ecb3ceb4',
'bank_id' => 'cab47575-bbcb-4294-81a3-30774104f3b6',
'remitter_id' => 'e14fa86f-2a5e-437a-a031-949c68ade933',
'risk_parameters' => [
],
'payment_method' => 'IMPS',
'is_self_transfer' => false,
'network' => 'tron',
'sending_amount' => '100',
'receiving_amount' => '5100'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>",
"X-SIGNATURE: <api-key>",
"X-TIMESTAMP: <api-key>"
],
]);
$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.zapyd.com/pos/api/v1/remittance-payout/quotation"
payload := strings.NewReader("{\n \"asset\": \"USDT\",\n \"fiat\": \"INR\",\n \"customer_id\": \"84737c7d-7b62-4204-80d6-80f6ecb3ceb4\",\n \"bank_id\": \"cab47575-bbcb-4294-81a3-30774104f3b6\",\n \"remitter_id\": \"e14fa86f-2a5e-437a-a031-949c68ade933\",\n \"risk_parameters\": {},\n \"payment_method\": \"IMPS\",\n \"is_self_transfer\": false,\n \"network\": \"tron\",\n \"sending_amount\": \"100\",\n \"receiving_amount\": \"5100\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("X-TIMESTAMP", "<api-key>")
req.Header.Add("X-SIGNATURE", "<api-key>")
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.zapyd.com/pos/api/v1/remittance-payout/quotation")
.header("X-API-KEY", "<api-key>")
.header("X-TIMESTAMP", "<api-key>")
.header("X-SIGNATURE", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"asset\": \"USDT\",\n \"fiat\": \"INR\",\n \"customer_id\": \"84737c7d-7b62-4204-80d6-80f6ecb3ceb4\",\n \"bank_id\": \"cab47575-bbcb-4294-81a3-30774104f3b6\",\n \"remitter_id\": \"e14fa86f-2a5e-437a-a031-949c68ade933\",\n \"risk_parameters\": {},\n \"payment_method\": \"IMPS\",\n \"is_self_transfer\": false,\n \"network\": \"tron\",\n \"sending_amount\": \"100\",\n \"receiving_amount\": \"5100\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.zapyd.com/pos/api/v1/remittance-payout/quotation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["X-TIMESTAMP"] = '<api-key>'
request["X-SIGNATURE"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"asset\": \"USDT\",\n \"fiat\": \"INR\",\n \"customer_id\": \"84737c7d-7b62-4204-80d6-80f6ecb3ceb4\",\n \"bank_id\": \"cab47575-bbcb-4294-81a3-30774104f3b6\",\n \"remitter_id\": \"e14fa86f-2a5e-437a-a031-949c68ade933\",\n \"risk_parameters\": {},\n \"payment_method\": \"IMPS\",\n \"is_self_transfer\": false,\n \"network\": \"tron\",\n \"sending_amount\": \"100\",\n \"receiving_amount\": \"5100\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Success",
"data": {
"id": "59bf60c3-e9af-40a7-9d5c-2a1aa191e769",
"customer_id": "84737c7d-7b62-4204-80d6-80f6ecb3ceb4",
"bank_id": "cab47575-bbcb-4294-81a3-30774104f3b6",
"remitter_id": "e14fa86f-2a5e-437a-a031-949c68ade933",
"asset": "USDT",
"fiat": "INR",
"network": "tron",
"sending_amount": "60.00",
"rate": "85.00",
"receiving_amount": "5100.00",
"fees": {
"zapyd_fee": "0.00",
"client_fee": "0.00",
"client_gst": "0.00",
"tds": "0"
},
"wallet_address": "TXqH4MnDw46f3yyrRwau3JF92Y1ie3pAXf",
"created_at": "2026-09-30T10:00:00Z",
"expiry_time": "2026-09-30T10:10:00Z"
}
}{
"status": false,
"message": "Bad Request",
"error": {
"remitter_id": [
"This field is required."
]
}
}{
"status": false,
"message": "Internal Server Error"
}Create Quotation
receiving_amount fixes the fiat the beneficiary gets, and the response’s sending_amount is the crypto needed. sending_amount fixes the crypto you send, and the response’s receiving_amount is what the beneficiary gets.remitter_id is required — create the remitter first via Create Remitter.Error Codes and Messages
| API Status Code | Response | Reason |
|---|---|---|
| 400 | Bad Request | A required field (e.g. remitter_id) is missing |
| 400 | Customer is unverified | Customer KYC is unverified or does not belong to Organization |
| 400 | Bank account is unverified | Bank account is not added or still under processing |
| 500 | Internal Server Error | Internal Server Error |
Authorizations
API Key for authentication
Current timestamp in seconds since epoch
HMAC SHA256 signature of the request encoded in Base64
Body
The cryptocurrency asset code
"USDT"
The fiat currency code
"INR"
The unique identifier of the receiving customer
"84737c7d-7b62-4204-80d6-80f6ecb3ceb4"
The unique identifier of the customer's bank account in which the payout will be made
"cab47575-bbcb-4294-81a3-30774104f3b6"
The unique identifier of the remitter (sending party), obtained from POST /kyc/remitter/create
"e14fa86f-2a5e-437a-a031-949c68ade933"
Required. Send every key listed in required_risk_parameters for the fiat in Fetch Configuration. Send {} if that list is empty.
{}
Payout payment method, valid for the fiat (see Fetch Configuration).
"IMPS"
True when the remitter is sending to their own account.
false
Blockchain network, for example tron. On the prefunded model it must match your prefunded wallet network.
"tron"
Crypto amount you will send. Send this or receiving_amount, not both.
"100"
Fiat amount the beneficiary should receive. Send this or sending_amount, not both.
"5100"
Response
Remittance quotation created successfully
true
"Success"
Hide child attributes
Hide child attributes
Quotation ID
"59bf60c3-e9af-40a7-9d5c-2a1aa191e769"
Customer ID
"84737c7d-7b62-4204-80d6-80f6ecb3ceb4"
Bank account ID
"cab47575-bbcb-4294-81a3-30774104f3b6"
Remitter ID (remittance quotations only)
"e14fa86f-2a5e-437a-a031-949c68ade933"
Crypto asset
"USDT"
Fiat currency
"INR"
Network
"tron"
Crypto amount to send
"60.00"
Fee-inclusive rate
"85.00"
Fiat amount the beneficiary receives
"5100.00"
Fee breakdown
{ "zapyd_fee": "0.00", "client_fee": "0.00", "client_gst": "0.00", "tds": "0" }
Deposit address: send the crypto here
"TXqH4MnDw46f3yyrRwau3JF92Y1ie3pAXf"
"2026-09-30T10:00:00Z"
Quotation expiry
"2026-09-30T10:10:00Z"