LifterLMS VAT and Sales Tax: Your Options for Course Sales

LifterLMS has no built-in tax settings. Here is what that means for VAT and sales tax on course sales, the five realistic ways to handle it, the data you must collect at checkout, and how to choose.

  • Add as a preferred source on Google
Illustration for “LifterLMS VAT and Sales Tax: Your Options for Course Sales”

If you sell courses across borders, tax is one of the first questions to settle. The short answer for LifterLMS VAT and sales tax: the core plugin does not calculate, add or report tax. There is no tax rate table, no tax line at checkout and no tax report. LifterLMS says so in its own documentation on handling VAT and tax settings.

That does not stop you selling legally. It means you choose how tax is handled, and the right choice depends on where your buyers are, whether they are consumers or businesses, and how much you sell. This article is for course business owners and the people who build their sites. It lays out the realistic options, the data you need regardless of which you pick, and the trade-offs of each.

This is a technical guide, not tax advice. Tax rules change and depend on where you are established. Confirm your obligations with an accountant before you set prices.

What LifterLMS does and does not do with tax

A LifterLMS access plan has one price. That price is what the gateway charges, and it is what appears on the order and the receipt. Specifically, in LifterLMS 10.x:

  • There are no tax settings on the Checkout tab, only currency and number formatting.
  • Prices are not adjusted by the buyer's country or state.
  • Orders do not store a tax amount, and the Sales report has no tax figures.
  • There are no VAT invoices; core does not produce invoices at all.

What LifterLMS does store is the buyer's billing details, including billing country, state and postcode when those fields are on your checkout form. That is the raw material any tax approach needs.

Understand what you owe before choosing a setup

A few principles drive almost every decision. Again, check the details for your own situation.

  • EU VAT on digital services. Pre-recorded e-learning sold to consumers is generally an electronically supplied service. VAT is due where the customer is, subject to a €10,000 cross-border threshold for EU-established sellers, and can be reported through the One-Stop Shop instead of registering in every country. Ireland's Revenue has a clear summary of VAT on electronically supplied services, including the fact that the threshold does not apply to sellers established outside the EU.
  • Business buyers. Sales to VAT-registered businesses are usually handled differently from consumer sales, often under the reverse charge. You need the buyer's VAT number and should record it.
  • US sales tax. Whether digital courses are taxable varies by state, and obligations depend on where you have nexus. Many course sellers owe nothing; some owe a lot.
  • Live teaching can differ. A teacher-led live class may be classified differently from a self-paced recorded course. Ask your accountant how your format is treated.

The output of this step should be a short list: which countries or states you must charge tax in, at what rates, and whether you need to issue tax invoices.

The data you need to collect at checkout

Whatever approach you choose, record enough to prove where each buyer is. On a LifterLMS site this lives in the Checkout form, which you edit with field blocks.

  1. Keep the address fields, or at least country, on the checkout form. Removing them to shorten checkout is common and leaves you with orders that have no country. Our guide to registration and account forms shows how to edit the form.
  2. Set your default Country under LifterLMS > Settings > Checkout > Currency Options so the field starts sensibly.
  3. Add a company name and VAT number field if you sell to businesses. See custom fields on LifterLMS forms. LifterLMS will store the value but not validate it against a VAT register.
  4. Keep the order record. Each order stores billing details and the buyer's IP address, which can serve as supporting evidence of location.

Five ways to handle tax on a LifterLMS site

1. Tax-inclusive pricing in LifterLMS

You set one price that already includes tax, for example £120 including VAT, and you account for the tax from your side when you file returns. This is the simplest setup and works well when most buyers are in one country or you are below the thresholds that would require charging elsewhere.

The cost is that your margin varies with each buyer's tax rate, buyers do not see a tax breakdown, and you still need a way to produce invoices if customers ask. For many solo course creators it is the right starting point.

2. Regional access plans

You create separate access plans, for example a UK plan and an international plan, each priced for its market. A course can show several plans in its pricing table, and plans can be hidden and shared by link. This lets you price VAT-inclusive for one region and net for another.

The weakness is enforcement: LifterLMS does not check that a buyer chose the plan for their country. It is a pricing convenience, not a tax engine.

3. WooCommerce for checkout and tax

This is the route LifterLMS itself recommends. You sell courses and memberships as WooCommerce products using the paid LifterLMS WooCommerce add-on, and WooCommerce's tax settings calculate tax by location. WooCommerce also has a large ecosystem of invoicing and tax extensions. Our LifterLMS with WooCommerce article covers how enrollment works in that setup.

