WooCommerce Invoice Guide 2026

WooCommerce Invoice Tax & Payment Problems — Fixed

Invoice not sent after Stripe payment. VAT not showing. EU reverse charge missing. Tax class wrong on PDF. Here is what is actually happening and how to fix it.

Extract Invoice Tax Data → See All Problems

6 Most Common Tax & Payment Invoice Problems

Sourced from WordPress support forums, WooCommerce issue trackers, and plugin review threads across 4 invoice plugins.

Problem 1

Invoice Not Sent After Stripe Payment

Order sits in "on-hold" after a Stripe Checkout or 3D Secure payment. The invoice plugin is configured to trigger on "processing" — but the order never reaches it.

Fix: In your Stripe plugin settings, enable "Automatically complete orders" or set the payment intent capture method to immediate. In your invoice plugin, also add "on-hold" to the allowed trigger statuses as a backup. Confirm the Stripe webhook endpoint (yourdomain.com/?wc-api=WC_Stripe) returns 200 in the Stripe dashboard.
Problem 2

VAT Amount Not Showing on Invoice PDF

Invoice prints totals but the VAT line is blank or missing. Customer asks for a valid VAT invoice and you cannot provide one.

Fix: Check three settings: (1) WooCommerce → Settings → Tax → "Display tax totals" — set to "Itemized". (2) In your invoice plugin, enable "Show taxes" in the template section. (3) Verify the order actually has tax calculated — open the order and check the Tax row in Order Totals. If it shows £0.00, the tax was not calculated at checkout (usually a tax class or address detection issue), not the invoice plugin.
Problem 3

EU Reverse Charge Notice Not on Invoice

B2B customer in another EU country provides their VAT number, gets zero-rated, but the invoice PDF has no reverse charge notice. Non-compliant for EU VAT rules.

Fix: Install an EU VAT validation plugin (EU VAT Number by WooThemes is the most common). It must both validate the VAT number and set a zero-rate tax. Your invoice plugin then needs to detect the exemption and add the notice — in WooCommerce PDF Invoices & Packing Slips, use the "Custom fields" section to add a conditional field that outputs "Reverse charge — VAT to be accounted for by the buyer" when the billing VAT number is present.
Problem 4

Wrong Tax Rate on Invoice (Shows 0% or Wrong %)

Invoice shows 0% VAT on a UK or EU order that should be standard-rated, or the wrong reduced rate appears for a specific product category.

Fix: The invoice reflects what WooCommerce calculated at order time — so the fix is upstream. Go to WooCommerce → Settings → Tax → Standard Rates and verify the rate exists for the customer's country. Check the product's Tax Class (standard/reduced/zero). Also verify the customer's billing address was entered — WooCommerce uses it for geo-based tax. If the tax was wrong at checkout, you cannot retrospectively fix the invoice; you need to issue a corrected manual invoice.
Problem 5

Customer VAT Number Not Appearing on Invoice

EU B2B customer entered their VAT number at checkout but it does not appear on the invoice PDF. The customer needs it for their own VAT records.

Fix: The VAT number is stored as order meta, typically under the key _billing_eu_vat_number or billing_vat_number. In most invoice plugins: go to Template Settings → Billing Address and add a custom field mapped to that meta key. In Flexible PDF Invoices, use the "Additional fields" section. Verify the meta key by checking the order in wp-admin → Orders → Edit → scroll to "Custom Fields" at the bottom.
Problem 6

Invoice Generated Before Payment Confirmed

Invoice sent to customer immediately on order creation, before payment completes. Creates accounting entries for orders that later fail or are abandoned.

Fix: In your invoice plugin settings, remove "pending" and "on-hold" from the invoice trigger statuses. Only trigger on "processing" or "completed" — statuses that WooCommerce sets only after payment is confirmed. For BACS/bank transfer orders that stay "on-hold" legitimately, decide whether you want to send proforma invoices or wait for manual payment confirmation before sending a VAT invoice.

Plugin Comparison: Tax & Payment Invoice Support

Comparing 4 leading WooCommerce invoice plugins on tax and payment workflow features.

Plugin EU Reverse Charge VAT Number on Invoice Trigger on "On-Hold" Tax Itemisation Community Tax Resolution Rate
WooCommerce PDF Invoices & Packing Slips ⚠ Via add-on ✓ Custom field ✓ Configurable ✓ Itemised ~72%
Print Invoice & Delivery Notes ✗ Not built-in ⚠ Template edit ✓ Configurable ✓ Itemised ~65%
Flexible PDF Invoices ✓ Native support ✓ Native support ✓ Configurable ✓ Itemised ~78%
WP ERP (CRM + Invoice) ✗ No ⚠ CRM field only ✗ Manual ⚠ Summary only ~55%

Resolution rates based on public support thread outcomes across wordpress.org and GitHub issue trackers.

How to Configure Stripe to Trigger WooCommerce Invoice

