lePanel is a product. It is built by me, registered and operating in New Zealand, and it is priced in US dollars because everything underneath it is billed in US dollars, inference included. Additionally, I’m selling globally from day one, so matching the currency I already pay in was the simpler call. It has been in closed beta for a while. Now it is open to anyone who signs up, which is the part I’ve been working towards for about two and a half months.
It was a strange but informative week to be reading and learning about tax legislation.
The instinct to leave this until later is a good one. Startups are all about speed to market and fix it once it’s live, and I want to acknowledge this before I argue against it. Almost every early decision is reversible. Wrong database, you migrate. Wrong onboarding, you watch ten people fail at it and fix it. That default is right for nearly everything, and founders who lecture you about process are usually selling process.
Tax turned out to be the exception, for one reason I hadn’t understood: the obligation reaches backwards, and you can’t go back and ask a customer from March for another two dollars.
01The threshold you think protects you
The model I had in my head was the domestic one, and never once had I thought about what happens when I get customers outside of my home country. There’s a registration threshold, small companies sit underneath it, and you deal with tax when you’re big enough for it to matter. In your home country that’s broadly right.
Everywhere else it is close to backwards. Most consumption-tax regimes set a threshold for businesses established in that country and no threshold at all for foreign sellers. That asymmetry is deliberate rather than accidental. A threshold for foreign sellers would be unenforceable, and it would let an overseas company undercut a local one on price using tax it never had to charge. So the number you’d naturally look up is the number that normally doesn’t apply to you.
What I found when I looked into selling lePanel to consumers. The middle column is the figure most founders find when they check, unless they search specifically for foreign companies.
| Market | The number you find | What applies to a foreign seller |
|---|---|---|
| European Union | €10,000 across the bloc | No threshold The €10,000 is only for sellers established in the EU. One registration covers all 27 states. |
| United Kingdom | £90,000 | No threshold The £90,000 is for UK-established businesses. You must tell HMRC within 30 days. |
| Norway | NOK 2m domestic | NOK 50,000 Roughly US$5,000 of Norwegian sales. |
| Switzerland | CHF 100,000 of Swiss sales | CHF 100,000 worldwide Measured on global turnover, not Swiss turnover. More under Two traps that caught me, below. |
| Canada | C$30,000 | C$30,000 federal, plus provinces British Columbia is C$10,000 and Saskatchewan has no threshold at all. |
| New Zealand my home | NZ$60,000 of local sales | NZ$60,000 worldwide A New Zealand company’s sales all count as made in New Zealand, wherever the customer is. More under Two traps that caught me, below. |
| Australia | A$75,000 | A$75,000 A real threshold, on Australian consumer sales. Register within 21 days of crossing. |
| India, South Korea, Türkiye, UAE, Mexico | Various local figures | No threshold Registration is due from the first consumer sale. |
| United States | Nothing federal | Usually $100,000, per state And only around 26 states tax software at all. |
More than a hundred countries now tax digital services sold by foreign companies, and most of those regimes arrived after 2015.
The United States is backwards from what I expected. I had assumed fifty states meant fifty problems. It is closer to twenty-six, the thresholds are real and mostly $100,000 per state, and California only starts taxing software in January 2027. American customers are the ones you can most safely take on day one.
02Why tax consideration is actually important
When you sell a $12 subscription to someone in Germany and you’re not registered, you charge $12 and you keep $12. When you register later, Germany doesn’t send you a bill for 19% on top of what you charged. It treats your $12 as having contained the VAT the whole time. Work it backwards and only $10.08 of that $12 was ever your price. The other $1.92 was German VAT. You owe it, and the customer left eight months ago.
The rule is in the legislation itself. The UK VAT Act defines the value of a supply as the amount which, with the addition of the VAT chargeable, equals what the customer paid. New Zealand’s GST Act is worded the same way. The Australian Tax Office puts it most bluntly: if you do not register when required, you may have to pay GST on sales made since the date you were required to register, even if you did not include GST in the price of those sales.
The $12 you charged in March turns out to have had $1.92 of German VAT inside it all along. You just did not know, and you have spent it.
Which brings me to the part I actually needed to understand, and how it affects my margin in the long run.
Inclusive or exclusive is an important question to ask yourself
Every price is made of three things: your cost of goods, the margin you add on top, and the tax you have to hand over. The only question is whether that tax sits on top of the price or inside it. Tax-exclusive means your headline price is what you keep and the tax is added at checkout, so a $12 plan costs a British customer $14.40 and you still get $12. Tax-inclusive means the headline price is what the customer pays and the tax comes out of it, so that same British customer pays $12 and you get $10.
Take one $12 subscription and assume it costs $3.60 to deliver, which is 30% of the price. Priced tax-exclusive, a British customer pays $14.40, you keep $12, and after cost of goods you clear $8.40. Priced tax-inclusive, that same customer pays $12, you keep $10, and after the same $3.60 you clear $6.40. The $2 of VAT is 16.7% of your revenue but nearly a quarter of your margin, because the cost of delivering the product does not get any smaller to match.
What you keep from one $12 subscription at each market’s standard rate, and what is left of it after $3.60 of cost of goods.
| Market | Rate | Exclusive: they pay | Inclusive: you keep | Margin left | Margin given up |
|---|---|---|---|---|---|
| United Kingdom | 20% | $14.40 | $10.00 | $6.40 | 23.8% |
| Germany | 19% | $14.28 | $10.08 | $6.48 | 22.8% |
| Hungary | 27% | $15.24 | $9.45 | $5.85 | 30.4% |
| New Zealand | 15% | $13.80 | $10.43 | $6.83 | 18.6% |
| Australia | 10% | $13.20 | $10.91 | $7.31 | 13.0% |
The last column is the one that matters. The rate is the same either way, but the money is not: on top of the price it is the customer’s $2.40, and inside the price it is $2 of yours. And it lands harder than the rate suggests, because your cost of goods does not shrink to match: 16.7% of what a British customer paid, but 23.8% of what you were going to keep. That is also exactly what a deferring seller owes on everything already banked, sale by sale.
So the real cost of leaving it is not a fine. It’s being retroactively converted into an inclusive-pricing business for the whole period you thought you were an exclusive one, without ever having collected the difference. If you’re bootstrapped, that money isn’t sitting in an account waiting. It went on hosting, and model usage, and the annual plan discount you gave someone in April.
A first year that goes reasonably well. A blended 21% rate, roughly the EU and UK average.
| Line | Registered first | Registered twelve months in |
|---|---|---|
| Who pays the tax | The customer, added at checkout | You, out of money already spent |
| Tax on $40,000 | $0 from margin | $6,942 from margin |
| Penalty | $0 | Up to 30% of the tax in the UK, more if they decide it was deliberate |
| Interest | $0 | From each missed return date |
| EU registrations | One, through the single scheme | The scheme only works from the day you join, so the back period is country by country |
| Cost of the week you saved | A few hours spread across a week | Around $9,000 and a month of someone’s attention |
Forty thousand dollars of European revenue is not a big company. It is a few hundred people paying twelve dollars a month. And it scales linearly, so four hundred subscribers instead of two hundred doubles it, and at no point does anything in your billing dashboard mention this.
03What the tools actually do
lePanel moved its billing to Airwallex. Airwallex has a feature called automatic tax. I turned it on in the sandbox, watched my test invoice pass, and ticked tax off the list. Some weeks later I was reading their documentation for an unrelated reason: if you are not registered in a jurisdiction, Billing normally applies 0% tax for that jurisdiction, even if that jurisdiction has taxes in principle.
Every test invoice I’d looked at said 0%. Nothing was broken. It was doing exactly what I’d configured, which was nothing, and it had no way to tell me that, nor did I know that I was doing something wrong. There’s no error state for this. A correctly configured zero and an unknowingly illegal zero render identically.
So the job is mine, not the tool’s: keep track of where customers are coming from, and register in each market as it comes into play, following Table 1.
| The job | Stripe Tax | Airwallex | Merchant of record |
|---|---|---|---|
| Tell you where you owe tax | Partly. Alerts above $10k, Stripe sales only, never your home country | No, and no monitoring at all | Yes |
| Register you | US states only, on the paid tier. Elsewhere it hands you to a partner | No | Yes |
| Work out the rate per invoice | Yes | Yes | Yes |
| File and pay the money | Through partners, priced separately | No. You get a CSV | Yes |
| What it costs | 0.5% or from $90/mo | 0.4% per transaction | About 5% |
Worth saying plainly, because it comes up: incorporating in America doesn’t resolve your European obligations. It adds American ones.
Stripe Tax is the only one of these that watches thresholds and emails you, which is genuinely useful and worth knowing about. The caveats are real though: it only counts sales processed through Stripe, it only starts above ten thousand dollars of prior-year revenue, and it deliberately doesn’t monitor your home country, which is exactly where a New Zealand company can get caught first.
Automatic tax charges the correct rate everywhere you’ve entered a registration, and zero everywhere else, without comment. Turn it on with no registrations and you’ve built something that’s silently wrong on international invoices.
04What it costs if you get it wrong
I could not find a single clean global answer here, because penalties are set nationally and most authorities publish ranges rather than numbers. The shape is consistent enough to be useful, and it comes down to one thing: coming forward yourself is always cheaper than being found.
All of the penalties sit on top of the tax itself, and interest sits on top of them.
| Where | If you come forward yourself | If they find you first |
|---|---|---|
| United Kingdom | A non-deliberate failure can carry a penalty as low as 0% of the tax | Penalty of 10% to 30% of the tax for a non-deliberate failure, up to 70% if they treat it as deliberate, 100% if concealed |
| New Zealand | The two mildest penalties fall to 0%. Late filing is $50 or $250 per return depending on your accounting basis | Penalty of 20% of the tax for not taking reasonable care, 40% for gross carelessness, 100% for an abusive position, 150% for evasion. Interest runs at 8.97% |
| Ireland | On a first disclosure, the penalty on a deliberate default falls to 10% of the tax. You also stay off the published list of tax defaulters | Penalty of up to 100% of the tax where you do not cooperate, 50% on a prompted disclosure. Each repeat disclosure earns less relief, and a third earns none |
| Australia | Penalties are cut by 80%, and to nothing at all if the shortfall is under A$1,000 | Penalties are cut by only 20%, so you still pay most of them. Failing to register when required is itself a separate offence worth about A$7,280 |
| United States | A voluntary disclosure agreement caps the look-back, commonly at three or four years. Texas waives its penalties and interest with it | No voluntary disclosure agreement, and the seller rather than the customer is personally liable for tax that should have been collected |
| Canada | Full relief from penalties and 75% of the interest, under rules rewritten in October 2025 | Relief from only a quarter of the interest, and only some of the penalties |
Every regime I looked at rewards you for arriving before they do, and the gap is enormous. In the UK the same underlying failure costs you the missing tax, plus a penalty of nothing or thirty percent of it, depending purely on who spoke first. Ireland publishes the starkest version: on a first qualifying disclosure the penalty for a deliberate default is 10% of the tax rather than up to 100% of it, and the reduction shrinks every time you use it. Stripe’s own documentation on late registration tells you to register immediately with an effective date in the past rather than quietly starting from today, which is correct and slightly bleak advice. Airwallex’s documentation doesn’t say anything about late registration, so if you’re on it the order is the same: disclose to the authority first, then add the registration in Airwallex so every invoice from there carries the right rate, and settle the back period yourself from its export.
All of that relief is for one kind of mistake: you never registered, so you never charged the tax, and the money is coming out of your own pocket. It does not cover the other kind, where you did put tax on the invoice, collected it from the customer, and kept it. Every authority treats that as holding money that was never yours, and no disclosure programme waives it. Worth knowing which case you’re in before you go to them.
If you’ve already been selling for a year without registering anywhere, the useful move is to go first, before anyone contacts you. You’re not fine and you’re not doomed, and which of those you end up closer to depends mostly on who speaks first.
05Two traps that caught me
My own country was the one I misunderstood
I thought New Zealand’s NZ$60,000 threshold worked like this: cross it, and you owe GST on everything you sold before you crossed it. I was wrong, and the real rule is stranger.
You never owe GST on sales made before you became liable to register. But liability is set by statute rather than by your paperwork, and there are two tests. One looks backwards at your last twelve months. The other looks forwards, and it makes you liable from the start of any month in which you had reasonable grounds to believe the next twelve months would exceed the threshold. That second test can make you liable months before you actually banked the money. You then have 21 days to apply. Apply late and the registration is normally backdated to the day you became liable, and Inland Revenue’s own practice statement says supplies from that date must be accounted for regardless of whether you represented GST as being charged on them.
Two further things I didn’t expect. A New Zealand company’s sales all count as made in New Zealand no matter where the customer lives, so my American and European subscribers push me toward a New Zealand threshold. And exported services are zero-rated at 0% but still count toward it, so you can be compelled to register on export revenue that will never produce a cent of tax. Inland Revenue published an issues paper in May that flags this as a live problem in exactly those terms: some suppliers, including residents, may make over $60,000 of zero-rated supplies such as exported services.
Because those exports are zero-rated and input tax stays claimable, a New Zealand exporter who registers late is usually owed a refund for the back period rather than a bill. My own country is the friendly case, which cuts against the argument I’m making. I’m registering because the input tax on every Airwallex fee, hosting invoice and everything else I pay for to run this, infrastructure included, is real money I’m currently not claiming.
Switzerland measures a number that has nothing to do with Switzerland
The Swiss threshold is CHF 100,000, and it’s measured on your worldwide turnover rather than your Swiss turnover. Pass it globally and a single Swiss subscriber creates a Swiss obligation, backdated, with a mandatory local fiscal representative you have to pay. A company can genuinely owe more in Swiss representation fees than it earns from Switzerland. This one is not in most of the guides.
If you sell only to businesses, and you capture and validate their tax number, most of the map goes quiet. In the EU, the UK and dozens of other countries a business customer accounts for the tax itself under the reverse charge, and a seller with only business customers has no registration duty there at all.
Everything in this article is a consumer obligation. That’s worth knowing before you decide who to sell to, and it’s a real argument for putting a tax number field in your checkout on day one.
06The data you cannot go back for
The engineering half of this is genuinely small, which is the good news, but it has to happen before the sales do because it is the only part that cannot be reconstructed afterwards.
Every regime decides where your customer is and expects you to be able to prove it. The EU wants two pieces of non-contradictory evidence, kept for ten years, and it is the strictest of them, so meeting it satisfies everyone else. If you didn’t capture that at the moment of the sale, it doesn’t exist later.
What your payment processor already collects if you set the right flags, versus what you have to store yourself.
| What to capture | Where it comes from | Recoverable later? |
|---|---|---|
| Billing address with postcode | A checkout flag on both Stripe and Airwallex. Needed for any calculation at all, and US and Canadian rates need the postcode specifically | Partly, by asking again |
| Card issuing country | Already on the payment record. One of your two location proofs, free | No |
| IP country at signup | Yours to store. The EU lists it as an accepted location proof, and unlike card country the processor does not keep it for you, so it has to be logged at signup | No |
| Business tax number, validated | A checkout flag. Stripe validates EU, UK and Australian numbers against the government databases automatically; everything else is format-checked only | Not for past invoices |
| Consumer or business | Follows from whether a valid tax number is present. Decides the treatment almost everywhere | Not reliably |
On Stripe, turning on address collection in Checkout doesn’t save the address to the customer record. It collects it for the payment and then throws it away unless you also pass the flag that writes it back, and the default isn’t to. I had the collection flag on for weeks and a customer table full of nothing.
Airwallex is the other way round: its checkout asks for an address once automatic tax is on or you require it, and it does keep that address on the customer. The catch there is the card-update flow, which collects nothing, so a customer whose first touch was a card change has no address on file until their next checkout.
Then two reports, which are the actual early-warning system: revenue by country over a rolling twelve months, and a separate count of transactions and users by country, because a couple of regimes trigger on user numbers rather than money. Alert yourself at about seventy percent rather than at the line. Several countries give you twenty or thirty days to register after you cross, and that isn’t enough time to find a fiscal representative in a country you’ve never dealt with.
07The week
Here is what I did, in the order I did it. Every registration below is free to apply for.
- Day one
Decide where you are willing to sell
Not where you’d like to sell. Which countries you’ll accept consumer signups from at launch, and which you’ll open later as you register. It’s a product decision that turns out to be about four lines in the checkout.
- Day two
Register at home
Check whether your home threshold counts your export revenue, because if it does you’re closer to it than you think. Registering also lets you reclaim the tax on your own costs.
- Day three
The EU, through one country
A non-EU seller registers once, in a single member state, and files one quarterly return covering all 27. I picked Ireland because the portal is in English. There’s a timing rule worth reading twice: the scheme applies from the quarter after you register unless you notify quickly after your first sale, and sales before that date can’t go on it at all.
- Day four
The UK, separately
No threshold, thirty days from your first sale or from the point you expect one within thirty days. The form asks what your business does and offers a list of industry codes with no entry for “sells access to software”, so you pick the nearest thing and move on. Returns have to go through approved software rather than the website, which surprised me.
- Day five
Wire up the evidence and the alerts
The five fields above, the two reports, and threshold alerts at seventy percent. This is the only part that is engineering, and it is roughly a day.
- Day six
Decide the price rule and write down what you skipped
Inclusive or exclusive, and accept that one worldwide price cannot satisfy everyone. The EU and Australia require consumer prices shown with tax included; several US states make advertising a tax-inclusive price unlawful. Then write down, with a date, the countries you’ve deliberately not registered in and why.
A merchant of record such as Paddle or Polar resells your product as the legal seller and takes on every registration and filing in its own name. It costs around 5% of revenue rather than roughly 3% for card processing, and you give up some control of the checkout.
For a team that would otherwise defer this forever, paying two points to make the problem structurally disappear is a reasonable trade. Worth knowing: Stripe has its own version of this, and it doesn’t accept New Zealand companies, which is how I ended up doing it the long way.
08What I picked
Direct registration, not a merchant of record. New Zealand, the EU through Ireland, and the UK, all before signups open. Australia, Canada and Norway are on a list with revenue triggers next to them, and the United States I’m genuinely not worried about for a year or more. Everywhere else sits behind a country allowlist until there’s a reason to open it.
There’s one part of this I haven’t solved. The EU number takes a few weeks to come back and signups are live. If it doesn’t arrive before the first European sale, those earliest sales fall outside the scheme and have to be regularised country by country, which is the exact mess the scheme exists to prevent. I wish I had known about all of this beforehand, so I wouldn’t have left it this late thinking it would be alright. How hard can it be.
This is why, if you’re about to launch your company or startup soon, I recommend you put a few hours aside for the next week or two. Almost everything else you defer costs about the same to fix later as it would have cost to do now. This one grows with how well you do, it comes out of your pocket instead of your customers’, and the evidence you’d need to argue your way out of it is data you stopped being able to collect on the day you launched without it.