How a stablecoin payin works step by step (ACH, wire, SWIFT, and Pix to USDC)
How does a stablecoin payin work? Follow eight steps from bank transfer to USDC in a wallet, with timing by rail, checks, webhooks, and failure cases.
A customer sends a bank transfer to a virtual account, the provider screens and converts the deposit to a stablecoin, and the stablecoin arrives in the wallet you choose, with a webhook telling your system at each step. BlindPay runs this flow for ACH, wire, SWIFT, Pix, and other rails.
Key takeaways
- The payer does a normal bank transfer. The provider handles the conversion and the on-chain delivery.
- The slow part is usually the bank rail, not the blockchain.
- Checks happen at onboarding, at account review, and during transaction monitoring.
- Webhooks report each step. Read the
statusfield to know the real outcome. - Test failed and refunded payins in the sandbox before you go live.
For the concepts first, see what a stablecoin payin API is and virtual accounts for stablecoin payins.
What are the steps from bank transfer to stablecoin in a wallet?
There are eight steps from a verified customer to a delivered stablecoin. A stablecoin is a digital token built to hold a steady value, like one US dollar. A wallet is an address on a blockchain that holds tokens.
- Customer verified. The customer accepts the provider's terms and completes KYC (know your customer) or KYB (know your business).
- Virtual account created. You create a virtual account for repeat deposits, or request a payin quote for one payment. You link the wallet that will receive the stablecoin.
- Deposit details shared. You show the payer the account number, memo code, Pix code, or other instructions.
- Customer sends the transfer. The payer uses their own bank app. They do not need a crypto wallet.
- Deposit detected. The provider sees the funds arrive and creates or updates the payin.
- Compliance screening. Transaction monitoring checks the deposit. A flagged deposit goes on hold for review.
- Conversion to USDC or USDT. The provider converts the fiat to the stablecoin at the quoted rate.
- Delivery and webhook. The stablecoin is sent to the chosen blockchain wallet, and a webhook tells your system.
In BlindPay's quote-based flow, the quote locks the amount, fee split, and destination for 5 minutes, and you create the payin before it expires. Once created, a payin cannot be canceled. See Payins. A virtual account skips the quote: each deposit creates a payin automatically.
How long does each rail take (ACH, same-day ACH, wire, SWIFT, Pix)?
Each rail has its own clock. The table shows typical timing for the rail in general. It is typical for the rail, not a BlindPay commitment. Settlement windows and cut-offs come from BlindPay's cut-off times reference, which describes the networks, not BlindPay's end-to-end time.
| Rail | Typical timing for the rail | Cut-off (ET) | BlindPay arrival window |
|---|---|---|---|
| ACH | 1 to 3 business days | 9:00 PM | Up to 5 business days |
| Same-day ACH | Same business day | 3:00 PM | Not listed separately |
| Domestic wire | Same business day | 3:00 PM | Up to 5 business days |
| International SWIFT | Up to 5 business days | 10:30 AM | Requires an approved virtual account |
| Pix (Brazil) | Typically minutes | Not applicable | BlindPay waits up to 30 minutes before marking a non-OTC payin failed |
| SPEI (Mexico) | Typically minutes | Not applicable | Waits up to 30 minutes before marking failed |
Requests after a cut-off are processed the next business day. Business days exclude weekends and holidays. Bre-B deposits in Colombia are final in seconds. On a development instance, every payin completes about 30 seconds after creation. For a longer guide by rail, read how long a stablecoin on-ramp takes.
What checks happen before funds are converted?
Three layers of checks happen before a stablecoin reaches the wallet. The first is customer verification. The second is account review for virtual accounts. The third is transaction monitoring on the deposit itself.
- Customer verification. KYC Standard for individuals is automated and typically completes in about 60 seconds. Higher-risk countries need KYC Enhanced with manual review. Businesses complete KYB.
- Virtual account review. In production, a virtual account starts in
pending_reviewfor a compliance review, then moves toverifyingfor the bank. Either stage can reject. - Transaction monitoring. BlindPay's monitoring system can flag a payin as suspicious and hold it. The payin shows
on_hold. Compliance may send a Request for Information, and if it is not answered within 24 hours the transaction may be refunded to the sender. See on-hold transactions.
For SWIFT, BlindPay requires an approved virtual account. There is no memo-code fallback.
What does my system receive at each step?
Your system receives webhooks and can also poll the API. BlindPay's payin events are payin.new, payin.update, and payin.complete.
| Step | Event or object | What it tells you |
|---|---|---|
| Payin created | payin.new | A payin exists. Also fires for a deposit into a virtual account |
| Arrival check or review | payin.update | The payin moved through an intermediate step |
| Finished | payin.complete | The payin ended. Check status for completed, refunded, or failed |
| Any time | GET payin | Current status and tracking_* steps |
The payin status is processing, on_hold, completed, failed, or refunded. Three tracking objects, tracking_transaction, tracking_payment, and tracking_complete, show a finer step for each stage. The final transaction hash appears in tracking_complete. Treat status as the source of truth, because the hash can change if the on-chain transaction is replaced.
To handle events safely, verify the signature on the raw body, dedupe by message ID, and never move a payment backward from a final status. See webhook handling and reconciliation.
What can go wrong?
Most problems are late funds, missing references, holds, and refunds. Use this list to plan for them.
- Deposit never arrives. The payin stays
processinguntil the monitoring window ends, then can becomefailed. - Missing or wrong reference. On the memo-code path, a deposit without the right code is harder to match. A virtual account avoids this.
- Funds arrive late. For Transfers (Argentina) payins, BlindPay revives a failed payin to
processingif matching funds arrive before any stablecoins were sent. - Held for review. The payin shows
on_holduntil compliance releases or refunds it. - Refund. The deposit is returned to the sender and the payin shows
refunded. - Fees consume the amount. If fees leave a receiver amount of 0, the payin completes without an on-chain transfer.
Test these cases before launch. On a development instance, a payin quote with a request amount of $666.00 forces failed, and $777.00 forces refunded. The guide to failed on-ramp deposits covers each cause in detail. If you are comparing ACH options, read ACH pull vs ACH push.
Where does BlindPay fit?
BlindPay converts funds that arrive by bank transfer into USDC or USDT and delivers them to a wallet you choose. These facts come from the BlindPay docs.
- Payin methods include ACH, wire, RTP, international SWIFT, Pix, TED, SPEI, Transfers, PSE, Bre-B, card, and ACH pull.
- The destination is a customer-controlled external blockchain wallet (
bw_...) or a BlindPay-managed wallet (bl_...), which is BlindPay-custodied and in beta. - Fees depend on the rail and network, and the quote shows them before you execute. See pricing.
- US virtual accounts cost $1.50 per month per account. See the virtual accounts page.
- The quickstart walks a payin through on a development instance, and the
integrate-payinsprompt helps an AI agent build it.
Sources
- BlindPay docs, Payins, Cut-off times, and On-hold transactions
- BlindPay docs, Webhook events and KYC basics
- Nacha, Same Day ACH and ACH network overview
- Federal Reserve Financial Services, FedACH and Fedwire
- Swift, cross-border payments overview
- Banco Central do Brasil, Pix
This article is for general information only and is not legal, tax, or financial advice.
FAQ
More payments articles
See all payments articlesDo stablecoin payouts work on weekends and holidays? Cut-offs and bank calendars by rail
The stablecoin leg runs 24/7, and so do Pix, SPEI, and RTP. ACH, wire, SEPA, TED, and SWIFT wait for a business day. Cut-offs and calendars by rail.
From stablecoin to local bank: when to cash out over Pix, SPEI, ACH, SEPA, or SWIFT instead of using a card
When a stablecoin card is the wrong tool and a local bank payout fits: rent, payroll, invoices. Each rail compared, plus how a payout API flow works.
Banks, fintechs, or stablecoins? What the BIS "competing rails" paper found about cross-border payment costs
BIS Working Paper 1385 compared bank wires, money transfer operators, and stablecoins on all-in cost. The five findings, the numbers, and what they mean.