Integrate Leaky Paywall with Stripe Tax

Setting Up Stripe Tax with Leaky Paywall

Stripe Tax automatically calculates and collects the correct tax on subscriptions and one-time payments based on your customer's location. This guide walks you through enabling it for your site.

Prerequisites

  • Leaky Paywall 5.0.4 or later
  • Stripe as your payment gateway (Stripe Elements or Stripe Checkout)
  • A Stripe account with Stripe Tax activated

Step 1: Activate Stripe Tax in Your Stripe Dashboard

  1. Log in to your Stripe Dashboard
  2. Go to Settings > Tax or visit stripe.com/dashboard/settings/tax/activate
  3. Follow the prompts to activate Stripe Tax

Step 2: Add Your Tax Registrations

Tax registrations tell Stripe where you're legally required to collect tax.

  1. In the Stripe Dashboard, go to Tax > Registrations
  2. Click Add registration
  3. Select the country/state where you're registered to collect tax
  4. Enter your tax registration number if required
  5. Repeat for each jurisdiction where you collect tax

For example, if you're a US publisher in Colorado, you'd add a registration for Colorado. Stripe will then calculate the correct state and local tax rates for customers in Colorado.

Important: Stripe will only calculate tax for jurisdictions where you have an active registration. Customers in other locations will not be charged tax.

Step 3: Assign Product Tax Codes

For recurring subscriptions, Stripe uses the tax code assigned to the product/price in your Stripe Dashboard:

  1. Go to Products in the Stripe Dashboard
  2. Find the product associated with your subscription level (Leaky Paywall creates these automatically)
  3. Edit the product and set the Tax code — for digital news/content subscriptions, use "Digital goods - News" or the appropriate category
  4. Save

For one-time payments, Leaky Paywall handles this automatically using the Tax Behavior setting (see below).

Step 4: Configure Leaky Paywall Settings

  1. In WordPress, go to Leaky Paywall > Settings > Payments
  2. Under the Stripe section, enable these settings:

Automatic Tax — Check this box to enable automatic tax calculation on all transactions.

Tax Behavior — Choose how tax is applied to one-time payments:

  • Exclusive (recommended): Tax is added on top of the subscription price. A $19.99 subscription with 8.3% tax charges $21.65.
  • Inclusive: The price already includes tax. A $19.99 subscription always charges $19.99, with the tax portion calculated from within that amount.

Note: For recurring subscriptions, tax behavior is set on the price in the Stripe Dashboard, not here.

Billing Address — This is automatically enabled when you turn on Automatic Tax. The billing address is required so Stripe can determine the customer's tax jurisdiction.

How It Works for Your Subscribers

When a subscriber registers on your site:

  1. They fill out their account details (name, email, password) and click Next
  2. On the payment step, they see the Billing Address form first
  3. After entering their address, an Order Summary appears showing:
    • Subtotal (your subscription price)
    • Tax (calculated based on their address)
    • Total (what they'll be charged)
  4. They enter their payment details and click Subscribe
  5. Stripe charges the tax-inclusive total

If a subscriber is in a jurisdiction where you don't have a tax registration, tax will show as $0.00 and they'll only be charged the base price.

Viewing Tax on Transactions

After a subscriber completes a purchase, the tax breakdown is visible in two places:

  • Individual Transaction: Go to Leaky Paywall > Transactions, click on a transaction. The header shows the total amount charged with a subtotal and tax breakdown underneath.
  • Transaction List: The Price column on the transactions list shows the tax-inclusive total.

Tax on Recurring Renewals

Once a subscription is created with Stripe Tax enabled, all future renewals automatically include tax. If a subscriber's address changes, Stripe recalculates the tax on their next billing cycle.

Stripe Checkout vs Stripe Elements

Both payment modes support Stripe Tax:

  • Stripe Elements (default): The tax preview and order summary are built into the Leaky Paywall registration form as described above.
  • Stripe Checkout: Stripe's hosted checkout page handles the tax display automatically — no additional configuration needed beyond the settings above.

Troubleshooting

Tax shows as $0.00 for all addresses:

  • Verify you have active tax registrations in the Stripe Dashboard for the customer's jurisdiction
  • Check that your product has a tax code assigned in the Stripe Dashboard

"Customer's location isn't recognized" error:

  • Make sure Billing Address is enabled in Leaky Paywall settings
  • The subscriber must complete the full billing address before submitting

Tax preview not appearing on the registration form:

  • Confirm both Automatic Tax and Billing Address are enabled
  • Clear any page caching on your registration page
  • Check for JavaScript errors in the browser console — a conflicting plugin may be interfering

Tax not showing on the transaction in WordPress:

  • Tax data is captured when the transaction is created. Transactions created before enabling Stripe Tax will not have tax data.

Further Reading

Still need help? Contact Us Contact Us