# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
infinite customers update cus_abc123 --body '{"email":"new@example.com"}'Update customer details (cus_abc123).
# To declare onboarding capabilities, use MCP tool request_capabilities (then get_required_documents / upload_document).import requests
url = "https://sandbox.api.infinite.dev/v1/customers/{id}"
payload = {
"email": "jsmith@example.com",
"requestedCapabilities": [],
"customerDetails": {
"firstName": "John",
"lastName": "Smith",
"middleName": "Michael",
"transliteratedFirstName": "Li Ming",
"transliteratedMiddleName": "Wen",
"transliteratedLastName": "Wang",
"dateOfBirth": "1990-01-15",
"nationality": "US",
"taxResidenceCountry": "GB",
"phone": "+14155551234",
"occupation": "151252",
"sourceOfIncome": "SALARY",
"sourceOfFundsDescription": "<string>"
},
"addresses": [
{
"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"
},
"label": "HOME",
"isDefault": True
}
],
"preferences": {
"communicationPreferences": {
"email": True,
"sms": True,
"phone": True
},
"language": "en",
"timezone": "America/New_York",
"currency": "USD",
"notifications": {
"invoices": True,
"payments": True,
"statements": True
}
}
}
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({
email: 'jsmith@example.com',
requestedCapabilities: [],
customerDetails: {
firstName: 'John',
lastName: 'Smith',
middleName: 'Michael',
transliteratedFirstName: 'Li Ming',
transliteratedMiddleName: 'Wen',
transliteratedLastName: 'Wang',
dateOfBirth: '1990-01-15',
nationality: 'US',
taxResidenceCountry: 'GB',
phone: '+14155551234',
occupation: '151252',
sourceOfIncome: 'SALARY',
sourceOfFundsDescription: '<string>'
},
addresses: [
{
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'
},
label: 'HOME',
isDefault: true
}
],
preferences: {
communicationPreferences: {email: true, sms: true, phone: true},
language: 'en',
timezone: 'America/New_York',
currency: 'USD',
notifications: {invoices: true, payments: true, statements: true}
}
})
};
fetch('https://sandbox.api.infinite.dev/v1/customers/{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/{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([
'email' => 'jsmith@example.com',
'requestedCapabilities' => [
],
'customerDetails' => [
'firstName' => 'John',
'lastName' => 'Smith',
'middleName' => 'Michael',
'transliteratedFirstName' => 'Li Ming',
'transliteratedMiddleName' => 'Wen',
'transliteratedLastName' => 'Wang',
'dateOfBirth' => '1990-01-15',
'nationality' => 'US',
'taxResidenceCountry' => 'GB',
'phone' => '+14155551234',
'occupation' => '151252',
'sourceOfIncome' => 'SALARY',
'sourceOfFundsDescription' => '<string>'
],
'addresses' => [
[
'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'
],
'label' => 'HOME',
'isDefault' => true
]
],
'preferences' => [
'communicationPreferences' => [
'email' => true,
'sms' => true,
'phone' => true
],
'language' => 'en',
'timezone' => 'America/New_York',
'currency' => 'USD',
'notifications' => [
'invoices' => true,
'payments' => true,
'statements' => true
]
]
]),
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/{id}"
payload := strings.NewReader("{\n \"email\": \"jsmith@example.com\",\n \"requestedCapabilities\": [],\n \"customerDetails\": {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"middleName\": \"Michael\",\n \"transliteratedFirstName\": \"Li Ming\",\n \"transliteratedMiddleName\": \"Wen\",\n \"transliteratedLastName\": \"Wang\",\n \"dateOfBirth\": \"1990-01-15\",\n \"nationality\": \"US\",\n \"taxResidenceCountry\": \"GB\",\n \"phone\": \"+14155551234\",\n \"occupation\": \"151252\",\n \"sourceOfIncome\": \"SALARY\",\n \"sourceOfFundsDescription\": \"<string>\"\n },\n \"addresses\": [\n {\n \"addressLine1\": \"123 Main Street\",\n \"city\": \"San Francisco\",\n \"postalCode\": \"94102\",\n \"country\": \"US\",\n \"addressLine2\": \"Apt 4B\",\n \"state\": \"CA\",\n \"transliterated\": {\n \"addressLine1\": \"123 Main Street\",\n \"addressLine2\": \"Apt 4B\",\n \"city\": \"Beijing\",\n \"state\": \"Hebei\"\n },\n \"label\": \"HOME\",\n \"isDefault\": true\n }\n ],\n \"preferences\": {\n \"communicationPreferences\": {\n \"email\": true,\n \"sms\": true,\n \"phone\": true\n },\n \"language\": \"en\",\n \"timezone\": \"America/New_York\",\n \"currency\": \"USD\",\n \"notifications\": {\n \"invoices\": true,\n \"payments\": true,\n \"statements\": true\n }\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://sandbox.api.infinite.dev/v1/customers/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jsmith@example.com\",\n \"requestedCapabilities\": [],\n \"customerDetails\": {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"middleName\": \"Michael\",\n \"transliteratedFirstName\": \"Li Ming\",\n \"transliteratedMiddleName\": \"Wen\",\n \"transliteratedLastName\": \"Wang\",\n \"dateOfBirth\": \"1990-01-15\",\n \"nationality\": \"US\",\n \"taxResidenceCountry\": \"GB\",\n \"phone\": \"+14155551234\",\n \"occupation\": \"151252\",\n \"sourceOfIncome\": \"SALARY\",\n \"sourceOfFundsDescription\": \"<string>\"\n },\n \"addresses\": [\n {\n \"addressLine1\": \"123 Main Street\",\n \"city\": \"San Francisco\",\n \"postalCode\": \"94102\",\n \"country\": \"US\",\n \"addressLine2\": \"Apt 4B\",\n \"state\": \"CA\",\n \"transliterated\": {\n \"addressLine1\": \"123 Main Street\",\n \"addressLine2\": \"Apt 4B\",\n \"city\": \"Beijing\",\n \"state\": \"Hebei\"\n },\n \"label\": \"HOME\",\n \"isDefault\": true\n }\n ],\n \"preferences\": {\n \"communicationPreferences\": {\n \"email\": true,\n \"sms\": true,\n \"phone\": true\n },\n \"language\": \"en\",\n \"timezone\": \"America/New_York\",\n \"currency\": \"USD\",\n \"notifications\": {\n \"invoices\": true,\n \"payments\": true,\n \"statements\": true\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/customers/{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 \"email\": \"jsmith@example.com\",\n \"requestedCapabilities\": [],\n \"customerDetails\": {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"middleName\": \"Michael\",\n \"transliteratedFirstName\": \"Li Ming\",\n \"transliteratedMiddleName\": \"Wen\",\n \"transliteratedLastName\": \"Wang\",\n \"dateOfBirth\": \"1990-01-15\",\n \"nationality\": \"US\",\n \"taxResidenceCountry\": \"GB\",\n \"phone\": \"+14155551234\",\n \"occupation\": \"151252\",\n \"sourceOfIncome\": \"SALARY\",\n \"sourceOfFundsDescription\": \"<string>\"\n },\n \"addresses\": [\n {\n \"addressLine1\": \"123 Main Street\",\n \"city\": \"San Francisco\",\n \"postalCode\": \"94102\",\n \"country\": \"US\",\n \"addressLine2\": \"Apt 4B\",\n \"state\": \"CA\",\n \"transliterated\": {\n \"addressLine1\": \"123 Main Street\",\n \"addressLine2\": \"Apt 4B\",\n \"city\": \"Beijing\",\n \"state\": \"Hebei\"\n },\n \"label\": \"HOME\",\n \"isDefault\": true\n }\n ],\n \"preferences\": {\n \"communicationPreferences\": {\n \"email\": true,\n \"sms\": true,\n \"phone\": true\n },\n \"language\": \"en\",\n \"timezone\": \"America/New_York\",\n \"currency\": \"USD\",\n \"notifications\": {\n \"invoices\": true,\n \"payments\": true,\n \"statements\": true\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"customerName": "<string>",
"organizationId": "<string>",
"type": "INDIVIDUAL",
"status": "DRAFT",
"createdAt": "2026-01-15T10:00:00Z",
"updatedAt": "2026-01-15T10:00:00Z",
"email": "<string>",
"countryCode": "AD",
"imageUrl": "<string>",
"requestedCapabilities": [
"USD_ACH_PAYIN"
],
"capabilities": [
{
"capability": "USD_WIRE_PAYIN",
"status": "READY"
}
],
"customerDetails": {
"firstName": "John",
"lastName": "Smith",
"middleName": "Michael",
"transliteratedFirstName": "Li Ming",
"transliteratedMiddleName": "Wen",
"transliteratedLastName": "Wang",
"dateOfBirth": "1990-01-15",
"nationality": "US",
"taxResidenceCountry": "GB",
"phone": "+14155551234",
"occupation": "151252",
"employmentStatus": "EMPLOYED",
"sourceOfIncome": "SALARY",
"sourceOfFundsDescription": "<string>"
},
"associatedEntities": [
{
"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"
}
}
],
"addresses": [
{
"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"
},
"label": "HOME",
"isDefault": true
}
],
"missingRequirements": [
{
"requirementType": "FIELD",
"key": "businessData.taxIdentificationNumber",
"displayName": "Tax Identification Number"
},
{
"requirementType": "DOCUMENT",
"key": "ownership.ownership_structure",
"displayName": "Ownership Information"
}
],
"accounts": [
"<array>"
],
"documents": [
{
"id": "doc_abc123",
"organizationId": "org_xyz789",
"customerId": "cus_abc123",
"documentType": "INVOICE",
"fileName": "invoice-2026-001.pdf",
"contentType": "application/pdf",
"sizeBytes": 1024000,
"status": "UPLOADED",
"createdAt": "2023-11-07T05:31:56Z",
"transferId": "txn_xyz789",
"documentSubtype": "BANK_STATEMENT",
"remarks": "<string>",
"fileHash": "<string>",
"downloadUrl": "<string>",
"uploadedAt": "2023-11-07T05:31:56Z",
"associatedEntityId": "<string>"
}
],
"treasury": {
"customerId": "cus_abc123",
"treasuries": [
{
"id": "trs_abc123",
"balances": {},
"fundingMethods": [
{
"id": "vba_abc123",
"type": "BANK_ACCOUNT",
"provider": "INFINITE",
"currency": "USD",
"currencyCodes": [
"USDC"
],
"rail": "ACH",
"rails": [
"ACH",
"WIRE"
],
"bankName": "Infinite Bank",
"beneficiaryName": "Acme Treasury",
"accountNumber": "1234567890",
"routingNumber": "021000021",
"iban": "GB82WEST12345698765432",
"swiftBic": "CHASUS33",
"address": "0x1234567890abcdef1234567890abcdef12345678",
"addressType": "EVM",
"chains": [
"ETHEREUM",
"BASE"
]
}
],
"wallets": [
{
"accountId": "inw_abc123",
"address": "0x1234567890abcdef1234567890abcdef12345678",
"addressType": "EVM",
"balances": [
{
"currency": "USDC",
"balance": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"chain": "ETHEREUM"
}
]
}
],
"name": "Main Treasury",
"provider": "INFINITE"
}
]
},
"verificationSessions": [
{
"id": "vs_abc123",
"status": "COMPLETED",
"createdAt": "2026-01-15T10:30:00Z",
"completedAt": "2026-01-15T11:00:00Z",
"progressPercentage": 100
}
]
}Update customer details
# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
infinite customers update cus_abc123 --body '{"email":"new@example.com"}'Update customer details (cus_abc123).
# To declare onboarding capabilities, use MCP tool request_capabilities (then get_required_documents / upload_document).import requests
url = "https://sandbox.api.infinite.dev/v1/customers/{id}"
payload = {
"email": "jsmith@example.com",
"requestedCapabilities": [],
"customerDetails": {
"firstName": "John",
"lastName": "Smith",
"middleName": "Michael",
"transliteratedFirstName": "Li Ming",
"transliteratedMiddleName": "Wen",
"transliteratedLastName": "Wang",
"dateOfBirth": "1990-01-15",
"nationality": "US",
"taxResidenceCountry": "GB",
"phone": "+14155551234",
"occupation": "151252",
"sourceOfIncome": "SALARY",
"sourceOfFundsDescription": "<string>"
},
"addresses": [
{
"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"
},
"label": "HOME",
"isDefault": True
}
],
"preferences": {
"communicationPreferences": {
"email": True,
"sms": True,
"phone": True
},
"language": "en",
"timezone": "America/New_York",
"currency": "USD",
"notifications": {
"invoices": True,
"payments": True,
"statements": True
}
}
}
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({
email: 'jsmith@example.com',
requestedCapabilities: [],
customerDetails: {
firstName: 'John',
lastName: 'Smith',
middleName: 'Michael',
transliteratedFirstName: 'Li Ming',
transliteratedMiddleName: 'Wen',
transliteratedLastName: 'Wang',
dateOfBirth: '1990-01-15',
nationality: 'US',
taxResidenceCountry: 'GB',
phone: '+14155551234',
occupation: '151252',
sourceOfIncome: 'SALARY',
sourceOfFundsDescription: '<string>'
},
addresses: [
{
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'
},
label: 'HOME',
isDefault: true
}
],
preferences: {
communicationPreferences: {email: true, sms: true, phone: true},
language: 'en',
timezone: 'America/New_York',
currency: 'USD',
notifications: {invoices: true, payments: true, statements: true}
}
})
};
fetch('https://sandbox.api.infinite.dev/v1/customers/{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/{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([
'email' => 'jsmith@example.com',
'requestedCapabilities' => [
],
'customerDetails' => [
'firstName' => 'John',
'lastName' => 'Smith',
'middleName' => 'Michael',
'transliteratedFirstName' => 'Li Ming',
'transliteratedMiddleName' => 'Wen',
'transliteratedLastName' => 'Wang',
'dateOfBirth' => '1990-01-15',
'nationality' => 'US',
'taxResidenceCountry' => 'GB',
'phone' => '+14155551234',
'occupation' => '151252',
'sourceOfIncome' => 'SALARY',
'sourceOfFundsDescription' => '<string>'
],
'addresses' => [
[
'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'
],
'label' => 'HOME',
'isDefault' => true
]
],
'preferences' => [
'communicationPreferences' => [
'email' => true,
'sms' => true,
'phone' => true
],
'language' => 'en',
'timezone' => 'America/New_York',
'currency' => 'USD',
'notifications' => [
'invoices' => true,
'payments' => true,
'statements' => true
]
]
]),
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/{id}"
payload := strings.NewReader("{\n \"email\": \"jsmith@example.com\",\n \"requestedCapabilities\": [],\n \"customerDetails\": {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"middleName\": \"Michael\",\n \"transliteratedFirstName\": \"Li Ming\",\n \"transliteratedMiddleName\": \"Wen\",\n \"transliteratedLastName\": \"Wang\",\n \"dateOfBirth\": \"1990-01-15\",\n \"nationality\": \"US\",\n \"taxResidenceCountry\": \"GB\",\n \"phone\": \"+14155551234\",\n \"occupation\": \"151252\",\n \"sourceOfIncome\": \"SALARY\",\n \"sourceOfFundsDescription\": \"<string>\"\n },\n \"addresses\": [\n {\n \"addressLine1\": \"123 Main Street\",\n \"city\": \"San Francisco\",\n \"postalCode\": \"94102\",\n \"country\": \"US\",\n \"addressLine2\": \"Apt 4B\",\n \"state\": \"CA\",\n \"transliterated\": {\n \"addressLine1\": \"123 Main Street\",\n \"addressLine2\": \"Apt 4B\",\n \"city\": \"Beijing\",\n \"state\": \"Hebei\"\n },\n \"label\": \"HOME\",\n \"isDefault\": true\n }\n ],\n \"preferences\": {\n \"communicationPreferences\": {\n \"email\": true,\n \"sms\": true,\n \"phone\": true\n },\n \"language\": \"en\",\n \"timezone\": \"America/New_York\",\n \"currency\": \"USD\",\n \"notifications\": {\n \"invoices\": true,\n \"payments\": true,\n \"statements\": true\n }\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://sandbox.api.infinite.dev/v1/customers/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jsmith@example.com\",\n \"requestedCapabilities\": [],\n \"customerDetails\": {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"middleName\": \"Michael\",\n \"transliteratedFirstName\": \"Li Ming\",\n \"transliteratedMiddleName\": \"Wen\",\n \"transliteratedLastName\": \"Wang\",\n \"dateOfBirth\": \"1990-01-15\",\n \"nationality\": \"US\",\n \"taxResidenceCountry\": \"GB\",\n \"phone\": \"+14155551234\",\n \"occupation\": \"151252\",\n \"sourceOfIncome\": \"SALARY\",\n \"sourceOfFundsDescription\": \"<string>\"\n },\n \"addresses\": [\n {\n \"addressLine1\": \"123 Main Street\",\n \"city\": \"San Francisco\",\n \"postalCode\": \"94102\",\n \"country\": \"US\",\n \"addressLine2\": \"Apt 4B\",\n \"state\": \"CA\",\n \"transliterated\": {\n \"addressLine1\": \"123 Main Street\",\n \"addressLine2\": \"Apt 4B\",\n \"city\": \"Beijing\",\n \"state\": \"Hebei\"\n },\n \"label\": \"HOME\",\n \"isDefault\": true\n }\n ],\n \"preferences\": {\n \"communicationPreferences\": {\n \"email\": true,\n \"sms\": true,\n \"phone\": true\n },\n \"language\": \"en\",\n \"timezone\": \"America/New_York\",\n \"currency\": \"USD\",\n \"notifications\": {\n \"invoices\": true,\n \"payments\": true,\n \"statements\": true\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/customers/{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 \"email\": \"jsmith@example.com\",\n \"requestedCapabilities\": [],\n \"customerDetails\": {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"middleName\": \"Michael\",\n \"transliteratedFirstName\": \"Li Ming\",\n \"transliteratedMiddleName\": \"Wen\",\n \"transliteratedLastName\": \"Wang\",\n \"dateOfBirth\": \"1990-01-15\",\n \"nationality\": \"US\",\n \"taxResidenceCountry\": \"GB\",\n \"phone\": \"+14155551234\",\n \"occupation\": \"151252\",\n \"sourceOfIncome\": \"SALARY\",\n \"sourceOfFundsDescription\": \"<string>\"\n },\n \"addresses\": [\n {\n \"addressLine1\": \"123 Main Street\",\n \"city\": \"San Francisco\",\n \"postalCode\": \"94102\",\n \"country\": \"US\",\n \"addressLine2\": \"Apt 4B\",\n \"state\": \"CA\",\n \"transliterated\": {\n \"addressLine1\": \"123 Main Street\",\n \"addressLine2\": \"Apt 4B\",\n \"city\": \"Beijing\",\n \"state\": \"Hebei\"\n },\n \"label\": \"HOME\",\n \"isDefault\": true\n }\n ],\n \"preferences\": {\n \"communicationPreferences\": {\n \"email\": true,\n \"sms\": true,\n \"phone\": true\n },\n \"language\": \"en\",\n \"timezone\": \"America/New_York\",\n \"currency\": \"USD\",\n \"notifications\": {\n \"invoices\": true,\n \"payments\": true,\n \"statements\": true\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"customerName": "<string>",
"organizationId": "<string>",
"type": "INDIVIDUAL",
"status": "DRAFT",
"createdAt": "2026-01-15T10:00:00Z",
"updatedAt": "2026-01-15T10:00:00Z",
"email": "<string>",
"countryCode": "AD",
"imageUrl": "<string>",
"requestedCapabilities": [
"USD_ACH_PAYIN"
],
"capabilities": [
{
"capability": "USD_WIRE_PAYIN",
"status": "READY"
}
],
"customerDetails": {
"firstName": "John",
"lastName": "Smith",
"middleName": "Michael",
"transliteratedFirstName": "Li Ming",
"transliteratedMiddleName": "Wen",
"transliteratedLastName": "Wang",
"dateOfBirth": "1990-01-15",
"nationality": "US",
"taxResidenceCountry": "GB",
"phone": "+14155551234",
"occupation": "151252",
"employmentStatus": "EMPLOYED",
"sourceOfIncome": "SALARY",
"sourceOfFundsDescription": "<string>"
},
"associatedEntities": [
{
"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"
}
}
],
"addresses": [
{
"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"
},
"label": "HOME",
"isDefault": true
}
],
"missingRequirements": [
{
"requirementType": "FIELD",
"key": "businessData.taxIdentificationNumber",
"displayName": "Tax Identification Number"
},
{
"requirementType": "DOCUMENT",
"key": "ownership.ownership_structure",
"displayName": "Ownership Information"
}
],
"accounts": [
"<array>"
],
"documents": [
{
"id": "doc_abc123",
"organizationId": "org_xyz789",
"customerId": "cus_abc123",
"documentType": "INVOICE",
"fileName": "invoice-2026-001.pdf",
"contentType": "application/pdf",
"sizeBytes": 1024000,
"status": "UPLOADED",
"createdAt": "2023-11-07T05:31:56Z",
"transferId": "txn_xyz789",
"documentSubtype": "BANK_STATEMENT",
"remarks": "<string>",
"fileHash": "<string>",
"downloadUrl": "<string>",
"uploadedAt": "2023-11-07T05:31:56Z",
"associatedEntityId": "<string>"
}
],
"treasury": {
"customerId": "cus_abc123",
"treasuries": [
{
"id": "trs_abc123",
"balances": {},
"fundingMethods": [
{
"id": "vba_abc123",
"type": "BANK_ACCOUNT",
"provider": "INFINITE",
"currency": "USD",
"currencyCodes": [
"USDC"
],
"rail": "ACH",
"rails": [
"ACH",
"WIRE"
],
"bankName": "Infinite Bank",
"beneficiaryName": "Acme Treasury",
"accountNumber": "1234567890",
"routingNumber": "021000021",
"iban": "GB82WEST12345698765432",
"swiftBic": "CHASUS33",
"address": "0x1234567890abcdef1234567890abcdef12345678",
"addressType": "EVM",
"chains": [
"ETHEREUM",
"BASE"
]
}
],
"wallets": [
{
"accountId": "inw_abc123",
"address": "0x1234567890abcdef1234567890abcdef12345678",
"addressType": "EVM",
"balances": [
{
"currency": "USDC",
"balance": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"chain": "ETHEREUM"
}
]
}
],
"name": "Main Treasury",
"provider": "INFINITE"
}
]
},
"verificationSessions": [
{
"id": "vs_abc123",
"status": "COMPLETED",
"createdAt": "2026-01-15T10:30:00Z",
"completedAt": "2026-01-15T11:00:00Z",
"progressPercentage": 100
}
]
}Authorizations
API Key in Bearer format (e.g., Bearer sk_test_...)
Headers
API key
Path Parameters
Body
Customer email address
Country code (ISO 3166-2)
AD, AE, AF, AG, AI, AL, AM, AO, AR, AS, AT, AU, AW, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BL, BM, BN, BO, BR, BS, BT, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CW, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, EU, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GH, GI, GL, GM, GN, GP, GQ, GR, GS, GT, GU, GW, GY, HK, HN, HR, HT, HU, ID, IE, IL, IM, IN, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MF, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM, PN, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, SS, ST, SV, SY, SZ, TC, TD, TG, TH, TJ, TK, TL, TM, TN, TO, TR, TT, TV, TW, TZ, UA, UG, UM, US, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, YE, YT, ZA, ZM, ZW Capabilities requested by the customer
USD_ACH_PAYIN, USD_ACH_PAYOUT, USD_WIRE_PAYIN, USD_WIRE_PAYOUT, USD_BALANCE, USD_YIELD, SWIFT_PAYIN, SWIFT_PAYOUT, STABLECOIN_PAYIN, STABLECOIN_PAYOUT, STABLECOIN_SWAPS, AED_FX_PAYOUT, AUD_FX_PAYOUT, BHD_FX_PAYOUT, BOB_FX_PAYOUT, BRL_FX_PAYOUT, CLP_FX_PAYOUT, CNY_FX_PAYOUT, COP_FX_PAYOUT, DOP_FX_PAYOUT, EGP_FX_PAYOUT, EUR_FX_PAYOUT, GBP_FX_PAYOUT, HKD_FX_PAYOUT, IDR_FX_PAYOUT, INR_FX_PAYOUT, JPY_FX_PAYOUT, KRW_FX_PAYOUT, KWD_FX_PAYOUT, MXN_FX_PAYOUT, MYR_FX_PAYOUT, PEN_FX_PAYOUT, PHP_FX_PAYOUT, PYG_FX_PAYOUT, QAR_FX_PAYOUT, SAR_FX_PAYOUT, SGD_FX_PAYOUT, THB_FX_PAYOUT, TRY_FX_PAYOUT, TWD_FX_PAYOUT, USD_FX_PAYOUT, VND_FX_PAYOUT Customer details with transliteration support.
For INDIVIDUAL customers:
- firstName, lastName, middleName
- transliteratedFirstName, transliteratedMiddleName, transliteratedLastName
- dateOfBirth, phone, occupation, sourceOfIncome
For BUSINESS customers:
- businessName, tradeName, businessType, taxIdentificationNumber
- website, industry, email, phone
Verification and EDD-specific fields are submitted separately through the verification endpoints.
- Option 1
- Option 2
Show child attributes
Show child attributes
Customer addresses.
Each address must include addressLine1, city, postalCode, and country.
Show child attributes
Show child attributes
Customer preferences and settings
Show child attributes
Show child attributes
Response
Customer updated successfully
Customer ID
Customer name
Organization ID
Customer type
INDIVIDUAL, BUSINESS Customer status
DRAFT, IN_REVIEW, NEED_ACTIONS, REJECTED, ACTIVE, INACTIVE, SUSPENDED Customer creation date
"2026-01-15T10:00:00Z"
Customer last update date
"2026-01-15T10:00:00Z"
Customer email address
Country code (ISO 3166-2)
AD, AE, AF, AG, AI, AL, AM, AO, AR, AS, AT, AU, AW, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BL, BM, BN, BO, BR, BS, BT, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CW, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, EU, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GH, GI, GL, GM, GN, GP, GQ, GR, GS, GT, GU, GW, GY, HK, HN, HR, HT, HU, ID, IE, IL, IM, IN, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MF, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM, PN, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, SS, ST, SV, SY, SZ, TC, TD, TG, TH, TJ, TK, TL, TM, TN, TO, TR, TT, TV, TW, TZ, UA, UG, UM, US, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, YE, YT, ZA, ZM, ZW Customer image URL
Capabilities requested by the customer
USD_ACH_PAYIN, USD_ACH_PAYOUT, USD_WIRE_PAYIN, USD_WIRE_PAYOUT, USD_BALANCE, USD_YIELD, SWIFT_PAYIN, SWIFT_PAYOUT, STABLECOIN_PAYIN, STABLECOIN_PAYOUT, STABLECOIN_SWAPS, AED_FX_PAYOUT, AUD_FX_PAYOUT, BHD_FX_PAYOUT, BOB_FX_PAYOUT, BRL_FX_PAYOUT, CLP_FX_PAYOUT, CNY_FX_PAYOUT, COP_FX_PAYOUT, DOP_FX_PAYOUT, EGP_FX_PAYOUT, EUR_FX_PAYOUT, GBP_FX_PAYOUT, HKD_FX_PAYOUT, IDR_FX_PAYOUT, INR_FX_PAYOUT, JPY_FX_PAYOUT, KRW_FX_PAYOUT, KWD_FX_PAYOUT, MXN_FX_PAYOUT, MYR_FX_PAYOUT, PEN_FX_PAYOUT, PHP_FX_PAYOUT, PYG_FX_PAYOUT, QAR_FX_PAYOUT, SAR_FX_PAYOUT, SGD_FX_PAYOUT, THB_FX_PAYOUT, TRY_FX_PAYOUT, TWD_FX_PAYOUT, USD_FX_PAYOUT, VND_FX_PAYOUT Computed capability statuses. Included on list responses. READY only when the customer is ACTIVE.
Show child attributes
Show child attributes
Customer details with transliteration support.
For INDIVIDUAL customers:
- firstName, lastName, middleName
- transliteratedFirstName, transliteratedMiddleName, transliteratedLastName
- dateOfBirth, phone, occupation, sourceOfIncome
For BUSINESS customers:
- businessName, tradeName, businessType, taxIdentificationNumber
- website, industry, email, phone
Verification and EDD-specific fields are submitted separately through the verification endpoints.
- Option 1
- Option 2
Show child attributes
Show child attributes
Associated entities (beneficial owners and control persons) for business customers.
Show child attributes
Show child attributes
Customer addresses.
Each address must include addressLine1, city, postalCode, and country.
Show child attributes
Show child attributes
Merged list of missing fields and documents required for full verification. Only populated when customer data is incomplete.
Show child attributes
Show child attributes
[
{
"requirementType": "FIELD",
"key": "businessData.taxIdentificationNumber",
"displayName": "Tax Identification Number"
},
{
"requirementType": "DOCUMENT",
"key": "ownership.ownership_structure",
"displayName": "Ownership Information"
}
]
Customer accounts (only included when expand=accounts). Returns all accounts for this customer.
Customer documents (only included when expand=documents). Returns all documents for this customer.
Show child attributes
Show child attributes
Treasury balances (only included when expand=treasury). Returns treasury wallet balances grouped by treasury.
Show child attributes
Show child attributes
Verification sessions (only included when expand=verificationSessions). Returns verification session summaries.
Show child attributes
Show child attributes
Was this page helpful?