---
title: "How long does a stablecoin on-ramp take? Timing by funding rail"
seoTitle: "How long does a stablecoin on-ramp take?"
description: "On-ramp timing by funding rail: Pix, SPEI, Transfers 3.0, and PSE land in minutes, US ACH and wire can take days. Where the clock starts and what stops it."
date: "2026-10-03"
updated: "2026-10-03"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How long does it take to turn a bank transfer into USDC?"
    a: "It depends on the rail the payer uses. On BlindPay, Pix, SPEI, Transfers 3.0, and PSE deposits typically settle within minutes, and the cut-off reference puts arrival at up to 5 minutes for Pix and up to 10 minutes for the others. US ACH and wire payins have an arrival window of up to 5 business days."
  - q: "When does the on-ramp clock start?"
    a: "When the payer's money lands, not when you create the payin. A payin quote locks the amount for 5 minutes and you create the payin inside that window. After that, BlindPay waits for the fiat to arrive before it converts anything, so a payer who sends late adds their own delay to the total."
  - q: "What happens if the payer never sends the money?"
    a: "The payin cannot be canceled once created. On Pix, SPEI, Transfers 3.0, and PSE, BlindPay waits up to 30 minutes for the deposit before marking the payin failed. On US bank transfers the payin stays processing until it is cleaned up on BlindPay's side."
  - q: "Can an on-ramp be held for review?"
    a: "Yes. A payin can move to on_hold for a manual risk or compliance review, and BlindPay's cut-off reference says a hold can take up to 30 days to resolve. Approval resumes the normal flow. Build your status screen around webhooks so the user sees the hold instead of a frozen spinner."
  - q: "Is on-ramp timing the same in sandbox?"
    a: "No. On a development instance every payin auto-completes about 30 seconds after creation, regardless of payment method. That is useful for testing webhooks, but it tells you nothing about production arrival times, so never copy sandbox timing into user-facing copy."
---

A stablecoin on-ramp takes as long as the payer's bank rail takes to deliver, plus a short conversion step. On BlindPay, Pix, SPEI, Transfers 3.0, and PSE deposits typically settle within minutes. US ACH and wire payins have an arrival window of up to 5 business days. The quote itself only lasts 5 minutes.

This is the on-ramp mirror of [how long a stablecoin payout takes](/resources/more/stablecoin-payout-settlement-times). Same question, opposite direction, and the slow part sits in a different place.

**Key takeaways**

- The on-ramp clock starts when the fiat lands, not when you create the payin.
- Local instant rails (Pix, SPEI, Transfers 3.0, PSE) settle in minutes. US ACH and wire can take up to 5 business days.
- A payin quote lasts 5 minutes. A Pix OTC quote lasts 10 seconds.
- Instant-rail payins fail after 30 minutes without a deposit. A created payin can't be canceled.
- Compliance holds can add up to 30 days. Sandbox auto-completes in about 30 seconds, which is not a production number.

## What happens between "pay" and "USDC in the wallet"?

Four steps, and only one of them is slow. BlindPay's [payins docs](/docs/payins) describe the flow as quote, payin, deposit detection, settlement.

1. **Quote.** You request a payin quote with the amount, payment method, fee setting, and destination wallet. It locks the numbers for 5 minutes ([payin quotes](/docs/payin-quotes)).
2. **Payin.** You create the payin from the quote and show the payer the instructions: a Pix code, a CLABE, a CBU, a payment link, or US bank details with a memo code.
3. **Deposit.** The payer sends the money. This is the variable part, and it depends entirely on the rail.
4. **Settlement.** BlindPay detects the deposit, converts it, and delivers USDC or USDT to the wallet you named on the quote.

Steps 1, 2, and 4 are measured in seconds to minutes. Step 3 is measured in whatever the payer's rail allows, plus however long the payer takes to press send.

## How long does each funding rail take?

Here are BlindPay's documented windows for payin arrival. The first column comes from the payins reference, the second from the [cut-off times reference](/docs/kb/cut-off-times).

| Funding rail | Currency | Typical arrival (payins docs) | Payin arrival (cut-off reference) | Fails without a deposit after |
| --- | --- | --- | --- | --- |
| Pix | BRL | Within minutes | Up to 5 minutes | 30 minutes |
| SPEI | MXN | Within minutes | Up to 10 minutes | 30 minutes |
| Transfers 3.0 | ARS | Within minutes | Up to 10 minutes | 30 minutes |
| PSE | COP | Within minutes | Up to 10 minutes | 30 minutes |
| TED | BRL | Up to 7 days | Same or next banking day | n/a |
| ACH | USD | Up to 5 business days | 1-3 business days (network) | n/a |
| Wire | USD | Up to 5 business days | Same business day (network) | n/a |

Two notes on reading it. The cut-off reference says its ACH and wire numbers describe the networks in general, not BlindPay's end-to-end ETA, which adds BlindPay's own processing. And TED's 7-day window exists to cover a Friday cut-off with reconciliation the following week.

