Stackless

How to Sell WordPress Plugins

Selling a WordPress plugin takes a store, license keys, automatic updates and a plan for sales tax. The three routes, what each costs per sale and how to set up your own.

A plugin passing through a checkout to a license key, which activates and updates 3 websites

Learning how to sell WordPress plugins is often harder than building the plugin. A buyer expects to paste a license key and see updates in their dashboard, and a sale to another country can owe VAT or GST. Without those pieces, you end up emailing zip files and hoping nobody runs one purchase on 50 client sites.

I'd sell from my own store and hand the tax to a merchant of record. You keep your customer list and your pricing, and you avoid registering for tax in countries you've never visited. If you'd rather not run a store at all, Freemius is the route I'd look at instead.

I lead Stackless for EDD at Gatilab, a plugin that adds license keys, automatic updates and subscriptions to Easy Digital Downloads. I use it in the setup steps below, so weigh that recommendation with that in mind.

What You Need to Sell a Plugin

Every route has to cover the same 5 jobs. Before you compare tools, I want to ensure these are clear:

  • Checkout: a place to take the payment, including yearly renewals if you charge them.
  • License keys: a key per purchase, with a limit on how many sites can use it.
  • Automatic updates: new versions that appear in the buyer's dashboard, for licensed sites only.
  • Sales tax: VAT, GST and US sales tax on sales around the world.
  • Customer account: somewhere buyers can copy keys, free up sites and download files.

Three Ways to Sell a WordPress Plugin

There are broadly three routes, and they differ in who runs the store and who owns the buyer.

Your own store

Freemius

Marketplace

Who runs checkout

You

Freemius

The marketplace

Fee on each sale

Your payment provider's rate

3.8% + 50 cents + gateway fees

Set by the marketplace

Sales tax

You, or a merchant of record

Handled

Check its terms

License keys and updates

A plugin on your store

Included

Depends on the marketplace

Setup work

Highest

Add its SDK

Lowest

Your own store gives you the most control. It takes the most setup, and you are responsible for your own uptime, because your buyers' updates depend on your site.

Freemius is a merchant of record built for software, and it handles payments, licensing, updates and tax. It has no setup or monthly fee, and the $100 minimum payout is worth knowing about if your early sales are small.

Marketplaces such as CodeCanyon bring their own audience, but they run the checkout and set the rules and fees. I'd check the current author terms before you upload, because that split shapes your pricing for years.

What a $49 Sale Costs

A percentage is hard to compare, so here is one example: a $49 plugin sold to a US buyer paying by card. Non-US cards can cost more on some of these.

Route

Fee on a $49 sale

Who handles tax

Your store with Stripe

$1.72

You

Your store with Dodo Payments

$2.36

Dodo Payments

Freemius

$2.36 plus gateway fees

Freemius

Your store with Paddle

$2.95

Paddle

Stripe is the cheapest row but it leaves all the tax work with you. My guide to merchants of record for WordPress compares Paddle, Polar and Dodo Payments in detail, including non-US cards and payouts.

The store plugin is a separate cost. These are the options I'd compare:

  • Stackless for EDD: $99 once or $39 a year for unlimited sites at launch prices, which rise to $399 and $69.
  • EDD Professional pass: $599 a year for 2 sites, and it is the first pass with Software Licensing.
  • FluentCart Pro: $159 for the first year, then $199 a year for 1 site, with licensing included.
  • Kestrel API Manager on WooCommerce: $199 a year for 1 site, and automatic renewals need a subscriptions plugin too.

Should You Have a Free Version?

A free version on WordPress.org can bring you an audience that a new store won't have on its own. It has to be useful on its own, though, because the plugin guidelines say trialware isn't permitted.

So the free plugin can't lock its features after a trial or a usage limit. I'd keep a complete, smaller plugin in the directory and sell the extra features as a separate paid plugin from your store.

How to Set Up License Keys and Updates

