A subscription, paid access to content and a downloadable file are three different mechanisms in WooCommerce, and most of the trouble comes from mixing them up. Out of the box, WooCommerce sells downloadable products only - files the customer gets a link to once the order is paid. Charging money on a recurring basis (subscriptions) and restricting access to content (memberships) are two separate layers, added with plugins and dependent on whether your payment gateway can charge the customer every month.
Three sales models that are easy to confuse
Before you pick a plugin, name what you are actually selling - each model works differently and breaks differently.
| Model | What the customer gets | Where the money comes from | What you need |
|---|---|---|---|
| Digital product | A file to download (PDF, a course in a ZIP, presets) | One payment | WooCommerce on its own |
| Subscription | Anything, but billed on a cycle | A charge every month or every year | A subscription plugin plus a gateway with recurring payments |
| Membership | Access to a closed part of the site, a course, files | One-off or recurring | A membership plugin, optionally wired to subscriptions |
The most common mistake: somebody wants to sell a course on a monthly plan, buys a membership plugin, and then discovers it does not collect money at all - it only locks pages. A subscription course needs both layers at once.
Subscriptions: recurring payments and the gateways that support them
A subscription in WooCommerce is a product that creates an order renewing on a set rhythm and tries to charge the payment method saved by the customer. The standard is the official WooCommerce Subscriptions extension on an annual licence; there are cheaper, narrower replacements too. On top of the billing cycle you get trial periods, sign-up fees, pausing and resuming a subscription from the customer account, and retries for failed payments.
The key question, though, is a different one: can your gateway charge the customer without the customer being present. That is what recurring payments mean, and it is not a default feature of every integration.
- Card - the most reliable route to automatic renewals, as long as the provider has recurring payments enabled on your contract
- BLIK (the Polish instant-payment standard, confirmed with a six-digit code in a banking app) - excellent for the first payment, but renewals need a separate mandate mechanism on the provider’s side
- Bank transfer and cash on delivery - they never renew themselves; you end up with manual renewals, meaning an email asking the customer to pay
- PayPal - supports recurring mandates, but the scope depends on the account type and the version of the integration
Before you buy a plugin, ask your provider point blank about recurring payments in WooCommerce - that one question saves weeks of workarounds. I wrote up the differences between providers in the piece on payment methods.
Memberships: paid access to content
A membership is an access rule: who can get into what, and for how long. A membership plugin guards pages, files and products - it hides them from logged-out visitors, shows a teaser instead of the full thing, or gives a discount to a chosen group. The popular routes are WooCommerce Memberships (it plugs into subscriptions and store orders), MemberPress and Paid Memberships Pro. The last two have their own payment handling and can work as a standalone alternative if access is all you sell.
Four things to settle before implementation, because fixing them later costs money:
- What exactly is locked - a whole section, individual lessons, files, or just the option to buy at a lower price
- When access ends - when the subscription expires, after a set number of days, or never
- What an outsider sees - a full block hurts search visibility, a teaser with a description works better
- What happens after a failed payment - do you cut access immediately or allow a few days of grace
Grace is not a detail: cutting access a second after a failed charge annoys customers who simply replaced their card.
Digital products: files, download limits and expiring links
Downloadable products work without any extra plugin. You tick the downloadable option, upload the file and set two numbers: the download limit and the number of days after which the link expires. In the store settings you also decide whether downloading requires a login and whether access is granted immediately after payment.
How files are served is configured separately. There are three modes:
| Mode | How it works | When to use it |
|---|---|---|
| Force download | The file goes through PHP, its address is never exposed | The default choice for paid files |
| X-Accel / X-Sendfile | The server sends the file, PHP only authorises it | Large files, if your hosting supports it |
| Redirect only | The customer gets the direct file address | Material that could be public anyway |
With large files, force download breaks on the PHP time limit. That is when you switch to the server mode or keep files in an external service and hand out an expiring link. Hosting quality decides here - what to check, I described when writing about hosting for a WooCommerce store.
How to protect files, and why a watermark in a PDF helps
You cannot make it impossible to pass a file on - you can make people not want to. Three layers I use:
- Files outside the public directory - if the file can be downloaded without an order, every other safeguard is decoration
- A download limit and an expiring link - three downloads within 30 days is plenty for an honest customer
- A watermark with the buyer’s details - a PDF stamped at download time with the order number and the buyer’s email; very few people forward a document with their own name on every page
Stamping is done with a plugin or with your own code on a PHP library, but the hosting needs the right extensions and memory limit - the file is generated on the fly on every download.
Invoices, VAT and KSeF in recurring sales
Recurring sales change one thing in accounting: there are many times more documents - a hundred subscriptions means a hundred invoices a month. Three things to set up straight away:
- Automatic invoices for renewals - every renewal order should reach your accounting software without you touching it; how to wire that up, I described in the piece on integrating WooCommerce with an ERP and KSeF
- KSeF (Poland’s mandatory national e-invoicing system) - it is already in force: the largest companies from February 2026, everyone else from April 2026; recurring invoices for business customers have to fit inside it
- VAT on digital content for consumers in other EU countries - the rate depends on the buyer’s country, and it is settled through the OSS procedure once you pass the EU cross-border sales threshold; confirm this with your accountant
So the store has to record the customer’s country and evidence of their location, not just the shipping address.
What breaks most often
Failures in stores like this come from a narrow, repeatable set of causes.
- Renewals do not fire - WordPress runs scheduled tasks off the back of site traffic, so on a quiet site they can be hours late; the cure is a system cron on the server
- Emails do not arrive - the customer gets neither the file link nor the notice about a failed payment; this is the most expensive failure in this model, and the usual cure is sending transactional mail through SMTP instead of straight from the server
- The customer’s card expired - with no reminder before the renewal and none after the failed attempt, the subscription dies quietly
- Updating the subscription plugin straight on production - a bug here hits every payment at once, so testing before release is not optional
- Changing a plan price - existing subscriptions usually stay on the old price; raising prices for current customers is a separate, planned operation
What it costs
Plugin prices change every year, so treat this as an order of magnitude to verify in the vendors’ price lists.
| Item | Order of magnitude | Notes |
|---|---|---|
| Subscription plugin | A few hundred PLN a year per licence (Polish market rates) | Alternatives are cheaper but narrower |
| Membership plugin | A few hundred PLN a year | Some have a free base version |
| Gateway commission | A percentage of the transaction plus a fixed fee | Charged on every renewal |
| Implementation | Fixed-bid projects usually 5,000-10,000 PLN net | Depends on the number of plans and integrations |
| Technical maintenance | Basic 1,000 / Pro 2,000 / Premium 3,500 PLN net per month | Here every incident touches payments |
I pulled together the recurring costs of a whole store in the piece on WooCommerce plugin costs.
Where I start
I start with a free diagnosis: what you want to sell, how your payment setup looks and whether the current store can carry a recurring layer. Two routes usually come out of it - adding subscriptions to an existing store as part of optimization, or building a store designed for this model as part of an ecommerce implementation. For bigger work you get a written quote before the start: scope, deadlines, amount.
Frequently asked questions
Does WooCommerce handle subscriptions without an extra plugin? No. Core WooCommerce sells one-off, including downloadable files. Charging a customer on a cycle requires a subscription extension and a gateway with recurring payments enabled on your contract.
What is the difference between a subscription and a membership? A subscription handles the money - it collects a payment on a set rhythm. A membership handles access - it decides what a logged-in customer can see. For a subscription course you need both at once, wired so that an expired payment closes access.
Can you protect a PDF file from being copied? Not completely - any file a customer can open, they can also forward. What genuinely works is a combination of three things: files outside the public directory, a download limit with an expiring link, and a watermark with the buyer’s details.
What happens when a customer’s renewal payment fails? The plugin retries on a schedule and emails the customer asking them to update their payment method. You decide whether access is cut immediately or after a few days of grace - that grace period and working emails decide how many customers come back instead of leaving.
Running a store where something does not work the way it should? I build and rebuild WooCommerce stores - from a single fix to reworking the whole sales flow. Tell me what you are dealing with and I will send back a scope and a price.