---
title: "How do on/off-ramp providers make money? Spread, fees, float, and partner cuts"
seoTitle: "How on/off-ramp providers make money: spread, fees, float"
description: "Where an on/off-ramp provider earns on each conversion: the spread, fee lines, float, partner cuts, and plans. Plus where a zero-fee ramp puts its cost."
date: "2026-09-29"
updated: "2026-09-29"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How do crypto on-ramp and off-ramp providers make money?"
    a: "Mostly from the spread, the gap between the market exchange rate and the rate they give you, and from explicit fees per transaction. Some also earn interest on balances they hold between steps, take a cut when a partner adds its own markup, or charge a monthly platform plan. Most providers combine two or three of these, so compare the total cost, not one line."
  - q: "Is a zero-fee on-ramp really free?"
    a: "Rarely. A provider still pays for liquidity, banking, compliance, and fraud losses, so a zero-fee offer usually moves the cost into the exchange rate. Compare the amount the recipient actually receives with the mid-market value of what you sent. If a zero-fee quote delivers less than a quote with a visible fee, the spread was the fee."
  - q: "What is float income for a payment provider?"
    a: "Float income is interest a provider earns on money it holds for customers between steps, such as a prefunded balance or funds waiting to settle. It depends on the custody model. When a customer authorizes a single transaction from its own wallet and the provider executes only that transaction, no customer balance sits with the provider between payouts."
  - q: "Why do card on-ramps cost more than bank transfer on-ramps?"
    a: "Card payments carry processing costs and the risk of chargebacks, where the cardholder disputes the charge after the stablecoins are already delivered. The provider prices that risk into the fee or the rate. Bank transfers such as ACH, wire, Pix, or SPEI have lower processing costs and different return rules, so they are usually priced lower for the same amount."
  - q: "How does BlindPay charge for on-ramps and off-ramps?"
    a: "BlindPay combines a monthly plan for platform access with per-transaction fees that vary by rail and network. Those fees are disclosed only in the live quote before you execute, through fields such as commercial_quotation, blindpay_quotation, and flat_fee. There is no static flat rate card, so the quote's fee breakdown is the number to use."
  - q: "Can a platform add its own fee on top of a ramp provider's price?"
    a: "Yes, many providers let the platform add a markup. On BlindPay this is a partner fee, percentage or flat, set separately for payins and payouts. It appears as partner_fee_amount on each quote, accumulates over the calendar month, and is released on the first day of the following month, net of the platform's BlindPay invoice."
---

On/off-ramp providers make money from the spread between the market rate and your rate, from explicit fees per conversion, and sometimes from interest on balances they hold, partner revenue shares, and monthly plans. A zero-fee ramp still earns. The cost usually sits in the exchange rate instead of a fee line.

That matters for anyone comparing ramps. Two quotes for the same $10,000 can look opposite on paper, one with no fee and one with a $25 fee, and the "free" one can deliver less. Once you know the five ways a ramp earns, you can read any quote and find the cost. Terms used below are defined in the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary).

**Key takeaways**

- The spread is the main revenue line for most ramps: the gap between the market rate and the rate you get.
- Explicit fees come as a percentage, a flat amount, or both, plus network and bank costs passed through.
- Float income depends on custody. A provider that holds your balance can earn on it; one that executes a single authorized transaction does not hold one.
- Partner cuts let the platform in front of the user add its own markup on the provider's price.
- "Zero fee" moves the cost into the rate. Measure the amount received against mid-market.
- BlindPay charges a monthly plan plus per-transaction fees disclosed in the live quote, with no static rate card.

## What are the five ways a ramp provider earns?

A ramp earns from five places: the spread, explicit fees, float, partner revenue, and platform plans. Most providers use two or three of them at once. The mix shapes what you see on a quote, which is why a single headline number rarely tells you the real cost of a conversion.

| Revenue line | Where it shows up | How to spot it | Question to ask |
| --- | --- | --- | --- |
| Spread (FX markup) | Inside the exchange rate | Compare the quoted rate with mid-market at the same minute | What is the market rate on this quote, and what rate do I get? |
| Explicit fee | A fee line, percentage or flat | Read the quote's fee fields | Is the fee per transaction, per rail, or per network? |
| Pass-through costs | Network gas, bank or rail fees | Often bundled into the fee or the rate | Are network and bank costs included or extra? |
| Float | Interest on balances held between steps | Only visible in the custody and funding terms | Who holds my funds before the payout executes? |
| Partner revenue | A markup the platform adds | A separate partner fee field, or a wider rate | Can my platform add a fee, and does the provider share it? |
| Platform plan | A monthly or annual subscription | The contract, not the quote | What does the plan include, and what is charged per transaction? |