This setup uses the free Easy Digital Downloads plugin with Stackless for EDD. You should try it on a staging site first, and the steps are similar for other licensing plugins.

  1. Install Easy Digital Downloads and Stackless for EDD.
  2. Go to Stackless > Dashboard and switch on Software Licensing.
  3. Create a download for your plugin and tick License keys in its Licensing box.
  4. Set the Site limit and choose Validity: Lifetime, Follows subscription or Number of days.
  5. Fill in Software slug and Current version, and attach your zip file. The zip must open to my-plugin/my-plugin.php.
  6. Copy the license client file from the Stackless folder into your plugin, and rename its class.
  7. Load the client from your main plugin file, as shown below.
  8. Install your plugin on a test site, activate a key and release a new version to confirm that the update appears.

The client file is at templates/software_licensing/client/class-stackless-edd-license-client.php. This is the main part of the code, with your own store address, slug and download ID:

require_once __DIR__ . '/includes/class-my-plugin-license-client.php';

function my_plugin_license() {
	static $client = null;
	if ( null === $client ) {
		$client = new My_Plugin_License_Client( array(
			'store_url'   => 'https://yourstore.com',
			'slug'        => 'my-plugin',
			'plugin_file' => __FILE__,
			'version'     => '1.2.0',
			'download_id' => 123,
			'name'        => 'My Plugin',
		) );
	}
	return $client;
}
my_plugin_license()->init();

You still need to call render_form() on your own settings screen, so buyers have somewhere to enter the key. The licensing client guide has the full plugin and theme examples, including the Update URI header.

Stackless for EDD licenses list with license keys, downloads, customers, orders, site activations against limits and expiry dates

How to Price by Site Count

Most plugin sellers charge by the number of sites. In Stackless, you turn on variable pricing for the download and give each price option its own site limit. Every tier still shares one slug, one version and one changelog.

Here is an example with made-up prices:

Tier

Price

Site limit

Single site

$49 a year

1

Agency

$99 a year

5

Unlimited

$199 a year

0, which means unlimited

Download page for a WordPress plugin with single site, agency and unlimited site price options and a Subscribe now button

Local and staging sites such as .test and .local don't count toward the limit by default, which saves a lot of support questions from developers.

What Happens When a Buyer Stops Paying

Sell the plugin as a subscription and set Validity to Follows subscription, and the key follows the payment:

  • Renewal paid: the expiry moves to the new period end, plus the grace days you set.
  • Payment fails: the key goes inactive at once while the subscription is on hold.
  • Cancelled for later: the key stays active until the paid period ends.
  • Refunded order: the key is revoked.

Buyers manage their own sites from their account, so moving to a new domain doesn't need a support ticket.

Customer account licenses tab with a license key, copy button, sites used, a download button and activated sites with Deactivate links

The Limits of This Setup

Running your own store isn't the right call for every plugin. These are the catches I'd check first:

  • Updates depend on your site: if your store goes down, license checks and new downloads go with it, so hosting matters more here.
  • No key importer: Stackless can't import existing keys from another licensing plugin, so it suits a new product better than a live one.
  • One subscription per checkout on some gateways: Polar and Dodo Payments allow one subscription in a cart.
  • Newer plugin: Stackless for EDD is at version 1.3.0, so it has a shorter history than EDD Software Licensing.

FAQs on Selling WordPress Plugins

Can I sell a plugin on WordPress.org?

Not directly, because the directory lists free plugins. You can list a free version there and sell a paid version from your own store, as long as the free one isn't trialware.

Do I need a license key system?

You need one if you want automatic updates for paying buyers and a limit on how many sites each purchase covers. Without it, you end up sending new versions by email.

Is Freemius better than selling from my own store?

It is simpler, because Freemius handles checkout, licensing and tax in one place. Your own store takes more setup and gives you more control over the checkout and customer data.

Can I sell WordPress themes the same way?

Yes. The steps are almost the same, and the license client takes a theme value instead of plugin_file.

Final Remarks

If you're still deciding, I'd look at how much time you want to spend on the store. If you want to focus only on the code, I'd try Freemius. If you want your own checkout and customer list, I'd set up Stackless for EDD on staging and sell one plugin through it, with a merchant of record handling the tax.

One plugin instead of the add-on stack.

Stackless for WooCommerce and EDD. Every module, unlimited sites, from $99 once.