Note: Stripe's 3D Secure flow introduces a callback delay — WooCommerce does not know the payment succeeded until the webhook fires. If your webhook is broken, invoices will never send.

Step 1: Verify the Stripe webhook endpoint

Go to Stripe Dashboard → Developers → Webhooks. Find the endpoint for your site. It should be:

https://yourstore.com/?wc-api=WC_Stripe

Check the "Recent deliveries" tab. If you see failed deliveries for payment_intent.succeeded or charge.succeeded, that is why invoices are not sending — the order never transitions to "processing".

Step 2: Register missing webhook events

The Stripe WooCommerce plugin registers webhooks automatically, but sometimes they get out of sync. Go to WooCommerce → Settings → Payments → Stripe → Settings and click "Configure" then save the settings — this re-registers the webhook endpoints. You can also manually add the required events in Stripe Dashboard:

Step 3: Set the invoice trigger status

In your invoice plugin, go to Settings → Invoice → "Attach invoice to" and add both "processing" and "completed". Some stores also add "on-hold" for BACS orders that need a proforma invoice — just make sure you have two separate document types (proforma vs. final invoice) if you do this.

Fixing EU VAT Reverse Charge on WooCommerce Invoices

The legal requirement

When you sell to a VAT-registered business in another EU country, the sale is zero-rated and the invoice must include the buyer's VAT number and the text "Reverse charge — VAT to be accounted for by the buyer" (or equivalent in the local language). Without this, your invoice is technically non-compliant.

Plugin stack that works

You need three things in place simultaneously:

  1. EU VAT Number plugin — captures and validates the buyer's VAT number at checkout using the VIES API
  2. WooCommerce tax configuration — the plugin should automatically apply zero-rate tax when a valid VAT number is entered for a cross-border EU sale
  3. Invoice plugin with EU VAT support — Flexible PDF Invoices has native support; others require adding a conditional custom field

Manual conditional field approach

If your invoice plugin does not have native EU VAT support, add the reverse charge notice as a conditional footer note. In WooCommerce PDF Invoices & Packing Slips:

<?php
// Add to your theme's functions.php
add_filter('wpo_wcpdf_footer', function($footer, $document) {
    if ($document->get_type() === 'invoice') {
        $order = $document->order;
        $vat_number = get_post_meta($order->get_id(), '_billing_eu_vat_number', true);
        if (!empty($vat_number) && $order->get_total_tax() == 0) {
            $footer .= '<p>Reverse charge — VAT to be accounted for by the recipient. Customer VAT No: ' . esc_html($vat_number) . '</p>';
        }
    }
    return $footer;
}, 10, 2);
?>

Tax Invoice Configuration Checklist

Frequently Asked Questions

Why is my WooCommerce invoice not sent after Stripe payment?

Orders stuck in "on-hold" after Stripe payment usually means the webhook is not firing correctly. Verify the endpoint in Stripe Dashboard → Developers → Webhooks. Also check that your invoice plugin's trigger statuses include "processing" — the status Stripe transitions to on successful payment confirmation.

How do I show the correct VAT amount on WooCommerce invoices?

The invoice shows whatever WooCommerce calculated at checkout. If VAT is zero or wrong on the invoice, the error happened at order creation — check tax rates, product tax class, and customer address detection. Enable "Itemised" tax display in WooCommerce → Settings → Tax and enable "Show taxes" in your invoice plugin template settings.

How do I add EU VAT reverse charge to WooCommerce B2B invoices?

Use an EU VAT Number plugin to capture and validate the buyer's VAT number at checkout (which auto-applies zero rate), then add a conditional footer note to the invoice showing the reverse charge notice and the buyer's VAT number. Flexible PDF Invoices has this built in; other plugins require a short PHP filter in functions.php.

Why is the wrong tax rate showing on my WooCommerce invoice?

The invoice reports what WooCommerce calculated — so wrong tax on the invoice means wrong tax at checkout. Check the product's tax class, the customer's billing country, and whether your Standard Rate table has the right percentage for that country. If the order is already placed with the wrong rate, you need to issue a corrected invoice manually.

How do I add the customer's VAT number to WooCommerce invoices?

Find the meta key used by your EU VAT plugin (usually _billing_eu_vat_number) by checking a test order's custom fields in wp-admin. Then add it as a custom field in your invoice plugin's billing address template section — most plugins have a "Custom fields" option in their template editor.

How do I extract tax data from WooCommerce invoice PDFs in bulk?

If you need to pull tax amounts, VAT rates, and VAT numbers from existing invoice PDFs for accounting or audit, an invoice extraction tool that returns structured JSON handles this. Useful Patch extracts every field — including tax lines, VAT numbers, and line-item tax rates — from any WooCommerce invoice layout without the file leaving your browser.

Need to Extract Tax Data from WooCommerce Invoice PDFs?

Upload any WooCommerce invoice PDF and get back structured JSON with every tax field, VAT number, and line item — without the file leaving your browser.

Try Free — No Signup Developer Plan £29/mo