Skip to content

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 status field 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.

  1. Customer verified. The customer accepts the provider's terms and completes KYC (know your customer) or KYB (know your business).
  2. 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.
  3. Deposit details shared. You show the payer the account number, memo code, Pix code, or other instructions.
  4. Customer sends the transfer. The payer uses their own bank app. They do not need a crypto wallet.
  5. Deposit detected. The provider sees the funds arrive and creates or updates the payin.
  6. Compliance screening. Transaction monitoring checks the deposit. A flagged deposit goes on hold for review.
  7. Conversion to USDC or USDT. The provider converts the fiat to the stablecoin at the quoted rate.
  8. 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.

RailTypical timing for the railCut-off (ET)BlindPay arrival window
ACH1 to 3 business days9:00 PMUp to 5 business days
Same-day ACHSame business day3:00 PMNot listed separately
Domestic wireSame business day3:00 PMUp to 5 business days
International SWIFTUp to 5 business days10:30 AMRequires an approved virtual account
Pix (Brazil)Typically minutesNot applicableBlindPay waits up to 30 minutes before marking a non-OTC payin failed
SPEI (Mexico)Typically minutesNot applicableWaits 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_review for a compliance review, then moves to verifying for 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.

StepEvent or objectWhat it tells you
Payin createdpayin.newA payin exists. Also fires for a deposit into a virtual account
Arrival check or reviewpayin.updateThe payin moved through an intermediate step
Finishedpayin.completeThe payin ended. Check status for completed, refunded, or failed
Any timeGET payinCurrent 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.

  1. Deposit never arrives. The payin stays processing until the monitoring window ends, then can become failed.
  2. Missing or wrong reference. On the memo-code path, a deposit without the right code is harder to match. A virtual account avoids this.
  3. Funds arrive late. For Transfers (Argentina) payins, BlindPay revives a failed payin to processing if matching funds arrive before any stablecoins were sent.
  4. Held for review. The payin shows on_hold until compliance releases or refunds it.
  5. Refund. The deposit is returned to the sender and the payin shows refunded.
  6. 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-payins prompt helps an AI agent build it.

Sources

This article is for general information only and is not legal, tax, or financial advice.

FAQ

One API.
Multiple payment rails.

Blind Pay, Inc. (“BlindPay”) is a United States-based financial technology and payments infrastructure company, incorporated in the State of Delaware on May 2, 2024. BlindPay is duly registered as a Money Services Business (“MSB”) with the Financial Crimes Enforcement Network (“FinCEN”) under registration number 31000277566153. BlindPay is not a state-licensed money transmitter and does not, in its own capacity, engage in regulated money transmission services. All such regulated activities are conducted exclusively through, and under the licenses of, duly authorized financial institution partners. BlindPay's role is limited to providing financial technology, virtual account management, payment processing, and related payments infrastructure services that facilitate payment flows and account functionalities. These services are provided in coordination with its licensed partners and in compliance with applicable federal MSB requirements and relevant state regulatory frameworks.

Blind Pay, LLC (“BlindPay”) is a Delaware limited liability company formed on June 24, 2025. BlindPay is duly registered as a Money Services Business (“MSB”) with the Financial Crimes Enforcement Network (“FinCEN”) under registration number 31000318334247 and is listed in the Nationwide Multistate Licensing System (“NMLS”) under NMLS ID #2745309.

BLIND PAY SOCIEDADE PRESTADORA DE SERVIÇOS DE ATIVOS VIRTUAIS LTDA. (“BlindPay”) is a Virtual Asset Service Provider (“VASP”) operating in Brazil. The company is presently completing the regulatory adaptation process required of Virtual Asset Service Provider Companies (SPSAV) under Central Bank of Brazil Resolution No. 520/2025, and remains subject to the transitional regime set forth in Article 88 of that Resolution. Registered address: Avenida Princesa Isabel, nº 15, Sala 1405, Edifício Martinho de Freitas, Centro, Vitória/ES, 29010-361.

BlindPay is a stablecoin API that enables individuals and businesses to move money worldwide.