In the latest episode of Core
Daniel Jalkut talks about switching from PayPal to Stripe as the payment method
for his Mac app MarsEdit. This sparked a
discussion on the corresponding Slack team about the
pros and cons of different ways to handle selling your digital products.
European VAT rules, accounting and other distractions make this harder than you
In this article, I will outline the common payment options for digital products
and their individual advantages and disadvantages. This is from the
perspective of a Mac developer, but apart from the licensing aspect,
it applies to all other digital products as well, including SaaS subscriptions
and online courses.
Note that I am neither a lawyer nor an accountant; these are just my personal
Having people send you cash or checks in the mail
Fees: None (I guess)
This used to be the state of the art in accepting payments — in 1992.
2017, it is the fastest way to kill your business.
- That warm, fuzzy feeling when someone really goes through the hassle of putting
cash in an envelope with postage and going to the post office, just to buy your
- No third-party dependencies (other than your local mail provider).
- Everything else. Let’s move on.
Having people send you money via PayPal or Stripe
You could either just have a PayPal “send me money” link on your website, or
create a payment form with an automated process that delivers your license code.
This might be the option that naturally comes to mind, but keep in mind that you
are still responsible for creating proper invoices and charging (and deducting)
VAT in countries that charge it, including about all EU countries — which also
charge varying VAT rates per country.
If you are based in the US, you might get away with ignoring the EU’s VAT rules
altogether, but I don’t recommend that. You would be in good company there —
looks like Panic and The Omni
Group have just that approach — but I still don’t
recommend it. (I’m German. We really like to avoid risks.)
- The cheapest way to accept payments online.
- Just one dependency that is also easy to switch out in case you need to.
- You are responsible for proper handling of VAT, which is a mess. Read this
if you’d like to learn more.
- You’d also be responsible for creating proper invoices and accounting for your
payments. You might get away in just booking the lump sums sent to you every
month by Strip/Paypal/Braintree, but in some cases you might need to have every
individual transaction in your books. If unsure, talk to an accountant.
- You also need to implement the whole licensing system yourself. This can be a
lot of work. (See the bottom of the article for some pointers on how to deal
- In the case of PayPal: You have to deal with PayPal, which is a terrible company
Having people send you money via Stripe, but letting someone else deal with that whole VAT mess
If you ask me, this is a much better approach. VAT is such a complex matter that
it’s really hard to get right, and as with all taxes it is something you don’t
want to mess up. With some services (such as
Quaderno), you might also have some of the
accounting and invoicing done for you.
- Much less work in terms of VAT/invoicing/accounting.
- You probably still need to sign up for an EU VAT ID and file your VATMOSS
(Not 100% sure about that, though.)
- You now need to manage two services.
- Slightly more expensive.
- Still have to deal with licensing yourself. (Again, see the bottom of the
article for some pointers on how to deal with that.)
Having a reseller handle payments, invoicing and VAT for you — but with your own licensing system
In this case, your reseller acts as your Merchant of
Record. This means that they are the
actual business taking your customers payment, and thus responsible for creating
a proper invoice, dealing with VAT, and so on. At the end of the month, you just
get a nice lump sum transferred into your bank account, which also makes your
This is actually the option I use: I use Paddle,
which lets me avoid dealing with all the payment stuff, and combine it with a
completely homegrown licensing system. That way, I retain full flexibility in
terms of pricing, discounts and licensing. I can offer paid upgrades,
limited-time licenses and whatever else the business requires. And in case
there’s a problem with one reseller, it is still fairly easy to switch to
another one as just the payment-handling part (but not the licensing) is
To be honest, Paddle isn’t terrific, either. Their checkout process looks nice
and is very straightforward, but they have been slow in implementing new
features and there are a few edge cases I’d like to have handled differently.
I’d say they definitely are the service that sucks the least, though 😉
FastSpring is fairly similar to their service, though, but costs a bit more.
(Their pricing page no longer shows their pricing, but it used to be around
either 8.9 % or 5.9 % + 95 ¢/transaction).
Gumroad might look like the cheapest option, but keep in mind that their service
was not built for selling Mac apps or subscriptions. So while it might be
possible to make these work with Gumroad, you’ll likely have to jump through
more hoops than with Paddle or FastSpring to accomplish the same goals.
- VAT, invoicing, accounting all done for you.
- You are still able to switch resellers, as you are not locked into a particular
- Still more expensive, but I’d say it’s worth it.
- Still have to deal with licensing yourself. (See below for tips…)
Using a reseller and their existing licensing system
Fees: Same as above — 5 % + 50 ¢ (Paddle)
This is the most convenient option, most similar to the Mac App Store. Just plug
in an SDK and have that deal with all payment and licensing issues.
For example, the reseller Paddle also offers an
SDK to handle licensing for you. To
be honest, I tried to use their system but found their licensing system way too
inflexible for my needs (unless you replace most parts with your own, custom
solution, in which case you could just build the whole thing yourself).
However, you could also use a third-party licensing system such as
DevMate. In fact, DevMate was recently acquired by
Paddle. Given that DevMate was originally developed by
the great people at MacPaw, makers of the
Setapp service), I would imagine their system to
be in much better shape than the original Paddle SDK.
However, in either case you are locked fairly tightly to a specific reseller
when you use their licensing system. DevMate might still be compatible with
FastSpring, but I
would still be a bit worried in case you’d ever want to switch resellers or
migrate to a different licensing system.
- Very easy and worry-free, almost drop-in.
- VAT, invoicing, accounting all done for you.
- No need to worry about licensing, either.
- Fairly tight lock-in. Switching to a different reseller (and a different
licensing system) would be painful.
These are the payment options that I could think of. I went with a combination
of Paddle for payments, invoicing and VAT
handling plus my own, homegrown, licensing system.
For most Mac developers, it would be wise to combine a reseller such as
FastSpring with an open source licensing
system such as CocoaFob (also see my
Python-based CocoaFob license generator and
Aquatic Prime. Both are fairly easy
to integrate. This lets you avoid worrying about all the payment problems, while
retaining full control of the licensing system. (Alternatively, my friend
Christian Tietze wrote a book on how to sell your
Mac app with
What payment and licensing systems do you use? Are there any points I missed? Let me know
with a tweet to @daniel_a_a or an email to daniel at timingapp.com!