curl --request POST \
--url https://api-sandbox.finogates.com/v1/platform/users \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"name": "John Doe",
"is_business_user": false,
"business_name": "Acme Corporation"
}
'import requests
url = "https://api-sandbox.finogates.com/v1/platform/users"
payload = {
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"name": "John Doe",
"is_business_user": False,
"business_name": "Acme Corporation"
}
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: 'john.doe@example.com',
first_name: 'John',
last_name: 'Doe',
name: 'John Doe',
is_business_user: false,
business_name: 'Acme Corporation'
})
};
fetch('https://api-sandbox.finogates.com/v1/platform/users', 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/users",
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' => 'john.doe@example.com',
'first_name' => 'John',
'last_name' => 'Doe',
'name' => 'John Doe',
'is_business_user' => false,
'business_name' => 'Acme Corporation'
]),
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/users"
payload := strings.NewReader("{\n \"email\": \"john.doe@example.com\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"name\": \"John Doe\",\n \"is_business_user\": false,\n \"business_name\": \"Acme Corporation\"\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/users")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"john.doe@example.com\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"name\": \"John Doe\",\n \"is_business_user\": false,\n \"business_name\": \"Acme Corporation\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.finogates.com/v1/platform/users")
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\": \"john.doe@example.com\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"name\": \"John Doe\",\n \"is_business_user\": false,\n \"business_name\": \"Acme Corporation\"\n}"
response = http.request(request)
puts response.read_body{
"status_code": 201,
"data": {
"user_id": "b3a9b622-cc63-4d3c-aad6-2d8e29e6f9d4",
"name": "John Doe",
"email": "john.doe@example.com",
"is_active": true,
"created_at": "2025-06-10T18:10:42.000Z"
},
"query_generated_time": 1712847600000
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Create User
Create a new user (one of your customers) on your platform.
When the user is created, a primary wallet in US dollars (USD) is automatically set up for them so they can hold and move funds. You can view or manage that wallet later through the wallets endpoints.
Both name and email are required, and the email must be unique across
your platform.
curl --request POST \
--url https://api-sandbox.finogates.com/v1/platform/users \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"name": "John Doe",
"is_business_user": false,
"business_name": "Acme Corporation"
}
'import requests
url = "https://api-sandbox.finogates.com/v1/platform/users"
payload = {
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"name": "John Doe",
"is_business_user": False,
"business_name": "Acme Corporation"
}
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: 'john.doe@example.com',
first_name: 'John',
last_name: 'Doe',
name: 'John Doe',
is_business_user: false,
business_name: 'Acme Corporation'
})
};
fetch('https://api-sandbox.finogates.com/v1/platform/users', 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/users",
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' => 'john.doe@example.com',
'first_name' => 'John',
'last_name' => 'Doe',
'name' => 'John Doe',
'is_business_user' => false,
'business_name' => 'Acme Corporation'
]),
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/users"
payload := strings.NewReader("{\n \"email\": \"john.doe@example.com\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"name\": \"John Doe\",\n \"is_business_user\": false,\n \"business_name\": \"Acme Corporation\"\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/users")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"john.doe@example.com\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"name\": \"John Doe\",\n \"is_business_user\": false,\n \"business_name\": \"Acme Corporation\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.finogates.com/v1/platform/users")
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\": \"john.doe@example.com\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"name\": \"John Doe\",\n \"is_business_user\": false,\n \"business_name\": \"Acme Corporation\"\n}"
response = http.request(request)
puts response.read_body{
"status_code": 201,
"data": {
"user_id": "b3a9b622-cc63-4d3c-aad6-2d8e29e6f9d4",
"name": "John Doe",
"email": "john.doe@example.com",
"is_active": true,
"created_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.
Body
Create a new end user on the platform.
User's email address. Must be unique within the platform and RFC 5321 compliant.
254"john.doe@example.com"
User's given name. Required for an individual (is_business_user false); ignored for a business.
100"John"
User's family name. Required for an individual; ignored for a business.
100"Doe"
Deprecated combined full name for an individual. Send first_name and last_name instead; when only name is provided it is split into first/last automatically and must carry both.
100"John Doe"
Set to true when this user is a business/organization rather than an individual. When true, send business_name and omit first/last name. This is fixed at creation and cannot be changed later.
false
Organization name. Required when is_business_user is true; leave empty for an individual.
100"Acme Corporation"

