Mark a course as paid
The This is a paid course setting gates a course behind a purchase.
Where
Course settings → Configuration → This is a paid course.
What it does
When enabled and no permission rule applies, access depends on the student having bought the product associated with the course, in an order with a paid status.
Orders that are pending, on hold, cancelled, refunded or failed do not grant access.
If the associated product is a subscription, the student must additionally have an active subscription to it — an expired or cancelled subscription does not grant access.
A permission rule takes precedence
This is the single most important interaction: if the course has a Global permission rule, the rule decides and the paid setting is not consulted.
Enabling both is not additive — it is ambiguous. Choose one model per course:
| Situation | Use |
|---|---|
| One product, straightforward | This is a paid course |
| Several products, subscriptions, roles or time windows | A permission rule |
For anything beyond the simplest case, a rule expresses the requirement more clearly and is the mechanism to prefer. See Course permission rules.
What the student needs to see
A paid course must tell a blocked student what to buy. Two things do that:
- Content if no access — the message on the course.
- The
{related_product_links}merge tag inside it, which prints links to the products associated with the course.
If nothing is associated, the tag prints nothing — so always include a direct link to the product page as well, rather than relying on the tag alone. See The related product links merge tag.
Combine it with the login requirement
A student who has not bought the course and is not signed in is in two different situations, and the message should reflect that.
Enabling To access this course, users must be logged in alongside the paid setting means signed-out visitors are told to sign in — with the login form, if you enable it — while signed-in students without the purchase are told what to buy.
What it does not do
- It does not create the product; you create it in WooCommerce.
- It does not display a price or a buy button on the course page.
- It does not enroll anyone automatically at purchase time — access is evaluated when the student opens the course.
- It does not remove access when an order is refunded until the order's status actually changes.
Verify
- Enable the setting and update the course.
- Sign in as a student who has not bought: the no-access message, with a working route to the product.
- Complete a test purchase with that account.
- Reopen the course: it should open.
- Refund the test order and confirm access behaves as you expect.
- If the product is a subscription, test with an active one and with a cancelled one.
Full sequence: Test a paid course.