What is a natural FX hedge? Matching BRL inflows and outflows with on- and off-ramps

A natural hedge offsets currency risk by matching inflows and outflows in one currency. How it works with Pix on- and off-ramps, and when to net first.

A natural FX hedge offsets currency risk by matching money coming in and going out in the same currency, with no derivatives involved. A company that earns reais and pays reais is naturally hedged on that amount. Stablecoin on- and off-ramps don't create the hedge. They move whatever is left over after you match.

That distinction saves real money. Plenty of teams on-ramp every real they collect, then off-ramp reais again to pay local costs, and pay the spread twice on money that never needed to leave Brazil.

Key takeaways

  • A natural hedge matches inflows and outflows in the same currency. It's the cheapest hedge there is.
  • Every on-ramp and off-ramp is a conversion. A BRL to USDC to BRL round trip pays two margins.
  • Net first, then convert only the difference that has to cross a border.
  • Holding USDC is dollar exposure. It hedges dollar costs, not local ones.
  • Natural hedges reduce cash flow risk, not reported earnings risk.

What is a natural FX hedge?

It's an offset built into how the business operates. AccountingTools describes natural hedges as arising "through the normal course of business", for example when "cash inflows and outflows are in the same currency" (AccountingTools).

The idea is old and widely used. CFO.com has reported on companies "forsaking derivatives for natural hedges", which it defines as "matching revenues and costs for the same currency or offsetting losses in one currency with gains in another" (CFO). Back in 2011, an author of a Georgia Tech Financial Analysis Lab report told CFO.com that natural hedges were "gaining in significance", partly because derivative hedge accounting is such a burden (CFO).

Two limits worth knowing up front. Natural hedges "rarely eliminate all of the risk", per AccountingTools, and CFO.com notes they are "less effective" at reducing translation risk, the effect of rate moves on a multinational's reported earnings.

Why don't stablecoin rails hedge you on their own?

Because every leg converts. An on-ramp turns BRL into a dollar stablecoin. An off-ramp turns it back. In between, you hold dollars.

Look at what each quote does. A payin quote takes request_amount in reais (with currency_type: sender) and returns the USDC the wallet receives. A payout quote takes USDC and returns the reais the bank account receives. Both show commercial_quotation, the market rate, next to blindpay_quotation, the rate after BlindPay's fee (payout quotes, payin quotes).

So a R$ collected and a R$ paid out through stablecoin rails are two conversions, each with its own margin. Why on-ramp and off-ramp rates differ explains the bid and ask behind that, and how to read an FX quote shows which way each rate points.

None of this is a flaw. It's what a cross-border rail is for. The mistake is using a cross-border rail for money that was never going cross-border.

Illustrative example: what does netting save on R$600,000 a month?

Illustrative example. A US company with a Brazilian subsidiary collects R$600,000 a month from Brazilian customers and pays R$400,000 a month to Brazilian contractors. The rest goes home in dollars. Assume a mid rate of 5.40 BRL per USD and a 0.5% margin on each conversion.

Gross approach. On-ramp all R$600,000, then off-ramp R$400,000 back for contractors.

LegArithmeticResult
On-ramp rate5.40 x 1.0055.427 BRL per USDC
R$400,000 in400,000 / 5.42773,705.55 USDC
Off-ramp rate5.40 x 0.9955.373 BRL per USDC
Back to BRL73,705.55 x 5.373R$396,019.90
Round-trip loss400,000 - 396,019.90R$3,980.10, about 1.0%

Net approach. Pay the R$400,000 locally from the subsidiary's reais. On-ramp only the R$200,000 that has to reach the US.

The net approach skips the R$3,980.10 round trip every month, about R$47,761 a year, before flat fees. The R$200,000 still pays one margin, because that money genuinely has to cross the border. That's the conversion worth paying for.

The margins here are invented for the arithmetic. Real ones show up in your quotes. BlindPay has no static rate card: per-transaction fees vary by rail and network and are disclosed in the live quote before you execute.

When should you net, and when should you convert?

Match by currency and by timing. A natural hedge only works if the money is in the right place at the right moment.

SituationBetter moveWhy
Local inflows and local outflows, same entity, similar timingNet locally, convert the surplusNo conversion on matched amounts
Local inflows, dollar outflows (US vendors, USDC payouts)On-ramp and hold USDCDollar costs need dollars anyway
Dollar inflows, local outflowsOff-ramp per payout with a live quoteOne conversion, rate locked per payment
Local inflows and outflows but no local entity or accountRound-trip, but time it tightYou pay two margins; keep the gap short to cut rate risk
Inflows and outflows months apartConsider a forward for the economic rateMatching fails when timing doesn't line up

The last row is where natural hedging stops. If you collect reais in March and owe reais in September, the flows don't offset in time. Live quote vs forward contract vs fixed rate covers when a forward makes sense alongside a live quote.

Is holding USDC a hedge?

Only against dollar costs. USDC is a dollar stablecoin, so holding it means holding dollar exposure.

If your next bills are in dollars, that's exactly right: on-ramp the reais once, hold USDC in a wallet, and pay dollar obligations without converting again. If your next bills are in reais, holding USDC means you're now exposed to BRL strengthening between collection and payment.

Who carries FX risk in a stablecoin payout maps that exposure step by step. The short version: the provider carries it inside a quote window, and you carry it outside one.

How do you run this with on- and off-ramps?

A simple monthly routine works for most teams.

  1. List flows by currency. Expected BRL in, BRL out, USD in, USD out, by week.
  2. Net within each currency. Pay matched local obligations locally first.
  3. On-ramp the local surplus. Use a payin quote for the amount that has to leave. Over Pix, deposits typically settle within minutes (how long a stablecoin on-ramp takes).
  4. Hold USDC for dollar costs. Keep it in a wallet you control until it's needed.
  5. Off-ramp per payment. When a local payout can't be covered by local inflows, request a payout quote and execute it inside its 5-minute window.
  6. Measure the round trip. Log commercial_quotation and blindpay_quotation for every conversion. If you see the same reais going in and out within days, that's money a better netting step would have saved.

For the on-ramp side of Brazil specifically, how to on-ramp BRL, MXN, ARS, and COP walks through the Pix flow.

What can't a natural hedge do?

It can't fix timing mismatches, and it won't flatten your reported earnings. CFO.com is direct that natural hedges work on transaction exposure and are weaker on translation risk.

It also can't hedge what you can't forecast. A marketplace whose BRL payouts depend on next month's sales has a moving target. The practical answer there is to keep conversion windows short: convert close to the payment, with a binding quote, so the rate risk you carry lasts minutes instead of weeks.

What to do next

Pull last quarter's flows, group them by currency and week, and add up how many reais you converted to USDC and back within the same month. Then price that round trip with a payin and a payout quote from the payout quotes docs.

FAQ