Guides

Pass FX Costs to Users or Absorb Them? Pricing Cross-Border Payouts

Pass FX costs to users when the amount is a balance, absorb them when it is a promise. Three worked examples, a hybrid cap and how a Lumx quote splits the cost.

Caio Barbosa

Founder & CO-CEO

Forbes Under 30. One of the leading voices in Fintech & Crypto in Brazil. Writes weekly about stablecoins, payments, and the future of financial infrastructure in Latin America.

Cover image for Lumx blog article: Pass FX Costs to Users or Absorb Them? Pricing Cross-Border Payouts
Cover image for Lumx blog article: Pass FX Costs to Users or Absorb Them? Pricing Cross-Border Payouts

Pass FX costs to users when the amount is a balance they hold, such as seller earnings, and absorb them when the amount is a promise, such as a salary or an invoice. Mark up only with a visible fee line. A per-payout cap fits platforms with both kinds.

Every cross-border payout carries a cost, and someone pays it. Below: four models, three worked examples, and how a Lumx quote sets the split.

Pass through, absorb or mark up: the four ways to split an FX cost

The platform can pay the cost (absorb), the payer can pay it on top of the amount sent, the recipient can bear it so less lands, or the platform can pass on more than its cost and keep the difference (mark up).

Who pays under each model, what the recipient sees, and what the platform keeps.

Model

Who pays

What the recipient gets

What the platform keeps

Typical use

Absorb

The platform

The full promised amount

Its fee minus the cost

Payroll, supplier invoices, refunds

Payer pays on top

The payer

The full promised amount

Its fee, cost recovered

Invoices where the payer funds the delivery

Recipient bears it

The recipient

The amount minus the cost

Its fee, cost recovered

Seller earnings, wallet withdrawals

Mark up

The payer or recipient

Depends on where the line sits

Its fee plus a margin over cost

Remittance-style apps with a disclosed fee

The last two change someone's number and need a visible fee line. On Lumx, all four are set from the quote the platform requests before it executes and an optional partner fee of its own.

Which costs are you actually deciding about?

A generic provider quote can carry up to four lines. The first three are your cost, the fourth is your revenue.

The cost lines inside a generic cross-border payout quote and where each usually shows. Placement varies by provider.

Cost line

What it is

Where it usually shows (generic provider quote)

Who can move it

Exchange-rate spread

The gap between the reference rate and the rate you get

Usually the base rate against the final rate

Provider, volume tier, time of day

Provider fee

The per-transaction fee of the provider

Often a separate fee line

Contract, rail

Lock fee

The cost of holding a rate for a set window

Priced into the quote or shown as its own line, depending on the provider

You, by lock length

Your own fee

What the platform adds for itself

A partner fee line

You

How the first three are built is in how stablecoin API pricing works, and what providers publish is in stablecoin API pricing compared. Start here once you have a cost number.

A Lumx locked quote returns a base and a final target amount and exchange rate, plus a fee breakdown with a Lumx fee, a partner fee and a total, each with its rate in basis points, flat amount and currency (field names are in the exchange rate reference). The final amount includes both fees. The partner fee is your revenue, and the Lumx fee is the visible part of the cost. It is not your whole cost c.

Match the model to the promise you made

Ask what number the recipient saw before the money moved. An amount in their own currency is a promise. A share of something they hold is a balance.

Payout types, the promise behind each and the model that usually fits.

Payout type

Promise to the recipient

Usual model

Quote built on

Payroll and contractor pay

"You get exactly 8,000 reais"

Absorb, or payer pays on top

Target amount, locked

Supplier invoices

"The invoice is paid in full"

Absorb, or payer pays on top

Target amount, locked

Seller earnings

"You hold 412.50 dollars"

Recipient bears it, or hybrid

Source amount

Consumer remittance

"Send money home"

Mark up with a disclosed line

Locked, full breakdown on screen

A promised salary that lands a few reais short tends to open support tickets, while a balance that pays out slightly less than shown is a line item the user expected. A Brazilian payout over Pix (Brazil's instant payment system, run by the Central Bank) and a Mexican one over SPEI (Mexico's interbank transfer system, run by Banxico) can be quoted either way, whatever the stablecoin corridor.

On Lumx, a locked rate accepts either a source amount or a target amount, and a floating rate accepts only a source amount. So the promise decides the quote type: fix the local amount with a locked target-amount quote, or quote from what the sender holds and let the recipient's amount follow.

Three worked examples of what absorbing costs

Absorbing is affordable when your revenue per payout is larger than your cost per payout. Call revenue as a share of the amount paid out r, and the all-in payout cost c. Absorbing leaves r minus c on every payout. The examples use a hypothetical c of 1.0%, which is not a Lumx rate, so replace it with the cost in your own quotes.

