curl --request GET \
--url https://api.rach.finance/api/v1/vas/funding-addresses \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rach.finance/api/v1/vas/funding-addresses"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.rach.finance/api/v1/vas/funding-addresses', 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://api.rach.finance/api/v1/vas/funding-addresses",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api.rach.finance/api/v1/vas/funding-addresses"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.rach.finance/api/v1/vas/funding-addresses")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rach.finance/api/v1/vas/funding-addresses")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_bodyYour funding addresses — where to send USDT/USDC to top up
Returns (creating on first use) your dedicated deposit address on each supported chain, plus the flat funding fee.
Only USDT or USDC on Polygon or BSC are accepted. Stablecoins credit 1:1 with USD, so there is no FX gap between what you send and what you can spend. Any other asset, or any other chain, will NOT credit your balance.
A flat fee (default $1) is deducted per deposit. A deposit that cannot cover the fee is not credited at all — send more than the fee.
When it becomes spendable: at the deposit’s CONFIRMATION threshold, not the moment it appears on-chain. We wait so a chain reorganisation cannot take back funds you have already spent.
| Chain | Confirmations | Typical wait |
|---|---|---|
| BSC | 12 | ~40 seconds |
| POL | 128 | ~4–5 minutes |
Polygon’s is deliberately deep because it has had reorganisations — fund on BSC if you want the balance quickly.
The address is permanent and reusable; no memo or destination tag is needed. A
wallet.deposit.confirmed webhook fires when the balance goes live, so you need not poll.
curl --request GET \
--url https://api.rach.finance/api/v1/vas/funding-addresses \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rach.finance/api/v1/vas/funding-addresses"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.rach.finance/api/v1/vas/funding-addresses', 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://api.rach.finance/api/v1/vas/funding-addresses",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api.rach.finance/api/v1/vas/funding-addresses"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.rach.finance/api/v1/vas/funding-addresses")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rach.finance/api/v1/vas/funding-addresses")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_bodyAuthorizations
Business API key for server-to-server integrations.
Key prefix determines the environment — no separate flag needed:
test_sk_* = sandbox/testnet, live_sk_* = production/mainnet.
Response
Funding addresses

