Skip to content
GPLWP Guides

How to automate sales tax for WordPress memberships

Membership & LMS Time About 30–60 minutes, plus tax-account setup 6 steps Updated 30 Sep 2026

MEMBERSHIP & LMS
The short answer

WordPress does not calculate membership sales tax by itself. Paid Memberships Pro can apply a simple state rate, but multi-jurisdiction tax needs Stripe Tax, AvaTax, or custom code. Use the manual setting for one location; use an integration when rates, exemptions, and recurring payments vary.

The route
  1. 01Confirm where tax applies
  2. 02Use the built-in tax setting
  3. 03Add custom rules only if needed
  4. 04Choose an automated calculator
  5. 05Set up the AvaTax route
  6. 06Test recurring payments and records

What you need

  • A WordPress membership site using Paid Memberships Pro or a comparable membership plugin
  • An active payment gateway that collects the customer’s billing address
  • Your accountant’s guidance on taxable memberships, nexus, registrations, and rates
  • An AvaTax or Stripe account if you need automated multi-jurisdiction calculations

Confirm where tax applies

Before changing WordPress, confirm whether your membership or course is taxable in each jurisdiction where you have an obligation to collect tax. Sales tax treatment for memberships, software, courses, and subscriptions varies by location, and economic-nexus thresholds also differ.

Decide whether prices include tax or whether tax is added at checkout. Record the jurisdictions where you are registered, the tax treatment for each membership level, and whether any customers qualify for exemption. Paid Memberships Pro recommends checking with your accountant or regional tax office before setting rates.

Use the built-in tax setting

For a simple US setup, go to Memberships > Settings > Payments. Set the site currency, then configure the sales-tax state and rate. Paid Memberships Pro applies the flat rate when the member’s billing address is in that state; its documentation gives .06 as the format for a 6% rate.

This manual route is fine when you collect tax in one state with one straightforward rate. It breaks down when local rates differ, several states require collection, membership levels have different tax treatments, or rates change regularly.

Add custom rules only if needed

If the built-in setting cannot express your rules, a developer can use Paid Memberships Pro’s confirmed pmpro_tax filter to alter the tax amount on an order. Put the code in a small custom plugin or a maintained code-snippet tool rather than editing the membership plugin’s files.

Custom code gives you control over regions, membership levels, and billing-address checks, but it does not maintain tax rates or decide whether your business should be registered. You must update and retest it when tax rules change.

Choose an automated calculator

For changing rates across multiple jurisdictions, connect tax calculation to the payment flow instead of maintaining a spreadsheet of rates. Paid Memberships Pro documents Stripe Tax through Stripe Checkout: enable the Stripe Checkout payment flow, collect a billing address, and choose whether tax is included in the membership price or calculated on top.

Stripe also requires business information, registrations, and threshold settings in its tax account. Do not enable two tax calculators for the same checkout, or the member may be charged twice.

Set up the AvaTax route

If you use the Paid Memberships Pro AvaTax integration, install it from Memberships > Add Ons, activate it, then open Memberships > AvaTax. Enter the credentials and company details from your AvaTax account and save the page. A successful save validates the connection; incorrect account numbers, licence keys, or company codes prevent the API connection.

Set whether documents are recorded, add a unique site prefix when several sites use the same AvaTax account, and assign the appropriate tax category to each membership level. Check the current support position first: the official add-on page says this integration is deprecated and receives only minor updates and bug fixes.

Test recurring payments and records

Test in a sandbox or otherwise controlled environment with billing addresses inside and outside your taxable jurisdictions. Check the amount shown at checkout, the order tax field, confirmation emails, refunds, exempt customers, and a recurring renewal.

This is the Friday problem to avoid: the AvaTax integration sends recurring orders to AvaTax, but says the recurring tax rate remains the rate from the original checkout rather than being recalculated after a later rate change. It also cannot currently calculate tax on top of the membership price. Review this behaviour with your accountant before going live.

Fast way: use Paid Memberships Pro with a supported automated tax route, such as Stripe Tax through Stripe Checkout. If your existing setup specifically depends on AvaTax, configure the PMPro AvaTax integration only after confirming its deprecated status and recurring-tax limitations.

The fast route

Let Paid Memberships Pro do it

Connects Paid Memberships Pro to AvaTax for real-time, location-based tax calculations when built-in tax handling is insufficient.

Get Paid Memberships Pro

Sources

  1. paidmembershipspro.com /taxes-with-pmpro/
  2. paidmembershipspro.com /gateway/stripe/stripe-checkout/
  3. paidmembershipspro.com /add-ons/avalara-avatax-integration/

Questions

Can WordPress calculate sales tax for memberships by itself?
No. WordPress core does not provide membership sales-tax calculation. Your membership plugin or payment gateway must apply the tax, either through a simple configured rate, custom code, or an external service such as Stripe Tax or AvaTax. The correct choice depends on your jurisdictions, taxable product rules, exemptions, and payment flow.
Is the built-in Paid Memberships Pro tax setting enough?
It is enough for a simple setup with one US state and one flat rate. Paid Memberships Pro applies the configured rate when the member’s billing address matches that state. It is not a full multi-jurisdiction calculator, so it becomes unsuitable when local rates, several states, changing rules, exemptions, or different tax categories matter.
Do I need to collect a billing address?
Usually, yes, if tax is based on the customer’s location. The calculator needs a location signal, and payment integrations commonly use the billing address for this purpose. Stripe Checkout can be configured to collect the billing address always or only when necessary; test that the address is available before relying on automated tax.
Does the PMPro AvaTax integration update tax on renewals?
No. The official PMPro documentation says recurring orders are sent to AvaTax, but the recurring tax rate is the rate charged at the original checkout. PMPro does not update subscription payment amounts when the tax rate changes later. That limitation should be disclosed and reviewed with your accountant before using the integration.
Can I use manual tax rules and an automated service together?
Not for the same checkout unless the integration explicitly explains how the rules combine. Running a manual PMPro rate alongside Stripe Tax or AvaTax can create duplicate tax or conflicting totals. Choose one source of truth, disable the other calculation, and test an order from a taxable and non-taxable address before going live.