LifterLMS Checkout Setup: Pages, Forms, Terms and Testing

Set up LifterLMS checkout properly: the checkout page and confirmation flow, the billing form, terms and privacy, currency and spam protection, what happens to an order, and how to test a purchase end to end.

  • Add as a preferred source on Google
Illustration for “LifterLMS Checkout Setup: Pages, Forms, Terms and Testing”

Checkout is the one page on a course site where a small mistake costs real money. A missing field, a confusing redirect or an untested gateway can quietly lose sales for weeks before anyone notices.

This guide covers how LifterLMS checkout works and how to configure each piece: the checkout page, the billing form, terms and privacy notices, currency display, spam protection, where buyers land afterwards, and what happens to the order behind the scenes. It finishes with a test plan you can run before launch.

It assumes you already have a course or membership with at least one access plan. Payment gateway setup is covered in separate guides for Stripe, PayPal and the manual gateway.

How LifterLMS checkout works

Every purchase starts from an access plan. When a visitor clicks a plan's button on a course or membership page, LifterLMS sends them to your checkout page with the plan in the URL, for example /purchase/?plan=123. The access plan editor shows this address as the Direct to Checkout Purchase Link, which you can use in emails and sales pages.

On the checkout page the buyer sees an order summary, the billing form, a coupon field, the available payment methods and the buy button. Submitting the form does three things in order:

  1. Creates or updates the buyer's WordPress user account. LifterLMS has no guest checkout, because progress, grades and certificates belong to an account.
  2. Creates an order with the status Pending Payment.
  3. Hands the order to the selected payment gateway, which takes the payment and marks the order Completed (one-time plans) or Active (recurring plans). That status change enrolls the student.

Free access plans skip the payment part. LifterLMS removes the payment fields and the form works as a simple enrollment form, and a logged-in user whose account already has the required information can enroll in one click.

Set up the checkout page

The setup wizard creates a page called "Purchase" containing the [lifterlms_checkout] shortcode. If you skipped the wizard or want your own page:

  1. Create a page and add the Checkout block, or the [lifterlms_checkout] shortcode.
  2. Go to LifterLMS > Settings > Checkout and choose it as the Checkout Page.
  3. Save, then visit a course and click an access plan button to confirm you land on it.

Keep the checkout page simple. Use a full-width template with no sidebar, and avoid pop-ups, exit-intent overlays and chat widgets that cover the buy button on phones. The checkout page must not double as your catalog or dashboard. The LifterLMS checkout page documentation has more on its requirements.

The same tab holds the Confirm Payment endpoint (confirm-payment). Some gateways send buyers to an external payment page and bring them back to this endpoint to confirm the order. You normally leave it alone; just do not reuse the slug for something else.

Configure the billing form and terms

The fields on checkout come from a form called Billing Information, edited under LifterLMS > Forms in the block editor. By default it asks for email, password, first and last name, address and phone.

Ask for less if you can. Every field you remove makes checkout faster. Common changes:

  • Remove the address if you do not need it for tax or invoicing. Check with your accountant first; some tax rules require the buyer's country.
  • Remove or make phone optional. Few course businesses need it.
  • Keep email and password. They are required on the checkout form and cannot be removed.

The form is shared by every product on the site. A different checkout form for a particular course or plan needs the LifterLMS Custom Fields add-on. The editor itself is covered in our guide to LifterLMS registration and account forms.

Add terms and privacy notices

LifterLMS can require buyers to accept your terms before they pay. The settings are on the Accounts tab, not Checkout:

  1. Under Terms and Conditions, tick Enable / Disable.
  2. Choose the Terms and Conditions Page.
  3. Edit the Terms and Conditions Notice text if needed.
  4. Under Privacy Policy, choose the Privacy Policy Page and adjust the Privacy Policy Notice.

The checkbox and notice then appear at the bottom of checkout, above the buy button, and on registration forms. If you sell subscriptions, make sure your terms describe renewal, cancellation and refunds in plain words. A clear policy prevents more disputes than any setting.

Currency, payment methods and spam protection

Currency is set once for the whole store under Currency Options on the Checkout tab: Currency, Currency Position, separators, Decimal Places and Hide Zero Decimals. LifterLMS charges in one currency; it does not convert prices per visitor.

Payment methods come from the gateway table at the top of the tab. Only enabled gateways that support the plan type appear at checkout. A gateway that only handles one-time payments will not be offered on a recurring plan, and if no enabled gateway supports the plan, buyers see "There are no gateways enabled which can support the necessary transaction type for this access plan." Drag gateways in the table to change the order they are listed in.

Two more Checkout settings matter for paid sites: Retry Failed Payments, on by default, retries failed recurring payments automatically, and Force SSL forces https on checkout, which is redundant if your whole site already uses https.

Protect checkout from spam and card testing

