> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bastion.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Crypto custody

> How Bastion's custody signs transactions in AWS Nitro Enclaves without exposing private keys, across segregated and omnibus accounts, with sponsored gas.

export const OmnibusCustodyDiagram = ({label = "Secure ledger"}) => <div className="not-prose my-4 flex flex-col justify-between" style={{
  height: 116
}}>
    <div className="flex items-end justify-between px-1">
      {[0, 1, 2, 3, 4].map(i => <span key={i} className="glyph glyph-wallet" style={{
  color: "var(--fg-muted)"
}} />)}
    </div>

    <div className="py-2 text-center font-mono text-xs" style={{
  color: "var(--fg-muted)",
  borderTop: "1px solid var(--border)",
  borderBottom: "1px solid var(--border)"
}}>
      {label}
    </div>

    <div className="flex justify-center">
      <span className="glyph glyph-key" style={{
  color: "var(--bastion-signal)"
}} />
    </div>
  </div>;

export const SegregatedCustodyDiagram = () => <div className="not-prose my-4 flex items-center" style={{
  height: 116
}}>
    {[0, 1, 2, 3, 4].map(i => <div key={i} className="flex flex-1 flex-col items-center gap-2 px-1" style={i < 4 ? {
  borderRight: "1px solid var(--border)"
} : undefined}>
        <span className="glyph glyph-wallet" style={{
  color: "var(--fg-muted)"
}} />
        <span className="glyph glyph-key" style={{
  color: "var(--bastion-signal)"
}} />
      </div>)}
  </div>;

Bastion's embedded custody enables platforms to create and manage wallets for their users without handling private keys. Every wallet is backed by secure hardware, with transactions signed on-demand within AWS Nitro Enclaves.

You own the user experience. Bastion handles key management, transaction signing, gas sponsorship, and multi-chain support.

If you're not familiar with identities and accounts, start with [Identity and Account concepts](/guides/concepts/identities-and-accounts) before continuing.

## Account types

Bastion supports two custody models. Your platform uses one or both depending on your use case.

| Account type              | How assets are held                                                                                      | Balance model                                                          | Key characteristic                                                                   |
| ------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| Segregated (`SEGREGATED`) | Each customer gets their own on-chain wallet addresses                                                   | Chain-specific (e.g., USDC on Solana, USDC on Base tracked separately) | Customers have direct on-chain addresses across multiple chains                      |
| Omnibus (`OMNIBUS`)       | Customer funds are pooled in a custody vault. Bastion tracks individual balances via an internal ledger. | Chain-agnostic (e.g., USDC as a single balance regardless of chain)    | Supports instant, fee-free off-chain transfers between accounts on the same platform |

<Columns cols={2}>
  <Card title="Segregated">
    <SegregatedCustodyDiagram />

    Each account gets its own dedicated cryptographic keys and blockchain wallet address. Funds are not commingled and are independently verifiable on-chain.
  </Card>

  <Card title="Omnibus">
    <OmnibusCustodyDiagram label="Secure ledger" />

    Funds are pooled in a custody vault and tracked per account on a secure double-entry ledger. Transactions settle off-chain instantly; those that must go on-chain are routed automatically.
  </Card>
</Columns>

Both account types are fully custodial under Bastion's US regulated licensing. Your platform interacts with the same APIs regardless of account type.

## Balances

Balances are returned in atomic units as strings. Use the `decimals` field to convert to a human-readable amount (e.g., `"975000000"` with `decimals: 6` = 975.00 USDC).

The balance response shape differs by account type:

**Segregated accounts** return chain-specific balances with `type`, `chain`, and `contract_address` fields. A customer with USDC on both Solana and Base will see two separate balance entries.

**Omnibus accounts** return a single chain-agnostic balance with `type: OMNIBUS` and `chain: CHAIN_UNSPECIFIED`

In both cases, the `available` field reflects the amount the customer can use for transfers or conversions. The `total` field may differ from `available` if funds are held for a pending operation.

## Gas sponsorship

Bastion sponsors gas fees by default on all supported chains. Your customers do not need to hold native tokens (SOL, ETH, etc.) to send transfers. Gas sponsorship is opt-out, not opt-in. Contact your Bastion account team to disable.

## What you can do with custody

Bastion custody is a prerequisite for all financial operations on the platform. With custodied accounts, your platform can:

* Submit crypto transfers (on-chain and off-chain). See [Crypto transfers](/guides/concepts/crypto-transfers).
* Process fiat-to-stablecoin conversions (on-ramps and off-ramps). See [Stablecoin conversions](/guides/concepts/stablecoin-conversions).
* Receive incoming crypto deposits from external wallets or other accounts.
* Query balances, transaction history, and transfer status in real time.
* Receive webhook notifications for transfers, deposits, and account events.

## Related documentation

* **Concepts**

  * [Identity and account](/guides/concepts/identities-and-accounts)
  * [Crypto transfers](/guides/concepts/crypto-transfers)
  * [Stablecoin conversions](/guides/concepts/stablecoin-conversions)
  * [Supported chains and assets](/guides/concepts/chains-and-assets)

* **Getting started**

  * [Send crypto on-chain](/guides/quickstarts/send-crypto/on-chain)
  * [Send crypto off-chain](/guides/quickstarts/send-crypto/off-chain)
  * [Receive crypto deposits](/guides/quickstarts/receive-crypto-deposits)


## Related topics

- [Jurisdiction overview](/guides/getting-started/jurisdiction-overview.md)
- [Crypto transfers and deposits](/guides/concepts/crypto-transfers.md)
- [Supported chains and assets](/guides/concepts/chains-and-assets.md)
- [Identities and accounts](/guides/concepts/identities-and-accounts.md)
- [Bastion platform overview](/guides/getting-started/bastion-platform-overview.md)
