curl --request GET \
--url https://api.rach.finance/caas/v1/escrows/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rach.finance/caas/v1/escrows/{id}"
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/caas/v1/escrows/{id}', 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/caas/v1/escrows/{id}",
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/caas/v1/escrows/{id}"
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/caas/v1/escrows/{id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rach.finance/caas/v1/escrows/{id}")
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_body{
"amount": "250000000",
"auto_release_at": "<string>",
"chain_id": 123,
"created_at": "<string>",
"dispute_reason": "<string>",
"disputed_at": "<string>",
"escrow_address": "<string>",
"funded_at": "<string>",
"funding_expires_at": "<string>",
"id": "<string>",
"network": "<string>",
"payout_pending": true,
"payout_tx_hash": "<string>",
"rail": "<string>",
"reference": "<string>",
"refunded_at": "<string>",
"released_at": "<string>",
"resolution_note": "<string>",
"state": "CREATED",
"token": "<string>",
"updated_at": "<string>"
}{}Read an escrow
Returns the escrow’s current state, its deposit address and, once a payout is confirmed, the on-chain transaction hash that moved the money.
curl --request GET \
--url https://api.rach.finance/caas/v1/escrows/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rach.finance/caas/v1/escrows/{id}"
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/caas/v1/escrows/{id}', 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/caas/v1/escrows/{id}",
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/caas/v1/escrows/{id}"
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/caas/v1/escrows/{id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rach.finance/caas/v1/escrows/{id}")
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_body{
"amount": "250000000",
"auto_release_at": "<string>",
"chain_id": 123,
"created_at": "<string>",
"dispute_reason": "<string>",
"disputed_at": "<string>",
"escrow_address": "<string>",
"funded_at": "<string>",
"funding_expires_at": "<string>",
"id": "<string>",
"network": "<string>",
"payout_pending": true,
"payout_tx_hash": "<string>",
"rail": "<string>",
"reference": "<string>",
"refunded_at": "<string>",
"released_at": "<string>",
"resolution_note": "<string>",
"state": "CREATED",
"token": "<string>",
"updated_at": "<string>"
}{}Authorizations
Your Rach B2B API key. Use rach_sk_live_* for production (on-chain) or rach_sk_test_* for sandbox (no-chain simulation).
Path Parameters
Escrow id
Response
OK
Amount is in base units, unlike the create request's whole-token amount. For the implemented TRON USDT adapter, "250000000" means 250 USDT.
"250000000"
AutoReleaseAt is when a funded escrow releases to the seller with no further action. Absent means it never does and someone must decide.
EscrowAddress is where the buyer sends the money. It belongs to this deal alone and is never reused.
FundingExpiresAt is when an unpaid escrow closes.
PayoutPending is true while a payout has been authorised and dispatched but not yet confirmed. Surfaced rather than hidden because during this window the honest answer to "has the seller been paid" is "not yet".
PayoutTxHash is the on-chain transaction that moved the money out. It is the partner's evidence that a release or refund really happened.
Recorded admin reasoning once a disputed payout settles.
CREATED, FUNDED, DISPUTED, RELEASED, REFUNDED, EXPIRED, CANCELLED 