The trade-off is complexity. You maintain a second commerce system, recurring billing needs WooCommerce Subscriptions, and discounts for those sales are run as WooCommerce coupons rather than LifterLMS coupons, because the WooCommerce product price is what the buyer pays.

4. An external checkout that handles tax

Some sellers use a separate payment or merchant-of-record platform that calculates and remits tax on their behalf, then enroll buyers in LifterLMS automatically when a sale completes. The connection is made with a webhook, an automation tool or the LifterLMS REST API; our guide to enrolling students from an external app shows the enrollment side.

This moves most of the compliance burden off your site, at the price of platform fees and a checkout that lives somewhere else.

5. Custom tax handling on LifterLMS checkout

It is possible to build tax calculation into the LifterLMS checkout itself, but it is real development work: the price has to change by location before the order is created, every gateway has to charge the new total, and orders, receipts and reports need a tax line. Consider it only when volume justifies it and the other routes do not fit.

Choosing the right option

Your situationUsually the best fit
Most sales in one country, small volumeTax-inclusive pricing in LifterLMS
Different prices for home and abroadRegional access plans, with accountant sign-off
You must charge tax in many places and issue invoicesWooCommerce, or an external checkout
You want to hand off compliance entirelyAn external merchant-of-record checkout
High volume and LifterLMS checkout is a mustCustom development

Reporting sales by country for your returns

Even with tax-inclusive pricing, you need totals by country. LifterLMS's Sales report does not split by location, but the data is on each order. This WP-CLI one-off totals net revenue by billing country for a date range:

wp eval '
$q = new WP_Query( array(
	"post_type"      => "llms_order",
	"post_status"    => array( "llms-completed", "llms-active", "llms-pending-cancel", "llms-expired", "llms-cancelled" ),
	"posts_per_page" => -1,
	"fields"         => "ids",
	"date_query"     => array( array( "after" => "2026-07-01", "before" => "2026-09-30 23:59:59" ) ),
) );
$totals = array();
foreach ( $q->posts as $id ) {
	$order   = llms_get_post( $id );
	$country = $order->get( "billing_country" ) ? $order->get( "billing_country" ) : "unknown";
	$totals[ $country ] = ( $totals[ $country ] ?? 0 ) + (float) $order->get_revenue( "net" );
}
arsort( $totals );
foreach ( $totals as $country => $sum ) {
	printf( "%s\t%.2f\n", $country, $sum );
}'

Order dates are when the order was created, and recurring orders include all their payments, so treat this as a starting point and reconcile with your gateway's payout reports. A "unknown" line tells you how many orders were taken without a country.

Common mistakes

  • Assuming the gateway handles tax. A payment gateway charges what it is told. Tax features in a gateway's own hosted products do not automatically apply to payments made through LifterLMS.
  • Removing country from checkout. You cannot reconstruct it later.
  • Advertising net prices to consumers where tax-inclusive prices are expected. In many countries consumer prices must include VAT.
  • Forgetting renewals. Subscription renewals are taxable sales too, at the rate that applies when they are charged.
  • Treating an order PDF as a VAT invoice. A compliant invoice has required fields; check before relying on any generated document.

Frequently asked questions

Does LifterLMS calculate VAT automatically?

No. LifterLMS core has no tax settings. Use tax-inclusive prices, WooCommerce with the LifterLMS WooCommerce add-on, an external checkout, or custom code.

Can LifterLMS produce VAT invoices?

Not in core. LifterLMS points to its paid PDFs add-on for order PDFs; whether those meet your invoice requirements is something to check with your accountant. WooCommerce has dedicated invoicing extensions.

Do I need to charge VAT on a free course?

There is no sale price to tax on a free enrollment. Ask your accountant about bundles where a free course is part of a paid package.

Can I collect VAT numbers at checkout?

Yes, with a custom field on the Checkout form. LifterLMS stores the value but does not validate it or remove tax for business buyers on its own.

What to do next

Book an hour with your accountant and bring two numbers: your sales in the last twelve months split by country, and your forecast for the next twelve. That conversation decides whether tax-inclusive pricing is enough or whether you need a checkout that calculates tax. Then make sure your checkout form collects the country, today, because every order without it is a gap in your records.

If you need help choosing or building the setup, from moving checkout to WooCommerce to connecting an external platform, our LifterLMS consulting service will map the options against your sales. Get in touch with where your buyers are and we will recommend a route.

Add LifterLMS Expert to your preferred sources

Add lifterlmsexpert.com 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
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