Where does on-ramp USDC come from? Issuer minting vs buying on the market
On-ramp USDC is either minted by the issuer or bought on the secondary market. How each works, how arbitrage links them, and what it means for quotes.
On-ramp USDC comes from one of two places. The issuer, Circle, mints new USDC when an approved institution deposits dollars. Or existing USDC is bought on the secondary market from exchanges, market makers, and other holders. The token is identical either way, but the source shapes the price, hours, and size a ramp can quote.
Most people buying stablecoins never think about this. You send dollars or reais, USDC shows up in a wallet. But the path behind that quote explains why dollar on-ramps cost almost nothing and real on-ramps carry a spread.
Key takeaways
- New USDC is minted at par by Circle for approved institutional customers only.
- Everyone else buys existing USDC on the secondary market: exchanges, DeFi pools, OTC desks.
- Arbitrage between the two markets keeps USDC close to one dollar.
- A dollar on-ramp is mostly fees. A local currency on-ramp adds an FX spread from the local market.
- For a buyer, the source matters less than whether the quote is firm, fast, and fully itemized.
How is new USDC created?
New USDC is minted by Circle when an eligible customer deposits dollars, and burned when it is redeemed for dollars. This is called the primary market.
Access is restricted. Circle describes Circle Mint as "for institutional customers," typically exchanges, institutional traders, wallet providers, banks, and consumer apps, and says customers must pass background, KYC, and sanctions checks (Circle Mint). It is not offered to retail consumers. Circle also states that USDC can be redeemed 1:1 for US dollars through Circle.
The dollars behind the tokens sit in reserves. Circle says the majority is held in the Circle Reserve Fund, the rest mostly in cash at large banks, held separately from Circle's operating funds, with weekly disclosures and monthly third-party assurance from a Big Four accounting firm (Circle transparency). What USDC is covers the backing in more detail.
What is the secondary market for USDC?
The secondary market is everywhere existing USDC changes hands: centralized exchanges, decentralized exchange pools, OTC desks, and market makers.
This is where prices are set day to day. A Federal Reserve note on stablecoin markets says "secondary markets for stablecoins provide the default source of pricing data for market observers," and that for USDC "only direct customers of Circle (cleared through an application process) have access to the primary market" (Federal Reserve, FEDS Notes, February 2024).
Market makers sit between the two. They hold inventory of USDC and dollars (or reais, or pesos) and quote both sides. What a market maker does in stablecoin payments explains how their price becomes the rate on your quote.
How do the primary and secondary markets compare?
| Question | Primary market (mint and redeem) | Secondary market (trade) |
|---|---|---|
| Who can use it | Approved institutional customers of the issuer | Anyone with an exchange account, wallet, or ramp |
| Price | Par: one dollar in, one USDC out | Floats around one dollar, usually very close |
| Hours | Tied to banking hours for the dollar leg | Exchanges and blockchains trade 24/7 |
| Size | Built for large tickets | From tiny trades to large OTC blocks |
| Main dependency | Banks moving dollars to and from reserves | Depth of order books and pools |
| What can go wrong | Bank delays, reserve problems | Price drifts from the peg in stress |
Neither is better in general. A large institution with dollars sitting in a bank on a Tuesday morning gets par from the issuer. A payment on a Sunday night needs the secondary market. Onchain liquidity vs off-ramp liquidity explains why deep onchain pools still don't guarantee a deep local payout.
How does arbitrage keep the two prices together?
When the secondary price drifts, direct customers of the issuer trade the gap away.
If USDC trades at $0.997 on an exchange, a direct customer buys it there and redeems it with Circle at $1.00. If it trades at $1.003, they mint at $1.00 and sell above par. The Fed note describes exactly this: direct customers profit from "differences between the primary exchange rate and the exchange rate on secondary markets," which pushes prices back toward the peg.
It works until the primary market can't keep up. In March 2023, after part of USDC's reserves got stuck at a failed US bank, USDC and DAI de-pegged, "reaching lows of under 90 cents," and Circle said USDC "issuance and redemption is constrained by the working hours of the U.S. banking system" (same Fed note). Prices recovered over roughly three days. Stablecoin depeg risk for payment companies covers how to set limits for events like that.
Why do dollar on-ramps and local currency on-ramps price differently?
Because a dollar on-ramp is dollar to dollar, and a local currency on-ramp is a currency conversion plus dollar to dollar.
- USD to USDC. The ramp collects dollars over ACH or wire and delivers USDC. There is no FX. The cost is mostly fees. Is USDC to USD always 1:1? covers the same idea in the other direction.
- BRL to USDC. The reais have to become dollars first, in the BRL market, then dollar tokens. The FX spread from that conversion usually dominates the total cost.
How to read an FX quote explains which way the rate points on an on-ramp, and how to on-ramp BRL, MXN, ARS, and COP covers the local rails.
Illustrative example: where does the cost sit on two on-ramps?
Illustrative example. Two customers each want about 10,000 USDC. One pays in dollars, one in reais over Pix. The rates and fees below are made up to show the math. They are not BlindPay prices.
| Line | USD over ACH | BRL over Pix |
|---|---|---|
| Market rate | 1.0000 USD per USDC | 5.4000 BRL per USDC |
| Quoted rate | 1.0000 USD per USDC | 5.4270 BRL per USDC |
| Margin in the rate | 0% | (5.4270 - 5.4000) / 5.4000 = 0.50% |
| Amount paid in | $10,000.00 | R$ 54,000.00 |
| USDC before fees | 10,000 / 1.0000 = 10,000.00 | 54,000 / 5.4270 = 9,950.25 |
| Flat fee | 2.00 USDC | 2.00 USDC |
| USDC received | 9,998.00 | 9,948.25 |
| Total cost vs market | 2.00 USDC (0.02%) | 10,000.00 - 9,948.25 = 51.75 USDC (0.52%) |
Same flat fee. The real on-ramp costs 26 times more, and almost all of it is the FX spread. That spread comes from the BRL market and whoever holds reais and dollars on the other side, not from how USDC was created.
Does it matter to you where a ramp's USDC comes from?
Mostly no. USDC is fungible. A token minted this morning and one traded a thousand times carry the same claim.
What matters is what the source lets the ramp promise you:
- A firm quote. Can it lock the rate and fees for a stated window?
- Hours. Can it quote on weekends and outside US banking hours?
- Size. Does the rate hold at the ticket size you actually send?
- Itemization. Does the quote separate the market rate, the margin, and fees?
- Behavior in stress. What happens to quotes if the peg wobbles?
How does a BlindPay on-ramp quote show the cost?
A BlindPay on-ramp starts with a payin quote. It returns sender_amount, the fiat the payer sends, receiver_amount, the stablecoin the destination wallet receives, and commercial_quotation, the raw market rate, next to blindpay_quotation, the rate including BlindPay's fee. The quote is valid for 5 minutes (payin quotes).
Payins can be funded over ACH, wire, Pix, SPEI, Transfers 3.0 in Argentina, and PSE in Colombia, and deliver USDC or USDT to an external blockchain wallet or a BlindPay-managed wallet, depending on the network. Large BRL payins can use an OTC quote with a 10-second window. OTC quotes vs standard quotes covers when that fits. BlindPay combines a monthly plan with per-transaction fees that vary by rail and network and are disclosed in the live quote before execute.
What to do next
Request a payin quote in dollars and one in reais for the same stablecoin amount on a development instance, and compare the gap between commercial_quotation and blindpay_quotation on each. The payin quotes docs have request examples for every payment method.
FAQ
More payments articles
See all payments articlesACH pull vs ACH push: two ways to fund a USD to USDC on-ramp
Push means the payer sends an ACH transfer. Pull means you debit a connected account. How each funds a USD to USDC on-ramp, the fees, and the return risk.
On/off ramp liquidity with live quotes: how it works and why it matters
What on/off ramp liquidity with live quotes means for developers: live quote vs batch rate, the quote ID flow in an API, what happens on expiry, how liquidity depth changes spread by transaction size, rate windows and UX, and a checklist for evaluating a live quote API.
BIN sponsor vs. issuer-processor vs. program manager: who does what in a card program
The three roles behind every card program, stablecoin cards included: what each one does, who carries liability, and what to ask a provider.