Monthly economics of absorbing a 1.0% payout cost, in three business models. Hypothetical figures, USD.

Business model

Paid out per month

Platform revenue

Revenue as share of payouts (r)

Cost at 1.0%

Left after absorbing

Seller platform, 12% take rate on 1,000,000 of sales

880,000

120,000

13.6%

8,800

111,200

Contractor payouts, 3% platform fee

2,000,000

60,000

3.0%

20,000

40,000

Remittance-style app, 0.5% fee

2,000,000

10,000

0.5%

20,000

minus 10,000

The seller platform gives up 7.3% of its revenue (8,800 over 120,000) to absorb. The contractor platform gives up a third (20,000 over 60,000). The remittance-style app cannot absorb at all, because r is below c. When r is close to c, raise the fee or add a payer-pays line instead of absorbing.

The spread guide turns base and final rates into a percentage for the cost column. To get r from your own numbers, divide the platform revenue in your ledger by the amount paid out over the same month.

A hybrid caps what you absorb

A hybrid absorbs the cost up to a ceiling per payout and passes the rest on.

A cap of 1.50 dollars absorbed per payout, at a 1.0% cost. Hypothetical figures, USD.

Payout size

Cost at 1.0%

Platform absorbs

Passed on

50

0.50

0.50

0.00

150

1.50

1.50

0.00

300

3.00

1.50

1.50

1,000

10.00

1.50

8.50

If your fee is a flat 3.00 dollars per payout, a cap of 1.50 keeps at least 1.50 of margin at any size. Show the passed-on part as its own line, laid out as in the cross-border quote screen guide. On Lumx, create partner fees by size band and send the partner fee ID that matches each payout, or use a rate-based fee.

I start every payout product with one question: what number did the recipient see before the money moved? If it is an amount in their own currency, I absorb the cost and quote by target amount, because a payout that lands a few cents short is a promise broken, and the platform ends up paying for it in support time anyway. If it is a share of a balance, I pass the cost on as its own line. Either way I cap what I absorb, because an uncapped promise turns the largest payout of the month into the platform's loss.

Who bears the rate move between quote and payout?

Whoever executes at a rate different from the one shown. A floating rate is an estimate, so someone takes whatever the market does before execution. A locked rate removes that move for the length of the lock, and a longer lock costs more because the provider carries the risk.

A 5-minute lock for a user reviewing a screen is a cost you absorb or pass on. What happens when a quote lapses is in how long a payment quote lasts.

On Lumx, a locked rate lasts 30 seconds, 1 minute or 5 minutes. The 30-second lock has no fee, and the longer ones include a fee to cover volatility risk. If the lock expires before the transaction is submitted, the rate ID stops working and the platform requests a new quote.

Does the user have to be told?

Often yes, depending on who the user is.

In the United States, a remittance transfer provider serving consumers must give a pre-payment disclosure under 12 CFR 1005.31(b)(1). It lists the transfer amount, the fees and taxes, the total, the exchange rate used and the amount that will be received. The text was read on November 1, 2026, at Cornell Legal Information Institute. Its structure is the payer-pays-on-top model: the Total is the Transfer Amount plus the fees, so the cost is a line the sender sees before paying. In the European Union, Regulation (EU) 2019/518 of March 19, 2019 covers currency conversion charges, and whether it reaches your corridor is a scope question for counsel. Ask counsel whether your payers are consumers and whether your platform or a provider offers the conversion. EUR-Lex returned a bot wall on November 1, 2026, so it is cited by number and date, with no summary of its articles.

An invisible passed-on cost reads as a hidden fee and a shown one as a price, so show the rate, the fee and the amount received before the user confirms.

On Lumx, the quote supplies those numbers: final amount, final rate and the fee breakdown. Which disclosures apply to your end user stays with your app and your counsel.

When passing the cost on is the wrong call

Passing the cost on is the wrong choice when the recipient was promised an exact amount, when the payout refunds a sale already paid for, or when the payer budgets to the cent. There the shortfall becomes a dispute, and a dispute can cost more than the fee.

Absorbing is the wrong choice when r is not clearly larger than c, when small frequent payouts make a flat cost a large share of each, or when the cost moves and no lock caps it.

Whether a passed-on line costs you users is not answered here, as no sourced figure exists. Test it: show it to half of new users on the quote screen and compare completed payouts.

To change the policy for existing users, give notice and decide whether they keep the old terms for a period. If a payout was quoted at the old terms and the rate then moved, refunds after an FX move covers who takes the difference. On Lumx, a new price is a new partner fee used for new payouts.

