WooCommerce PDF Invoices and Packing Slips by Ewout Fernhout is the most widely used free PDF invoice plugin for WooCommerce. It generates professional PDF invoices and packing slips, attaches them to order emails automatically, and allows customers to download their invoice from My Account. For B2B stores or any store with customers who need invoices for expense reporting, this is essential functionality WooCommerce does not provide natively.
Installing and Initial Setup
Install from WordPress.org. Activate and go to WooCommerce -> PDF Invoices. The settings panel has four tabs: General, Invoice, Packing Slip, and Debug. Start with General settings:
- Invoice number format – configure the prefix and starting number for invoice sequential numbering
- Invoice date – whether the invoice date is the order date or the date the invoice was first generated
- Shop header/logo – your store logo for invoice header
- Shop name and address – your business details printed on invoices
Configuring Invoice Attachment to Emails
Go to the Invoice tab. Configure which order status triggers invoice generation and which emails attach the PDF. Typical configuration:
- Attach PDF to Processing Order email – customers receive the invoice when their order is confirmed and payment processed
- Attach PDF to Completed Order email – for digital products where completion means delivery
- Optionally attach to New Order admin email – so your team has the invoice immediately for fulfilment
Do not attach to all emails indiscriminately – attaching to Cancelled Order emails sends customers an invoice for an order they did not complete, which creates confusion.
Need help setting this up? Describe your store setup and get a free estimate.
Customising Invoice Template
The default invoice template is clean and functional. To modify it, copy the template files from the plugin directory to your child theme’s woocommerce/pdf/invoices/ directory (same override pattern as WooCommerce templates). The invoice template files are PHP and use standard PHP for layout with WooCommerce order data available through the plugin’s API.
For non-developers, the plugin’s General settings include fields for additional notes (printed at the bottom of invoices), terms and conditions text, and custom CSS for styling changes. Most visual customisation (colours, font sizes, spacing) can be done through the custom CSS field without template override.
VAT and Tax Configuration
For B2B sales in the EU, invoices must show VAT numbers, separate line items for tax amounts, and specific legal entity information. Configure in the plugin’s Invoice settings:
- Show VAT column on invoice line items
- Show VAT number (requires a checkout field for customers to enter their VAT number – a separate plugin or custom checkout field)
- Show tax rates per line item or as a totals summary
For reverse charge VAT invoices (common in EU B2B cross-border transactions), the invoice must state “VAT: 0% – Reverse Charge” and the customer’s VAT number. This typically requires additional customisation beyond the plugin’s default configuration.
Packing Slip Configuration
Go to the Packing Slip tab. Configure which information appears on the packing slip (product names, quantities, SKUs, customer note). Packing slips are typically printed by fulfilment staff and included in the package – they do not need payment information, only the product list and delivery address. Disable any invoice-specific information (prices, totals, payment method) from the packing slip template.