Skip to main content
Individual accounts are transactional: they are verified with KYC, they do not hold custody with Brale, and they are shaped for inbound value. Use them when your end user is a natural person who needs to receive stablecoins on-chain or be the destination of an on-ramp, but should not hold a Brale-custodied wallet. For the dimension fields and how individual accounts relate to business accounts, see Account types.

What it does

  • Registers a natural person as a Brale account (entity_type: individual, account_type: transactional).
  • Runs KYC identity verification on the individual.
  • Emits the same account.verification.* webhook events as business KYB.
  • Lets you register external on-chain destination addresses so the account can receive value.

Who it’s for

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

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

  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 are supported. individual.address.state is 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.