Setting the split on Lumx: partner fee and locked 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 platform's own margin is a partner fee. You configure it in the dashboard or through the API as a rate in basis points, a flat amount in dollars, or both, separately for on-ramp and off-ramp, and name the wallet that receives it. A rate of 75 bps is 0.75%.

With a locked rate, the partner fee ID goes on the exchange-rate request and the fee becomes part of the quote the user sees. With a floating rate, it goes on the transaction. The partner fee prompt walks through both, with a sandbox check.

For an absorbed payout, request a locked quote by target amount so the local amount is fixed. A partner fee applies only when the request carries a partner fee ID, so leave it out to charge nothing. The partner fee comes on top of what the payer funds: on a BRL to USDC payment it raises the reais to send for the same USDC credited, and it has no cap and does not vary by corridor. The final target amount is already all-in, with the Lumx fee and the partner fee. The partner fee is revenue that Lumx sends to your wallet. For a passed-on payout, show the final amount and the fee lines. A marketplace takes its fee on the way in, as in seller payouts in Latin America.

A payout on Pix to Brazil or SPEI to Mexico is then a quote, a destination and a transaction. What the quote shows is what is sent: Lumx does not deduct a fee from the amount that reaches the recipient on a Pix or SPEI payout, and only the recipient's own bank can still charge them. Who bears the cost is decided before the quote, in how the platform builds it. The pricing model is a monthly platform fee plus usage-based per-transaction fees, transparent FX on locked quotes, no pre-funding; no published plans. Rails are on the coverage page, and the quote sits behind Lumx global payments, next to what an off-ramp is.

Methodology and sources

Product facts come from the Lumx docs read on November 1, 2026: Partner fees, Exchange rates, the Get an exchange rate reference, Marketplaces and Set up partner fees. The disclosure rule was read at 12 CFR 1005.31. Regulation (EU) 2019/518 is cited by number and date, linked to EUR-Lex, which was not readable that day.

Verified on November 1, 2026. Operational context, not legal, tax, or investment advice.

Cover photo: Wilhelm Gunkel on Unsplash.

  • Should you pass FX costs to users or absorb them?

    It depends on what the recipient was promised. Absorb the cost when the amount is a promise, such as a salary or an invoice, and pass it on when the amount is a share of a balance, such as seller earnings. If you are unsure, absorb up to a per-payout cap and pass on the rest. On Lumx, a locked quote by target amount fixes what the recipient gets.

  • Can a platform add its own margin on top of the cost?

    Yes. Set a margin as a rate in basis points, a flat amount, or both, and show it as its own line so the user sees what they pay. On Lumx this is a partner fee, configured separately for on-ramp and off-ramp, sent to a wallet you choose and applied only when you pass its ID.

  • Is absorbing the better choice for payroll and contractor payouts?

    Usually, and only when your fee per payout exceeds the payout cost, so set the fee first. On Lumx, a 30-second locked quote by target amount fixes the local amount with no lock fee.

  • Do I have to show FX costs to users?

    It depends on who the user is and where. US consumer remittances fall under the pre-payment disclosure in 12 CFR 1005.31(b)(1), so a business payout may sit outside it, and Regulation (EU) 2019/518 on currency conversion charges is a scope question for counsel. A shown fee beats a hidden one either way. On Lumx, the quote supplies the final amount, the final rate and the fee breakdown, and your app decides what to display.

Stay up to date with what Lumx is developing.

Sign up to receive them by email.

Share on socials:

pass-fx-costs-to-users-or-absorb-them

A

pass-fx-costs-to-users-or-absorb-them

Pass FX Costs to Users or Absorb Them? Pricing Cross-Border Payouts

Copy link

Copied!

pass-fx-costs-to-users-or-absorb-them

TALK TO OUR TEAM

Ready to transform your business with stablecoins?

Discover how our infrastructure can seamlessly integrate stablecoins into your financial operations quickly, securely, and efficiently.

Guides

In this page

©2026. All rights reserved.

Lumx US OP LLC ("Lumx") is a financial technology and payments infrastructure company. Lumx US OP LLC is a Money Service Business (MSB) registered with the Financial Crimes Enforcement Network (FinCEN) (MSB #31000316459619). Lumx is not a state-licensed money transmitter and does not, in its own capacity, engage in the provision of regulated money transmission services. All such regulated activities are conducted exclusively through, and under the licenses of, duly authorized financial-institution partners.


Lumx is not a bank, financial institution, payment institution, or custodian of client funds. Certain services made available through the Platform may be provided by duly authorized and regulated third-party partners, in accordance with applicable laws and regulations.

Please refer to Lumx’s Terms of Use and Privacy Notice for further information regarding the conditions governing the use of the Platform and the processing of your personal data.