curl --request POST \
--url https://api-sandbox.endl.io/api/v0/recipients/{userId}/all \
--header 'API-KEY: <api-key>' \
--header 'Api-Version: <api-version>' \
--header 'Content-Type: application/json' \
--data '
{
"page": 0,
"size": 20,
"sortBy": "createdOn,desc",
"recipientType": [
"INDIVIDUAL"
],
"currency": "VND"
}
'import requests
url = "https://api-sandbox.endl.io/api/v0/recipients/{userId}/all"
payload = {
"page": 0,
"size": 20,
"sortBy": "createdOn,desc",
"recipientType": ["INDIVIDUAL"],
"currency": "VND"
}
headers = {
"Api-Version": "<api-version>",
"API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Api-Version': '<api-version>',
'API-KEY': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
page: 0,
size: 20,
sortBy: 'createdOn,desc',
recipientType: ['INDIVIDUAL'],
currency: 'VND'
})
};
fetch('https://api-sandbox.endl.io/api/v0/recipients/{userId}/all', 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.endl.io/api/v0/recipients/{userId}/all",
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([
'page' => 0,
'size' => 20,
'sortBy' => 'createdOn,desc',
'recipientType' => [
'INDIVIDUAL'
],
'currency' => 'VND'
]),
CURLOPT_HTTPHEADER => [
"API-KEY: <api-key>",
"Api-Version: <api-version>",
"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://api-sandbox.endl.io/api/v0/recipients/{userId}/all"
payload := strings.NewReader("{\n \"page\": 0,\n \"size\": 20,\n \"sortBy\": \"createdOn,desc\",\n \"recipientType\": [\n \"INDIVIDUAL\"\n ],\n \"currency\": \"VND\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Api-Version", "<api-version>")
req.Header.Add("API-KEY", "<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://api-sandbox.endl.io/api/v0/recipients/{userId}/all")
.header("Api-Version", "<api-version>")
.header("API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"page\": 0,\n \"size\": 20,\n \"sortBy\": \"createdOn,desc\",\n \"recipientType\": [\n \"INDIVIDUAL\"\n ],\n \"currency\": \"VND\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.endl.io/api/v0/recipients/{userId}/all")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Api-Version"] = '<api-version>'
request["API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"page\": 0,\n \"size\": 20,\n \"sortBy\": \"createdOn,desc\",\n \"recipientType\": [\n \"INDIVIDUAL\"\n ],\n \"currency\": \"VND\"\n}"
response = http.request(request)
puts response.read_body{
"recipients": [
{
"id": "rec_7Hq2LmN9xVb4TzK1pR8s",
"userId": "cus_4Fz9QeT2mXb7LpR1sKd8",
"type": "INDIVIDUAL",
"firstName": "Van An",
"lastName": "Nguyen",
"email": "an.nguyen@example.com",
"phone": "+84901234567",
"dateOfBirth": "1990-12-05",
"bankName": "VIETCOMBANK",
"bankAccountNumber": "0071000123456",
"providerBankId": "VIETCOMBANK",
"recipientAddress": {
"addressLine1": "12 Le Loi",
"addressLine2": null,
"city": "Ho Chi Minh City",
"state": "Ho Chi Minh",
"country": "Vietnam",
"postalCode": "700000",
"countryTwoLetter": "VN",
"countryThreeLetter": "VNM",
"countryId": 241,
"region": null
},
"institutionalAddress": {
"addressLine1": null,
"addressLine2": null,
"city": null,
"state": null,
"country": null,
"postalCode": null,
"countryTwoLetter": null,
"countryThreeLetter": null,
"countryId": null,
"region": null
},
"currency": "VND",
"currencySymbol": "₫",
"currencyId": 110,
"payoutRail": "BANK_TRANSFER",
"relationshipToCustomer": "FRIEND",
"addedToAccountsProvider": false,
"flag": "Vietnam",
"invoiceMandatory": false,
"isNewKyc": false,
"deleted": false,
"createdOn": "2026-10-22T09:15:32.481Z",
"updatedOn": "2026-10-22T09:15:32.481Z"
},
{
"id": "rec_3Wd8YpQ1nC6vRj0aLs5T",
"userId": "cus_4Fz9QeT2mXb7LpR1sKd8",
"type": "BUSINESS",
"firstName": "Acme Supplies LLC",
"bankName": "LEAD BANK",
"bankAccountNumber": "900012345678",
"bankRoutingNumber": "021000021",
"accountType": "CHECKING",
"recipientAddress": {
"addressLine1": "123 Main Street",
"addressLine2": null,
"city": "San Francisco",
"state": "CA",
"country": "United States of America",
"postalCode": "90001",
"countryTwoLetter": "US",
"countryThreeLetter": "USA",
"countryId": 236,
"region": null
},
"institutionalAddress": {
"addressLine1": "123 Main Street",
"addressLine2": null,
"city": "San Francisco",
"state": "CA",
"country": "United States of America",
"postalCode": "90001",
"countryTwoLetter": null,
"countryThreeLetter": null,
"countryId": 236,
"region": null
},
"currency": "USD",
"currencySymbol": "$",
"currencyId": 106,
"payoutRail": "ACH",
"wireMessage": "Invoice 1042",
"relationshipToCustomer": "SUPPLIER",
"addedToAccountsProvider": true,
"counterpartyId": "5b1e6f0c-2a7d-4c1e-9f3b-7d2a8e4c6b10",
"statusAccountsProvider": "ACTIVE",
"statusAccountsProviderUpdatedOn": "2026-10-20T14:02:11.000Z",
"flag": "United States of America",
"invoiceMandatory": true,
"isNewKyc": false,
"deleted": false,
"createdOn": "2026-10-20T13:58:47.000Z",
"updatedOn": "2026-10-20T14:02:11.000Z"
}
],
"totalCount": 2
}{
"code": 400,
"message": "Validation failed",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"field": "amount"
}
]
}{
"data": null,
"code": 401,
"message": "Authentication Failed!",
"status": "Error",
"errors": [
{
"code": "401",
"message": "Authentication Failed!",
"field": "Authentication Failed!"
}
]
}{
"data": null,
"code": 403,
"message": "API key does not have the required permission",
"status": "Error",
"errors": [
{
"code": "403",
"message": "API key does not have the required permission",
"field": "API key does not have the required permission"
}
]
}{
"code": 404,
"message": "Resource not found",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "NOT_FOUND",
"message": "Resource not found",
"field": null
}
]
}{
"code": 409,
"message": "The request conflicts with the current state of the resource",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "CONFLICT",
"message": "The request conflicts with the current state of the resource",
"field": null
}
]
}{
"data": null,
"code": 429,
"message": "Rate limit exceeded, please retry later",
"status": "Error",
"errors": [
{
"code": "429",
"message": "Rate limit exceeded, please retry later",
"field": "Rate limit exceeded, please retry later"
}
]
}{
"code": 500,
"message": "Unexpected error",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "INTERNAL_ERROR",
"message": "Unexpected error",
"field": null
}
]
}{
"data": null,
"code": 502,
"message": "Upstream service error",
"status": "Error",
"errors": null
}{
"code": 503,
"message": "Credentials could not be verified right now",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "DIRECTORY_UNAVAILABLE",
"message": "Credentials could not be verified right now",
"field": null
}
]
}List recipients
Returns the customer’s recipients. Pass size: 0 (the default) to return all of them in one response.
Only the filters below are applied. type, status, countryId, firstName, lastName, email and bankAccountNumber are accepted but ignored today, so they are not listed.
curl --request POST \
--url https://api-sandbox.endl.io/api/v0/recipients/{userId}/all \
--header 'API-KEY: <api-key>' \
--header 'Api-Version: <api-version>' \
--header 'Content-Type: application/json' \
--data '
{
"page": 0,
"size": 20,
"sortBy": "createdOn,desc",
"recipientType": [
"INDIVIDUAL"
],
"currency": "VND"
}
'import requests
url = "https://api-sandbox.endl.io/api/v0/recipients/{userId}/all"
payload = {
"page": 0,
"size": 20,
"sortBy": "createdOn,desc",
"recipientType": ["INDIVIDUAL"],
"currency": "VND"
}
headers = {
"Api-Version": "<api-version>",
"API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Api-Version': '<api-version>',
'API-KEY': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
page: 0,
size: 20,
sortBy: 'createdOn,desc',
recipientType: ['INDIVIDUAL'],
currency: 'VND'
})
};
fetch('https://api-sandbox.endl.io/api/v0/recipients/{userId}/all', 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.endl.io/api/v0/recipients/{userId}/all",
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([
'page' => 0,
'size' => 20,
'sortBy' => 'createdOn,desc',
'recipientType' => [
'INDIVIDUAL'
],
'currency' => 'VND'
]),
CURLOPT_HTTPHEADER => [
"API-KEY: <api-key>",
"Api-Version: <api-version>",
"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://api-sandbox.endl.io/api/v0/recipients/{userId}/all"
payload := strings.NewReader("{\n \"page\": 0,\n \"size\": 20,\n \"sortBy\": \"createdOn,desc\",\n \"recipientType\": [\n \"INDIVIDUAL\"\n ],\n \"currency\": \"VND\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Api-Version", "<api-version>")
req.Header.Add("API-KEY", "<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://api-sandbox.endl.io/api/v0/recipients/{userId}/all")
.header("Api-Version", "<api-version>")
.header("API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"page\": 0,\n \"size\": 20,\n \"sortBy\": \"createdOn,desc\",\n \"recipientType\": [\n \"INDIVIDUAL\"\n ],\n \"currency\": \"VND\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.endl.io/api/v0/recipients/{userId}/all")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Api-Version"] = '<api-version>'
request["API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"page\": 0,\n \"size\": 20,\n \"sortBy\": \"createdOn,desc\",\n \"recipientType\": [\n \"INDIVIDUAL\"\n ],\n \"currency\": \"VND\"\n}"
response = http.request(request)
puts response.read_body{
"recipients": [
{
"id": "rec_7Hq2LmN9xVb4TzK1pR8s",
"userId": "cus_4Fz9QeT2mXb7LpR1sKd8",
"type": "INDIVIDUAL",
"firstName": "Van An",
"lastName": "Nguyen",
"email": "an.nguyen@example.com",
"phone": "+84901234567",
"dateOfBirth": "1990-12-05",
"bankName": "VIETCOMBANK",
"bankAccountNumber": "0071000123456",
"providerBankId": "VIETCOMBANK",
"recipientAddress": {
"addressLine1": "12 Le Loi",
"addressLine2": null,
"city": "Ho Chi Minh City",
"state": "Ho Chi Minh",
"country": "Vietnam",
"postalCode": "700000",
"countryTwoLetter": "VN",
"countryThreeLetter": "VNM",
"countryId": 241,
"region": null
},
"institutionalAddress": {
"addressLine1": null,
"addressLine2": null,
"city": null,
"state": null,
"country": null,
"postalCode": null,
"countryTwoLetter": null,
"countryThreeLetter": null,
"countryId": null,
"region": null
},
"currency": "VND",
"currencySymbol": "₫",
"currencyId": 110,
"payoutRail": "BANK_TRANSFER",
"relationshipToCustomer": "FRIEND",
"addedToAccountsProvider": false,
"flag": "Vietnam",
"invoiceMandatory": false,
"isNewKyc": false,
"deleted": false,
"createdOn": "2026-10-22T09:15:32.481Z",
"updatedOn": "2026-10-22T09:15:32.481Z"
},
{
"id": "rec_3Wd8YpQ1nC6vRj0aLs5T",
"userId": "cus_4Fz9QeT2mXb7LpR1sKd8",
"type": "BUSINESS",
"firstName": "Acme Supplies LLC",
"bankName": "LEAD BANK",
"bankAccountNumber": "900012345678",
"bankRoutingNumber": "021000021",
"accountType": "CHECKING",
"recipientAddress": {
"addressLine1": "123 Main Street",
"addressLine2": null,
"city": "San Francisco",
"state": "CA",
"country": "United States of America",
"postalCode": "90001",
"countryTwoLetter": "US",
"countryThreeLetter": "USA",
"countryId": 236,
"region": null
},
"institutionalAddress": {
"addressLine1": "123 Main Street",
"addressLine2": null,
"city": "San Francisco",
"state": "CA",
"country": "United States of America",
"postalCode": "90001",
"countryTwoLetter": null,
"countryThreeLetter": null,
"countryId": 236,
"region": null
},
"currency": "USD",
"currencySymbol": "$",
"currencyId": 106,
"payoutRail": "ACH",
"wireMessage": "Invoice 1042",
"relationshipToCustomer": "SUPPLIER",
"addedToAccountsProvider": true,
"counterpartyId": "5b1e6f0c-2a7d-4c1e-9f3b-7d2a8e4c6b10",
"statusAccountsProvider": "ACTIVE",
"statusAccountsProviderUpdatedOn": "2026-10-20T14:02:11.000Z",
"flag": "United States of America",
"invoiceMandatory": true,
"isNewKyc": false,
"deleted": false,
"createdOn": "2026-10-20T13:58:47.000Z",
"updatedOn": "2026-10-20T14:02:11.000Z"
}
],
"totalCount": 2
}{
"code": 400,
"message": "Validation failed",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"field": "amount"
}
]
}{
"data": null,
"code": 401,
"message": "Authentication Failed!",
"status": "Error",
"errors": [
{
"code": "401",
"message": "Authentication Failed!",
"field": "Authentication Failed!"
}
]
}{
"data": null,
"code": 403,
"message": "API key does not have the required permission",
"status": "Error",
"errors": [
{
"code": "403",
"message": "API key does not have the required permission",
"field": "API key does not have the required permission"
}
]
}{
"code": 404,
"message": "Resource not found",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "NOT_FOUND",
"message": "Resource not found",
"field": null
}
]
}{
"code": 409,
"message": "The request conflicts with the current state of the resource",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "CONFLICT",
"message": "The request conflicts with the current state of the resource",
"field": null
}
]
}{
"data": null,
"code": 429,
"message": "Rate limit exceeded, please retry later",
"status": "Error",
"errors": [
{
"code": "429",
"message": "Rate limit exceeded, please retry later",
"field": "Rate limit exceeded, please retry later"
}
]
}{
"code": 500,
"message": "Unexpected error",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "INTERNAL_ERROR",
"message": "Unexpected error",
"field": null
}
]
}{
"data": null,
"code": 502,
"message": "Upstream service error",
"status": "Error",
"errors": null
}{
"code": 503,
"message": "Credentials could not be verified right now",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "DIRECTORY_UNAVAILABLE",
"message": "Credentials could not be verified right now",
"field": null
}
]
}Authorizations
Your partner API key.
Headers
The API version this request targets. Required on every /api/v0/* call. Format YYYY-MM.<release>; 2026-09.1 is the latest. The version that served the request is echoed back on the response. Missing, malformed or unsupported values are rejected with 400.
^\d{4}-\d{2}\.\d+$Path Parameters
The customer the recipient belongs to. Must be a cus_… reference id — a UUID is rejected with 400.
Body
Zero-based page index. Default 0.
Page size. Default 0, and 0 returns every recipient unpaged.
field,asc|desc. createdOn,desc is recommended.
Match any of these recipient types.
INDIVIDUAL, BUSINESS Match any of these payment types.
BANK_ACCOUNT, CRYPTO_WALLET Exact currency, case-insensitive.
Substring of first name, last name, currency, email or bank name.
Response
The customer's recipients. Unwrapped. Keys with no value are left out, except inside the two address objects. alias is never returned.