# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
# Escape hatch for any endpoint: infinite api <METHOD> <path>
infinite api PATCH /v1/customers/cus_abc123/associated_individuals/ae_abc123 \
--body '<request-json>'Update an associated individual (cus_abc123, ae_abc123).
# Infinite MCP is read-only for this endpoint — use a dedicated MCP tool when one exists, otherwise run the CLI tab.import requests
url = "https://sandbox.api.infinite.dev/v1/customers/{customerId}/associated_individuals/{id}"
payload = {
"parentEntityId": "<string>",
"countryCode": "<string>",
"email": "<string>",
"phone": "<string>",
"hasOwnership": True,
"hasControl": True,
"ownershipPercentage": 123,
"isSigner": True,
"isDirector": True,
"supportingDocuments": [
{
"file": "doc_abc123",
"requirementId": "<string>",
"type": "PROOF_OF_ADDRESS",
"subtype": "UTILITY_BILL",
"description": "Passport issued in 2020",
"remarks": "Uploaded to support proof of business address"
}
],
"attestedOwnershipStructureAt": "<string>",
"relationshipDate": "2020-01-15",
"firstName": "<string>",
"lastName": "<string>",
"middleName": "<string>",
"nickname": "<string>",
"dateOfBirth": "<string>",
"taxResidenceCountry": "GB",
"taxIdentificationNumber": "<string>",
"taxIdentificationDocumentType": "UTR",
"transliteratedFirstName": "<string>",
"transliteratedMiddleName": "<string>",
"transliteratedLastName": "<string>"
}
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({
parentEntityId: '<string>',
countryCode: '<string>',
email: '<string>',
phone: '<string>',
hasOwnership: true,
hasControl: true,
ownershipPercentage: 123,
isSigner: true,
isDirector: true,
supportingDocuments: [
{
file: 'doc_abc123',
requirementId: '<string>',
type: 'PROOF_OF_ADDRESS',
subtype: 'UTILITY_BILL',
description: 'Passport issued in 2020',
remarks: 'Uploaded to support proof of business address'
}
],
attestedOwnershipStructureAt: '<string>',
relationshipDate: '2020-01-15',
firstName: '<string>',
lastName: '<string>',
middleName: '<string>',
nickname: '<string>',
dateOfBirth: '<string>',
taxResidenceCountry: 'GB',
taxIdentificationNumber: '<string>',
taxIdentificationDocumentType: 'UTR',
transliteratedFirstName: '<string>',
transliteratedMiddleName: '<string>',
transliteratedLastName: '<string>'
})
};
fetch('https://sandbox.api.infinite.dev/v1/customers/{customerId}/associated_individuals/{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://sandbox.api.infinite.dev/v1/customers/{customerId}/associated_individuals/{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([
'parentEntityId' => '<string>',
'countryCode' => '<string>',
'email' => '<string>',
'phone' => '<string>',
'hasOwnership' => true,
'hasControl' => true,
'ownershipPercentage' => 123,
'isSigner' => true,
'isDirector' => true,
'supportingDocuments' => [
[
'file' => 'doc_abc123',
'requirementId' => '<string>',
'type' => 'PROOF_OF_ADDRESS',
'subtype' => 'UTILITY_BILL',
'description' => 'Passport issued in 2020',
'remarks' => 'Uploaded to support proof of business address'
]
],
'attestedOwnershipStructureAt' => '<string>',
'relationshipDate' => '2020-01-15',
'firstName' => '<string>',
'lastName' => '<string>',
'middleName' => '<string>',
'nickname' => '<string>',
'dateOfBirth' => '<string>',
'taxResidenceCountry' => 'GB',
'taxIdentificationNumber' => '<string>',
'taxIdentificationDocumentType' => 'UTR',
'transliteratedFirstName' => '<string>',
'transliteratedMiddleName' => '<string>',
'transliteratedLastName' => '<string>'
]),
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://sandbox.api.infinite.dev/v1/customers/{customerId}/associated_individuals/{id}"
payload := strings.NewReader("{\n \"parentEntityId\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"hasOwnership\": true,\n \"hasControl\": true,\n \"ownershipPercentage\": 123,\n \"isSigner\": true,\n \"isDirector\": true,\n \"supportingDocuments\": [\n {\n \"file\": \"doc_abc123\",\n \"requirementId\": \"<string>\",\n \"type\": \"PROOF_OF_ADDRESS\",\n \"subtype\": \"UTILITY_BILL\",\n \"description\": \"Passport issued in 2020\",\n \"remarks\": \"Uploaded to support proof of business address\"\n }\n ],\n \"attestedOwnershipStructureAt\": \"<string>\",\n \"relationshipDate\": \"2020-01-15\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"middleName\": \"<string>\",\n \"nickname\": \"<string>\",\n \"dateOfBirth\": \"<string>\",\n \"taxResidenceCountry\": \"GB\",\n \"taxIdentificationNumber\": \"<string>\",\n \"taxIdentificationDocumentType\": \"UTR\",\n \"transliteratedFirstName\": \"<string>\",\n \"transliteratedMiddleName\": \"<string>\",\n \"transliteratedLastName\": \"<string>\"\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://sandbox.api.infinite.dev/v1/customers/{customerId}/associated_individuals/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"parentEntityId\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"hasOwnership\": true,\n \"hasControl\": true,\n \"ownershipPercentage\": 123,\n \"isSigner\": true,\n \"isDirector\": true,\n \"supportingDocuments\": [\n {\n \"file\": \"doc_abc123\",\n \"requirementId\": \"<string>\",\n \"type\": \"PROOF_OF_ADDRESS\",\n \"subtype\": \"UTILITY_BILL\",\n \"description\": \"Passport issued in 2020\",\n \"remarks\": \"Uploaded to support proof of business address\"\n }\n ],\n \"attestedOwnershipStructureAt\": \"<string>\",\n \"relationshipDate\": \"2020-01-15\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"middleName\": \"<string>\",\n \"nickname\": \"<string>\",\n \"dateOfBirth\": \"<string>\",\n \"taxResidenceCountry\": \"GB\",\n \"taxIdentificationNumber\": \"<string>\",\n \"taxIdentificationDocumentType\": \"UTR\",\n \"transliteratedFirstName\": \"<string>\",\n \"transliteratedMiddleName\": \"<string>\",\n \"transliteratedLastName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/customers/{customerId}/associated_individuals/{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 \"parentEntityId\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"hasOwnership\": true,\n \"hasControl\": true,\n \"ownershipPercentage\": 123,\n \"isSigner\": true,\n \"isDirector\": true,\n \"supportingDocuments\": [\n {\n \"file\": \"doc_abc123\",\n \"requirementId\": \"<string>\",\n \"type\": \"PROOF_OF_ADDRESS\",\n \"subtype\": \"UTILITY_BILL\",\n \"description\": \"Passport issued in 2020\",\n \"remarks\": \"Uploaded to support proof of business address\"\n }\n ],\n \"attestedOwnershipStructureAt\": \"<string>\",\n \"relationshipDate\": \"2020-01-15\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"middleName\": \"<string>\",\n \"nickname\": \"<string>\",\n \"dateOfBirth\": \"<string>\",\n \"taxResidenceCountry\": \"GB\",\n \"taxIdentificationNumber\": \"<string>\",\n \"taxIdentificationDocumentType\": \"UTR\",\n \"transliteratedFirstName\": \"<string>\",\n \"transliteratedMiddleName\": \"<string>\",\n \"transliteratedLastName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "asp_abc123",
"createdAt": "2026-01-15T10:30:00Z",
"updatedAt": "2026-01-15T10:30:00Z",
"entityType": "BUSINESS",
"hasOwnership": true,
"hasControl": true,
"parentEntityId": "asp_parent123",
"details": {
"firstName": "John",
"nickname": "Johnny",
"lastName": "Doe",
"middleName": "Michael",
"dateOfBirth": "1985-03-15",
"taxResidenceCountry": "GB",
"transliteratedFirstName": "<string>",
"transliteratedMiddleName": "<string>",
"transliteratedLastName": "<string>",
"taxIdentificationDocumentType": "UTR"
},
"countryCode": "US",
"email": "contact@acmeholdings.com",
"phone": "+14155551234",
"address": {
"addressLine1": "123 Main Street",
"city": "San Francisco",
"postalCode": "94102",
"country": "US",
"addressLine2": "Apt 4B",
"state": "CA",
"transliterated": {
"addressLine1": "123 Main Street",
"addressLine2": "Apt 4B",
"city": "Beijing",
"state": "Hebei"
}
},
"ownershipPercentage": 51,
"isSigner": false,
"isDirector": false,
"role": "CEO",
"title": "Managing Director",
"documents": [
"doc_abc123"
],
"attestedOwnershipStructureAt": "2026-01-15T10:30:00Z",
"displayName": "Acme Holdings LLC",
"verificationLink": {
"sessionId": "vsess_abc123",
"verificationUrl": "https://verify.infinite.dev/?sessionId=vsess_abc123",
"expiresAt": "2026-01-09T10:30:00Z",
"status": "ACTIVE"
}
}Update an associated individual
Update an individual associated entity for a customer without sending polymorphic nested detail objects.
# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
# Escape hatch for any endpoint: infinite api <METHOD> <path>
infinite api PATCH /v1/customers/cus_abc123/associated_individuals/ae_abc123 \
--body '<request-json>'Update an associated individual (cus_abc123, ae_abc123).
# Infinite MCP is read-only for this endpoint — use a dedicated MCP tool when one exists, otherwise run the CLI tab.import requests
url = "https://sandbox.api.infinite.dev/v1/customers/{customerId}/associated_individuals/{id}"
payload = {
"parentEntityId": "<string>",
"countryCode": "<string>",
"email": "<string>",
"phone": "<string>",
"hasOwnership": True,
"hasControl": True,
"ownershipPercentage": 123,
"isSigner": True,
"isDirector": True,
"supportingDocuments": [
{
"file": "doc_abc123",
"requirementId": "<string>",
"type": "PROOF_OF_ADDRESS",
"subtype": "UTILITY_BILL",
"description": "Passport issued in 2020",
"remarks": "Uploaded to support proof of business address"
}
],
"attestedOwnershipStructureAt": "<string>",
"relationshipDate": "2020-01-15",
"firstName": "<string>",
"lastName": "<string>",
"middleName": "<string>",
"nickname": "<string>",
"dateOfBirth": "<string>",
"taxResidenceCountry": "GB",
"taxIdentificationNumber": "<string>",
"taxIdentificationDocumentType": "UTR",
"transliteratedFirstName": "<string>",
"transliteratedMiddleName": "<string>",
"transliteratedLastName": "<string>"
}
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({
parentEntityId: '<string>',
countryCode: '<string>',
email: '<string>',
phone: '<string>',
hasOwnership: true,
hasControl: true,
ownershipPercentage: 123,
isSigner: true,
isDirector: true,
supportingDocuments: [
{
file: 'doc_abc123',
requirementId: '<string>',
type: 'PROOF_OF_ADDRESS',
subtype: 'UTILITY_BILL',
description: 'Passport issued in 2020',
remarks: 'Uploaded to support proof of business address'
}
],
attestedOwnershipStructureAt: '<string>',
relationshipDate: '2020-01-15',
firstName: '<string>',
lastName: '<string>',
middleName: '<string>',
nickname: '<string>',
dateOfBirth: '<string>',
taxResidenceCountry: 'GB',
taxIdentificationNumber: '<string>',
taxIdentificationDocumentType: 'UTR',
transliteratedFirstName: '<string>',
transliteratedMiddleName: '<string>',
transliteratedLastName: '<string>'
})
};
fetch('https://sandbox.api.infinite.dev/v1/customers/{customerId}/associated_individuals/{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://sandbox.api.infinite.dev/v1/customers/{customerId}/associated_individuals/{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([
'parentEntityId' => '<string>',
'countryCode' => '<string>',
'email' => '<string>',
'phone' => '<string>',
'hasOwnership' => true,
'hasControl' => true,
'ownershipPercentage' => 123,
'isSigner' => true,
'isDirector' => true,
'supportingDocuments' => [
[
'file' => 'doc_abc123',
'requirementId' => '<string>',
'type' => 'PROOF_OF_ADDRESS',
'subtype' => 'UTILITY_BILL',
'description' => 'Passport issued in 2020',
'remarks' => 'Uploaded to support proof of business address'
]
],
'attestedOwnershipStructureAt' => '<string>',
'relationshipDate' => '2020-01-15',
'firstName' => '<string>',
'lastName' => '<string>',
'middleName' => '<string>',
'nickname' => '<string>',
'dateOfBirth' => '<string>',
'taxResidenceCountry' => 'GB',
'taxIdentificationNumber' => '<string>',
'taxIdentificationDocumentType' => 'UTR',
'transliteratedFirstName' => '<string>',
'transliteratedMiddleName' => '<string>',
'transliteratedLastName' => '<string>'
]),
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://sandbox.api.infinite.dev/v1/customers/{customerId}/associated_individuals/{id}"
payload := strings.NewReader("{\n \"parentEntityId\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"hasOwnership\": true,\n \"hasControl\": true,\n \"ownershipPercentage\": 123,\n \"isSigner\": true,\n \"isDirector\": true,\n \"supportingDocuments\": [\n {\n \"file\": \"doc_abc123\",\n \"requirementId\": \"<string>\",\n \"type\": \"PROOF_OF_ADDRESS\",\n \"subtype\": \"UTILITY_BILL\",\n \"description\": \"Passport issued in 2020\",\n \"remarks\": \"Uploaded to support proof of business address\"\n }\n ],\n \"attestedOwnershipStructureAt\": \"<string>\",\n \"relationshipDate\": \"2020-01-15\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"middleName\": \"<string>\",\n \"nickname\": \"<string>\",\n \"dateOfBirth\": \"<string>\",\n \"taxResidenceCountry\": \"GB\",\n \"taxIdentificationNumber\": \"<string>\",\n \"taxIdentificationDocumentType\": \"UTR\",\n \"transliteratedFirstName\": \"<string>\",\n \"transliteratedMiddleName\": \"<string>\",\n \"transliteratedLastName\": \"<string>\"\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://sandbox.api.infinite.dev/v1/customers/{customerId}/associated_individuals/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"parentEntityId\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"hasOwnership\": true,\n \"hasControl\": true,\n \"ownershipPercentage\": 123,\n \"isSigner\": true,\n \"isDirector\": true,\n \"supportingDocuments\": [\n {\n \"file\": \"doc_abc123\",\n \"requirementId\": \"<string>\",\n \"type\": \"PROOF_OF_ADDRESS\",\n \"subtype\": \"UTILITY_BILL\",\n \"description\": \"Passport issued in 2020\",\n \"remarks\": \"Uploaded to support proof of business address\"\n }\n ],\n \"attestedOwnershipStructureAt\": \"<string>\",\n \"relationshipDate\": \"2020-01-15\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"middleName\": \"<string>\",\n \"nickname\": \"<string>\",\n \"dateOfBirth\": \"<string>\",\n \"taxResidenceCountry\": \"GB\",\n \"taxIdentificationNumber\": \"<string>\",\n \"taxIdentificationDocumentType\": \"UTR\",\n \"transliteratedFirstName\": \"<string>\",\n \"transliteratedMiddleName\": \"<string>\",\n \"transliteratedLastName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/customers/{customerId}/associated_individuals/{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 \"parentEntityId\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"hasOwnership\": true,\n \"hasControl\": true,\n \"ownershipPercentage\": 123,\n \"isSigner\": true,\n \"isDirector\": true,\n \"supportingDocuments\": [\n {\n \"file\": \"doc_abc123\",\n \"requirementId\": \"<string>\",\n \"type\": \"PROOF_OF_ADDRESS\",\n \"subtype\": \"UTILITY_BILL\",\n \"description\": \"Passport issued in 2020\",\n \"remarks\": \"Uploaded to support proof of business address\"\n }\n ],\n \"attestedOwnershipStructureAt\": \"<string>\",\n \"relationshipDate\": \"2020-01-15\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"middleName\": \"<string>\",\n \"nickname\": \"<string>\",\n \"dateOfBirth\": \"<string>\",\n \"taxResidenceCountry\": \"GB\",\n \"taxIdentificationNumber\": \"<string>\",\n \"taxIdentificationDocumentType\": \"UTR\",\n \"transliteratedFirstName\": \"<string>\",\n \"transliteratedMiddleName\": \"<string>\",\n \"transliteratedLastName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "asp_abc123",
"createdAt": "2026-01-15T10:30:00Z",
"updatedAt": "2026-01-15T10:30:00Z",
"entityType": "BUSINESS",
"hasOwnership": true,
"hasControl": true,
"parentEntityId": "asp_parent123",
"details": {
"firstName": "John",
"nickname": "Johnny",
"lastName": "Doe",
"middleName": "Michael",
"dateOfBirth": "1985-03-15",
"taxResidenceCountry": "GB",
"transliteratedFirstName": "<string>",
"transliteratedMiddleName": "<string>",
"transliteratedLastName": "<string>",
"taxIdentificationDocumentType": "UTR"
},
"countryCode": "US",
"email": "contact@acmeholdings.com",
"phone": "+14155551234",
"address": {
"addressLine1": "123 Main Street",
"city": "San Francisco",
"postalCode": "94102",
"country": "US",
"addressLine2": "Apt 4B",
"state": "CA",
"transliterated": {
"addressLine1": "123 Main Street",
"addressLine2": "Apt 4B",
"city": "Beijing",
"state": "Hebei"
}
},
"ownershipPercentage": 51,
"isSigner": false,
"isDirector": false,
"role": "CEO",
"title": "Managing Director",
"documents": [
"doc_abc123"
],
"attestedOwnershipStructureAt": "2026-01-15T10:30:00Z",
"displayName": "Acme Holdings LLC",
"verificationLink": {
"sessionId": "vsess_abc123",
"verificationUrl": "https://verify.infinite.dev/?sessionId=vsess_abc123",
"expiresAt": "2026-01-09T10:30:00Z",
"status": "ACTIVE"
}
}Authorizations
API Key in Bearer format (e.g., Bearer sk_test_...)
Headers
API key
Path Parameters
An ID that uniquely identifies a customer resource
"cus_1234567890abcdef"
An ID that uniquely identifies an associated entity resource
"asp_1234567890abcdef"
Body
Updated associated individual data
Parent entity ID for nested ownership. Must reference a BUSINESS associated entity on the same customer.
Country code (ISO 3166-1 alpha-2)
Email address
Phone number
Address. Use the nested transliterated field for Latin character versions of non-Latin addresses.
Show child attributes
Show child attributes
Whether this entity is an owner. For an individual with indirect ownership whose percentage is not quantified, omit ownershipPercentage and set this to true to identify them as a beneficial owner.
Has significant control (e.g. CEO, managing member). A control person satisfies the business submission requirement when no individual holds 25% or more effective ownership.
Ownership percentage
Has signing authority
Is a director
Structured role at the company.
CEO, CFO, COO, PRESIDENT, GENERAL_COUNSEL, MANAGING_MEMBER, TREASURER, OTHER Government ID
Show child attributes
Show child attributes
Proof of address document (for INDIVIDUAL). Required for recipients using the SWIFT overlay, not for the SWIFT transfer itself. Examples: utility bill, bank statement, lease agreement.
Show child attributes
Show child attributes
Additional supporting document references for this associated entity.
Show child attributes
Show child attributes
Timestamp when ownership structure was attested
Date when the relationship with this entity was established (YYYY-MM-DD)
"2020-01-15"
First name
Last name
Middle name
Nickname
Date of birth (YYYY-MM-DD)
Optional. Country of tax residence (ISO 3166-1 alpha-2). Provide only when it differs from nationality; tax ID format validation falls back to nationality when omitted.
"GB"
Tax identification number. Validated in the service against the stored nationality and residence, so partial updates that omit countries are still checked.
Tax identification document type when the issuing country supports multiple tax ID types.
"UTR"
Transliterated first name
Transliterated middle name
Transliterated last name
Response
Associated individual updated successfully
Unique identifier
"asp_abc123"
Created timestamp
"2026-01-15T10:30:00Z"
Last updated timestamp
"2026-01-15T10:30:00Z"
Type of entity
INDIVIDUAL, BUSINESS "BUSINESS"
Whether this entity is an owner. For an individual with indirect ownership whose percentage is not quantified, omit ownershipPercentage and set this to true to identify them as a beneficial owner.
true
Has significant control (e.g. CEO, managing member). A control person satisfies the business submission requirement when no individual holds 25% or more effective ownership.
true
Parent entity ID for nested ownership. Use the associated business entity ID returned from the associated entity endpoints when linking a child owner beneath an intermediate business owner.
"asp_parent123"
Type-specific details (individual or business)
- Option 1
- Option 2
Show child attributes
Show child attributes
Country code (ISO 3166-1 alpha-2)
"US"
Email address
"contact@acmeholdings.com"
Phone number
"+14155551234"
Address. Use the nested transliterated field for Latin character versions of non-Latin addresses.
Show child attributes
Show child attributes
Ownership percentage
51
Has signing authority
false
Is a director
false
Structured role at the company.
CEO, CFO, COO, PRESIDENT, GENERAL_COUNSEL, MANAGING_MEMBER, TREASURER, OTHER Custom title at the company.
"Managing Director"
Array of document IDs
["doc_abc123"]
Timestamp when ownership structure was attested
"2026-01-15T10:30:00Z"
Display name
"Acme Holdings LLC"
Verification link for UBO KYC. Present on create (when generateVerificationLink is true) and on single entity GET if there is an active/pending verification session.
Show child attributes
Show child attributes
Was this page helpful?