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.

By LightningPDF Team · · 10 min read
WooCommerce PDF Invoices: The Complete Guide
TL;DR: WooCommerce PDF invoices can be automated with the right plugin. LightningPDF's WordPress plugin generates professional invoices with your branding, attached automatically to order emails.

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

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

  1. Go to Plugins > Add New in your WordPress admin
  2. Search for "Paperbolt"
  3. Click Install Now, then Activate
  4. Navigate to Paperbolt > Settings

Getting Your API Key

  1. Create a free account at LightningPDF -- no credit card required
  2. Copy your API key from the dashboard
  3. Paste it into the API Key field in your Paperbolt settings
  4. 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

  1. In Paperbolt > Settings, toggle the WooCommerce section on
  2. Fill in your business details:
    • Company name
    • Address
    • Tax ID / VAT number
    • Logo URL (or upload via the media library)
  3. Set your invoice number format. Options include:
    • INV-{YYYY}-{####} produces INV-2026-0001
    • {YYYY}{MM}-{####} produces 202602-0001
    • INV-{ORDER_ID} uses the WooCommerce order number
  4. 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:

  1. Install the Paperbolt plugin from the WordPress plugin directory
  2. Get a free API key -- 50 invoices/month, no card required
  3. Enter your business details in Paperbolt settings
  4. Enable email attachment in WooCommerce email settings
  5. Place a test order to verify the invoice looks right
  6. 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

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.

L

LightningPDF Team

Building fast, reliable PDF generation tools for developers.

Ready to generate PDFs?

Start free with 50 PDFs per month. No credit card required.

Get Started Free