curl --request PATCH \
--url https://api.spherepay.co/v2/business-representative/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"address": {
"city": "Chicago",
"country": "USA",
"line1": "742 North Wabash Avenue",
"line2": "Apt 4B",
"postalCode": "60611",
"state": "IL"
},
"representationDetails": {
"isControlPerson": true,
"isSigner": true,
"ownershipPercentage": "50",
"relationshipEstablishedAt": "2020-03-15",
"roles": [
"ubo"
],
"title": "CEO"
}
}
'import requests
url = "https://api.spherepay.co/v2/business-representative/{id}"
payload = {
"address": {
"city": "Chicago",
"country": "USA",
"line1": "742 North Wabash Avenue",
"line2": "Apt 4B",
"postalCode": "60611",
"state": "IL"
},
"representationDetails": {
"isControlPerson": True,
"isSigner": True,
"ownershipPercentage": "50",
"relationshipEstablishedAt": "2020-03-15",
"roles": ["ubo"],
"title": "CEO"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
address: {
city: 'Chicago',
country: 'USA',
line1: '742 North Wabash Avenue',
line2: 'Apt 4B',
postalCode: '60611',
state: 'IL'
},
representationDetails: {
isControlPerson: true,
isSigner: true,
ownershipPercentage: '50',
relationshipEstablishedAt: '2020-03-15',
roles: ['ubo'],
title: 'CEO'
}
})
};
fetch('https://api.spherepay.co/v2/business-representative/{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.spherepay.co/v2/business-representative/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'address' => [
'city' => 'Chicago',
'country' => 'USA',
'line1' => '742 North Wabash Avenue',
'line2' => 'Apt 4B',
'postalCode' => '60611',
'state' => 'IL'
],
'representationDetails' => [
'isControlPerson' => true,
'isSigner' => true,
'ownershipPercentage' => '50',
'relationshipEstablishedAt' => '2020-03-15',
'roles' => [
'ubo'
],
'title' => 'CEO'
]
]),
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.spherepay.co/v2/business-representative/{id}"
payload := strings.NewReader("{\n \"address\": {\n \"city\": \"Chicago\",\n \"country\": \"USA\",\n \"line1\": \"742 North Wabash Avenue\",\n \"line2\": \"Apt 4B\",\n \"postalCode\": \"60611\",\n \"state\": \"IL\"\n },\n \"representationDetails\": {\n \"isControlPerson\": true,\n \"isSigner\": true,\n \"ownershipPercentage\": \"50\",\n \"relationshipEstablishedAt\": \"2020-03-15\",\n \"roles\": [\n \"ubo\"\n ],\n \"title\": \"CEO\"\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.spherepay.co/v2/business-representative/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"address\": {\n \"city\": \"Chicago\",\n \"country\": \"USA\",\n \"line1\": \"742 North Wabash Avenue\",\n \"line2\": \"Apt 4B\",\n \"postalCode\": \"60611\",\n \"state\": \"IL\"\n },\n \"representationDetails\": {\n \"isControlPerson\": true,\n \"isSigner\": true,\n \"ownershipPercentage\": \"50\",\n \"relationshipEstablishedAt\": \"2020-03-15\",\n \"roles\": [\n \"ubo\"\n ],\n \"title\": \"CEO\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spherepay.co/v2/business-representative/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"address\": {\n \"city\": \"Chicago\",\n \"country\": \"USA\",\n \"line1\": \"742 North Wabash Avenue\",\n \"line2\": \"Apt 4B\",\n \"postalCode\": \"60611\",\n \"state\": \"IL\"\n },\n \"representationDetails\": {\n \"isControlPerson\": true,\n \"isSigner\": true,\n \"ownershipPercentage\": \"50\",\n \"relationshipEstablishedAt\": \"2020-03-15\",\n \"roles\": [\n \"ubo\"\n ],\n \"title\": \"CEO\"\n }\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2026-03-10T00:00:08.986Z",
"customerId": "customer_2f283221a9d44ada800ac7f11f640402",
"id": "associatedPerson_d972d2f70b9f4d3c8d7cfb32593f395b",
"type": "individual",
"updatedAt": "2026-03-10T00:00:08.986Z",
"verificationProfiles": [
{
"criteria": {
"complete": [
"email_address",
"phone_number",
"residential_address",
"tax_identification_number",
"ownership_percentage",
"is_control_person",
"is_signer",
"relationship_established_at",
"title"
],
"errors": [],
"pending": [],
"required": [
"identity_document",
"liveness_report_document",
"proof_of_address_document"
]
},
"name": "ubo_kyc_profile_a",
"status": "incomplete"
}
],
"email": "james.wilson@acmecorp.example.com",
"phone": "+13125559876",
"representationDetails": {
"roles": [
"ubo"
],
"ownershipPercentage": "50",
"relationshipEstablishedAt": "2020-03-15",
"title": "CEO"
}
}{
"code": "address/invalid",
"correlationId": "28c61e885c6e5eaa78c1a2183a9b883c",
"detail": "Invalid request parameters",
"status": 400
}{
"code": "resource/not-found",
"correlationId": "28c61e885c6e5eaa78c1a2183a9b883c",
"detail": "Resource not found",
"status": 404
}{
"code": "validation/failed",
"correlationId": "28c61e885c6e5eaa78c1a2183a9b883c",
"detail": "Validation failed",
"errors": [
{
"detail": "Invalid email format",
"pointer": "/email"
},
{
"detail": "Name is required",
"pointer": "/name"
}
],
"status": 422
}Update a Business Representative Before KYB
Update an existing business representative
curl --request PATCH \
--url https://api.spherepay.co/v2/business-representative/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"address": {
"city": "Chicago",
"country": "USA",
"line1": "742 North Wabash Avenue",
"line2": "Apt 4B",
"postalCode": "60611",
"state": "IL"
},
"representationDetails": {
"isControlPerson": true,
"isSigner": true,
"ownershipPercentage": "50",
"relationshipEstablishedAt": "2020-03-15",
"roles": [
"ubo"
],
"title": "CEO"
}
}
'import requests
url = "https://api.spherepay.co/v2/business-representative/{id}"
payload = {
"address": {
"city": "Chicago",
"country": "USA",
"line1": "742 North Wabash Avenue",
"line2": "Apt 4B",
"postalCode": "60611",
"state": "IL"
},
"representationDetails": {
"isControlPerson": True,
"isSigner": True,
"ownershipPercentage": "50",
"relationshipEstablishedAt": "2020-03-15",
"roles": ["ubo"],
"title": "CEO"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
address: {
city: 'Chicago',
country: 'USA',
line1: '742 North Wabash Avenue',
line2: 'Apt 4B',
postalCode: '60611',
state: 'IL'
},
representationDetails: {
isControlPerson: true,
isSigner: true,
ownershipPercentage: '50',
relationshipEstablishedAt: '2020-03-15',
roles: ['ubo'],
title: 'CEO'
}
})
};
fetch('https://api.spherepay.co/v2/business-representative/{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.spherepay.co/v2/business-representative/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'address' => [
'city' => 'Chicago',
'country' => 'USA',
'line1' => '742 North Wabash Avenue',
'line2' => 'Apt 4B',
'postalCode' => '60611',
'state' => 'IL'
],
'representationDetails' => [
'isControlPerson' => true,
'isSigner' => true,
'ownershipPercentage' => '50',
'relationshipEstablishedAt' => '2020-03-15',
'roles' => [
'ubo'
],
'title' => 'CEO'
]
]),
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.spherepay.co/v2/business-representative/{id}"
payload := strings.NewReader("{\n \"address\": {\n \"city\": \"Chicago\",\n \"country\": \"USA\",\n \"line1\": \"742 North Wabash Avenue\",\n \"line2\": \"Apt 4B\",\n \"postalCode\": \"60611\",\n \"state\": \"IL\"\n },\n \"representationDetails\": {\n \"isControlPerson\": true,\n \"isSigner\": true,\n \"ownershipPercentage\": \"50\",\n \"relationshipEstablishedAt\": \"2020-03-15\",\n \"roles\": [\n \"ubo\"\n ],\n \"title\": \"CEO\"\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.spherepay.co/v2/business-representative/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"address\": {\n \"city\": \"Chicago\",\n \"country\": \"USA\",\n \"line1\": \"742 North Wabash Avenue\",\n \"line2\": \"Apt 4B\",\n \"postalCode\": \"60611\",\n \"state\": \"IL\"\n },\n \"representationDetails\": {\n \"isControlPerson\": true,\n \"isSigner\": true,\n \"ownershipPercentage\": \"50\",\n \"relationshipEstablishedAt\": \"2020-03-15\",\n \"roles\": [\n \"ubo\"\n ],\n \"title\": \"CEO\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spherepay.co/v2/business-representative/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"address\": {\n \"city\": \"Chicago\",\n \"country\": \"USA\",\n \"line1\": \"742 North Wabash Avenue\",\n \"line2\": \"Apt 4B\",\n \"postalCode\": \"60611\",\n \"state\": \"IL\"\n },\n \"representationDetails\": {\n \"isControlPerson\": true,\n \"isSigner\": true,\n \"ownershipPercentage\": \"50\",\n \"relationshipEstablishedAt\": \"2020-03-15\",\n \"roles\": [\n \"ubo\"\n ],\n \"title\": \"CEO\"\n }\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2026-03-10T00:00:08.986Z",
"customerId": "customer_2f283221a9d44ada800ac7f11f640402",
"id": "associatedPerson_d972d2f70b9f4d3c8d7cfb32593f395b",
"type": "individual",
"updatedAt": "2026-03-10T00:00:08.986Z",
"verificationProfiles": [
{
"criteria": {
"complete": [
"email_address",
"phone_number",
"residential_address",
"tax_identification_number",
"ownership_percentage",
"is_control_person",
"is_signer",
"relationship_established_at",
"title"
],
"errors": [],
"pending": [],
"required": [
"identity_document",
"liveness_report_document",
"proof_of_address_document"
]
},
"name": "ubo_kyc_profile_a",
"status": "incomplete"
}
],
"email": "james.wilson@acmecorp.example.com",
"phone": "+13125559876",
"representationDetails": {
"roles": [
"ubo"
],
"ownershipPercentage": "50",
"relationshipEstablishedAt": "2020-03-15",
"title": "CEO"
}
}{
"code": "address/invalid",
"correlationId": "28c61e885c6e5eaa78c1a2183a9b883c",
"detail": "Invalid request parameters",
"status": 400
}{
"code": "resource/not-found",
"correlationId": "28c61e885c6e5eaa78c1a2183a9b883c",
"detail": "Resource not found",
"status": 404
}{
"code": "validation/failed",
"correlationId": "28c61e885c6e5eaa78c1a2183a9b883c",
"detail": "Validation failed",
"errors": [
{
"detail": "Invalid email format",
"pointer": "/email"
},
{
"detail": "Name is required",
"pointer": "/name"
}
],
"status": 422
}countryOfBirth and nationality for an EEA+ business, or adjust representation details such as title, roles, or ownership percentage. Only include fields you want to change; unspecified fields are left unchanged. Validation runs on the merged representative state.
See EEA+ businesses for EEA+ representative requirements.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Business Representative ID
1"associatedPerson_d972d2f70b9f4d3c8d7cfb32593f395b"
Body
The address of the business representative. Required if personalInformation is provided.
Show child attributes
Show child attributes
{
"city": "Chicago",
"country": "USA",
"line1": "742 North Wabash Avenue",
"line2": "Apt 4B",
"postalCode": "60611",
"state": "IL"
}
Personal information including tax identification details for individual customers. When any tax identification field is provided, all tax identification fields (number, type, country) and address are required. Please refer to the Individual Verification Criteria for the full list of reference.
Show child attributes
Show child attributes
The representation details of the business representative.
Show child attributes
Show child attributes
{
"isControlPerson": true,
"isSigner": true,
"ownershipPercentage": "50",
"relationshipEstablishedAt": "2020-03-15",
"roles": ["ubo"],
"title": "CEO"
}
Response
The date and time the business representative was created.
"2026-03-10T00:00:08.986Z"
Customer ID
"customer_2f283221a9d44ada800ac7f11f640402"
Business Representative ID
"associatedPerson_d972d2f70b9f4d3c8d7cfb32593f395b"
Customer type
individual "individual"
The date and time the business representative was last updated.
"2026-03-10T00:00:08.986Z"
Array of verification profiles for the business representative.
Show child attributes
Show child attributes
[
{
"criteria": {
"complete": [
"email_address",
"phone_number",
"residential_address",
"tax_identification_number",
"ownership_percentage",
"is_control_person",
"is_signer",
"relationship_established_at",
"title"
],
"errors": [],
"pending": [],
"required": [
"identity_document",
"liveness_report_document",
"proof_of_address_document"
]
},
"name": "ubo_kyc_profile_a",
"status": "incomplete"
}
]
Email address
"james.wilson@acmecorp.example.com"
Phone number
"+13125559876"
Representation details
Show child attributes
Show child attributes