Accept ACH, wire, and SWIFT and settle in USDC or USDT: the flow, the token, chain, and custody choices, and when a virtual account beats a memo code.
To accept bank transfers and settle in stablecoins, give each customer a virtual account: a bank account number in their name that converts every incoming deposit into USDC or USDT and sends it on-chain to a linked wallet. The payer sends an ordinary ACH, wire, or SWIFT transfer. The provider handles the conversion. The customer ends up holding stablecoins.
No checkout page. No crypto on the payer's side.
A virtual account turns bank deposits into stablecoins by pairing a bank account number with a destination wallet. When a deposit lands on the account number, the provider records it, converts the dollars into a stablecoin, and sends the stablecoin to the wallet in an on-chain transaction.
That's the on-ramp, reduced to one object. The deeper walkthrough of approval states and deposit handling is in stablecoin virtual accounts explained, and what happens on the blockchain at each step is in what happens on-chain in a stablecoin payment.
Use a virtual account when the same payer sends money more than once or pays from abroad. Use one-time payment instructions when a payer sends a single transfer and you don't want to wait for account approval.
With one-time instructions, you create a quote for a specific payment, then show the payer a shared bank account plus a memo code they must include so the deposit can be matched. With a virtual account, the payer gets bank details in your customer's own name, and the account number does the matching.
| Virtual account | One-time payment instructions | |
|---|---|---|
| What the payer gets | Routing and account number in your customer's name | Shared bank details plus a memo code |
| Reusable | Yes, same details every time | No, one set per payment |
| How a deposit is matched | By the receiving account number | By the memo code the payer types |
| Setup | Account review before first use | Available immediately |
| International SWIFT | Yes, on account types that support it | Not at BlindPay: SWIFT deposits require a virtual account |
| Failure mode | Account rejected or approval delayed | Memo missing or mistyped, deposit waits to be matched |
| Best for | Recurring payers, payroll funding, B2B, foreign clients | Occasional one-off deposits |
At BlindPay, the two paths are connected. Once a customer has an approved virtual account, ACH and wire payins show that account's own details and the memo code is ignored (payins). RTP deposits are the exception: they always use the shared memo-code account, because no virtual account carries an RTP rail.
The flow has six steps, and only the last two involve money.
kyc_status must be approved before you can request an account, and business customers need fields like account_purpose, source_of_wealth, business_industry (a NAICS code), and at least one owner filled in (create a virtual account).pending_review (compliance) to verifying (bank) to approved, and virtualAccount.complete fires with the routing and account numbers. Development accounts are approved instantly.payin.new.completed and payin.complete fires.After step 4, nothing else needs an API call. Every future deposit repeats steps 5 and 6 on its own.
Six decisions shape a stablecoin collection flow. Most depend on the provider, so the table shows what to ask any provider next to how BlindPay answers.
| Decision | What to ask any provider | BlindPay |
|---|---|---|
| Custody | Do stablecoins settle to a wallet I control, or one you hold? | Virtual accounts settle to an external blockchain wallet the customer controls |
| Which stablecoin | USDC, USDT, or both? Can I switch later? | USDC or USDT, and token can be updated on an existing account |
| Which chain | Which networks can receive settlement? | USDC on Ethereum, Polygon, Base, Arbitrum, Stellar, and Solana. USDT needs a wallet on Polygon, Ethereum, or Solana |
| Fees | Monthly cost per account? Per-deposit fee? Where does it show up? | $1.50 per month per account. Per-deposit fees below $100.00 go to your invoice; at $100.00 or more they're deducted from the delivered stablecoin |
| Minimum deposit | Are small deposits ignored or processed? | Every deposit is processed, including $0.01 micro-deposits, and at least $0.01 is always delivered |
| Settlement time | How long for each rail, and what restarts the clock? | ACH and wire deposits can take up to 5 business days to arrive; the on-chain leg takes seconds to minutes |
Two of these are worth a second look.
Custody. Settling to a wallet your customer controls means the stablecoins stop being the provider's liability the moment they land. It also means your customer is responsible for that wallet's keys. Non-custodial payments explained covers the trade-off in full.
Token and chain. They're linked. At BlindPay, choosing USDT means the wallet must be on Polygon, Ethereum, or Solana. Stellar wallets receive USDC only, and need a USDC trustline before they can. If you're unsure which token, USDC vs USDT for payments compares them. For speed and low network fees, Solana is a common pick: BlindPay payins, payouts, and virtual accounts all run on it.
Compliance happens at three points: when the customer is onboarded, when the account is approved, and when each deposit arrives.
on_hold and resumes when cleared.Two rules apply beyond the first deposit. First, the money has to belong to the customer the account was issued to. Collecting for your customer's own clients through their account is nesting, which BlindPay does not allow (nested payments). Second, when stablecoins move between providers, travel rule obligations can require originator and beneficiary information to travel with the transfer. How that applies depends on the jurisdiction and the wallets involved, so ask your provider how they handle it. The stablecoin regulation tracker follows the rules by market.
Illustrative example. A contractor payroll platform has three US client companies. Each client is onboarded as a BlindPay customer, passes KYB, and gets its own virtual account settling USDC to its own wallet on Solana.
| Client | Funds payroll by | Deposit | What lands |
|---|---|---|---|
| Client A | Domestic wire, Monday morning | $48,000.00 | USDC in Client A's wallet, minus the deposit fee |
| Client B | ACH, twice a month | $12,500.00 each | USDC in Client B's wallet after each ACH settles |
| Client C | ACH from a payroll provider that verifies with a $0.01 test | $0.01, then $9,000.00 | Two payins: at least $0.01 of USDC, then the full deposit minus fees |
Nobody types a memo code. Every deposit arrives already labeled by the account it hit. The platform then pays each client's contractors from that client's wallet, over local rails in each contractor's country. (Amounts are illustrative; fees depend on your plan.)
Notice Client C's penny. That's an account-verification micro-deposit, and it shows up as its own payin. Reconcile it, don't flag it.
BlindPay virtual accounts give each customer a US bank account in their own name that receives ACH, wire, and SWIFT and settles automatically to USDC or USDT in the customer's wallet. The same API pays out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries, with live quotes, no pre-funding, and KYC, KYB, and sanctions screening built into the flow.
Create a free development instance, add a Solana Devnet wallet, and create one virtual account with token: "USDB", BlindPay's test stablecoin (production accounts use USDC or USDT). It's approved instantly, and every test payin completes about 30 seconds after you create it, so you can wire up payin.new and payin.complete handling before your first real customer applies. The payin quickstart and create a virtual account have the full requests.
This article is for general information only and is not legal, tax, or financial advice.
Stablecoin payments are as safe as the issuer, the network, the provider, and your own controls. The seven risks to check, with real incidents and fixes.
Five stablecoin APIs compared for cross-border payments: primary use case, pre-funding requirement, payout regions, and developer experience, plus how to choose by buyer scenario.
Ten stablecoin APIs compared for 2026: BlindPay, Circle, Bridge, BVNK, Fireblocks, Crossmint, Zero Hash, Conduit, Sphere, and Borderless, across rails, custody, pricing, and compliance.