WooCommerce PDF Invoices: The Complete Guide
Set up automatic PDF invoice generation for your WooCommerce store. Compare top plugins and learn how to customize invoice templates.
WooCommerce PDF Invoices: The Complete Guide
If you run a WooCommerce store, you need PDF invoices. Not "it would be nice to have" -- you legally need them in most jurisdictions. The EU requires invoices for every B2B transaction. The UK mandates VAT invoices. Australia, Canada, India, and dozens of other countries have their own invoicing requirements. Even in the US, where invoice requirements are lighter, your customers expect them.
They're the PDF invoices that get attached to your WooCommerce order emails and show up in the customer's account page.
WooCommerce does not generate PDF invoices out of the box. It sends order confirmation emails with order details in plain text, but no attached PDF. That means you need a plugin. This guide covers everything: why PDF invoices matter, how to set them up with the LightningPDF plugin, how to customize templates, and how the major WooCommerce PDF invoice plugins compare.
Why You Need PDF Invoices
Legal Requirements
In many countries, providing a formal invoice is not optional:
- EU VAT Directive: Businesses must issue invoices for all B2B supplies of goods and services. The invoice must include specific fields: seller and buyer VAT numbers, sequential invoice number, date of issue, net amount, VAT rate, and VAT amount.
- UK Making Tax Digital: VAT-registered businesses must keep digital records and provide VAT invoices.
- Australia GST: Businesses with GST turnover above $75,000 must provide tax invoices.
- India GST: Tax invoices are mandatory for all taxable supplies.
A plain-text email does not satisfy these requirements. You need a structured document with all required fields.
Professionalism and Trust
Beyond legal compliance, PDF invoices build customer trust. A branded invoice with your logo, clean layout, and proper formatting makes your store look professional. This matters especially for B2B customers who need to submit invoices to their accounting department.
Accounting and Record-Keeping
PDF invoices create a paper trail for both you and your customers. Your customers can file them directly into their accounting software. You can reference them during tax season or audits. Sequential invoice numbering makes it easy to track and reconcile.
Reduced Support Requests
When customers can download their own invoices from their WooCommerce account page, your support team stops getting "can you resend my invoice?" emails.
Setting Up with the LightningPDF Plugin
The LightningPDF WordPress plugin generates PDF invoices for WooCommerce orders using cloud rendering. Your WordPress server makes a lightweight API call instead of trying to render PDFs locally with PHP libraries that consume memory and crash on shared hosting.
Installation
- Go to Plugins > Add New in your WordPress admin
- Search for "Paperbolt"
- Click Install Now, then Activate
- Navigate to Paperbolt > Settings
Getting Your API Key
- Create a free account at LightningPDF -- no credit card required
- Copy your API key from the dashboard
- Paste it into the API Key field in your Paperbolt settings
- Click Test Connection to verify
The free plan gives you 50 PDFs per month, which is enough for most small stores. If you process more orders, the Starter plan at $9/month covers 2,000 invoices.
Enabling WooCommerce Invoices
- In Paperbolt > Settings, toggle the WooCommerce section on
- Fill in your business details:
- Company name
- Address
- Tax ID / VAT number
- Logo URL (or upload via the media library)
- Set your invoice number format. Options include:
INV-{YYYY}-{####}producesINV-2026-0001{YYYY}{MM}-{####}produces202602-0001INV-{ORDER_ID}uses the WooCommerce order number
- Choose which order statuses trigger invoice generation (typically "Processing" and "Completed")
Auto-Attaching to Order Emails
This is the feature that saves the most time. Navigate to WooCommerce > Settings > Emails, select an email type (such as "Completed order"), and you will see a LightningPDF section where you can enable automatic PDF attachment.
When enabled, every order confirmation email will include the PDF invoice as an attachment. The customer gets their invoice the moment their order is confirmed, with zero manual work on your end.
You can also enable attachment for:
- Processing order emails
- Customer invoice emails (the manual "resend invoice" email)
- Refunded order emails (with credit note PDF)
Customer Self-Service Downloads
Once invoices are generated, customers can download them from My Account > Orders in your WooCommerce storefront. Each order row shows a "Download Invoice" link. This eliminates the "where's my invoice?" support emails.
For admin users, every order page in WooCommerce shows the invoice with options to download, regenerate, or email it directly.
Customizing Invoice Templates
The default template works well for most stores, but you will likely want to match your brand. There are three levels of customization.
Level 1: Settings-Based Customization
In the Paperbolt settings, you can configure:
- Logo and company details
- Paper size (A4, Letter, etc.)
- Color scheme (primary color for headers and accents)
- Footer text (payment terms, return policy, custom notes)
- Which fields to show or hide
Level 2: Custom CSS
If you need more control over the layout, add custom CSS in the plugin settings. This CSS applies only to the PDF output, not your website:
/* Custom invoice styling */
.invoice-header {
background-color: #1a365d;
color: white;
padding: 24px;
}
.invoice-table th {
background-color: #2d4a7c;
color: white;
font-size: 9pt;
}
.invoice-total-row {
font-size: 14pt;
font-weight: bold;
border-top: 2px solid #1a365d;
}
/* Fix page breaks for large orders */
.invoice-table tr {
break-inside: avoid;
page-break-inside: avoid;
}
For detailed CSS techniques for PDF output, our guide on fixing PDF page breaks covers everything you need.
Level 3: Full Custom HTML Template
For total control, create a custom HTML template. The plugin supports Mustache-style variable substitution:
<!DOCTYPE html>
<html>
<head>
<style>
@page { size: A4; margin: 15mm; }
body { font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 10pt; color: #333; }
.header { display: flex; justify-content: space-between; margin-bottom: 30px; }
.invoice-badge {
background: #e8f4f8;
color: #1a5276;
padding: 4px 12px;
border-radius: 4px;
font-weight: 600;
font-size: 9pt;
}
table { width: 100%; border-collapse: collapse; margin-top: 20px; }
th { background: #2c3e50; color: white; padding: 10px; text-align: left; }
td { padding: 8px 10px; border-bottom: 1px solid #eee; }
tr { break-inside: avoid; }
.totals { margin-top: 20px; width: 300px; margin-left: auto; }
.totals td { text-align: right; }
.totals .grand-total { font-size: 14pt; font-weight: bold; border-top: 2px solid #2c3e50; }
</style>
</head>
<body>
<div class="header">
<div>
<img src="{{company_logo}}" height="50" />
<p>{{company_name}}<br/>{{company_address}}</p>
<p>Tax ID: {{company_tax_id}}</p>
</div>
<div style="text-align: right;">
<h1 style="margin:0;color:#2c3e50;">INVOICE</h1>
<span class="invoice-badge">{{invoice_number}}</span>
<p>Date: {{invoice_date}}<br/>
Due: {{due_date}}<br/>
Order: #{{order_number}}</p>
</div>
</div>
<div style="background:#f8f9fa;padding:16px;border-radius:4px;margin-bottom:20px;">
<strong>Bill To:</strong><br/>
{{customer_name}}<br/>
{{billing_address}}<br/>
{{#customer_tax_id}}Tax ID: {{customer_tax_id}}{{/customer_tax_id}}
</div>
<table>
<thead>
<tr>
<th>Item</th>
<th>SKU</th>
<th style="text-align:center;">Qty</th>
<th style="text-align:right;">Unit Price</th>
<th style="text-align:right;">Total</th>
</tr>
</thead>
<tbody>
{{#items}}
<tr>
<td>{{name}}</td>
<td>{{sku}}</td>
<td style="text-align:center;">{{quantity}}</td>
<td style="text-align:right;">{{unit_price}}</td>
<td style="text-align:right;">{{line_total}}</td>
</tr>
{{/items}}
</tbody>
</table>
<table class="totals">
<tr><td>Subtotal:</td><td>{{subtotal}}</td></tr>
{{#has_discount}}<tr><td>Discount:</td><td>-{{discount}}</td></tr>{{/has_discount}}
<tr><td>Shipping:</td><td>{{shipping}}</td></tr>
<tr><td>Tax ({{tax_rate}}):</td><td>{{tax_total}}</td></tr>
<tr class="grand-total"><td>Total:</td><td>{{order_total}}</td></tr>
</table>
<div style="margin-top:40px;font-size:8pt;color:#999;">
{{footer_text}}
</div>
</body>
</html>
You can also design templates visually in the LightningPDF designer and sync them to your WordPress plugin. Browse pre-built invoice templates in the marketplace if you prefer starting from a polished design.
Tax and Localization
Multi-Currency Support
WooCommerce stores that sell internationally need invoices in the customer's currency. The LightningPDF plugin pulls currency information from WooCommerce, so your invoices automatically display the correct currency symbol and formatting (e.g., $1,234.56 for USD, 1.234,56 EUR for European format).
Tax Display
The plugin supports all of WooCommerce's tax display modes:
- Tax inclusive pricing: Shows prices with tax included, with a separate line for the tax amount
- Tax exclusive pricing: Shows net prices with tax calculated and displayed separately
- Multiple tax rates: Supports compound taxes, different rates per product, and tax-exempt items
Reverse Charge / VAT MOSS
For EU B2B transactions, the plugin supports reverse charge notation. When a customer enters a valid EU VAT number (validated via VIES), the invoice automatically displays "Reverse Charge - VAT to be accounted for by the recipient" instead of charging VAT.
RTL and Multilingual
If you use WPML or Polylang for multilingual WooCommerce, the plugin generates invoices in the order's language. RTL languages (Arabic, Hebrew) are supported in the full custom template mode.
Comparison with Other WooCommerce PDF Invoice Plugins
Here is how the major options compare:
| Feature | LightningPDF | PDF Invoices & Packing Slips | YITH PDF Invoices | Jovvie / BizSwoop |
|---|---|---|---|---|
| Free version | 50 invoices/mo | Unlimited | Limited | Limited |
| Rendering engine | Cloud (Chromium) | PHP (DOMPDF) | PHP (DOMPDF) | PHP (mPDF) |
| CSS support | Full (Flexbox, Grid) | Basic | Basic | Basic |
| Generation speed | <1s (cloud) | 3-7s (server) | 2-5s (server) | 3-8s (server) |
| Server memory usage | Minimal (API call) | 64-256MB | 64-256MB | 64-256MB |
| Shared hosting | Works | Often crashes | Often crashes | Often crashes |
| Custom templates | HTML + CSS | PHP templates | PHP templates | PHP templates |
| Visual designer | Yes | No | No | No |
| Template marketplace | Yes | Community | No | No |
| Bulk generation | Yes (ZIP) | No | Premium only | No |
| Packing slips | Yes | Yes | Premium only | Yes |
| Credit notes | Yes | Premium only | Premium only | No |
| Email attachment | Yes | Yes | Yes | Yes |
| Pro price | $9-29/mo (API) | $59/yr | $80/yr | $149/yr |
WooCommerce PDF Invoices & Packing Slips (by Ewout Fernhout)
The most popular WooCommerce PDF invoice plugin, with over 500,000 active installations. It uses DOMPDF to render PDFs on your WordPress server. The free version is functional for basic needs: it generates invoices, attaches them to emails, and lets customers download from My Account.
Pros: Free, large community, many templates available. Cons: DOMPDF rendering is slow and limited. No CSS Grid or Flexbox support. Memory-intensive -- you will hit "allowed memory size exhausted" errors on shared hosting with orders containing 50+ line items. Custom templates require PHP knowledge.
YITH PDF Invoices & Packing Slips
Part of the YITH plugin suite for WooCommerce. Similar approach to PDF Invoices & Packing Slips but with more features locked behind the premium version.
Pros: Good integration with other YITH plugins. Clean default template. Cons: Most useful features (credit notes, pro forma invoices, bulk export) require the $80/year premium version. Same DOMPDF limitations as above.
Why Cloud Rendering Wins
Every PHP-based PDF plugin shares the same fundamental limitation: they render PDFs on your WordPress server using libraries that were not designed for modern CSS. DOMPDF does not support Flexbox. mPDF does not support Grid. Both consume significant server memory during rendering.
Cloud rendering with LightningPDF sidesteps all of this. Your server makes a lightweight HTTP request (a few kilobytes), and the PDF is rendered on dedicated infrastructure with a full Chromium engine. Your server never spikes above its normal memory usage. This is the same architectural approach we described in our WordPress PDF plugin announcement.
For a broader comparison of PDF generation approaches, see the best PDF APIs in 2026 guide.
Bulk Invoice Generation
At some point, you will need to generate invoices in bulk. Common scenarios:
- End-of-month: Generate invoices for all orders from the past month
- Tax season: Export all invoices for the fiscal year
- Reprinting: Regenerate invoices after a template update
Using the Plugin's Bulk Action
In WooCommerce > Orders, select the orders you need, choose "Generate PDF Invoices" from the Bulk Actions dropdown, and click Apply. The plugin generates all invoices and downloads them as a ZIP file.
For large batches (hundreds of orders), the plugin processes them in the background and sends you an admin notification when the ZIP is ready.
Using the API Directly
If you need programmatic bulk generation (e.g., from a cron job or external system), you can call the LightningPDF API directly:
curl -X POST https://api.lightningpdf.dev/api/v1/pdf/generate \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"html": "<html>... your invoice HTML ...</html>",
"options": {
"format": "A4",
"margin": {"top": "15mm", "bottom": "15mm", "left": "15mm", "right": "15mm"}
}
}'
For building more complex automated invoice workflows, our PDF invoice API guide covers the architecture patterns in detail, and the automating PDF reports guide covers batch scheduling.
Pricing Breakdown
Here is what WooCommerce PDF invoices actually cost with each approach:
| Monthly Orders | LightningPDF | PDF Invoices & Packing Slips Pro | YITH Premium |
|---|---|---|---|
| 50 | Free | $59/yr ($4.92/mo) | $80/yr ($6.67/mo) |
| 500 | $9/mo | $59/yr ($4.92/mo) | $80/yr ($6.67/mo) |
| 2,000 | $9/mo | $59/yr ($4.92/mo)* | $80/yr ($6.67/mo)* |
| 5,000 | $29/mo | $59/yr ($4.92/mo)* | $80/yr ($6.67/mo)* |
*At higher volumes, PHP-based plugins may require server upgrades to handle the memory load, adding $20-100/month in hosting costs that are not reflected in the plugin price.
The PHP-based plugins look cheaper on paper, but they push rendering costs to your server. If you are on shared hosting ($5-10/month), you will need to upgrade to a VPS ($20-40/month) once you hit a few hundred invoices per month, because DOMPDF will consume all your allocated memory.
LightningPDF's pricing is predictable: you pay for the API, and your server costs stay flat.
Getting Started
The fastest path to WooCommerce PDF invoices:
- Install the Paperbolt plugin from the WordPress plugin directory
- Get a free API key -- 50 invoices/month, no card required
- Enter your business details in Paperbolt settings
- Enable email attachment in WooCommerce email settings
- Place a test order to verify the invoice looks right
- Customize the template if needed, using CSS or the visual designer
Check the full API documentation for advanced options like custom fonts, watermarks, and password protection.
Frequently Asked Questions
Do I need a WooCommerce PDF invoice plugin for legal compliance?
In the EU, UK, Australia, India, and many other jurisdictions, yes. Tax regulations require formal invoices with specific fields like tax ID numbers, sequential numbering, and itemized tax amounts. WooCommerce's default order emails do not satisfy these requirements, so a PDF invoice plugin is necessary for legal compliance.
Which WooCommerce PDF invoice plugin is best for shared hosting?
LightningPDF is the best choice for shared hosting because it renders PDFs in the cloud instead of on your server. PHP-based plugins using DOMPDF or mPDF consume 64 to 256 megabytes of memory per render, which frequently crashes shared hosting. LightningPDF uses a lightweight API call with minimal server resources.
Can I customize WooCommerce PDF invoices to match my brand?
Yes. The Paperbolt plugin supports three levels of customization: settings-based options for logo, colors, and footer text; custom CSS for layout adjustments; and full HTML template replacement for complete control. You can also use the visual template designer or browse pre-built templates in the marketplace.
Related Reading
- WordPress PDF Plugin Guide -- Full plugin setup and features
- PDF Invoice API Guide -- API patterns for invoice generation
- Best PDF APIs in 2026 -- Complete API comparison
- How to Fix PDF Page Breaks -- Essential for multi-item invoices
- Automate PDF Reports -- Batch generation patterns
- HTML to PDF: The Complete Guide -- All conversion approaches
- LightningPDF vs DocRaptor -- Enterprise feature comparison
- WordPress Post to PDF -- Converting posts and pages
LightningPDF Team
Building fast, reliable PDF generation tools for developers.