curl --request POST \
--url https://api-sandbox.finogates.com/v1/platform/payees \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "payments@acme-supplier.com",
"first_name": "Acme",
"is_business": false,
"last_name": "Supplier",
"phone": "+14155550123"
}
'import requests
url = "https://api-sandbox.finogates.com/v1/platform/payees"
payload = {
"email": "payments@acme-supplier.com",
"first_name": "Acme",
"is_business": False,
"last_name": "Supplier",
"phone": "+14155550123"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'payments@acme-supplier.com',
first_name: 'Acme',
is_business: false,
last_name: 'Supplier',
phone: '+14155550123'
})
};
fetch('https://api-sandbox.finogates.com/v1/platform/payees', 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.finogates.com/v1/platform/payees",
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([
'email' => 'payments@acme-supplier.com',
'first_name' => 'Acme',
'is_business' => false,
'last_name' => 'Supplier',
'phone' => '+14155550123'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.finogates.com/v1/platform/payees"
payload := strings.NewReader("{\n \"email\": \"payments@acme-supplier.com\",\n \"first_name\": \"Acme\",\n \"is_business\": false,\n \"last_name\": \"Supplier\",\n \"phone\": \"+14155550123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.finogates.com/v1/platform/payees")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"payments@acme-supplier.com\",\n \"first_name\": \"Acme\",\n \"is_business\": false,\n \"last_name\": \"Supplier\",\n \"phone\": \"+14155550123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.finogates.com/v1/platform/payees")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"payments@acme-supplier.com\",\n \"first_name\": \"Acme\",\n \"is_business\": false,\n \"last_name\": \"Supplier\",\n \"phone\": \"+14155550123\"\n}"
response = http.request(request)
puts response.read_body{
"status_code": 201,
"data": {
"id": "d4e5f6a7-b8c9-0123-4567-890abcdef012",
"display_name": "Acme Supplier",
"first_name": "Acme",
"last_name": "Supplier",
"is_business": false,
"email": "payments@acme-supplier.com",
"phone": "+14155550123",
"status": "active",
"is_active": true,
"owner_user_id": "b3a9b622-cc63-4d3c-aad6-2d8e29e6f9d4",
"created_at": "2025-06-10T18:10:42.000Z",
"updated_at": "2025-06-10T18:10:42.000Z"
},
"query_generated_time": 1712847600000
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Create Payee
Add a payee — a person or business that one of your users wants to send money to. Once the payee is added, you can give them one or more payout destinations (the actual accounts where the money is delivered).
curl --request POST \
--url https://api-sandbox.finogates.com/v1/platform/payees \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "payments@acme-supplier.com",
"first_name": "Acme",
"is_business": false,
"last_name": "Supplier",
"phone": "+14155550123"
}
'import requests
url = "https://api-sandbox.finogates.com/v1/platform/payees"
payload = {
"email": "payments@acme-supplier.com",
"first_name": "Acme",
"is_business": False,
"last_name": "Supplier",
"phone": "+14155550123"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'payments@acme-supplier.com',
first_name: 'Acme',
is_business: false,
last_name: 'Supplier',
phone: '+14155550123'
})
};
fetch('https://api-sandbox.finogates.com/v1/platform/payees', 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.finogates.com/v1/platform/payees",
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([
'email' => 'payments@acme-supplier.com',
'first_name' => 'Acme',
'is_business' => false,
'last_name' => 'Supplier',
'phone' => '+14155550123'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.finogates.com/v1/platform/payees"
payload := strings.NewReader("{\n \"email\": \"payments@acme-supplier.com\",\n \"first_name\": \"Acme\",\n \"is_business\": false,\n \"last_name\": \"Supplier\",\n \"phone\": \"+14155550123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.finogates.com/v1/platform/payees")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"payments@acme-supplier.com\",\n \"first_name\": \"Acme\",\n \"is_business\": false,\n \"last_name\": \"Supplier\",\n \"phone\": \"+14155550123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.finogates.com/v1/platform/payees")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"payments@acme-supplier.com\",\n \"first_name\": \"Acme\",\n \"is_business\": false,\n \"last_name\": \"Supplier\",\n \"phone\": \"+14155550123\"\n}"
response = http.request(request)
puts response.read_body{
"status_code": 201,
"data": {
"id": "d4e5f6a7-b8c9-0123-4567-890abcdef012",
"display_name": "Acme Supplier",
"first_name": "Acme",
"last_name": "Supplier",
"is_business": false,
"email": "payments@acme-supplier.com",
"phone": "+14155550123",
"status": "active",
"is_active": true,
"owner_user_id": "b3a9b622-cc63-4d3c-aad6-2d8e29e6f9d4",
"created_at": "2025-06-10T18:10:42.000Z",
"updated_at": "2025-06-10T18:10:42.000Z"
},
"query_generated_time": 1712847600000
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Query Parameters
The unique ID of the user who owns this payee.
"b3a9b622-cc63-4d3c-aad6-2d8e29e6f9d4"
Body
Request body for POST /tenant/payees.
2552552552552010110050102020255255255500Recipient's ZIP / postal code. Required by some payout corridors (e.g. US) — the payout is rejected without it.
20Set to true when this payee is a business/organization rather than an individual. When true, send business_name; first/last name are optional (used for international/UniTeller payouts). This is fixed at creation and cannot be changed later.
Organization name. Required when is_business is true; leave empty for an individual.
25540
