A reference architecture for a stablecoin card program: KYC, bank deposit, conversion, wallet, JIT funding, network settlement, and local-currency payout.
Reading time: about 8 minutes.
Summary: A stablecoin card program has seven layers: onboarding and KYC, a bank-deposit entry point, conversion into USDC or USDT, a wallet that holds the balance, the card issuer's authorization and just-in-time funding, network clearing and settlement, and an off-ramp to local currency. Different providers own different layers. Your ledger is what holds them together.
Key takeaways
Most card program diagrams start at the swipe. That is the easy part, because the card issuer has already built it. The hard parts sit on either side: how money gets into the stablecoin balance, and how it gets back out to a bank account in the cardholder's currency.
This is a reference architecture for the whole loop. It assumes you integrate providers, not build a processor. For the swipe itself, read how a stablecoin-backed card works.
The program is a loop: bank money in, stablecoin balance, card spend, and optionally bank money out. Here it is as a layered diagram:
Read it bottom to top for a top-up, top to bottom for a cash-out. The card swipe lives in layers 4 to 6.
Each layer has a natural owner. The table is the conversation to have with every vendor before signing: "which of these rows are yours?"
| Layer | What it does | Typically provided by |
|---|---|---|
| 1. Onboarding | KYC on cardholders, KYB on your company, sanctions screening | Card issuer for card eligibility; funding provider for deposits and payouts; both may run checks |
| 2. Funding | Dedicated bank details or local payment instructions | Funding and payout provider (virtual accounts, local payins) |
| 3. Conversion | Fiat to stablecoin at a quoted rate | Funding and payout provider |
| 4. Wallet | Holds the stablecoin balance | Card issuer (custodial), wallet provider, or the cardholder (non-custodial) |
| 5. Card issuing | Card creation, authorization, controls, disputes | Card issuer, its BIN sponsor bank, and processor |
| 6. Network settlement | Moves money between issuer and acquirer | Visa or Mastercard, through the issuer |
| 7. Off-ramp | Stablecoin to local currency in a bank account | Funding and payout provider |
| Across all | Product, ledger, support, statements | You |
A BIN sponsor is the licensed bank that owns the card number range and carries regulatory responsibility for the program. JIT funding (just-in-time) means the issuer pulls only the amount needed at the moment of authorization instead of holding a prefunded card balance.
Stripe's Bridge integration is a clean example of the split. Per Stripe's docs, customers are created in Bridge, cards and spend webhooks live in Stripe, and KYC plus the cards endorsement are managed in Bridge (Stripe). Two vendors, one card, and your code in the middle.
Here is one full loop for a cardholder in the US who also cashes out to a bank account.
Every layer reports through events, and the stack only works if you consume them all. Treat webhooks as the system's nervous system, not a nice-to-have.
| Layer | Example events | What your handler does |
|---|---|---|
| Onboarding | customer.update (KYC status) | Allow card issuance and account creation on approval |
| Funding | virtualAccount.complete | Show account details in the app |
| Funding and conversion | payin.new, payin.update, payin.complete | Show "pending", then credit the ledger on completion |
| Card issuer | Authorization request, capture, refund, reversal | Approve or decline in real time; adjust holds |
| Off-ramp | payout.new, payout.update, payout.complete | Debit on creation, confirm on completion, handle refunds |
The event names in the funding and off-ramp rows are BlindPay's (webhook events). Card issuer names vary by provider. Stripe gives a real-time authorization webhook 2 seconds to answer before applying your timeout setting (Stripe). That deadline is why the authorization handler must read your ledger, never a block explorer.
Verify every signature (webhook verification). Store the raw event before processing, so a failed handler can replay it.
Reconciliation is one ledger, many feeds. Each event posts once, keyed on the provider's id, and the ledger is checked daily against three outside views: each provider's statement, the on-chain wallet balance, and the bank-side records.
Three rules make it hold:
payin.complete. A payout is not gone until payout.complete or a refund event.The webhooks and reconciliation guide and the virtual account reconciliation guide go deeper on the funding side.
Failure handling is layer by layer, and each layer has its own vocabulary. The goal is the same everywhere: the ledger only moves on a final state.
on_hold for manual review, then end completed, failed, or refunded (returned to the sender). Do not credit the card before completed.The custodial vs non-custodial off-ramps guide covers what each custody model protects you from.
Four come up again and again.
BlindPay owns layers 2, 3, and 7: the entry and the exit around the card. The card issuer runs the card. BlindPay moves money into and out of the stablecoin balance behind it.
On the way in, BlindPay issues US virtual accounts in each cardholder's name for ACH, wire, and SWIFT, and creates Pix, SPEI, Transfers 3.0, and PSE payins for Latin America, converting deposits into USDC or USDT in the card wallet. On the way out, it pays out in local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on SWIFT. KYC and KYB run in the same API, every quote shows fees before execute, and every step emits a signed webhook.
That keeps your card issuer focused on cards and your ledger fed by one funding and payout integration. Read the payins docs and payouts docs, or talk to the team.
This article is for general information only and is not legal, tax, or financial advice.
Seven places blockchain payments beat bank rails: contractor payroll, remittances, B2B suppliers, marketplaces, 24/7 treasury, bill pay, and PSP payouts.
AP2, ACP, and x402 each verify that an AI agent had permission to spend. Here is what every protocol covers, who backs it, and the reconciliation gap none of them close.
The three roles behind every card program, stablecoin cards included: what each one does, who carries liability, and what to ask a provider.