The ExtPay alternative that handles your tax
ExtensionBill is the ExtPay alternative with a Merchant of Record built in. Migrate in minutes to a clean, modern SDK, and VAT and GST are collected and remitted worldwide, for a flat monthly fee instead of a percentage of every sale.
Why developers move from ExtPay
ExtPay is a great way to add payments without a backend. ExtensionBill keeps that, and closes the two gaps it leaves you: worldwide tax and a percentage cut of your revenue.
The tax is handled
ExtPay leaves you owing VAT and GST around the world. ExtensionBill adds a Merchant of Record that collects and remits sales tax at each buyer's location for you.
Flat fee, not 5%
Percentage-based tools skim a cut of every sale forever. ExtensionBill charges a flat monthly fee, whatever you earn, so your cost stays predictable as you grow.
Familiar, cleaner API
ExtensionBill covers the same jobs as ExtPay (getUser, checkout, paid events) with a modern, well-typed API. Migrating an existing extension is a short, mechanical rename.
Bring your own MoR
Connect Polar, Paddle, Lemon Squeezy, Creem, or Dodo Payments, and switch whenever you like. You own pricing, payouts, and the customer relationship.
How ExtensionBill compares
ExtPay gives you a no-backend SDK but leaves you the tax. A raw Merchant of Record handles tax but leaves you the backend. ExtensionBill is the only one that does both.
| What you need | ExtPay | Raw MoR | ExtensionBill |
|---|---|---|---|
| No-backend SDK | Yes | Build it yourself | Yes |
| Merchant of Record (VAT, GST, tax) | You owe the tax | Yes | Yes |
| Typed, modern SDK | Plain JS | No SDK | TypeScript-first |
| What it costs you | 5% of revenue | ~4% + your dev time | Flat monthly fee |
| Cross-browser (Chrome, Firefox, Edge) | Yes | Do it yourself | Yes |
| Switch providers anytime | Stripe only | Locked per provider | Any MoR |
Coming from ExtPay? Migrate in minutes.
ExtensionBill's SDK covers the same jobs as ExtPay with a cleaner, modern API. A short, mechanical migration, and you gain a Merchant of Record that handles tax for you.
- Same concepts: getUser(), checkout, paid events
- A short, mechanical rename, mapped by the migration guide
- Gain worldwide MoR tax compliance instantly
// Familiar concepts, cleaner API, tax handled.import ExtensionBill from 'extensionbill'// renamed from ExtPay const extpay = ExtensionBill('your-extension-id')const user = await extpay.getUser() if (user.paid) unlockPremiumFeatures()else extpay.openCheckout() ExtPay vs ExtensionBill, answered
- Is ExtensionBill an ExtPay replacement?
- Yes. It covers everything ExtPay does with a cleaner, modern SDK. Migrating an existing extension is a short, mechanical rename, guided by the migration guide.
- How is it cheaper than ExtPay?
- ExtPay-style tools take around 5% of your revenue for good. ExtensionBill charges a flat monthly fee, from free up to $99/mo by extension count, so a $5,000/mo extension is not paying $250 every month.
- Does it handle sales tax that ExtPay leaves to me?
- Your Merchant of Record acts as the seller of record and collects and remits VAT, GST, and sales tax worldwide. ExtensionBill and you never touch the tax.
- Can I migrate an existing ExtPay extension?
- Yes. Point the import at ExtensionBill, rename a few calls (the migration guide maps each one), connect your Merchant of Record, and ship.
Ready to leave ExtPay behind?
Keep your code, add a Merchant of Record, and pay a flat fee instead of a percentage. Free to start. Still weighing options? See all ExtPay alternatives compared.