Selling a course with LifterLMS comes down to four parts working together: an access plan that states the price, a payment gateway that collects the money, a checkout page that creates the account and the order, and an order record that keeps enrollment in step with payment.
This tutorial goes through the setup in the order we would do it on a new site, including the testing that is easy to skip: refunds, canceled subscriptions and failed renewals.
If the site already has students, do all of it on a staging copy first. We do not quote prices or fees here because they change. Check the LifterLMS pricing page and your gateway's own.
Step 1: choose a pricing model
| Model | Access plan settings | Typical use |
| One-time, lifetime | Single payment, lifetime access | Evergreen courses |
| One-time, limited | Single payment, access expires after a period or on a date | Exam prep, annual content |
| Payment plan | Recurring, fixed number of payments, lifetime access | Higher-priced programs |
| Subscription | Recurring until canceled | Memberships and course libraries |
| Free | Free plan | Samples and onboarding |
A course or membership can carry up to six plans by default, so you can offer pay-in-full next to a payment plan. If you are unsure whether you need a membership as well, read memberships and access plans explained first. Settle your currency and refund policy now, because both shape the settings below.
Step 2: create the access plans
- Edit the course or membership and scroll to the Access Plans box below the editor.
- Click Add New Plan, pick the closest template, and give the plan a title buyers will understand, such as "Pay in full".
- Set the price and frequency: one-time, or recurring at your chosen interval. For a payment plan, set the plan length to the number of payments.
- Choose the access expiration: lifetime, a limited period, or a fixed date.
- Add options only if you need them: a trial (recurring plans only), a sale price with dates, or members-only availability.
- Set visibility. Mark the plan you want most people to choose as featured.
- Save, then view the course page logged out and read the pricing table as a buyer would.
Step 3: connect a payment gateway
The free core plugin includes one gateway: manual payments. It suits bank transfers and invoices. Checkout creates a pending order and shows your payment instructions, and the student is enrolled when an admin records the payment on the order.
For card payments you need one of the LifterLMS gateway add-ons, bought individually or in a bundle.
| Gateway | What you need | Testing | Renewals |
| Stripe | A Stripe account, connected from the Stripe section under LifterLMS > Settings > Checkout. The add-on creates the webhook in your Stripe account. | Enable Stripe Test Mode | Automatic |
| PayPal | The classic API username, password and signature from your PayPal account | Enable PayPal Sandbox, with sandbox credentials | Paid by the student each period, unless your PayPal account has reference transactions |
| Authorize.Net | API credentials, with Customer Information Manager enabled on the account | Sandbox credentials and sandbox mode | Automatic |
| Manual | Your payment instructions | Not needed | An admin records each payment |
- Live card payments need HTTPS across the site.
- After connecting Stripe, confirm on the settings screen that the webhook is in place. Refund and failed-charge events reach LifterLMS through it. The Stripe setup guide shows where to look.
- The LifterLMS documentation says PayPal is no longer accepting new users for reference transactions. On a newer PayPal account, expect students to pay each renewal themselves. If you sell subscriptions, make a card gateway the main option.
- If you need tax calculated at checkout or a gateway outside this list, the WooCommerce add-on replaces the native checkout. You cannot run both. See our guide to LifterLMS integrations.
Step 4: set up checkout and account pages
- Under LifterLMS > Settings > Checkout, confirm the Checkout Page. It must contain the
[lifterlms_checkout] shortcode or the Checkout block. The setup wizard normally creates it.
- On the same screen, set the default country, the currency, and how prices are displayed. LifterLMS uses one currency for the site.
- Leave Retry Failed Payments enabled; it is on by default. It works with Stripe, Authorize.Net, and PayPal accounts that have reference transactions.
- Under LifterLMS > Settings > Accounts, confirm the Dashboard Page setting. That page is the Student Dashboard and uses
[lifterlms_my_account]. On the same tab, switch on the terms and conditions option with your terms page selected.
- Review the checkout fields under LifterLMS > Forms > Billing Information. Keep the form as short as your billing needs allow.
- Under LifterLMS > Settings > Security, choose a captcha service for checkout (reCAPTCHA or Turnstile). Public payment forms attract bots.
There is no guest checkout. A buyer creates an account or logs in as part of the purchase. Afterward, students use Order History on the Student Dashboard to view orders, cancel a subscription and, with Stripe or Authorize.Net, update their payment method.
Step 5: coupons, vouchers, tax and currency
- Coupons reduce the price at checkout. Create them under Orders > Coupons. Set a percentage or fixed amount, limit the code to certain courses or memberships and to one-time or recurring plans, and add a usage limit and an expiration date.
- Vouchers skip checkout. Under Orders > Vouchers you generate codes tied to courses or memberships, each with a set number of uses. Students redeem them at registration or from the Student Dashboard. They fit company deals paid by invoice.
- Tax. LifterLMS has no native tax settings. Its documentation points to the WooCommerce integration for tax calculation. What you owe is a question for your accountant, not for us. Settle it before launch, then choose the tooling.
- Currency. Prices are charged in your one site currency, including for buyers abroad.
Step 6: test every path
Put the gateway in test mode and make sure the test site cannot email real students. Then work through this list.
- Buy each plan as a new visitor with a Stripe test card or your gateway's equivalent. Check that the account exists, the order is Completed (one-time) or Active (recurring), the student is enrolled and the receipt arrives.
- Buy again as a logged-in student.
- Try a declined card. The buyer should see a clear message and should not be enrolled. Then use a card that requires authentication and complete the challenge.
- Apply a coupon and compare the amount on the order with the amount at the gateway.
- Redeem a voucher.
- Refund an order from its Transactions box. A gateway refund sends the money back; a manual refund only records it. The refund documentation says the order becomes Refunded and the student is unenrolled. Confirm both.
- Cancel a subscription as the student. The order should show Pending Cancellation, with access until the end of the paid period.
- Force a failed renewal. Stripe publishes a test card that saves successfully but declines when charged. Attach it to a test subscription, then edit the order's next payment date so the renewal comes due. The order should go on hold while LifterLMS retries, the student should be notified, and the order should end as Failed if every retry is declined. Note what the student can open at each stage. Retries are scheduled hours and days apart, so allow for that. On a cloned staging site LifterLMS switches automatic recurring payments off, so you have to turn them back on from the admin notice for this test. Do that only with the gateway in test mode and outgoing email blocked, because every subscription copied from the live site will then try to renew.
Step 7: manage orders and follow up after purchase
Every sale lands under Orders in the WordPress admin. An order has a status, a transaction for every payment attempt, and notes recording what changed. Recent versions also have a Customers screen under Orders showing each customer's order history and lifetime value.
One rule for daily work: change access by acting on the order. The documentation warns that editing a student's enrollment status by hand does not stop a recurring order from billing.
Emails after purchase
- Notifications under LifterLMS > Settings > Notifications include Purchase Receipt, Enrollment, Student Welcome, Upcoming Payment Reminder, Payment Retry Scheduled and Subscription Cancellation Notice. Edit the wording and enable the ones you want.
- Engagements send your own email when a student purchases an access plan or enrolls in a course. Use one to tell new students exactly where to start.
- Send site email through a dedicated email delivery service so receipts are less likely to land in spam.
Pre-launch checklist
- Gateway switched from test to live, and the live connection confirmed.
- One real purchase with a real card, then refunded.
- Every plan's price, interval, length and expiration checked on the live pricing table.
- Terms, refund policy and privacy pages linked where buyers will see them.
- Receipts and welcome emails arriving, from the right sender name.
- Tax approach confirmed with your accountant.
- Launch coupons created with limits and expiration dates.
- The Checkout page and the Student Dashboard excluded from page caching. See how to speed up a LifterLMS site.
- A named person checking failed payments and refund requests.
What to do next
For a first launch, one card gateway and one or two plans per course is enough. Work through the steps on staging, repeat the short version on the live site, and add coupons, trials and memberships once real orders are flowing. If the base install is not finished, start with how to set up LifterLMS step by step.
Get help when the standard setup stops fitting: tax through WooCommerce, a gateway LifterLMS does not support, custom checkout fields or flows, or a checkout that fails now and then for no obvious reason. That is the work our LifterLMS integrations, LifterLMS development and LifterLMS support services cover. Tell us what you are selling and we will point out the risks before you launch.