Back to blog
GuidesJuly 9, 20264 min read

Pricing online courses in multiple currencies without losing on FX

FX losses and payment processor fees quietly shrink your course revenue. Here's how to price in multiple currencies and protect your margin on every sale.

By ZenPay Team

Share
Pricing online courses in multiple currencies without losing on FX
Photo by Christin Hume on Unsplash

Every time a student pays you in a currency that isn't yours, you lose a slice of the sale before you even see it. Payment processor conversion fees, bank receiving fees, and mid-market spread can quietly erase 4–7% of a $1,200 course enrolment. Multiply that across a global cohort and you're not running a course business, you're running a currency exchange at a loss.

Here's how to take control of multi-currency pricing so your listed price is actually what you earn.

Why "auto-convert everything to USD" is costing you

The default advice is to price in one currency and let your processor handle conversions. It feels simple. It isn't free.

When a student in Brazil pays R$1,800 for your signature program and your processor converts it to USD before depositing, two things happen:

  1. The processor applies its own exchange rate, typically 1.5–3% worse than mid-market.
  2. Your bank may charge an additional incoming wire fee of $15–$25.

On a R$1,800 sale, that's $40–$70 gone. On a cohort of 30 students, you've just donated $1,200–$2,100 to Stripe's balance sheet.

The fix isn't a better processor. It's pricing and collecting in local currencies and holding those balances until you convert on your terms.

The "charm price" problem in foreign markets

$997 is a classic course price in USD. Auto-converted to GBP at the processor's rate, it shows up as £812 or £823, depending on the day. That's not a price. That's a number. British students are used to seeing £797 or £847 as deliberate pricing signals. A random conversion reads as "this creator didn't think about me," and it converts worse.

Set explicit prices per currency. Treat each market as its own pricing decision, not a maths exercise.

How to set prices per currency without underselling yourself

Start with your USD anchor price and work outward. The goal is not to match the spot rate. The goal is to land on a psychologically clean number that covers your worst-case conversion cost plus a buffer.

A workable formula:

Local price = (USD price × current mid-market rate) × 1.08, rounded to the nearest "charm" price

The 1.08 multiplier builds in an 8% buffer: roughly 3% for processor FX spread, 2% for rate movement between launch and close, and 3% margin protection. Then round to a locally resonant number.

Examples for a $997 coaching program:

  • GBP: $997 × 0.79 × 1.08 = £850 (round to £847 or £897)
  • EUR: $997 × 0.92 × 1.08 = €992 (round to €997 for parity, or €947 for "under $1k" signal)
  • BRL: $997 × 5.0 × 1.08 = R$5,383 (round to R$5,397 or offer 12× R$449 installments)
  • AUD: $997 × 1.53 × 1.08 = A$1,647 (round to A$1,647 or A$1,597)

Revisit these every quarter, not every day. You're not running a live exchange. You're setting a considered price for a season.

Should you offer installment plans in local currency?

Yes, especially for BRL and emerging-market students where a lump sum in any currency is a friction point. A 3× or 6× installment in local currency often converts better than a single lower price, and it preserves your perceived value. Just make sure your invoicing tool can handle recurring billing in that currency so you're not manually chasing each installment.

How most educators handle multi-currency

  • Set one USD price and let the processor convert everything automatically.
  • Students in other markets see random, unconvincing converted amounts.
  • Chase installment payments manually with one-off emails each month.
  • No visibility into revenue per currency until the bank statement arrives.
  • Refund calculations are guesswork when the original payment currency differs.

How ZenPay handles it

  • Per-invoice currency selection lets you send each student an invoice in their local currency (EUR, GBP, BRL, AUD, and 7 more).
  • Shareable invoice links mean students pay without creating a portal account, reducing drop-off.
  • Recurring invoices auto-send installment invoices weekly, monthly, or quarterly at a time you set, no manual chasing.
  • Multi-currency wallets show your live balance per currency so you always know what you're holding in each market.
  • Auto-reminders fire in your name before and after the due date, with editable templates, so late installments chase themselves.

Holding multi-currency balances: when to convert and when to wait

If you invoice in GBP and hold the GBP balance, you've removed the processor conversion entirely. You convert on your schedule, when the rate works for you, not at midnight when a student clicks "pay now."

Practical rules for holding:

  • Convert monthly if a currency makes up less than 15% of your revenue. The rate variance over a month is manageable.
  • Convert quarterly for EUR and GBP if you have USD expenses to cover. Batch conversions through a service like Wise or your broker at the rate you choose.
  • Keep BRL separate if you have Brazilian suppliers, contractors, or ad spend. Spending BRL revenue in BRL eliminates the round-trip conversion cost entirely.

ZenPay's multi-currency wallets aggregate your totals per currency automatically, so you can see your GBP balance, EUR balance, and BRL balance in one place without running a spreadsheet.

Tax treatment when you invoice across borders

This is where most educators get a surprise at year-end. A few principles worth knowing:

Digital services VAT: If you sell to EU consumers, you may owe VAT in the buyer's country once you exceed the €10,000 EU-wide threshold. Invoicing in EUR doesn't change this obligation, but it does make the record cleaner.

Reverse-charge for B2B: If a student is actually a business buying training for their team, and they're VAT-registered in the EU, you can apply reverse-charge VAT: they account for VAT on their end, you don't charge it. ZenPay has a per-invoice reverse-charge VAT toggle for exactly this case, which keeps your invoice compliant without manual note-writing.

Capture the exchange rate at payment time. If you invoice in GBP but report income in USD, you need the USD equivalent at the date of payment, not the date of invoice. ZenPay captures the exchange rate at payment time for primary-currency reporting, so you have a clean audit trail rather than a spreadsheet of retrospective lookups.

Refunds without the FX headache

Refunds on multi-currency sales sting twice: you return the original local currency amount, but you may have already converted it. If GBP strengthened after you converted, you're funding the difference yourself.

Two ways to reduce this exposure:

  1. Delay conversion until your refund window closes. For a 14-day refund policy, don't convert GBP received until day 15.
  2. Write off the FX loss explicitly in your books rather than treating it as a refund variance. ZenPay supports write-offs at the invoice level, so the accounting entry is clean and auditable.

Neither approach eliminates the risk entirely, but both make it visible and manageable rather than hidden in your net revenue figure.


Multi-currency pricing isn't a technical problem. It's a decision problem: decide what each market's price is, hold balances long enough to convert on your terms, and use invoicing tools that make local-currency billing as easy as single-currency billing. When you treat each currency as a deliberate choice rather than a conversion accident, the FX losses shrink and the pricing signals get sharper.

Less admin.
More of what matters.

Your first invoice
within 2 minutes.

1Sign up — free
2Add your first client
3Send your invoice

Free forever.
No catch.

€0

To get started

No credit card. No trial. Just free.

Start free

Keep reading