On-ramp and off-ramp fees are the gap between what a sender puts in and what a receiver gets out when local currency becomes a stablecoin, or back. Six costs can sit in it: the exchange-rate spread, rail fee, network cost, provider fee, platform fee and, on a held rate, a lock fee. The spread is the hardest to see.
Best for: finance and product teams who have a quote in hand and want to know which line is the real price.
Ramps are defined in what a stablecoin on-ramp is and what a stablecoin off-ramp is. Lumx payout pricing has its own guide in how stablecoin payout pricing works.
Which costs sit between the money in and the money out?
Six, and not every provider charges all of them. Some show lines, some fold them into the rate.
The rails in the table: Pix (Brazil's instant payment system), SPEI (Mexico's interbank transfer system), PSE (Colombia's online bank-transfer network), Bre-B (Colombia's instant payment system), SEPA (the euro area's payment scheme), FPS (the UK's Faster Payments), ACH (the US batch bank-transfer network), FEDWIRE (the Federal Reserve's same-day wire system) and SWIFT (the international bank messaging network for cross-border wires).
Fee anatomy of one conversion, by direction. Illustrative structure, not a price list.
Cost | On-ramp (local currency to stablecoin) | Off-ramp (stablecoin to local currency) |
Spread | The conversion from reais, pesos or dollars into USDC or USDT | The conversion from USDC or USDT into the local currency |
Rail fee | Collecting the deposit: Pix, SPEI, PSE, Bre-B, SEPA, FPS, ACH, FEDWIRE, SWIFT | Paying out: Pix, SPEI, Bre-B, SEPA, FPS, ACH (US and Colombia), FEDWIRE, SWIFT |
Network cost | Delivering the stablecoin to the wallet | Moving the stablecoin to the off-ramp |
Provider fee | A per-transaction or percentage fee on the ramp | The same, on the other direction |
Platform fee | Your own markup on top of the provider's price | The same |
Lock fee | A charge for holding the rate for a set time, where the provider offers a lock | The same |
The spread row is the one to watch. USDC trades close to one dollar, so a dollar-to-USDC conversion has little to price. A reais-to-USDC conversion is a foreign exchange trade, and the distance between the market rate and the rate you are given is where much of the cost can sit.
On Lumx, a locked quote splits its fees into the Lumx fee, the partner fee and the total, so the platform's share and Lumx's share are separate lines. The lock fee is there too: the 30-second lock carries none, and the 1-minute and 5-minute locks include a fee for the volatility risk.
How do you read a quote, line by line?
Start from the receiver amount, the one figure anyone gets to spend.
The six parts of a complete quote, and the check for each.
Part | What it tells you | The check |
Sender amount | What leaves the payer, in the payer's currency | Matches the invoice or the deposit you expect |
Market rate | The reference rate before the provider's margin | Compare with a public rate at the same minute |
Final rate | The rate actually applied to the conversion | Final rate versus market rate is the spread |
Fee lines | Rail, provider and platform fees, each with an amount and a currency | Add them: a quote that shows none and delivers less than the market rate has put them in the rate |
Receiver amount | What lands in the wallet or the bank account | Sender amount divided by receiver amount is the all-in rate |
Expiry | When the quote stops being valid | A rate with no expiry is a floating rate, whatever it is called |
The all-in cost is one subtraction. Take the amount the receiver would get at the market rate, subtract what they get at the final rate with every fee deducted, and divide by the first. With the illustrative numbers used below, R$10,000 at a market rate of 5.40 reais per USDC is 1,851.85 USDC at the market rate. After a 0.20% spread and 0.55 USDC of flat costs, the receiver gets 1,847.60 USDC, so the all-in cost is 4.25 USDC, or 0.23%.
A quote in one direction says nothing about the other, because the rail and the liquidity behind each leg differ. Validity is covered in how long a payment quote lasts, and whether it binds the provider in indicative versus binding quotes.
On Lumx, a locked response returns baseExchangeRate, finalExchangeRate, fees.lumx, fees.partner, fees.total, finalTargetAmount and expiresAt, so the six-part check is one response. Amounts come back as strings with six decimals, so compare them as decimals.
How much do on-ramp and off-ramp fees cost?
No neutral public series covers ramp fees alone. The closest is the World Bank's Remittance Prices Worldwide series: the average total cost, as a share of the amount, of sending 200 US dollars, exchange-rate margin included. It is a remittance price, not a ramp price, but it measures what the receiver loses end to end at a small ticket.
Average total cost of sending 200 US dollars to each country, World Bank Remittance Prices Worldwide via the World Development Indicators API (SI.RMT.COST.IB.ZS), series last updated October 8, 2026, read November 1, 2026.
Destination | 2022 | 2023 |
Brazil (USDC to BRL) | 2.30% | 2.42% |
Colombia (USDC to COP) | 2.49% | 2.43% |
Mexico (USDC to MXN) | 1.34% | 2.65% |
2023 is the latest year for these three countries, so read it as a reference point, not today's price. A newer reference is BIS Working Paper 1385 (October 2026), as cited by BlindPay: the median cost of money transfer operators is around 200 to 300 basis points on a 200 dollar transfer and falls to around 40 to 130 basis points on 10,000 dollars.
The same fees at $200, $2,000 and $20,000
Percentage costs grow with the amount and flat costs do not. The table uses one illustrative stack: a 0.20% spread, a flat rail and provider cost of 0.50 dollars and a network cost of 0.05 dollars on a generic low-cost chain, not a named one. These are assumptions chosen low, not Lumx rates and not a Lumx price.
All-in cost of one conversion at three ticket sizes, in dollars. Illustrative assumptions stated above.
Amount sent | Spread (0.20%) | Flat costs | All-in cost | All-in rate | Receiver gets |
$200 | $0.40 | $0.55 | $0.95 | 0.48% | $199.05 |
$2,000 | $4.00 | $0.55 | $4.55 | 0.23% | $1,995.45 |
$20,000 | $40.00 | $0.55 | $40.55 | 0.20% | $19,959.45 |
At $200 the flat costs are over half the bill. At $20,000 the spread is nearly all of it. Compare quotes at the amounts you will actually send, never at a provider's example amount.
How do you lower on-ramp and off-ramp fees?
At small tickets, negotiate the flat lines. At large tickets, negotiate the spread. Pick the rail on cost and cut-off: Pix and SPEI run 24/7/365 with instant settlement, while the Lumx rail cut-off documentation says each SWIFT correspondent bank can add hours or days and may deduct fees. Pick a cheap chain, and buy no longer a lock than the flow needs.
On Lumx, the chain is chosen on the request or the project's default applies, across Ethereum, Base, Polygon and Tron, plus Stellar for BRL on-ramps only, and the 30-second lock carries no fee. Lumx subsidizes the network fee on its own legs, so the customer does not need ETH or TRX.
Sender pays or receiver pays: one fee, two invoices
A fee deducted from the amount delivered means the receiver gets less than the invoice. A fee added on top means the sender pays more. With the $2,000 row above, the first version delivers $1,995.45. The second asks the sender for $2,004.56 so that $2,000.00 arrives, because the 0.20% spread is taken on the larger amount too.
A supplier invoice for a fixed amount calls for the second, a top-up of "R$10,000 worth" for the first. Choose one convention per flow.
The receiver's own bank can also charge for an incoming transfer, outside every quote. A SWIFT wire is the extreme case: Lumx's rail documentation says intermediary banks may deduct fees along the way, outside Lumx's control.
On Lumx, finalTargetAmount on a locked quote already counts the Lumx fee and any partner fee, and the fee lines are stated on the quote or receipt. The receiving bank can still charge outside the quote. A partner fee applies only when its id is on the request.
How the rail changes the bill
The rail sets the flat cost, the speed and the cut-off. A payment that misses a cut-off waits for the next business day.
Rails that carry an on-ramp deposit or an off-ramp payout. Timing and limits come from the Lumx cut-off page, except the COP rows, which reflect Lumx's coverage as of November 2026. Bre-B ceiling from the Banco de la República. Read November 1, 2026.
Rail | Direction on Lumx | Timing and limits |
Pix | Deposit and payout, BRL | Instant, runs 24/7/365, no cut-off |
SPEI | Deposit and payout, MXN | Instant, runs 24/7/365, no cut-off |
PSE | Deposit only, COP | A pull rail: the payer authorizes a debit |
Bre-B | Deposit and payout, COP | Instant; the Banco de la República caps it at 1,000 UVB per transaction |
ACH Colombia | Payout, COP | No per-payment limit; no settlement time confirmed |
SEPA | Deposit and payout, EUR | No cut-off; Lumx routes each payment to SEPA Instant or SEPA Credit Transfer (same or next business day) |
FPS | Deposit and payout, GBP | Instant, up to GBP 1M per payment, runs 24/7/365 |
ACH | Deposit and payout, USD | 2:00 PM ET cut-off, 1 to 2 business days |
FEDWIRE | Deposit and payout, USD | 3:00 PM ET cut-off, same business day |
SWIFT | Deposit and payout, USD | 3:00 PM ET cut-off, 1 to 5 business days |
Bre-B's ceiling is regulatory: 1,000 UVB (the Banco de la República's basic value unit), or COP 12,110,000 for 2026, under Circular Reglamentaria Externa DSP-465. On Lumx the rail is fixed on the destination, Bre-B or ACH Colombia, chosen when the destination is set up, so a Bre-B payout above 1,000 UVB is refused, never split or rerouted. ACH Colombia has no per-payment limit and no settlement time is stated, so a larger invoice goes to an ACH Colombia destination. Per-rail cut-offs and limits are in payout limits and cut-offs by rail.
I would not sign off a provider comparison that lists fee lines but never shows a receiver amount for a fixed sender amount. Fee lines are the part a provider chooses to present, and the receiver amount is the part it cannot rearrange, so I compare the second one, at the same minute, for the amount we expect to send most. I also ask for the same quote in both directions before reading either, because a team that only prices the deposit tends to discover the payout later, when the contract is already signed.
When comparing fee lines is the wrong exercise
Comparing fee lines is the wrong tool when the quote cannot be locked: the spread shown is a forecast, so compare what happens when the rate moves. Size a buffer for the lock window. On Lumx, a floating rate is a real-time reference with no lock, and only a locked rate fixes the conversion, so a flow that cannot use a locked quote should carry that buffer. Live quote versus forward contract covers that choice.
How these fees show up on a Lumx quote
Lumx is stablecoin payments infrastructure for businesses that move money between Latin America and the rest of the world: one API to collect, hold, convert, and pay out in BRL, MXN, COP, USD, EUR, and GBP or in USDC and USDT, over local rails such as PIX, SPEI, PSE, Bre-B, ACH, FEDWIRE, SEPA, and Faster Payments, with SWIFT and on-behalf-of payments and collections (POBO and COBO) in USD, EUR, and GBP, plus named virtual accounts, custodial wallets, and KYB/KYC built in.
The pricing model is a monthly platform fee plus usage-based per-transaction fees, transparent FX on locked quotes, no pre-funding. No pre-funding means the customer does not leave capital idle in settlement accounts: the conversion and settlement happen when the transaction starts. This post gives no Lumx rates, because the proposal is where they live.
Rates are floating or locked for 30 seconds, 1 minute or 5 minutes, per the exchange rates documentation.
Collections use named virtual accounts, and named versus pooled accounts decides who reconciles what. Rails are on the coverage page, jurisdictions on the supported countries list, and the flow in global payments.
If your platform adds its own fee, Lumx supports a partner fee set as a rate, a flat amount or both, configured once and applied by reference, and included in a locked quote when the quote is requested. How to decide the number, and whether to show it or absorb it, is the subject of who pays the FX cost.
Methodology and sources
Product behavior was read on November 1, 2026 from the Lumx documentation: exchange rates, partner fees, rail cut-off times and the exchange-rate API reference. The Bre-B ceiling is from Banco de la República, Circular Reglamentaria Externa DSP-465, Asunto 18, numeral 3.2. The 2022 and 2023 percentages are from the World Bank series SI.RMT.COST.IB.ZS, updated October 8, 2026. The BIS Working Paper 1385 (October 2026) figures are quoted as cited by BlindPay, not read in the paper. Ramp providers' own pricing pages are not quoted, and no provider range is given. Every other figure is an illustrative assumption, not a market rate and not a Lumx price.
Verified on November 1, 2026. Operational context, not legal, tax, or investment advice.
What are on-ramp and off-ramp fees?
They are the costs between what a sender pays and what a receiver gets when local currency becomes a stablecoin or the reverse: the spread, rail fee, network cost, provider fee, platform fee and, on a held rate, a lock fee. The spread is the hardest to see, since it sits in the rate. On Lumx, a locked quote returns the market rate, the final rate and the fee split in one response.
How much do on-ramp and off-ramp fees cost?
It depends on the ticket size, the rail and the provider. No neutral public series covers ramp fees alone. The World Bank's series for sending 200 US dollars put the average all-in cost at 2.42% to Brazil, 2.43% to Colombia and 2.65% to Mexico in 2023. On Lumx, pricing is a monthly platform fee plus usage-based per-transaction fees, and rates are in the proposal.
Are on-ramp and off-ramp fees the same?
The parts are the same and the weights differ. On a deposit, the collection rail and the rate decide most of the cost. On a payout, the payout rail and any intermediary bank matter more. On Lumx, a quote is requested per direction, and partner fees are set separately for on-ramp and off-ramp, so compare a deposit quote and a payout quote separately.
Who pays the fee, the sender or the receiver?
Either can, and the invoice should say which: a fee deducted from the amount delivered lowers what the receiver gets, and a fee added on top raises what the sender pays. On Lumx, `finalTargetAmount` on a locked quote already counts the Lumx fee and any partner fee, and the fee lines are stated on the quote or receipt; the receiving bank can still charge outside it.
How do ramp fees compare with a bank wire or SWIFT?
A SWIFT wire adds costs a ramp path on a local rail does not show up front: each correspondent bank can add hours or days and may deduct fees from the amount on the way, outside the sender's control, and settlement runs 1 to 5 business days after a 3:00 PM ET cut-off. A Pix or SPEI leg settles instantly, 24/7/365. On Lumx, SWIFT is available in USD for deposits and payouts, and the cut-off documentation states the intermediary-fee warning.





