curl --request POST \
--url https://api.brale.xyz/accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"business_name": "ABC Company Inc",
"ein": "11-1111111",
"address": {
"street_line_1": "100 Example St",
"city": "Des Moines",
"state": "IA",
"zip": "50309",
"country": "US"
},
"phone_number": "5155550182",
"email": "[email protected]",
"website": "https://abc.example",
"beneficial_owners": [
{
"first_name": "Jane",
"last_name": "Doe",
"dob": "1980-05-12",
"ssn": "222-22-2222",
"email": "[email protected]",
"phone_number": "212-555-0182",
"address": {
"street_line_1": "100 Example St",
"city": "Des Moines",
"state": "IA",
"zip": "50309",
"country": "US"
}
}
],
"business_controller": {
"first_name": "Alicia",
"last_name": "Ng",
"dob": "1986-07-14",
"ssn": "123-45-6789",
"email": "[email protected]",
"phone_number": "+12125550182",
"address": {
"street_line_1": "200 Market St",
"city": "Des Moines",
"state": "IA",
"zip": "50310",
"country": "US"
}
},
"tos_attestation": {
"accepted_at": "2025-05-13T20:45:15Z",
"version": "2025-04-01",
"ip": "203.0.113.42",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 ..."
},
"name": "My Account"
}
'{
"id": "2VcUIIsgARwVbEGlIYbhg6fGG57"
}{
"type": "unsupported_account_combination",
"message": "The combination of entity_type, account_type, and verification_mode is not supported."
}{
"type": "unsupported_account_combination",
"message": "The combination of entity_type, account_type, and verification_mode is not supported."
}Create a customer account
Creates a new customer (account) with the required KYC/KYB details.
curl --request POST \
--url https://api.brale.xyz/accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"business_name": "ABC Company Inc",
"ein": "11-1111111",
"address": {
"street_line_1": "100 Example St",
"city": "Des Moines",
"state": "IA",
"zip": "50309",
"country": "US"
},
"phone_number": "5155550182",
"email": "[email protected]",
"website": "https://abc.example",
"beneficial_owners": [
{
"first_name": "Jane",
"last_name": "Doe",
"dob": "1980-05-12",
"ssn": "222-22-2222",
"email": "[email protected]",
"phone_number": "212-555-0182",
"address": {
"street_line_1": "100 Example St",
"city": "Des Moines",
"state": "IA",
"zip": "50309",
"country": "US"
}
}
],
"business_controller": {
"first_name": "Alicia",
"last_name": "Ng",
"dob": "1986-07-14",
"ssn": "123-45-6789",
"email": "[email protected]",
"phone_number": "+12125550182",
"address": {
"street_line_1": "200 Market St",
"city": "Des Moines",
"state": "IA",
"zip": "50310",
"country": "US"
}
},
"tos_attestation": {
"accepted_at": "2025-05-13T20:45:15Z",
"version": "2025-04-01",
"ip": "203.0.113.42",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 ..."
},
"name": "My Account"
}
'{
"id": "2VcUIIsgARwVbEGlIYbhg6fGG57"
}{
"type": "unsupported_account_combination",
"message": "The combination of entity_type, account_type, and verification_mode is not supported."
}{
"type": "unsupported_account_combination",
"message": "The combination of entity_type, account_type, and verification_mode is not supported."
}doc_submission_ids on this request or link them afterward. If Brale’s review later requires more documents, subscribe to account.verification.documents_required (see Webhook Events) or poll required documents — stage and link those documents the same way. When verification passes, Brale sends account.verification.completed and the account status becomes complete.Linking documents at creation
Include optionaldoc_submission_ids in the request body to link staged document submissions when the account is created. Each ID must come from a prior Stage a Verification Document call (POST /documents). Omit the field to create the account without documents and link them later.
| Field | Type | Required | Description |
|---|---|---|---|
doc_submission_ids | array of strings (KSUID) | No | Staged submission IDs to link and upload as part of account creation. |
doc_submission_ids is not supported for testnet-only clients or self-attested accounts. In those cases, omit the field or link documents after creation if supported for your account type.
For the full account creation payload (business details, controller, beneficial owners, TOS attestation), see Accounts. The example below is a US controller and owner; for parties outside the US, see Non-US controllers and beneficial owners. For the individual (KYC) path, see Accounts — Creating an individual account.
Choosing between a business and an individual account
POST /accounts accepts three optional dimension fields — entity_type, account_type, and verification_mode — that select the account shape. All eight combinations are supported: business or individual, custodial or transactional, standard or reliance. Reliance is enabled per managing account by Brale and is not self-serve; verification_mode: "bypass" is not supported for any combination. Omitting all three fields preserves the default business custodial behavior. See Account types for the full matrix and Account availability for the U.S. states and approved countries where each combination can be created.
Example request with documents (business)
{
"business_name": "Acme Corp",
"ein": "12-3456789",
"address": {
"street_line_1": "123 Main St",
"city": "Des Moines",
"state": "IA",
"zip": "50309"
},
"phone_number": "2134678902",
"email": "[email protected]",
"website": "https://acme.example.com",
"business_controller": {
"first_name": "John",
"last_name": "Doe",
"ssn": "222-22-2222",
"dob": "1981-01-25",
"email": "[email protected]",
"phone_number": "2154688987",
"ownership_percentage": "50",
"address": {
"street_line_1": "456 Elm St",
"city": "Chicago",
"state": "IL",
"zip": "60601"
}
},
"beneficial_owners": [],
"tos_attestation": {
"version": "2025-04-01",
"accepted_at": "2026-06-09T10:00:00Z"
},
"doc_submission_ids": [
"3Ar9BnQCKIrB3SYjKGBzCtFs6XL",
"3Ar9BnQCKIrB3SYjKGBzCtFs6XM"
]
}
Example response (201)
{
"id": "3Ar9BnQCKIrB3SYjKGBzCtFs6XL",
"name": "Acme Corp",
"status": "pending",
"created": "2026-06-09T10:00:00Z",
"updated": "2026-06-09T10:00:00Z"
}
status remains pending while Brale reviews the submission.
Example request (individual)
Create a KYC-verified individual account. Setaccount_type to transactional (shown below) or custodial — the request shape is identical for both. The individual object and tos_attestation are required. Business-only fields (business_name, ein, website, business_controller, beneficial_owners) must not be sent on this path; they are rejected with 400 unexpected_business_fields.
{
"entity_type": "individual",
"account_type": "transactional",
"verification_mode": "standard",
"individual": {
"first_name": "Jane",
"last_name": "Doe",
"date_of_birth": "1990-01-01",
"email": "[email protected]",
"phone_number": "2125550182",
"country": "US",
"address": {
"street_line_1": "123 Main St",
"street_line_2": "Apt 4",
"city": "Des Moines",
"state": "IA",
"zip": "50309"
},
"identity": {
"number": "222-22-2222",
"type": "SSN9"
}
},
"tos_attestation": {
"version": "2025-04-01",
"accepted_at": "2026-05-13T20:45:15Z",
"ip": "203.0.113.42",
"user_agent": "Mozilla/5.0 ..."
}
}
Example response, individual (201)
{
"id": "3Ar9BnQCKIrB3SYjKGBzCtFs6XL",
"name": "Jane Doe",
"status": "pending",
"created": "2026-05-13T20:45:16Z",
"updated": "2026-05-13T20:45:16Z"
}
name is derived from the individual’s first and last name. status transitions to complete when KYC succeeds and account.verification.completed fires. See Individual accounts for the end-to-end workflow, including the receive-only constraints on transactional accounts.
Required scope
accounts:writeAuthorizations
Use the Bearer token returned from the Auth endpoint via OAuth2 client_credentials flow. Include the token in the "Authorization: Bearer " header.
Headers
A unique string used to prevent duplicate operations. Each POST request must use a new idempotency key. Use a UUIDv4 string. Example: idemp-123e4567-e89b-12d3-a456-426614174000
Body
- CreateManagedAccountRequest
- CreateIndividualAccountRequest
Business (KYB) account creation payload. This is the default path when entity_type is omitted, or when it is explicitly set to business. account_type selects between a custodial account (the default) and a non-custodial transactional account.
"My Customer"
"123456789"
Show child attributes
Show child attributes
A business controller or beneficial owner. Identity is supplied one of two ways, and exactly one of them is required: ssn for a US party, which is what every request written before non-US parties were supported already sends, or identity (number and type) otherwise.
ssn is only accepted when the party's country is the US, since an SSN has no meaning elsewhere. A US party may also use identity when the document is something other than an SSN.
Show child attributes
Show child attributes
"515-555-1212"
Show child attributes
Show child attributes
"https://example.com"
Optional discriminator. When omitted, defaults to business.
business "business"
Optional. When omitted, defaults to custodial for business accounts. custodial accounts receive Brale-managed internal wallets and can hold balances. transactional accounts are non-custodial: they receive no internal wallets, hold no balances at Brale, and register external destination-only addresses.
custodial, transactional "custodial"
Optional. When omitted, defaults to standard. reliance is enabled per managing account by Brale and is not self-serve; a caller without it enabled receives 422 unsupported_account_combination.
standard, reliance "standard"
Show child attributes
Show child attributes
Deprecated alias of beneficial_owners.
Show child attributes
Show child attributes
"My Account"
Optional pre-staged verification document submission IDs to link on creation.
^[a-zA-Z0-9]{26}$Response
Account successfully created
^[a-zA-Z0-9]{26}$"2VcUIIsgARwVbEGlIYbhg6fGG57"
Was this page helpful?