List direct-route transfers
curl --request GET \
--url https://api.sandbox.rails.wayex.com/v1/transfers \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sandbox.rails.wayex.com/v1/transfers"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sandbox.rails.wayex.com/v1/transfers', 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.sandbox.rails.wayex.com/v1/transfers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.sandbox.rails.wayex.com/v1/transfers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.sandbox.rails.wayex.com/v1/transfers")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.rails.wayex.com/v1/transfers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"counterpartyId": "<string>",
"customerId": "<string>",
"status": "created",
"sourceDepositInstructions": {
"kind": "crypto",
"address": "<string>",
"currency": "USDC",
"network": "ethereum",
"amount": "<string>"
},
"references": {
"payoutHoldReason": "<string>",
"quoteId": "<string>",
"providerQuoteId": "<string>",
"liquidationAddress": "<string>",
"vaultId": "<string>",
"disbursementVaultId": "<string>",
"depositReference": "<string>",
"depositTxHash": "<string>",
"depositSourceAddress": "<string>",
"payinReference": "<string>",
"tradeId": "<string>",
"sweepTxId": "<string>",
"sweepTxHash": "<string>",
"failedSweepTxIds": [
"<string>"
],
"onforwardTxId": "<string>",
"failedOnforwardTxIds": [
"<string>"
],
"onforwardToAddress": "<string>",
"onforwardTxHash": "<string>",
"onforwardDepositId": "<string>",
"fiatWithdrawalId": "<string>",
"rejectedFiatWithdrawals": [
"<string>"
],
"stablecoinWithdrawalId": "<string>",
"fxFundingPayoutId": "<string>",
"sendTxId": "<string>",
"sendTxHash": "<string>",
"failedSendTxIds": [
"<string>"
],
"payoutId": "<string>",
"ledgerEntryRefs": [
"<string>"
]
},
"timeline": [
{
"status": "created",
"at": "2023-11-07T05:31:56Z",
"providerRef": "<string>",
"description": "<string>"
}
],
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"type": "offramp",
"source": {
"currency": "USDC",
"network": "ethereum",
"amount": "<string>"
},
"destination": {
"account_holder_name": "<string>",
"bsb_code": "<string>",
"account_number": "<string>",
"bank_country": "<string>",
"currency": "AUD"
},
"destinationAmount": "<string>",
"destinationCurrency": "AUD",
"routeId": "<string>",
"quoteId": "<string>",
"metadata": {}
}
],
"hasMore": true,
"nextCursor": "<string>"
}Direct-route records
List direct-route transfers
Lists conversions automatically created when customers fund direct payment routes.
GET
/
v1
/
transfers
List direct-route transfers
curl --request GET \
--url https://api.sandbox.rails.wayex.com/v1/transfers \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sandbox.rails.wayex.com/v1/transfers"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sandbox.rails.wayex.com/v1/transfers', 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.sandbox.rails.wayex.com/v1/transfers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.sandbox.rails.wayex.com/v1/transfers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.sandbox.rails.wayex.com/v1/transfers")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.rails.wayex.com/v1/transfers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"counterpartyId": "<string>",
"customerId": "<string>",
"status": "created",
"sourceDepositInstructions": {
"kind": "crypto",
"address": "<string>",
"currency": "USDC",
"network": "ethereum",
"amount": "<string>"
},
"references": {
"payoutHoldReason": "<string>",
"quoteId": "<string>",
"providerQuoteId": "<string>",
"liquidationAddress": "<string>",
"vaultId": "<string>",
"disbursementVaultId": "<string>",
"depositReference": "<string>",
"depositTxHash": "<string>",
"depositSourceAddress": "<string>",
"payinReference": "<string>",
"tradeId": "<string>",
"sweepTxId": "<string>",
"sweepTxHash": "<string>",
"failedSweepTxIds": [
"<string>"
],
"onforwardTxId": "<string>",
"failedOnforwardTxIds": [
"<string>"
],
"onforwardToAddress": "<string>",
"onforwardTxHash": "<string>",
"onforwardDepositId": "<string>",
"fiatWithdrawalId": "<string>",
"rejectedFiatWithdrawals": [
"<string>"
],
"stablecoinWithdrawalId": "<string>",
"fxFundingPayoutId": "<string>",
"sendTxId": "<string>",
"sendTxHash": "<string>",
"failedSendTxIds": [
"<string>"
],
"payoutId": "<string>",
"ledgerEntryRefs": [
"<string>"
]
},
"timeline": [
{
"status": "created",
"at": "2023-11-07T05:31:56Z",
"providerRef": "<string>",
"description": "<string>"
}
],
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"type": "offramp",
"source": {
"currency": "USDC",
"network": "ethereum",
"amount": "<string>"
},
"destination": {
"account_holder_name": "<string>",
"bsb_code": "<string>",
"account_number": "<string>",
"bank_country": "<string>",
"currency": "AUD"
},
"destinationAmount": "<string>",
"destinationCurrency": "AUD",
"routeId": "<string>",
"quoteId": "<string>",
"metadata": {}
}
],
"hasMore": true,
"nextCursor": "<string>"
}What this endpoint does
Lists conversions automatically created when customers fund direct payment routes.When to use it
Use it for transfer search, reconciliation, and monitoring across customers and routes.Before you call
Authenticate with an API key that can read this resource. Results are restricted to the tenant account bound to that key.Money and balance effect
This is a read-only request. It does not reserve, debit, credit, or settle money.States and completion
Thestatus field carries the enum values shown in the schema, not display copy. Broadly: awaiting_payin, awaiting_deposit, and the deposit_* states are waiting on funds; states such as screening, fx_executed, sweeping, pooled, payout_instructed, and sending are in flight; on_hold, payout_held, and frozen are holds; completed, failed, cancelled, returned, expired, and reversed are terminal. Treat only completed as settled — never infer settlement from creation alone.
Safe retries
GET requests are read-only and may be retried with normal exponential backoff. Do not send anIdempotency-Key.
Read Activity and history for the complete workflow.Authorizations
BearerApiKey
Send the same Wayex API key as Authorization: Bearer <key>.
Query Parameters
Available options:
onramp, offramp Admin keys only: scope results to the given client account (counterparty). Non-admin callers passing this parameter receive 403 — it is never silently ignored.
Example:
25
Available options:
-created_at, created_at, -updated_at, updated_at Response
A cursor-paginated page of transfers.

