Just wanted to wish everyone a happy, productive and prosperous new year!
Just wanted to wish everyone a happy, productive and prosperous new year!
Payment providers for plugin sellers compared: fees on real sales, plus features
WARNING: long post!
I use Gumroad and although I'm fairly happy with it, I feel like it's time to move. I've spent the last few weeks looking at other services. I ended up going through eight options in more detail than I planned, so here is the write-up in case it saves someone else the time.
What the numbers are. I took several thousand of my real 2026 sales (price, VAT / sales tax, buyer country, card or PayPal, affiliate or not) and replayed each one through every provider's published fee schedule.
To keep my own revenue out of it, everything below is expressed as fees per $1,000 of pre-tax sales, with every one of those real buyers "buying" a $10, $50 or $100 product instead of what they actually bought.
Note: fee pages were checked in August and September 2026. They can change over time. I am in the UK, which matters for a few rows (noted below). Absolutely none of this is tax advice, of course.
TL;DR
Costs
Fees on $1,000 of pre-tax sales, made up four different ways. The 'mixed basket' is 30 x $10 + 8 x $50 + 3 x $100.
| Provider | 100 x $10 | 20 x $50 | 10 x $100 | Mixed basket | Not in the figure |
|---|---|---|---|---|---|
| Gumroad (direct sales) | $226 | $155 | $146 | $174 | Discover sales cost a flat 30% instead |
| Moonbase, one GBP price | $218 | $125 | $114 | $150 | β¬5 per payout |
| Moonbase, GBP + EUR + USD prices | $200 | $108 | $96 | $132 | β¬5 per payout |
| Moonbase, one USD price | $196 | $103 | $91 | $127 | β¬5 per payout |
| Moonbase, one EUR price | $184 | $91 | $80 | $116 | β¬5 per payout |
| SoundSync | $100 | $100 | $100 | $100 | $10/month minimum, $9.99 minimum price |
| Lemon Squeezy | $127 | $87 | $82 | $98 | 1% of every payout to a non-US bank (about $9 more) |
| Payhip Free | $114 | $89 | $86 | $96 | currency conversion, see below |
| Polar Starter | $120 | $80 | $75 | $91 | Stripe payout + conversion fees outside the US (about $14 more) |
| Stripe Managed Payments | $94 | $72 | $70 | $78 | possibly up to $87, see below |
| Fungies | $107 | $67 | $62 | $77 | possibly Stripe's 2% conversion on payout (about $15 more), unconfirmed |
| Polar Pro | $97 | $65 | $61 | $73 | + $20/month |
| Payhip Plus | $84 | $59 | $56 | $66 | + $29/month |
| Payhip Pro | $64 | $39 | $36 | $46 | + $99/month |
| Stripe on its own, no merchant of record | $59 | $37 | $35 | $43 | you register, collect and file the tax yourself |
The same figures as a percentage of pre-tax sales. The "not in the figure" notes above apply here too, and monthly plan fees are still on top. "My savings" is how much of the Gumroad fee bill each option would cut on the mixed basket, with Gumroad's fees as 100%.
| Provider | 100 x $10 | 20 x $50 | 10 x $100 | Mixed basket | My savings |
|---|---|---|---|---|---|
| Gumroad (direct sales) | 22.6% | 15.5% | 14.6% | 17.4% | baseline |
| Moonbase, one GBP price | 21.8% | 12.5% | 11.4% | 15.0% | 14% |
| Moonbase, GBP + EUR + USD prices | 20.0% | 10.8% | 9.6% | 13.2% | 24% |
| Moonbase, one USD price | 19.6% | 10.3% | 9.1% | 12.7% | 27% |
| Moonbase, one EUR price | 18.4% | 9.1% | 8.0% | 11.6% | 33% |
| SoundSync | 10.0% | 10.0% | 10.0% | 10.0% | 43% |
| Lemon Squeezy | 12.7% | 8.7% | 8.2% | 9.8% | 44% |
| Payhip Free | 11.4% | 8.9% | 8.6% | 9.6% | 45% |
| Polar Starter | 12.0% | 8.0% | 7.5% | 9.1% | 48% |
| Stripe Managed Payments | 9.4% | 7.2% | 7.0% | 7.8% | 55% |
| Fungies | 10.7% | 6.7% | 6.2% | 7.7% | 56% |
| Polar Pro | 9.7% | 6.5% | 6.1% | 7.3% | 58% |
| Payhip Plus | 8.4% | 5.9% | 5.6% | 6.6% | 62% |
| Payhip Pro | 6.4% | 3.9% | 3.6% | 4.6% | 74% |
| Stripe on its own, no merchant of record | 5.9% | 3.7% | 3.5% | 4.3% | 75% |
How to read it:
Published fees, for reference
| Provider | Headline | Surcharges |
|---|---|---|
| Gumroad | 10% + 50Β’ + card processing (2.9% + 30Β’) | 30% flat on Discover sales |
| Moonbase | 5% + β¬1, on the tax-inclusive total | +1% non-European card, +1.5% PayPal, +1% USD / +3% other non-EUR currency, +3% affiliate sale, +β¬5 per payout |
| Stripe Managed Payments | 3.5% on the tax-inclusive total, on top of normal Stripe processing | none (no currency fee with Adaptive Pricing on) |
| Polar | Starter 5% + 50Β’, Pro $20/month, 3.8% + 40Β’ | +1.5% on every non-US card, Stripe payout fees |
| Fungies | 5% + 50Β’ | none published |
| Lemon Squeezy | 5% + 50Β’, on the tax-inclusive total | +1.5% non-US buyer, +1.5% PayPal, +3% affiliate sale, 1% payout to a non-US bank |
| Payhip | Free 5%, Plus $29/month + 2%, Pro $99/month + 0%, on the pre-tax price | your own Stripe and PayPal fees on top |
| SoundSync | 10% of the pre-tax price, processing included | $10/month minimum |
What about losing PayPal?
Stripe Managed Payments and Polar do not take PayPal, and SoundSync doesn't mention it either. A third of my buyers use it. I happen to have a natural experiment: Gumroad inexplicably switched PayPal off for four months in late 2024, when it was well over 40% of my sales. Revenue in those months, leaving out December, was about 4% below the four months before, which is inside my normal month-to-month noise. PayPal buyers mostly paid by card instead. This was just me, so treat it as a data point and not a law, but the cost was a lot smaller than I expected.
Features
| Provider | Merchant of record | PayPal | Licence keys | File delivery | Affiliates | Free / pay-what-you-want | Email marketing |
|---|---|---|---|---|---|---|---|
| Gumroad | Yes | Yes | Basic (key + verify API) | Yes | Native | Yes / yes | Built in |
| Moonbase | Yes | Yes (+1.5%) | Full licensing: online and offline activation, JUCE module, works alongside iLok | Yes, no size limit | Native (+3%) | Yes, no fee / no | No; syncs to Klaviyo, Mailchimp, MailerLite, Brevo, Mailjet |
| Stripe Managed Payments | Yes | No | No | No | No | Not a store | No |
| Polar | Yes | No ("planned") | Yes: activation limit, expiry, activate / validate API | Yes, 10 GB per file | Third-party only | Yes / yes | No |
| Fungies | Yes | Yes, no surcharge | Pre-generated key lists only, no activation | Yes, 50 GB | Separate paid product | Yes / only through the API | No ("coming soon") |
| Lemon Squeezy | Yes | Yes (+1.5%) | Yes: activation limit, activate / validate / deactivate API | Yes, 5 GB per product | Native (+3%) | Yes / yes | Built in, free to 500 subscribers |
| Payhip | No (see below) | Yes, your own account | Key + verify + usage counter, no enforced activation limit | Yes, 5 GB per file | Native and free, but you pay affiliates by hand | Yes / yes | Built in, plus sync to Mailchimp, Kit, MailerLite, Klaviyo |
| SoundSync | Stated, but the docs hedge | Not documented | Serial activation, login, offline grace, deactivation; HISE and JUCE integrations | Yes | By approval | Yes / no, and paid products start at $9.99 | Built in, 1,000 sends/month included |
Money / Currencies / Payouts
| Provider | Currencies | Where your money sits | Checkout on your own site | Import from Gumroad |
|---|---|---|---|---|
| Moonbase | 100+, with fixed prices per currency | With Moonbase, paid monthly (biweekly on request), β¬50 minimum + β¬5 fee | Embedded | Yes, assisted migration incl. licences |
| Stripe Managed Payments | Local currency via Adaptive Pricing | Your Stripe balance, normal payouts | Hosted Stripe Checkout only, no custom domain, buyer sees "Sold through Link" | n/a |
| Polar | 130+, fixed price per currency, tax-inclusive by region | With Polar in USD, 7-day settlement, manual withdrawals | Embedded or hosted | No |
| Fungies | One currency per offer | With Fungies; daily payouts to a Stripe Express account, PayPal weekly | Embedded, overlay or hosted | No |
| Lemon Squeezy | One display currency, every charge in USD | With Lemon Squeezy in USD; paid twice a month after a 13-day hold | Overlay, or hosted on a custom domain | Yes, done by their support from a CSV |
| Payhip | One currency per store | In your own Stripe / PayPal from the moment of sale | Embed button or direct link; custom domain | No |
| SoundSync | USD; others not documented | Stripe Connect transfers, schedule not stated | Embed or hosted storefront on a custom domain | Mentioned, no procedure documented |
Payhip and tax. Payhip is not a merchant of record and does not claim to be. It acts as reseller for EU and UK VAT, as marketplace facilitator for US and Canadian sales tax (since July 2026), and does nothing for the rest of the world, which was 15% of my sales across 48 countries. Refunds and disputes are yours. If you are a UK seller, ask an accountant how the reseller arrangement with a UK company affects your own VAT position before going near it. I have not had that answer yet.
Who is behind each one
Trustpilot figures are as of September 2026. Review sites over-sample angry people, but with a merchant of record the provider holds your money, so held payouts and silent support are exactly what I was looking for.
Things I couldn't pin down
Where I've landed
Not decided, but it has come down to three rather than eight:
User experience
The next step for me is to examine the user-facing side of each of these. The Moonbase system I know quite well after buying plugins from Jungle Audio and ZAK Sound. I need to see SoundSync in real use and figure out what my own user system would look like if I went with Stripe Managed Payments.
What do I want to build?
Here's the thing: Moonbase, SoundSync and some of the others have all the features I want, but at varying cost above the basic Stripe Managed Payments fees. So how much work am I willing to do (with AI, of course) to build my own cart, checkout, fulfilment, licensing, user accounts, discounts, refunds and email marketing?
Basically: do I want to build web app and marketing tech, or do I want to build plugins?
By the way, email marketing is an important factor. Gumroad includes it in the fee, and so do a couple of the others, but some don't and for large lists it can get expensive using Mailchimp, Klavyio, etc.
Merchant of Record
I definitely want to go with a Merchant of Record system, because no amount of time invested or AI-assistance is better than having someone else taking care of all the sales tax for me.
Parting thought
If Moonbase added support for GBP-holding, halved the fixed per-sale fee, the β¬5 payout fee and consolidated some of the other fees, they would be a no-brainer.
Corrections welcome, especially from anyone actually selling through one of these.
Until you spend hours debugging an inaudible filter node because Claude set the smoothing to 20 seconds instead of 20ms! 
@David-Healey In a conversation with ChatGPT today, it said to me
Your mockup surprised meβI expected to dislike it. I don't.
AI is getting cheekier! 
Anyone care to share their overall plans and goals for the coming year? 
My main goal is to start releasing HISE plugins. I've been learning HISE for a while and it's time to start exporting my efforts!
A series of 4 free synth plugins, first one Sublime posted here for design feedback, and another 3, each based around one simple preset concept. Sublime is all about bass.
Then I have 2 collaborations I want to work on, both with UK house music producers. One is a multi-output drum plugin based on a series of expansions, the other is a chord synth with some interesting features.
I also have a lot of vintage reverb impulses recorded and processed, which I'd like to turn into a suite of free reverbs.
My user base is mostly house music producers & related genres - rave, techno, classic house, etc. I've built a decent brand and I think my customers will love the move from Maize-based ROMpler plugins to way more fully-featured HISE-based plugins.
What are your goals?
I like using overlay images to ensure my Figma design is translated properly to HISE. Currently, the only way I know to toggle the image visibility is to select/unselect the image, or quickly slide the alpha slider, which is difficult because of the 'invert' half of the slider.
This PR adds a toggle button between the image dropdown and the alpha slider. It uses an existing image icon for the button and respects the alpha slider value.
This allows me to toggle the image without taking my eyes off the interface, making it easier to spot changes.
PR here: https://github.com/christophhart/HISE/pull/825