The local rails are fast because the rails themselves are fast. Banco de México says a [SPEI payment should not take more than 30 seconds](https://www.banxico.org.mx/services/interbanking-electronic-payme.html) after approval, and Argentina's central bank describes [Transfers 3.0](https://www.bcra.gob.ar/en/transfers-3-0/) as transfers credited online in a maximum of 15 seconds. [Pix](https://www.bcb.gov.br/en/financialstability/pix_en) runs around the clock in Brazil.

US bank rails work in batches and business days. The Federal Reserve's [FedACH processing schedule](https://www.frbservices.org/resources/resource-centers/same-day-ach/fedach-processing-schedule.html) runs on fixed transmission deadlines and settlement times, and BlindPay's cut-off reference lists a 9:00 PM ET ACH cut-off and a 3:00 PM ET domestic wire cut-off. Miss it and the transfer waits for the next business day.

## Illustrative example: how long does a Monday-evening on-ramp take?

Illustrative example. Two customers start an on-ramp at 6:00 PM local time on a Monday.

| Step | Customer A: R$5,000 over Pix | Customer B: $5,000 over ACH |
| --- | --- | --- |
| Quote and payin created | 6:00 PM | 6:00 PM |
| Payer sends | 6:02 PM | 6:30 PM (after the domestic wire cut-off, before the ACH cut-off) |
| Deposit arrives | Within minutes, say 6:05 PM | Network estimate 1-3 business days, say Wednesday |
| USDC delivered | Minutes later, say 6:07 PM | After arrival and BlindPay processing |
| Total | About 7 minutes | Up to 5 business days per BlindPay's window |

Same amount, same minute, a gap of days. The difference is not the stablecoin leg. It is the bank leg that feeds it.

Customer B has an extra option. If the payer misses the 9:00 PM ET ACH cut-off, the arithmetic shifts by one more business day: Monday 9:01 PM behaves like Tuesday morning.

## Where does the on-ramp clock actually start?

When the fiat lands. Not when you request the quote, and not when you create the payin.

That matters for your UX copy. "USDC in 5 minutes" is true for a Pix payer who pays immediately. It is false for a Pix payer who opens the code, gets distracted, and pays 25 minutes later. The rail was fast. The human was not.

It also matters for the 5-minute quote window. The quote is about locking numbers, not about delivery. You create the payin inside those 5 minutes; the deposit can come after. [Where the exchange rate gets fixed](/resources/more/where-is-the-exchange-rate-set-onramp-offramp) walks through exactly when the rate stops moving on each side.

OTC Pix quotes are the exception. They expire in 10 seconds, and BlindPay waits for the deposit until 23:59 BRT the same day instead of a rolling 30-minute window. If that deposit never arrives, the docs add a flat $100.00 penalty to the quote's billing fee.

## What slows an on-ramp down?

Four things, in rough order of how often they bite.

1. **The payer.** Late payment is the most common delay, and no rail fixes it. Show a countdown and a clear "pay now" state.
2. **Cut-offs.** ACH, wire, and TED follow business days. A Friday evening transfer can sit until Monday, and longer around holidays.
3. **Mismatched details.** A Pix from a tax ID that isn't allowed by the quote's `payer_rules`, or a US transfer without the memo code, can't be matched cleanly. [Why on-ramp deposits fail](/resources/more/why-crypto-on-ramp-deposits-fail) lists the patterns.
4. **Compliance holds.** A payin can go `on_hold` for manual review. The cut-off reference says holds can take up to 30 days to resolve.

There's also a funding option in private beta since September 18, 2026: ACH pull, where BlindPay debits a bank account the customer connected through Plaid instead of waiting for a manual transfer. It removes the "payer forgot to send" delay on the US side, and the quote adds a flat $1.00 fee for it.

## How should you set expectations in your product?

Promise per rail, not per product. A single "funds arrive in minutes" line is guaranteed to be wrong for someone.

A pattern that works:

- **Pix, SPEI, Transfers 3.0, PSE:** "Usually arrives within minutes after you pay."
- **US ACH and wire:** "Arrives within a few business days after your bank sends it."
- **On hold:** "Under review. We'll update you as soon as it clears."

Drive every status change from webhooks. `payin.new` fires when the payin is created, `payin.update` fires when its status or tracking data changes, and `payin.complete` fires when the stablecoins reach the destination wallet. The payin moves through `processing`, then `completed`, `failed`, or `refunded`, with `on_hold` possible along the way. [How to integrate a crypto on-ramp API](/resources/more/how-to-integrate-a-crypto-on-ramp-api) has the full webhook handling.

If you're choosing which rails to offer in the first place, [how to on-ramp BRL, MXN, ARS, and COP](/resources/more/how-to-on-ramp-local-currency-latin-america) covers each local rail in detail, and [how to read an FX quote](/resources/more/how-to-read-an-fx-quote) explains the rate the payer sees before they pay.

## Does the stablecoin leg add time?

Barely. Once BlindPay has the fiat, it converts and sends the stablecoin on the destination wallet's network. That's one on-chain transaction.

The docs add one practical detail: if the delivery transaction gets replaced during a gas spike, BlindPay resolves the transaction that actually landed. The hash you see in `tracking_complete` can differ from the one you first saw broadcast. Treat `status` as the source of truth, not a specific hash.

What about the USDC itself? [Where on-ramp USDC comes from](/resources/more/where-does-onramp-usdc-come-from) covers why the stablecoin side is rarely the bottleneck.

## What to do next

Create a payin quote on a development instance for each rail you plan to offer, then write one line of arrival copy per rail using the windows in the [payins docs](/docs/payins). Swap the sandbox's 30-second auto-complete for real numbers before launch.
