Onchain liquidity vs off-ramp liquidity: why a deep DEX pool doesn't mean a deep BRL payout
Onchain liquidity is tokens in pools. Off-ramp liquidity is local currency a provider can pay into bank accounts. Why one doesn't predict the other.
Onchain liquidity is how much you can swap between tokens on a blockchain before the price moves. Off-ramp liquidity is how much local currency a provider can pay into bank accounts, at a quoted rate, over rails like Pix or SPEI. They're different pools of money, so a deep USDC pool says nothing about a deep BRL payout.
The confusion is easy to make. Both get called "stablecoin liquidity," both have spreads and slippage, and both show up in the same payment. But one lives in smart contracts and the other lives in bank accounts. This guide separates them, does the pool math on a $50,000 swap, and shows which one to check for your use case.
Key takeaways
- Onchain liquidity is tokens in pools and order books. Its output is tokens in a wallet.
- Off-ramp liquidity is local currency in bank accounts, plus the ability to bind a quote and deliver over a rail.
- A deep USDC/USDT pool moves you between two dollar tokens. It doesn't put reais in a bank.
- Pool depth shows up as price impact. Off-ramp depth shows up as the rate on quotes at several sizes.
- Choose the network for fees and finality. Choose the off-ramp for depth and delivered amount.
What is onchain liquidity?
Onchain liquidity is the token balance available to trade against on a blockchain, mostly in automated market maker pools and exchange order books. A pool holds two or more tokens and prices each swap from the balances it holds.
Uniswap, the best-known example, started as "an automated liquidity protocol based on a 'constant product formula'," per the Uniswap v2 whitepaper. The pool keeps the product of its two balances constant (x times y), so every token you take out costs more than the last one.
That's what price impact means. Uniswap's swaps documentation puts it plainly: "The greater the liquidity available at a given price, the lower the price impact for a given swap size." It defines slippage separately, as "alterations to a given price that could occur while a submitted transaction is pending." You cap it with a slippage tolerance, and if the price moves past it, the swap fails.
Pools built for pegged assets go further. The StableSwap paper behind Curve describes "a fully autonomous market-maker for stablecoins with very minimal price slippage." For USDC to USDT, onchain liquidity is very good. The market maker explainer covers how these pools compare with human market makers.
What is off-ramp liquidity?
Off-ramp liquidity is a provider's ability to take your stablecoins and pay local currency into a bank account, at a rate it committed to, at the size you need. The glossary for this cluster defines it as converting at size, at a quoted rate, without the price moving against you.
Three things have to exist for it to work:
- Local currency in bank accounts. Reais in Brazil, pesos in Mexico, sourced from the provider's own inventory, market makers, or banking partners.
- A binding quote. A price the provider will honor for a window, so the amount you see is the amount that lands.
- Rail access. A connection to Pix, SPEI, ACH, SEPA, or SWIFT (POBO/COBO) that delivers the money.
None of those are onchain. You can read a pool's reserves from any block explorer. You can't read a provider's reais. You infer them from how its quotes behave at size, which is what on/off-ramp liquidity with live quotes walks through.
How do onchain and off-ramp liquidity compare?
Side by side, they share vocabulary and little else.
| Onchain liquidity | Off-ramp liquidity | |
|---|---|---|
| What's in the pool | Tokens (USDC, USDT, other tokens) | Local currency in bank accounts |
| Where it lives | Smart contracts and exchange books | Bank accounts at the provider or its partners |
| How the price is set | A formula or an order book, per swap | A quote from the provider, binding for a window |
| How you see depth | Read the pool reserves | Request quotes at several sizes |
| What slippage means | Price change while your transaction is pending | Gap between shown rate and settled rate |
| What you end up with | Tokens in a wallet | Money in a bank account |
| Hours | Every block, all week | The destination rail's hours (Pix and SPEI run 24/7) |
| Identity checks | Usually none at the pool | KYC or KYB before the first payout |
The bottom row explains a lot. A pool will swap for anyone. An off-ramp has to know who is sending and who is receiving, because it is moving money into the banking system. Types of crypto off-ramps covers the different ways that gets done.
Why doesn't a deep USDC pool mean a deep BRL payout?
Because the reais aren't in the pool. A USDC/USDT pool, however large, swaps one dollar token for another. Getting reais into a Brazilian bank account needs somebody who holds reais in Brazilian bank accounts and will sell them to you.
Some pools hold tokens pegged to local currencies. Swapping into one still leaves you holding a token, not a bank balance. Turning that token into reais is a second off-ramp, with its own spread and its own depth. The direct vs indirect exchange guide explains why each extra hop adds cost.
Illustrative example. A constant-product pool holds 2,000,000 USDC and 10,800,000 units of a hypothetical BRL-pegged token, a price of 5.40. You swap 50,000 USDC in, ignoring pool fees:
- Tokens out = 10,800,000 - (2,000,000 x 10,800,000) / 2,050,000
- = 10,800,000 - 10,536,585.37 = 263,414.63 tokens
- Effective rate: 263,414.63 / 50,000 = 5.2683
- Price impact: (5.40 - 5.2683) / 5.40 = about 2.44%, or 244 bps
A $50,000 swap moved the price 244 bps in a $4 million pool. And you still hold tokens. An off-ramp with real depth quotes $50,000 at close to the same rate as $500, because the reais come from inventory sized for payouts, not from a pool sized for swaps. You'd confirm that with quotes at both sizes, captured in the same minute.
Where do the two meet in an off-ramp?
At one moment: when your stablecoins move onchain to the provider. Everything before that is onchain. Everything after is bank money.
- You get a quote. At BlindPay, a payout quote takes the bank account, the amount, the
network, and thetoken, and returns the rate, fees, andreceiver_amount, valid for 5 minutes by default. - You authorize the exact amount. On EVM chains, you
approvethe quoted amount using thecontractpayload in the quote (payout with EVM). Stellar and Solana have their own authorization flows. - The stablecoins move onchain. Network fees and confirmation time depend on the chain. What happens onchain in a stablecoin payment walks through this leg.
- The provider pays out locally. The reais or pesos come from off-ramp liquidity and land over the rail.
BlindPay settles stablecoins on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron, with USDC or USDT depending on the network. The supported chains reference lists every valid pair. Payouts funded from a wallet you control are non-custodial: you authorize the exact amount and BlindPay executes that single transaction.
The chain changes step 3. It doesn't change step 4. That's the whole point of keeping the two liquidity types apart.
Which one should you check before choosing a route?
The one that matches where the money needs to end up.
- Ending in tokens (treasury rebalancing between USDC and USDT, moving funds between wallets): check onchain liquidity. Look at pool depth, expected price impact, and set a slippage tolerance.
- Ending in a bank account (supplier payments, payroll, marketplace payouts): check off-ramp liquidity. Request quotes at several sizes, confirm they're binding, and compare the delivered amount.
- Both (you hold USDT on Tron but your recipient needs reais): check the network for fees and finality, and the off-ramp for depth. The best network to off-ramp stablecoins compares chains on the first part.
Decision rule: never use a pool size to judge an off-ramp. A pool tells you about tokens. A quote at size tells you about the payout.
What to do next
Pick your largest regular payout, then request payout quotes at that size and at a tenth of it, on the network you already hold funds on. If the rate barely moves, the off-ramp has the depth you need, whatever the pools look like.
FAQ
More stablecoins articles
See all stablecoins articlesStellar anchors vs a payout API: how SEP-24, SEP-31, and SEP-38 off-ramp USDC
How Stellar anchors off-ramp USDC through SEP-24, SEP-31, and SEP-38 quotes, how a payout API does the same job, and which one fits your product.
Does the blockchain network change your off-ramp quote? What moves and what doesn't
Network and token are inputs to every payout quote. Which quote lines can change by chain, where gas sits, and how to compare two networks fairly.
Stablecoins vs Bitcoin for business payments: price risk, settlement, accounting, and rules
Stablecoins or Bitcoin for business payments? Compare price stability, settlement, US tax, the GENIUS Act, and issuer risk, with a clear decision rule.