@David-Healey I just had a go at fixing this. Is that what you mean?

HiseSnippet 1112.3ocsVs2aaaCDmJIJKwacqEne.H7e4roYH+pIcACMO8pwxCi4rhMDDTPKcxhKRjFRTMwXneH12z8MH6ndXKO6klZfI.av6Eue2wi2w9QRGHNVFQLpb0jw.w3qLGLQn7O1mwEjdmPL9ZyyYwJHhlw5nIiYwwfKwvX8eRyvX6MHoe+8aNhEvDNvLVDx6jbG3LdHWMia+C9YdPPWlKbEOrj1sOnmiTbrLPlf3YcSaxXlysrQvELsZqYRdKK1mX7sl1scX60zqSqVu9061wcH330.FtqCytCyqCC41l0tSi1DiMO0kqjQCTLEDia5QR2IC7k2Ixbv63w7gAflnAY.54L1ji84At8KRNwDhwF8mkpVOKU8Ryy4t7o7mkxddp.5LKJmzLV6wfTiOCHYTBRajAoWXNvIhOVMShFOeoYOAdB5wvylxPISWxZ+05lGKQMDp5gragtQHwTKp0z11hh+sy9UpfmOwJZ.yi9izBSbh.LRNS5vBNSJu8PgaW.BpoUGUrdDLhqqe5lHbTbonVU2H1c8kiSFeNHRNBOhGEISDtUsndE5LxhJG9G6T4OqPwuQ0iAUVcQsp12am+UEcQlXOrd5W.GUsqssrsz.F+cCJ9iOQTzSAg+29+CrHJCiXjUcFFs3dVvdLy8PjCJ7Z1012P+NZSKJ65FSW07F52SaqW0Jc0M6uPHo2Vd7a4i7CveJvk9FZln35ih.PP+gozCCRf4CacpCb0QOSLJ.pkiHK5d6TBmJ3dUAPy0HCt6YUDCHnmsNE1Md0LFstYIHu.U24yUyfEJuKVaTq5IfGKIPgI1FsqaOUtNyeHFpBv8JDVowuFeVSQoEsZ.3opVbBlU1crLbn7H48MJU7MRikvwRAnc3TMzVNkPCnEJOwhhc1u37lJEWHUvkhZ5i7sq7wJz+sHOukJSiiHYP.DsTw5FbQOlg0DIgCgHK7PRexVnHdgd9tDa9z5R3jkVJonTzSvUWNFxo6JCb0290qWrmBIOup6tjiPTUUZukmm2aoHuR3t5VKSSyjzPnbyexu16DlhUrY39h9ZLDo35Px3D3C3vgrFWaadBDeqRNF6yO8.kXrUlqeVQaMl.BR86VloqaPturCmTl.KICKFlr8lDxCOLO2lkYeG2U4OyZ9A9f9tXYNjR35KdhoDDclFMyPlowKwEgrTdqunO+8CzXCSLei4kBnxU2IqbkOd8GGXtPedbBizMIfoleridfbt.rJatd8594hXtZR4A1eFyhrezYQOUH9By9bki+xw3ZKAiXsy+GXLeB9yLO0yC6bNCfaX182V0w0eB2icpUbwnyYpHttF3hjvAXYnCfdWf0xw55h0z2Ayns0z5Lv.P3lR7.9kKrgl1HWXiBgX0kSj78NY2b0uQXqTNHlDougZa7wbHMcIWVCwmr7dGm42pELr4pZXqU0v1qpgcVUCe0pZ3tqpg68oMT+hxCSTxvrqMDx48OMs4pgwoBFVAlVsR9GztgJYG
Content.makeFrontInterface(200, 200);
const laf = Content.createLocalLookAndFeel();
laf.registerFunction("drawPopupMenuBackground", function(g, obj)
{
g.setColour("0x00000000"); // any transparent colour
g.fillRect([0,0,200,200]);
});
laf.registerFunction("drawPopupMenuItem", function(g, obj)
{
var a = obj.area;
var padArea = [a[0] + 2, a[1] + 2, a[2] - 4, a[3] - 4];
g.setColour(obj.isHighlighted ? Colours.green : Colours.blue);
g.fillRoundedRectangle(padArea, 8);
var textArea = [padArea[0] + 8, padArea[1], padArea[2] - 16, padArea[3]];
g.setColour(Colours.white);
g.setFont("Default", 14.0);
g.drawAlignedText(obj.text, textArea, "left");
});
const ComboBox1 = Content.getComponent("ComboBox1");
ComboBox1.setLocalLookAndFeel(laf);
The drawPopupMenuBackground object should probably include an area, and the popup menu items still have a subtle drop shadow. But they're both fixes for another day.
PR here, if it's useful: https://github.com/christophhart/HISE/pull/805
@bendurso Today I learned that right-clicking a module in edit mode shows a different context menu to right-clicking not in edit mode. 
Posting this in case it helps anyone else. I just banged my head against a brick wall for too long before I realised how simple this was! 
When using a Floating Tile with content type Waveform (to display the waveform of Sine Wave Generator or Waveform Generator, for example) the default waveform path is a filled shape.
You can override this with LAF function drawAnalyserPath and draw a line path instead of a filled path:
laf.registerFunction("drawAnalyserPath", function(g, obj)
{
g.setColour(Colours.white);
g.drawPath(obj.path, obj.area, 5);
});
However, this means that the path is clipped at the bounds of the floating tile, especially at wider line thicknesses:

To prevent the clipping, I fudged around with it for longer than I want to admit before I realised the answer is to simply reduce the area that the path is drawn in, by half the thickness of the path:
laf.registerFunction("drawAnalyserPath", function(g, obj)
{
g.setColour(Colours.white);
g.drawPath(obj.path, obj.area.reduced(2.5), 5);
});
Voila! No more clipped paths!
Top row is using obj.area, bottom row is using area reduced by half line thickness:

You might want the left/right of the path to bleed out of bounds, in which case change the reduction from all-round to y-only:
obj.area.reduced(5) π all-round
obj.area.reduced(0, 5) π y-only
Note: you might need to compile with HISE_USE_SCRIPT_RECTANGLE_OBJECT=1 for the reduced and other Rectangle helper functions, as per the docs: https://docs.hise.dev/scripting/scripting-api/rectangle/index.html. Not sure if it's still the same, or if it's built-in to all new builds.
@Chazrox said in MEDIA BROWSER PLUGIN [NOT A HISE PLUGIN - but may be useful]:
The forum has definitely been less active since everyone has found their agentic work flows.
I noticed that too. Bit sad really. Maybe we should all start sharing more wins we have with AI?
@s_creator I just do videos. I have one demo video per product. https://www.youtube.com/@meatbeatsofficial
I make an audio demo first in Logic, then screen record the plugin window and use those recordings along with the audio and some background visuals to make a demo video. I try to include enough text in the video to cover the plugin features and benefits.
I don't do demo versions of the plugin, or trials of any kind.
I don't do licensing at all yet, but will do when I move away from Gumroad.
The reason I don't do trials or demo versions isn't because of the complexity of doing it, it's because I don't like them myself. I like to watch a good demo video, then buy the plugin.
Most of the trial plugins I've ever downloaded were never eventually bought. They just languish in trial jail.
The exception is freemium, where the plugin has a demo mode with limited feature set but is otherwise fully functional - no noise bursts, time limit, save limit, etc.
I see that as basically two plugins in one - a free one with limited features and a paid one that unlocks all the features.
@Lindon I literally just finished the demo video for my new plugin.
I do it by hand still. I use Screenflow and record plugin clips from the DAW, then add very simple text animations.
Interested to hear if anyone uses AI for this.
@David-Healey Really good to see Moonbase adding new stuff! Looking forward to GBP holding, coming soon hopefully! 
I'm interested in SoundSync too, very similar feature set, but much simpler pricing, albeit a newer, less proven company.
@scottmire What experience do you have so far with agentic coding?
@ILIAM Signing if offline but notarisation requires in internet connection because the whole bundle is uploaded to Apple's servers.
@ILIAM Huzzah! Glad it all got sorted! 
Requesting a callback from Apple seems to be a bit of secret weapon for fixing issues. Humans FTW! 
@David-Healey THAT WAS NOT FINANCIAL ADVICE!!! 
@David-Healey You have to switch on 'interest'. GBP is 3.29%, USD 3.6% and EUR 2.2%.
@Lindon Yeah, we talked about Wise previously. It doesn't help with the Moonbase internal conversion situation though.
@tobbentm If any of my post is inaccurate please let me know! 