---
url: /docs/store.md
description: >-
  Hold a customer's balance in a BlindPay-managed wallet, or register an
  external wallet the customer already controls.
---

Once a customer receives money, it needs somewhere to live before it goes back out. A **managed wallet** is a balance BlindPay creates and holds in the customer's name: deposits land in it, payouts are funded from it, and you check it with a single API call. There are no keys to manage, no apps to connect, and no extra infrastructure on your side.

Once your customer holds stablecoins, they need somewhere to keep them. BlindPay supports two options, and you can mix both across different customers or even for the same customer.

A **managed wallet** (`bl_...`) is a BlindPay-custodied wallet: BlindPay creates it, holds the private keys, and your customer interacts with the balance through your product rather than a browser extension or a signed transaction. An **external blockchain wallet** (`bw_...`) is the opposite: your customer already controls the wallet (self-custodied), and you only register its address with BlindPay so it can receive stablecoin transfers or authorize a payout.

Managed wallets are in beta: only the chains listed on the managed wallet page have confirmed support.

## Which to use

| | Managed wallet (`bl_`) | Blockchain wallet (`bw_`) |
| --- | --- | --- |
| Custody | BlindPay-custodied | Customer-controlled (non-custodial) |
| Address | Generated by BlindPay | Supplied or signed by the customer |
| Best for | Products where you don't want customers managing keys | Customers who already have their own wallet |
| Sending funds | No client-side signing | Requires signature, approval, or delegation depending on chain |
| Availability | Beta, limited chain support | Generally available |

## How it fits

1. A [payin](/payins) or a [virtual account](/virtual-accounts) deposit settles into the customer's managed wallet.
2. The balance sits there until you move it; check it any time with the balance endpoint.
3. A [payout](/payouts) pulls from the wallet and delivers to a bank account, one API call, no extra approval step.

You only ever reference the wallet by its ID (`bl_...`) on payin quotes, or by its address when funding a payout. Everything else is handled by BlindPay.

## In this section

* [Managed wallets](/wallets): create a wallet, check its balance, and use it on payins and payouts.

## Related

* [Virtual accounts](/virtual-accounts): a dedicated bank account whose deposits settle into the linked wallet
* [Payins](/payins): accept a bank transfer and credit the wallet
* [Payouts](/payouts): pay out from the wallet to a bank account
* [Webhooks](/learn/webhooks): get notified the moment funds land

## In this section

* [Managed wallet](/wallets): create a `bl_` wallet, check its balance, and receive stablecoins directly into it.
* [Mint USDB](/mint-usdb): fund a wallet with BlindPay's test stablecoin on development instances.

Blockchain wallets (`bw_`) are documented under [Payins](/blockchain-wallets), where they serve as the customer-controlled delivery target.

## Related

* [Receive](/receive): stablecoins arriving in a managed wallet
* [Send](/send): move stablecoins out of a managed wallet
* [Payins](/payins): accept fiat and credit a wallet
* [Payouts](/payouts): pay out fiat from a wallet's balance
* [Supported chains](/kb/supported-chains): chain and token matrix
