Skip to main content
Individual accounts register a natural person as a Brale account, verified with KYC. They come in two shapes, selected by account_type:
  • Custodial — the account receives Brale-custodied wallets and can hold stablecoin balances at Brale. U.S.-only, with a narrower state list than business custodial accounts.
  • Transactional — the account is non-custodial: it receives no custodial wallets, cannot create custodial addresses, and is shaped for inbound value. Use it when your end user needs to receive stablecoins on-chain or be the destination of an on-ramp, but should not hold a Brale-custodied wallet.
The request shape is identical for both; only account_type changes. For the dimension fields and how individual accounts relate to business accounts, see Account types. For the U.S. states where individual custodial accounts can be created, and the U.S. states and approved countries for individual transactional accounts, see Account availability. Eligibility is based on the individual’s principal residential address.

What it does

  • Registers a natural person as a Brale account (entity_type: individual, with account_type: custodial or account_type: transactional).
  • Runs KYC identity verification on the individual.
  • Emits the same account.verification.* webhook events as business KYB.
  • Custodial: provisions Brale-custodied (type=internal) wallets the account can hold balances in.
  • Transactional: lets you register external on-chain destination addresses so the account can receive value.

Who it’s for

Use cases include:
  • End users of a wallet or fintech app who hold stablecoin balances in Brale-custodied wallets (custodial).
  • Payout recipients who need to receive stablecoins on-chain but do not hold balances at Brale (transactional).
  • End users of a wallet or fintech app who receive on-ramps to their own self-custody wallet (transactional).
  • Any natural person your platform needs to identify and pay, without provisioning custody (transactional).

Choosing custodial or transactional

Set account_type: "custodial" to create an individual custodial account. Everything else in the request is the same as the transactional path below: the individual object and tos_attestation are required, and business-only fields are rejected. A custodial individual account receives Brale-custodied wallets on supported chains, like a business custodial account. Individual custodial accounts are U.S.-only and are available in 44 states and territories — a narrower list than business custodial. See Account availability for the state table. A request from an unsupported jurisdiction returns 422 unsupported_jurisdiction.

What a transactional account cannot do

A transactional account is inbound by design. It does not get a Brale-custodied wallet and cannot originate on-chain transfers.
  • No Brale-custodied wallets, ever. A transactional account has no automatic custodial wallet at creation and cannot hold internal (type=internal) addresses. This is enforced.
  • External addresses are destination-only. An external address on a transactional account can receive value but cannot be the source of a transfer.
  • The account cannot originate an on-chain transfer. An attempt returns 422 with type compatible_address_not_found. Checking the address balance first does not predict this, because the constraint is about the address role, not funds.
  • Automations from a transactional account may only target external destinations. A Brale-custodied destination is rejected.

How it works

The workflow below shows the transactional flow. For a custodial account, set account_type: custodial in step 1; on approval the account receives Brale-custodied wallets automatically, and steps 3–5 do not apply — work with its internal addresses instead, as described in Custodial Accounts.
  1. Create the account.
    Call POST /accounts with entity_type: individual, account_type: transactional, an individual object, and a tos_attestation. Business-only fields (business_name, ein, website, business_controller, beneficial_owners) must not be sent. See Accounts — Creating an individual account for the full payload and field reference.
    Request
    201 Response
    The created account’s name is derived from the individual’s first and last name. Non-US individuals in approved countries are supported; see Account availability for the country list. individual.address.state is optional and free-form, and the postal code accepts any format; send the identity document type that matches the individual’s country. See Identity types for the accepted values and Creating a non-US individual account for an example.
  2. Wait for verification.
    Brale runs identity verification asynchronously. On approval the account is enabled, status becomes complete, and account.verification.completed fires. This is typically fast — on the order of seconds. If more documents are needed, account.verification.documents_required fires with the required documents; stage and link them exactly as documented for business accounts. Polling is also supported.
  3. Add an external destination address.
    Register the on-chain wallet that will receive value with POST /accounts/{account_id}/addresses/external. External addresses on a transactional account are destination-only.
    Request
  4. Receive value.
    The account’s external addresses can be used as the destination in transfers originating elsewhere (for example, an on-ramp automation owned by your managing account). Inbound events carry data.account_id so a subscription on the managing account can attribute them to the correct managed account. See Webhook Events.
  5. Do not attempt to originate transfers from this account.
    Any attempt to use an external address on a transactional account as a transfer source returns 422 compatible_address_not_found. Route outbound value through a different, custodial account.

Managed by the API key owner

An individual account created through the API is automatically managed by the account that owns the API key. The managing account’s credentials authorize requests scoped to it. These accounts are managed entirely through the API — there is no end-user dashboard for them. See Custodial Accounts for the sibling business flow.

Use an individual account as an Automation brand

A verified individual account can be used as the brand.account_id on an onramp automation. The automation is still created under the managing account; brand.account_id selects the identity that appears on the funding instructions. When you pass an individual account, source.funding_instructions.beneficiary_name and beneficiary_address show the individual’s legal name and address.
Request
See Branded Automations for the full behavior and business-account example.