The FX Global Code, the conduct standard for wholesale FX, calls the spread a "Mark Up." Principle 14 describes it as "the spread or charge that may be included in the final price of a transaction" to compensate for "risks taken, costs incurred, and services rendered," and asks dealers to make clear that the final price may include it ([FX Global Code](https://www.globalfxc.org/fx_global_code.htm)). Ramps sit downstream of that market, so the same logic applies one layer up.

## Why is the spread the biggest line for most ramps?

Because every conversion crosses it, and it scales with volume without a visible charge. The spread pays for inventory in two currencies, hedging, and the risk of the market moving while a quote is open. It is also the line customers check least, since it hides inside a number that looks like a market price.

On an off-ramp, the provider sells local currency to you for stablecoins, so your rate sits below mid-market. On an on-ramp it buys local currency from you, so your rate sits above it. [Why on-ramp and off-ramp rates differ](/resources/more/why-onramp-and-offramp-rates-differ) walks through both sides and the round-trip cost.

## How do explicit fees work on a ramp quote?

Explicit fees are the lines you can read: a percentage of the amount, a flat fee per transaction, or both. Many providers vary them by payment method, rail, and network, because a card, a Pix transfer, and a SWIFT wire cost very different amounts to process. The best quotes itemize each one.

Card on-ramps usually cost the most. Card processing is expensive, and a cardholder can dispute a charge after the stablecoins are already gone. Providers that accept cards price that chargeback risk in. Bank rails are cheaper to run, which is why bank-funded on-ramps tend to carry lower fees. [Crypto on-ramp fees](/resources/more/crypto-on-ramp-fees-explained) and [stablecoin off-ramp fees](/resources/more/stablecoin-off-ramp-fees-explained) break the lines down per direction.

Network and bank costs are the third group. Some providers pass gas and rail fees through at cost. Others fold them into a flat fee or the rate. Ask which, since a "flat" fee that silently includes gas behaves differently when networks get busy.

## Where does float income come from?

Float is interest earned on money a provider holds for you between steps. It shows up in custodial and prefunded models: you park a balance with the provider, the provider holds the reserves, and the yield on those reserves stays with the provider unless the contract shares it. You never see float on a quote.

Float depends on custody, so ask who holds the money before the payout executes. In a non-custodial payout flow, the customer authorizes an exact amount from its own wallet and the provider executes that single transaction. There is no balance sitting with the provider between payouts. [Non-custodial payments explained](/resources/more/non-custodial-payments-explained) covers the custody models and what each means for counterparty risk.

## How do partner cuts change the price a user sees?

Partner cuts are markups added by the platform in front of the user: a wallet, a marketplace, a payroll app. The ramp provider prices the conversion, the platform adds its fee, and the user sees the total. Some providers share their own revenue with the platform. Others let the platform set a separate fee line.

The difference matters for transparency. A partner fee in its own field lets everyone see who earns what. A partner markup folded into the rate looks like a worse exchange rate. As one example, MoonPay's buy quote API takes an `extraFeePercentage` between 0 and 10 for the partner and returns it next to MoonPay's own `feeAmount` and a separate `networkFeeAmount` ([MoonPay buy quote reference](https://dev.moonpay.com/reference/getbuyquote)).

On BlindPay, a platform adds a partner fee, percentage or flat, set independently for payins and payouts. It appears as `partner_fee_amount` on the quote, accumulates over the calendar month, and is released on the first day of the next month, net of the platform's BlindPay invoice ([partner fees docs](/docs/learn/partner-fees)).

## Where does a zero-fee ramp put the cost?

In the exchange rate, almost always. A provider still pays for liquidity, banks, compliance, and fraud, so the money has to come from somewhere. The way to check is to measure what the recipient receives against the mid-market value of what you sent, at the same minute.

**Illustrative example.** You off-ramp 10,000 USDC to reais. The mid-market rate is 5.40, so the mid-market value is R$ 54,000.

| | Provider A ("zero fee") | Provider B (visible fee) |
| --- | --- | --- |
| Fee | $0 | $25 |
| Rate offered | 5.3460 (1.00% under mid) | 5.3838 (0.30% under mid) |
| Recipient receives | 10,000 × 5.3460 = R$ 53,460.00 | 9,975 × 5.3838 = R$ 53,703.41 |
| Cost vs mid-market | R$ 540.00 (1.00%) | R$ 296.59 (0.55%) |

The zero-fee quote costs almost twice as much. These numbers are illustrative, not any provider's pricing. The method is the point: total cost equals mid-market value minus amount received. [Why the Google rate differs from your quote](/resources/more/why-google-rate-differs-from-quote) explains where to get a fair mid-market reference.

## How does BlindPay make money?

BlindPay combines a monthly plan for platform access with per-transaction fees that vary by rail and network. Those fees are disclosed only in the live quote before execute. BlindPay does not publish a static flat rate card, so the quote's fee breakdown is the number to cite, not a fixed basis-point figure.

Each payout quote returns `commercial_quotation`, the raw market rate, and `blindpay_quotation`, the rate net of BlindPay's fee. It also returns `flat_fee`, `partner_fee_amount`, and `billing_fee_amount`, along with the exact `sender_amount` and `receiver_amount` ([payout quotes docs](/docs/payout-quotes)). So the spread and the fee lines are both visible before you commit. The quote locks them for 5 minutes; read `expires_at` on every response.

BlindPay operates as a non-custodial payment processor for payout flows from customer-controlled wallets: you authorize the exact amount and BlindPay executes that single transaction. Optional BlindPay-managed wallets (beta) are custodial when you choose that path.

## What to do next

Take one corridor you pay today and request two quotes at the same minute: one from your current provider, one from a BlindPay development instance. Compute cost against mid-market for each, using the method above. The [payout quotes docs](/docs/payout-quotes) list every field you need.
