> ## Content Index
> Fetch the complete content index at: https://stablecoininsider.org/llms.txt
> Use this file to discover other available public pages before exploring further.

# How to Embed Stablecoin Accounts: KYC, Custody, Rails
- URL: https://stablecoininsider.org/how-to-embed-stablecoin-accounts/
- Published: 2026-11-09T13:19:46.000Z
- Updated: 2026-11-09T13:19:49.000Z
- Description: A builder's guide to embedding stablecoin accounts: full-stack vs wallet provider, KYC and KYB with terms acceptance, custodial vs MPC wallets, virtual accounts and fiat rails, webhooks, fees and the licensing line, from Bridge, BVNK, Brale, Polygon, Lumx and Circle docs.
- Author: Alexandra
- Tags: Fintech, Stablecoins, Stablecoin Payments, stablecoin infrastructure, payments

To embed stablecoin accounts in your product, you pick a provider whose licenses sit under your brand, onboard each end user through that provider's KYC or KYB flow, provision a custodial or MPC wallet once the user is approved, attach virtual accounts for fiat in and out, and drive everything from webhooks. This guide walks through those steps in the order an engineering team actually builds them.

It is the builder-side follow-on to our comparison of [10 embedded stablecoin account providers](https://stablecoininsider.org/10-embedded-stablecoin-account-providers/), which covers who to shortlist. Here the question is how the integration works once you have picked one, using the public developer docs of Bridge, BVNK, Brale, Polygon's Open Money Stack (OMS), Lumx and Circle.

Stablecoin Insider's take: the pages that rank for this topic today are single-vendor docs, such as [Polygon's customer onboarding guide](https://docs.polygon.technology/payments/guides/customer-onboarding), [Brale's custodial accounts guide](https://docs.brale.xyz/guides/custodial-accounts) and [Lumx's global accounts guide](https://docs.lumx.io/guides/use-cases/global-accounts). Each explains one API well. None shows the pattern they share, which is what lets you design a provider-agnostic account layer and switch or add a provider later without rebuilding your app.

## Key Takeaways

- Every provider follows the same order: create a customer, collect terms acceptance and KYC or KYB, wait for approval, then provision wallets and virtual accounts ([Polygon OMS docs](https://docs.polygon.technology/payments/guides/customer-onboarding)).
- Approval is granular: Bridge grants per-rail endorsements such as base, sepa and spei, and Polygon OMS gates custody and USD separately ([Bridge endorsements](https://apidocs.bridge.xyz/platform/customers/customers/endorsements)).
- Custody is a product decision: custodial wallets keep keys with the provider, while Circle user-controlled wallets split keys with 2-of-2 MPC so your backend never holds them ([Circle docs](https://developers.circle.com/wallets/user-controlled)).
- Virtual accounts give users local deposit details that auto-convert to stablecoins; Lumx requires each deposit to be worth at least 50 USD ([Lumx docs](https://docs.lumx.io/guides/use-cases/global-accounts)).
- Build on webhooks, not polling: Bridge retries failed webhook deliveries with exponential backoff for up to two days ([Bridge webhooks](https://apidocs.bridge.xyz/platform/additional-information/webhooks/overview)).

## What does it mean to embed a stablecoin account?

Embedding a stablecoin account means your app shows the balance, deposit details and payment buttons, while a regulated provider holds the customer relationship on paper, runs compliance and custodies the funds. Your user sees your brand; the provider's licenses and banking partners sit underneath.

In practice an embedded account is three objects joined by one customer ID: a verified customer record, one or more wallets that hold USDC, USDT or another stablecoin, and optional virtual accounts that turn bank transfers into stablecoin deposits. Polygon's docs state it directly: every transaction, deposit address and virtual account belongs to a customer, so that is where an integration starts ([Polygon OMS customer onboarding](https://docs.polygon.technology/payments/guides/customer-onboarding)).

If you only need a stablecoin balance for your own company, you don't need to embed anything. Our guide to [business accounts that hold stablecoin balances](https://stablecoininsider.org/best-business-accounts-that-hold-stablecoin-balances/) covers that buyer-side case.

## Step 1: Should you choose a full-stack provider or wallet infrastructure?

Choose a full-stack provider if you want onboarding, custody and fiat rails behind one contract, and wallet infrastructure if you already have licenses and banking and only need key management. Most fintechs launching their first account product start full-stack, because it moves the licensing burden to the provider.

The table below maps six documented APIs to the decisions you will face. It reflects what each provider's public docs say on 9 November 2026, not marketing pages.

| Provider        | How users are onboarded                                                                                                                                  | Custody model                                                                                                              | Fiat in and out                                                                                                                                     | Watch out for                                                                                                                                               |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Bridge (Stripe) | Customers API or hosted KYC Links with a ToS link ([docs](https://apidocs.bridge.xyz/platform/customers/customers/kyclinks))                             | Custodial Bridge wallets ([docs](https://apidocs.bridge.xyz/platform/wallets/overview))                                    | Virtual accounts for USD, EUR, MXN, BRL, GBP and COP ([docs](https://apidocs.bridge.xyz/platform/orchestration/virtual%5Faccounts/virtual-account)) | Wallets not offered in New York or Texas; fund flows need Bridge compliance approval ([docs](https://apidocs.bridge.xyz/platform/wallets/overview))         |
| BVNK            | Hosted flow or partner-managed reliance onboarding ([docs](https://docs.bvnk.com/bvnk/get-started/create-embedded-partner-customer/reliance-onboarding)) | Embedded Wallets under your brand ([docs](https://docs.bvnk.com/bvnk/get-started/create-embedded-partner-customer))        | Fiat and stablecoin wallets with partner fees ([docs](https://docs.bvnk.com/bvnk/get-started/charge-customer-fees))                                 | Activation goes through your BVNK account manager and a compliance review ([docs](https://docs.bvnk.com/bvnk/get-started/create-embedded-partner-customer)) |
| Brale           | KYB for businesses, KYC for individuals ([docs](https://docs.brale.xyz/guides/custodial-accounts))                                                       | Custodial accounts get internal wallets on all supported chains ([docs](https://docs.brale.xyz/guides/custodial-accounts)) | Transfers and off-chain payouts from custodied funds ([docs](https://docs.brale.xyz/guides/custodial-accounts))                                     | Individual custodial accounts are U.S.-only ([docs](https://docs.brale.xyz/guides/custodial-accounts))                                                      |
| Polygon OMS     | POST /customers, then onboarding to active ([docs](https://docs.polygon.technology/payments/guides/customer-onboarding))                                 | Custodial wallet per asset and network ([docs](https://docs.polygon.technology/payments/guides/customer-onboarding))       | External bank accounts over ACH, same-day ACH and wire ([docs](https://docs.polygon.technology/payments/guides/customer-onboarding))                | Early access only; an early-access API key is required ([docs](https://docs.polygon.technology/payments/guides/customer-onboarding))                        |
| Lumx            | Customer with requested currencies, ToS link, then KYC link ([docs](https://docs.lumx.io/guides/use-cases/global-accounts))                              | Stablecoin wallet returned after approval ([docs](https://docs.lumx.io/guides/use-cases/global-accounts))                  | BRL, USD, EUR, MXN and GBP accounts with autoconversion rules ([docs](https://docs.lumx.io/guides/use-cases/global-accounts))                       | Deposits must be worth at least 50 USD ([docs](https://docs.lumx.io/guides/use-cases/global-accounts))                                                      |
| Circle Wallets  | Your own KYC; Circle supplies wallets only ([docs](https://developers.circle.com/wallets/dev-controlled))                                                | Developer-controlled or user-controlled 2-of-2 MPC ([docs](https://developers.circle.com/wallets/user-controlled))         | Not included; pair with a ramp or banking partner                                                                                                   | You own compliance and the entity secret ([docs](https://developers.circle.com/wallets/dev-controlled))                                                     |

Stablecoin Insider's take: design your own database around a provider-neutral customer, wallet and account model, and store each provider's IDs as foreign keys. Every API in the table uses the same three objects under different names, so a thin adapter layer is enough to add a second provider for a new region later.

## Step 2: How do you run KYC, KYB and terms acceptance?

You run KYC (individuals) or KYB (businesses) in one of three ways: send identity data through the provider's API, hand the user a hosted verification link, or verify users yourself and pass the results under a reliance agreement. In all three, the user must also accept the provider's terms before approval.

- Hosted links are fastest to ship. Bridge's KYC Links endpoint takes a full name, email and type and returns both a kyc\_link and a tos\_link; the customer is approved only after completing both ([Bridge KYC Links](https://apidocs.bridge.xyz/platform/customers/customers/kyclinks)).
- API submission gives you full control of the UX. Bridge's Customers API accepts identity data plus a signed\_agreement\_id from its ToS flow ([Bridge terms of service](https://apidocs.bridge.xyz/platform/customers/customers/tos)), and Polygon OMS requires email, birth date, phone, SSN and a U.S. address when a project verifies individuals for custodial wallets ([Polygon OMS](https://docs.polygon.technology/payments/guides/customer-onboarding)).
- Reliance onboarding suits fintechs that already run KYC. BVNK's partner-managed model lets eligible partners send pre-verified identity data and verification metadata instead of uploading documents, though everything submitted is still validated ([BVNK partner-managed onboarding](https://docs.bvnk.com/bvnk/get-started/create-embedded-partner-customer/reliance-onboarding)).

Approval is rarely all or nothing. Bridge issues endorsements per capability: base for USD rails, sepa for euros, spei for Mexican pesos, pix\_onramp and pix\_offramp for Brazil, faster\_payments for sterling and cop for Colombia ([Bridge endorsements](https://apidocs.bridge.xyz/platform/customers/customers/endorsements)). Polygon OMS does the same with basic, cryptoCustody and usd endorsements, and wallets fail with CryptoCustodyInactive until the custody endorsement is active ([Polygon OMS](https://docs.polygon.technology/payments/guides/customer-onboarding)).

Build your UI around those states. A user can be approved for a wallet but still pending for fiat rails, and Bridge also exposes future\_requirements that will become enforced on a set date ([Bridge endorsements](https://apidocs.bridge.xyz/platform/customers/customers/endorsements)). If you are still choosing a verification vendor, see our list of [KYC solutions for stablecoin platforms](https://stablecoininsider.org/best-kyc-solutions-for-stablecoin-platforms-in-2026/).

## Step 3: How do you provision custodial or MPC wallets?

You provision wallets only after the customer, or the custody endorsement, is approved, and the custody model you choose decides who can move funds. Custodial wallets are simplest for an embedded account; MPC wallets suit products that must not hold user keys.

| Model                            | Who holds keys                                       | Example from docs                                                                                                                                                 | Best for                                              |
| -------------------------------- | ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| Provider custodial               | The provider or its regulated custodian              | Bridge custodial wallets, created per user or for treasury ([Bridge](https://apidocs.bridge.xyz/platform/wallets/overview))                                       | Neobank-style balances, payouts, escrow               |
| Auto-provisioned custodial       | The provider                                         | Brale creates custodial wallets on all supported chains when the account is registered ([Brale](https://docs.brale.xyz/guides/custodial-accounts))                | Multi-chain balances with no wallet setup             |
| One wallet per asset and network | The provider                                         | Polygon OMS: each custodial wallet holds one asset (USDC or USDT) on one network ([Polygon](https://docs.polygon.technology/payments/guides/customer-onboarding)) | Tight per-chain accounting                            |
| Developer-controlled             | You, via a 32-byte entity secret Circle never stores | Circle dev-controlled wallets ([Circle](https://developers.circle.com/wallets/dev-controlled))                                                                    | Platforms with their own custody licensing            |
| User-controlled MPC              | The user, via 2-of-2 MPC with Circle                 | Circle user-controlled wallets ([Circle](https://developers.circle.com/wallets/user-controlled))                                                                  | Self-custody apps; not for backend-initiated payments |

Two details trip up launches. First, chain and token coverage differs by provider: Bridge's wallet docs list USDT on Ethereum, Solana, Tempo and Tron, while Arbitrum, Linea, Monad, Optimism, Polygon and XDC support USDC only ([Bridge wallets](https://apidocs.bridge.xyz/platform/wallets/overview)). Second, precision: Bridge custodial wallets process amounts in whole U.S. cents, so your ledger must round the same way ([Bridge wallets](https://apidocs.bridge.xyz/platform/wallets/overview)).

Circle notes that user-controlled wallets need an active, authenticated user session for every signing operation, so they don't fit automated payouts ([Circle user-controlled wallets](https://developers.circle.com/wallets/user-controlled)). For a wider view of key management vendors, see our [MPC and key management providers](https://stablecoininsider.org/best-key-management-mpc-providers/) guide.

## Step 4: How do you add virtual accounts and fiat rails?

You add fiat by creating a virtual account for each approved customer and currency, then sharing the deposit details it returns; incoming bank transfers are converted to stablecoins and credited to the customer's wallet. Payouts work in reverse, from a wallet to a registered external bank account.

- Bridge virtual accounts are permanent, reusable deposit addresses: U.S. account and routing numbers, euro IBANs, CLABE for SPEI, BR codes for PIX and local details for GBP and COP ([Bridge virtual accounts](https://apidocs.bridge.xyz/platform/orchestration/virtual%5Faccounts/virtual-account)). Our [Bridge virtual account walkthrough](https://stablecoininsider.org/how-to-open-a-bridge-virtual-account-for-usdc/) covers the exact request.
- Lumx provisions accounts per requested currency, then you create one autoconversion rule per account; USD, EUR and GBP accounts hold one active rule, while BRL and MXN can hold several ([Lumx global accounts](https://docs.lumx.io/guides/use-cases/global-accounts)).
- Polygon OMS registers bank accounts with POST /external-accounts; a U.S. account lists ACH, same-day ACH and wire as supported payout rails, and payouts need the usd endorsement ([Polygon OMS](https://docs.polygon.technology/payments/guides/customer-onboarding)).

[Compare 10 embedded stablecoin account providers](https://stablecoininsider.org/10-embedded-stablecoin-account-providers/)

## Step 5: How should webhooks and reconciliation work?

Treat webhooks as the source of truth for every status change, and reconcile on the provider's event and deposit IDs rather than on bank credits alone. Each provider uses different status names, so normalize them into one internal state machine.

| Your internal state | Bridge                                                                                               | Polygon OMS                                                                                                 | Lumx                                                                                                   |
| ------------------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| Not started         | kyc\_status not\_started ([docs](https://apidocs.bridge.xyz/platform/customers/customers/kyclinks))  | Customer created as pending ([docs](https://docs.polygon.technology/payments/guides/customer-onboarding))   | verification NOT\_STARTED ([docs](https://docs.lumx.io/guides/use-cases/global-accounts))              |
| Needs user action   | incomplete, awaiting\_ubo ([docs](https://apidocs.bridge.xyz/platform/customers/customers/kyclinks)) | actionRequired with hold code ([docs](https://docs.polygon.technology/payments/guides/customer-onboarding)) | Account in RFI ([docs](https://docs.lumx.io/guides/use-cases/global-accounts))                         |
| Approved            | approved ([docs](https://apidocs.bridge.xyz/platform/customers/customers/kyclinks))                  | active ([docs](https://docs.polygon.technology/payments/guides/customer-onboarding))                        | customer.approved, then account.active ([docs](https://docs.lumx.io/guides/use-cases/global-accounts)) |
| Closed              | rejected, offboarded ([docs](https://apidocs.bridge.xyz/platform/customers/customers/kyclinks))      | rejected, offboarded ([docs](https://docs.polygon.technology/payments/guides/customer-onboarding))          | REJECTED, INACTIVE ([docs](https://docs.lumx.io/guides/use-cases/global-accounts))                     |

Bridge creates new webhook endpoints in a disabled state so you can test signature verification and send test events before switching them to active, and it retries undelivered events with exponential backoff for up to two days ([Bridge webhooks](https://apidocs.bridge.xyz/platform/additional-information/webhooks/overview)). That retry window is your outage budget: if your endpoint is down longer, you must backfill from the API.

Make every create call idempotent. Polygon OMS requires an Idempotency-Key on every POST and, when creation outlasts the request, returns 202 with a Retry-After header; you repeat the same request with the same key rather than creating a second customer ([Polygon OMS](https://docs.polygon.technology/payments/guides/customer-onboarding)).

## Step 6: Where is the licensing boundary?

The licensing boundary sits wherever custody and money transmission happen: if the provider holds funds and moves money, its licenses cover the activity, and your job is to present its terms and not hold customer funds yourself. Coverage limits in the docs are where that boundary shows up.

- Brale offers business custodial accounts outside the United States only to regulated businesses in approved countries that send a regulatory\_profile ([Brale custodial accounts](https://docs.brale.xyz/guides/custodial-accounts)); state lists are on its [account availability page](https://docs.brale.xyz/coverage/account-availability).
- Bridge requires that all wallet fund flows are approved by Bridge Legal and Compliance before production, and excludes Kenya, Australia, Japan, Singapore, Malaysia, Vietnam and Indonesia from custodial wallets ([Bridge wallets](https://apidocs.bridge.xyz/platform/wallets/overview)).
- BVNK Embedded Wallets are available to businesses and individuals in the U.S., UK, EEA and other supported countries ([BVNK](https://docs.bvnk.com/bvnk/get-started/create-embedded-partner-customer)).
- Brale transactional accounts are non-custodial and receive no internal wallets, which changes who holds the assets ([Brale transactional accounts](https://docs.brale.xyz/guides/transactional-accounts)).

Stablecoin Insider's take: the moment you choose developer-controlled wallets or start holding customer stablecoins in your own treasury, the provider's licenses stop covering you. Get a written memo from counsel on custody and money transmission before you pick that model, not after launch.

## How do platforms earn revenue on embedded accounts?

Platforms usually earn through a per-transaction fee that the provider withholds and pays out to them. Bridge withholds developer fees from the customer's transaction, collects them in the transaction currency and pays them out monthly on the 5th in USD ([Bridge developer fees](https://apidocs.bridge.xyz/platform/orchestration/fees-and-mins/devfees)). BVNK lets partners add a customerFee to transactions, collected from the customer's wallet into a fee wallet whose currency must match ([BVNK customer fees](https://docs.bvnk.com/bvnk/get-started/charge-customer-fees)).

Show the fee before the user confirms. A silent markup on a conversion looks like a bad rate or a depeg to the user and turns into support tickets.

## What should be on your launch checklist?

Your launch checklist should prove the full lifecycle in sandbox, from a rejected customer to a refunded deposit, before any real user sees the product.

- Customer: test approved, needs-action and rejected paths; Polygon warns that sandbox names containing "test" can trip fraud checks ([Polygon OMS](https://docs.polygon.technology/payments/guides/customer-onboarding)).
- Terms: store the signed agreement ID and re-prompt when the provider ships new terms, as Bridge did for SEPA services ([Bridge terms](https://apidocs.bridge.xyz/platform/customers/customers/tos)).
- Wallets: confirm each chain and token pair you plan to show is supported before you design the deposit screen.
- Fiat: simulate deposits and payouts for each currency and record the fee fields returned on each event.
- Webhooks: verify signatures, deduplicate by event ID and alert when deliveries stop.
- Ledger: reconcile provider balances to your own ledger daily and round to the provider's precision.

[How to Open a Bridge Virtual Account for USDCStablecoin Insider's step-by-step guide to creating a Bridge virtual account, sharing deposit instructions and confirming payment\_processed.![](https://stablecoininsider.org/favicon.ico)Stablecoin Insider](https://stablecoininsider.org/how-to-open-a-bridge-virtual-account-for-usdc/)

## Stablecoin Insider's verdict on how to embed stablecoin accounts

Embedding stablecoin accounts is now a well-documented integration rather than a research project: customer, terms and KYC, wallet, virtual account, webhooks. The hard decisions are custody and coverage, not code, so make them first and pick the provider whose documented limits match your users.

If you have not shortlisted providers yet, start with our comparison of [10 embedded stablecoin account providers](https://stablecoininsider.org/10-embedded-stablecoin-account-providers/), then come back to this guide to plan the build.

## FAQ

#### How do I embed stablecoin accounts in my app?

Pick a provider, create a customer, collect terms acceptance and KYC or KYB, wait for approval, then provision a wallet and optional virtual accounts and listen for webhooks. Polygon OMS, Bridge and Lumx all document this order ([Polygon OMS](https://docs.polygon.technology/payments/guides/customer-onboarding)).

#### Do I need a money transmitter license to embed stablecoin accounts?

Often not, if the provider custodies funds and moves money under its own licenses; Bridge, for example, says it uses its regulatory licenses to custody stablecoins for your users ([Bridge wallets](https://apidocs.bridge.xyz/platform/wallets/overview)). If you hold keys or customer funds yourself, the answer can change, so get legal advice.

#### What is the difference between custodial and MPC stablecoin wallets?

A custodial wallet keeps keys with the provider. Circle user-controlled wallets split key material with 2-of-2 MPC so neither party can sign alone and your backend never holds user keys ([Circle](https://developers.circle.com/wallets/user-controlled)).

#### Can I use my own KYC provider?

Sometimes. BVNK's partner-managed onboarding lets eligible partners send pre-verified identity data instead of documents ([BVNK](https://docs.bvnk.com/bvnk/get-started/create-embedded-partner-customer/reliance-onboarding)), and Polygon OMS accepts a partner attestation for business onboarding when enabled ([Polygon OMS](https://docs.polygon.technology/payments/guides/customer-onboarding)).

#### What is a virtual account in a stablecoin product?

It is a set of local bank deposit details issued for a customer, such as a U.S. routing number or a euro IBAN, where incoming fiat is converted to stablecoins and delivered to a chosen destination ([Bridge virtual accounts](https://apidocs.bridge.xyz/platform/orchestration/virtual%5Faccounts/virtual-account)).

#### How do embedded account platforms make money?

Mostly through fees on transactions. Bridge withholds developer fees and pays them out monthly in USD ([Bridge](https://apidocs.bridge.xyz/platform/orchestration/fees-and-mins/devfees)), and BVNK supports a partner customerFee on transactions ([BVNK](https://docs.bvnk.com/bvnk/get-started/charge-customer-fees)).

Sources: [Polygon OMS customer onboarding](https://docs.polygon.technology/payments/guides/customer-onboarding), [Brale custodial accounts](https://docs.brale.xyz/guides/custodial-accounts), [Lumx global accounts](https://docs.lumx.io/guides/use-cases/global-accounts), [Bridge KYC Links](https://apidocs.bridge.xyz/platform/customers/customers/kyclinks), [Bridge endorsements](https://apidocs.bridge.xyz/platform/customers/customers/endorsements), [Bridge wallets](https://apidocs.bridge.xyz/platform/wallets/overview), [Bridge webhooks](https://apidocs.bridge.xyz/platform/additional-information/webhooks/overview), [Circle user-controlled wallets](https://developers.circle.com/wallets/user-controlled), [BVNK partner-managed onboarding](https://docs.bvnk.com/bvnk/get-started/create-embedded-partner-customer/reliance-onboarding) and [BVNK customer fees](https://docs.bvnk.com/bvnk/get-started/charge-customer-fees), all read on 9 November 2026.

This content is provided for informational and educational purposes only and doesn't constitute financial, investment, legal, tax or compliance advice. Provider features, coverage and requirements change; every detail here was read from the linked provider documentation on 9 November 2026\. It isn't advice to buy or sell any digital asset, including USDC or USDT, and it isn't a recommendation to contract with Bridge, BVNK, Brale, Polygon, Lumx, Circle or any other provider. Speak to qualified counsel about licensing before you launch an account product.