Public checkout forms attract bots that test stolen card numbers with small charges. On the Security tab:

  • Set Captcha to reCAPTCHA or Turnstile and enter the keys.
  • Leave Spam Protection on. It blocks an IP from checkout after more than 10 failures within 15 minutes.
  • Turn on Akismet Spam Protection if you already use Akismet.

Also enable whatever fraud tools your gateway offers. In Stripe that means Radar rules; see our Stripe guide linked above.

Decide where buyers land after checkout

By default, a buyer returns to the course or membership they bought. You can change that per access plan in its Redirection Settings. Checkout Redirect offers:

  • (Default) Return to Course/Membership
  • Redirect to a WordPress Page
  • Redirect to a custom URL

A dedicated welcome page is a good choice: it can confirm the purchase, explain how to start, and fire your conversion tracking. On a membership's members-only plans, Override Membership Redirects lets a plan use its own redirect instead of the membership's.

Behind the scenes, the student also receives the Purchase Receipt email and, for new accounts, the Student Welcome email if those notifications are enabled. Review both under Settings > Notifications.

Small customizations without editing templates

Most checkout tweaks can be done with hooks in a small custom plugin, so they survive updates. Two examples: changing the buy button text, and adding a reassurance line above it.

<?php
/**
 * Plugin Name: LLMSX Checkout Tweaks
 */

// Change the "Buy Now" button text on paid checkouts.
add_filter( 'lifterlms_checkout_buy_button_text', 'llmsx_checkout_button_text' );
function llmsx_checkout_button_text( $text ) {
	return __( 'Pay and start learning', 'llmsx' );
}

// Add a short note above the buy button.
add_action( 'llms_checkout_footer_before', 'llmsx_checkout_reassurance' );
function llmsx_checkout_reassurance() {
	echo '<p class="llmsx-checkout-note">' . esc_html__( '14-day refund policy. Questions? Email support@example.com.', 'llmsx' ) . '</p>';
}

The button filter also runs on free enrollments, where the default text is "Enroll Now", so return different text based on the original value if you need both. Other useful hooks in the checkout template include lifterlms_before_checkout_form, lifterlms_checkout_after_billing_fields and llms_checkout_order_summary_end. Keep deeper changes in a custom plugin or a child theme template override, never in the LifterLMS plugin files.

Test a purchase and fix common problems

Put your gateway in test or sandbox mode and work through this list in a private browser window, logged out:

  1. Buy a one-time plan as a new visitor. Confirm the account is created, the order is Completed, and you are enrolled.
  2. Buy a recurring plan. Confirm the order is Active and shows a next payment date.
  3. Apply a coupon and check the order summary and the receipt.
  4. Use a declined test card and check the error message is clear.
  5. Enroll in a free plan, logged out and logged in.
  6. Check the receipt and welcome emails arrive and are not in spam.
  7. Check the redirect lands where you expect.
  8. Repeat the first purchase on a phone.

Then open the order from the Orders menu in the WordPress admin. The order notes record each status change, which makes it easy to see where a failed test went wrong. Switch the gateway back to live mode afterwards; forgetting is one of the most common launch mistakes.

Common checkout problems

  • "Payment processing is currently disabled." No gateway is enabled. Enable one on the Checkout tab.
  • The plan button links to "#llms-plan-locked". The plan is members-only and the visitor is not in the required membership.
  • The order stays Pending Payment. The gateway never confirmed the payment. With Stripe or PayPal, check the gateway's webhook or log; with the manual gateway, this is expected until you record payment.
  • Buyers are logged out or see a blank page after paying. Usually page caching on the checkout page. Exclude checkout and the dashboard from caching.

Frequently asked questions

Does LifterLMS support guest checkout?

No. Every buyer gets a WordPress account, because enrollments, progress and certificates are stored against a user.

Can I have a different checkout form for each course?

Not in core. Core uses one Billing Information form for every product. The LifterLMS Custom Fields add-on can assign different forms to specific courses, memberships or plans.

Can buyers pay in their own currency?

No. LifterLMS uses a single store currency. Your gateway may show a converted amount on the buyer's card statement, but prices on the site are in one currency.

Where do I see completed purchases?

Under Orders in the WordPress admin menu. Each order shows its status, transactions, notes and the student's enrollment.

Next steps

Set up the page, trim the billing form, add your terms, enable a captcha, then run the test list above with your real gateway in test mode. That covers the problems we see most often on new sites.

If your checkout needs more than the settings allow, such as tax handling, company invoicing, extra steps or a connection to your CRM, our LifterLMS customization service builds those changes in an update-safe way. Tell us what your checkout needs to do.

Add LifterLMS Expert to your preferred sources

Add lifterlmsexpert as a preferred source on Google, or open this article in your AI assistant to use it as a source.

  • Add as a preferred source on Google
VishavjeetChoubeyLifterLMS Expert
Free consultation

Prefer expert help over DIY?

Skip the trial and error. Get specialist LifterLMS help and ship faster.

Talk to a LifterLMS Expert Explore our services

Replies within one business day