Documentation QuarkCode PDF Invoices
Installation & Setup
Installation & Setup
Complete guide to installing and activating QuarkCode PDF Invoices Pro
Before installing, ensure your WordPress site meets these requirements:
- WordPress Version: 5.0 or higher
- WooCommerce Plugin: Must be installed and active
- PHP Version: 7.4 or higher
- Server: Apache or Nginx web server
- Memory: 128MB minimum (256MB recommended)
Verify WooCommerce is Installed
This plugin requires WooCommerce to function. Before proceeding:
- Log into your WordPress admin dashboard
- Go to Plugins → Installed Plugins
- Look for WooCommerce in the list
- Ensure it shows as "Active"
If WooCommerce is not installed, go to Plugins → Add New, search for "WooCommerce", install it, and activate it before continuing.
Upload the Plugin
There are two methods to upload the plugin:
Method 1: Upload via WordPress Admin (Recommended)
- In your WordPress dashboard, go to Plugins → Add New
- Click the "Upload Plugin" button at the top
- Click "Choose File" and select
qc-pdf-invoices-pro.zip - Click "Install Now"
- Wait for the upload and installation to complete
Method 2: Upload via FTP/cPanel
- Extract the ZIP file on your computer
- Connect to your server via FTP or File Manager
- Navigate to
/wp-content/plugins/ - Upload the entire
qc-pdf-invoices-profolder - Ensure all files are uploaded successfully
If using FTP, make sure the plugin folder has the correct permissions (755 for directories, 644 for files).
Activate the Plugin
After uploading, activate the plugin:
- Go to Plugins → Installed Plugins
- Find "QuarkCode PDF Invoices Pro For WooCommerce"
- Click the "Activate" button
- Wait for the activation success message
Once activated, you'll see a success message. The plugin will automatically check that WooCommerce is active before fully loading.
Verify Installation
Confirm the plugin is working correctly:
- Go to WooCommerce → Settings
- Look for a new tab called "PDF Invoices"
- Click on the tab to access plugin settings
- If you see the settings page, installation was successful!
The plugin automatically:
- ✓ Creates necessary database tables for invoice numbers
- ✓ Sets up default invoice templates
- ✓ Integrates with WooCommerce order screens
- ✓ Adds invoice generation capabilities to your orders
Problem: "Plugin could not be activated"
Solution: This usually means WooCommerce is not installed or active. Install and activate WooCommerce first, then try activating this plugin again.
Problem: "The uploaded file exceeds upload_max_filesize"
Solution: Your server's upload limit is too small. Either:
- Use the FTP upload method instead
- Ask your hosting provider to increase the upload limit
- Add this to your
php.ini:upload_max_filesize = 10M
Problem: "Plugin is activated but settings tab doesn't appear"
Solution: Try these steps:
- Deactivate and reactivate the plugin
- Clear your browser cache
- Check that WooCommerce is properly installed
- Ensure you're using WordPress 5.0+ and PHP 7.4+
Your plugin is now installed and ready to use. Proceed to Section 02: Initial Configuration to set up your company information and basic preferences.
Initial Configuration
Initial Configuration
Set up your plugin with company information and basic preferences
Accessing Plugin Settings
Navigate to the plugin settings page:
- From your WordPress dashboard, hover over WooCommerce in the left menu
- Click on Settings
- You'll see a new tab called "PDF Invoices" at the top
- Click on the "PDF Invoices" tab
- This opens the main settings page for the plugin
You can also access settings from:
- • Direct URL:
wp-admin/admin.php?page=wc-settings&tab=pdf_invoices - • Plugins page: Click "Settings" under the plugin name
Company Information Setup
Configure your business details that will appear on all invoices:
| Setting | Description |
|---|---|
|
Company Name
|
Your business or store name that appears at the top of invoices. Example: "ABC Electronics Store"
|
|
Company Address
|
Your full business address including street, city, state, and zip code. This appears in the invoice header.
|
|
Company Phone
|
Business phone number for customer contact. Format: +1 (555) 123-4567
|
|
Company Email
|
Official business email address displayed on invoices
|
|
Tax/VAT Number
|
Your business tax identification or VAT registration number (if applicable)
|
|
Company Website
|
Your business website URL that appears in the invoice footer
|
Fill in all company information completely. This information is required for legal compliance in many countries and adds professionalism to your invoices.
Upload Company Logo
Add your company logo to invoices for professional branding:
- In the plugin settings page, find the "Company Logo" section
- Click the "Upload Logo" or "Choose Image" button
- Select your logo image from your computer or media library
- Click "Select" or "Insert"
- Your logo preview will appear in the settings
Recommended format: PNG with transparent background
Recommended size: 200-400 pixels wide
Maximum file size: 2MB
Supported formats: PNG, JPG, JPEG, GIF
- ✓ Use a horizontal logo format for best results
- ✓ Ensure good contrast against white/light backgrounds
- ✓ PNG with transparent background looks most professional
- ✓ Keep file size small for faster PDF generation
Configure Basic Preferences
Set up essential plugin behaviors and defaults:
| Setting | Description |
|---|---|
|
Enable Automatic Invoice Generation
|
When enabled, invoices are automatically created when orders reach specific statuses (Processing, Completed)
|
|
Invoice Date
|
Choose between "Order Date" or "Invoice Generation Date". Order Date uses when the order was placed.
|
|
Paper Size
|
Select your preferred paper format: A4, A5, Letter, or Legal. A4 is standard in most countries.
|
|
Invoice Template
|
Choose from 7 professional templates: Default, Bold Modern, Classic Elegant, Corporate Professional, Creative Contemporary, Modern Minimalist, or Refund Theme
|
|
Display Product SKU
|
Show product SKU codes on invoices (useful for inventory tracking)
|
|
Display Product Images
|
Include product thumbnail images in invoices
|
For most stores, we recommend:
- Automatic Generation: Enabled
- Invoice Date: Order Date
- Paper Size: A4 (or Letter for US)
- Template: Default or Corporate Professional
- Display SKU: Enabled (if you use SKUs)
Save Your Configuration
After configuring all settings:
- Scroll to the bottom of the settings page
- Click the "Save Changes" button
- Wait for the success confirmation message
- Your settings are now active!
Always click "Save Changes" after modifying any settings. Navigating away without saving will lose your changes.
Verify your configuration is working correctly:
- Go to WooCommerce → Orders
- Open any existing order (or create a test order)
- In the order actions dropdown, select "Generate Invoice"
- Click "Go"
- A PDF invoice should be generated and downloaded
- Open the PDF and verify:
- Your company name and logo appear correctly
- Company address and contact information are displayed
- The selected template style is applied
- Invoice formatting looks professional
Before moving to the next section, ensure:
- ✓ Company name is entered
- ✓ Company address is complete
- ✓ Contact details (phone/email) are added
- ✓ Logo is uploaded and displays correctly
- ✓ Paper size is set to your preference
- ✓ Invoice template is selected
- ✓ All settings are saved
- ✓ Test invoice generated successfully
Your plugin is now fully configured with your business information and preferences. You're ready to start generating professional invoices!
Next: Proceed to Section 03: Invoice Generation to learn how to automatically and manually create invoices for your orders.
Invoice Generation
Invoice Generation
Generate professional PDF invoices automatically or manually
The plugin can automatically generate invoices when orders reach specific statuses. This is the recommended method for most stores as it requires no manual intervention.
When enabled, the plugin monitors your WooCommerce orders and automatically generates invoices when orders transition to specific statuses. The PDF is created in the background and attached to the order.
Order Status Triggers
Invoices are automatically generated for these order statuses:
| Order Status | When Invoice Generates |
|---|---|
| Processing | When order is marked as "Processing" (payment received, awaiting fulfillment) |
| Completed | When order is marked as "Completed" (order fulfilled and delivered) |
Enable automatic generation for "Processing" status. This generates invoices immediately after payment is received, allowing them to be included in packing slips and shipments.
Enable Automatic Generation
- Go to WooCommerce → Settings → PDF Invoices
- Find the "Automatic Invoice Generation" option
- Check the box to enable automatic generation
- Select which order statuses should trigger invoice creation:
- ✓ Processing (recommended)
- ✓ Completed (optional)
- Click "Save Changes"
Once enabled, invoices will only be generated for new orders or orders that transition to the selected statuses after enabling. Existing orders will need manual invoice generation.
Generate Invoice from Single Order
You can manually generate invoices for any order at any time:
- Go to WooCommerce → Orders
- Click on the order you want to create an invoice for
- In the "Order Actions" dropdown (top right of the order page)
- Select "Generate Invoice"
- Click the "Go" button (▶)
- The invoice PDF will be generated and automatically downloaded
When you generate an invoice:
- ✓ PDF is created and saved to the server
- ✓ Invoice number is assigned automatically
- ✓ Invoice information is stored with the order
- ✓ PDF is downloaded to your computer
- ✓ Customer can access it from their account
Invoice Meta Box
Each order page includes a dedicated Invoice meta box showing invoice status and actions:
Meta Box Information
- Invoice Status: Shows if an invoice exists for this order
- Invoice Number: Displays the assigned invoice number (e.g., INV-2024-001)
- Invoice Date: Shows when the invoice was generated
- Quick Actions: Buttons to download, view, or regenerate the invoice
Available Actions in Meta Box
- "Download Invoice" - Download the PDF to your computer
- "Regenerate Invoice" - Create a fresh invoice (useful after order changes)
- "Email Invoice" - Send the invoice directly to the customer
Regenerating an invoice will create a new PDF with the current order data. The invoice number remains the same. This is useful when you've updated order details after invoice generation.
Bulk Invoice Generation
Generate invoices for multiple orders at once:
- Go to WooCommerce → Orders
- Select multiple orders using the checkboxes
- In the "Bulk Actions" dropdown at the top
- Select "Generate Invoices"
- Click "Apply"
- Invoices will be generated for all selected orders
- A success message shows how many invoices were created
- Process up to 50 orders at a time for best performance
- Bulk generation runs in the background
- You can continue working while invoices generate
- Existing invoices are skipped automatically
There are multiple ways to download invoice PDFs:
Method 1: From Order Actions
- Open the order in WooCommerce
- Use Order Actions → Download Invoice
- PDF downloads immediately
Method 2: From Invoice Meta Box
- Open the order page
- Find the "Invoice" meta box on the right side
- Click the "Download" button
Method 3: From Orders List
- On the WooCommerce → Orders page
- Hover over an order row
- Click the "Invoice" quick action link
- PDF downloads automatically
All invoice PDFs are downloaded to your browser's default download folder. The filename format is: invoice-[order-number].pdf
Example: invoice-12345.pdf
View invoice details and status directly from WooCommerce:
Order Details Page
Each order with an invoice shows:
- Invoice Number: Unique identifier (e.g., INV-2024-001)
- Generation Date: When the invoice was created
- File Status: Whether the PDF file exists
- Download Link: Quick access to the PDF
Orders List View
On the main orders page, you'll see:
- Invoice icon/indicator for orders with invoices
- Quick action link to download invoice
- Invoice number in order details column
Recommended Workflow
- Enable Automatic Generation: Set it to trigger on "Processing" status
- Test First: Generate a test invoice and verify all information is correct
- Check Invoices: Periodically verify invoices are generating correctly
- Regenerate When Needed: If you modify order details, regenerate the invoice
- Bulk Generate for Old Orders: Use bulk actions for existing orders
- Invoices are stored in:
/wp-content/uploads/wc-invoices/ - Each invoice has a unique sequential number
- Invoices cannot be deleted, only regenerated
- Customers can download invoices from their My Account page
- Invoices can be automatically attached to order emails (see Section 06)
Issue: "Invoice could not be generated"
Solution: Check that:
- The order has billing information
- WooCommerce is properly configured
- Server has write permissions to
/wp-content/uploads/
Issue: Invoice number not showing
Solution: The invoice number is assigned only after the PDF is generated. Generate the invoice first.
Issue: Automatic generation not working
Solution:
- Verify automatic generation is enabled in settings
- Check that the order status matches your trigger settings
- Ensure the order doesn't already have an invoice
You now know how to generate invoices automatically and manually, download PDFs, and access invoice information from your orders.
Next: Proceed to Section 04: Invoice Numbering System to learn how to customize invoice number formats, prefixes, and sequential numbering.
Invoice Numbering System
Invoice Numbering System
Configure custom invoice numbering with prefixes, formats, and sequential numbering
The plugin uses a flexible numbering system that automatically generates unique, sequential invoice numbers for each order. The numbering format is fully customizable with multiple components:
| Component | Description | Example |
|---|---|---|
{prefix} |
Custom text before the number | INV- |
{year} |
Current year (4 digits) | 2024 |
{month} |
Current month (2 digits) | 12 |
{increment} |
Sequential number counter | 00001 |
{suffix} |
Custom text after the number | -US |
When an invoice is generated, the plugin combines these components based on your format settings to create a unique invoice number. The increment counter automatically increases with each new invoice.
Access Numbering Settings
- Go to WooCommerce → Settings → PDF Invoices
- Scroll down to the "Invoice Numbering" section
- Here you'll find all numbering configuration options
Configure Number Format
Set up your invoice number format using the available components:
Invoice Number Format Field
Enter your desired format using the component placeholders:
- Use
{prefix},{year},{month},{increment},{suffix} - Combine components in any order
- Add separators like hyphens, underscores, or slashes
{prefix}{year}{month}{increment}{prefix}{increment}{prefix}{year}/{increment}{suffix}{year}-{month}-{increment}For most businesses: {prefix}{year}{month}{increment}
This provides: Clear prefix, year/month organization, and sequential numbering
Example: INV-202412-00001
Set Invoice Prefix
The prefix appears at the beginning of your invoice number:
- Find the "Invoice Number Prefix" field
- Enter your desired prefix text
- Common prefixes:
INV-for standard invoicesINVOICE-for full word prefix2024-for year-based prefixSTORE-for store identifierABC-for company initials
• Keep prefixes short (2-6 characters)
• Use uppercase for clarity
• Include a separator (- or _) at the end
• Avoid special characters that may cause issues
Set Invoice Suffix
The suffix appears at the end of your invoice number:
- Find the "Invoice Number Suffix" field
- Enter your desired suffix text (optional)
- Common suffixes:
-USfor country identification-STR1for store/location identifier-WEBfor online orders-Xfor custom categories
Suffixes are useful when you need to:
- Identify orders from different countries
- Distinguish between multiple stores
- Categorize invoices by sales channel
- Add additional classification
Include year and month in your invoice numbers for better organization:
Using {year} Component
The {year} placeholder inserts the current 4-digit year:
- Format:
{prefix}{year}-{increment} - Result:
INV-2024-00001 - Benefit: Easy to identify invoice age and organize by year
Using {month} Component
The {month} placeholder inserts the current 2-digit month:
- Format:
{prefix}{year}{month}-{increment} - Result:
INV-202412-00001 - Benefit: Track invoices by month and year
INV-{year}-{increment}INV-{year}/{month}-{increment}{year}{month}{increment}When using {year} or {month} components, the increment counter does NOT automatically reset when the year or month changes. You must manually reset the counter if you want numbering to restart (e.g., from 00001 each new year).
You can reset the invoice counter to start numbering from a specific value:
When to Reset
- Start of a new year
- Start of a new fiscal period
- After changing numbering format
- When starting a new business period
- After migrating from another system
How to Reset Counter
- Go to WooCommerce → Settings → PDF Invoices
- Scroll to "Invoice Numbering" section
- Find the "Reset Invoice Counter" option
- Enter the starting number (e.g.,
1or1001) - Click "Reset Counter" button
- Confirm the action
- Next invoice will use the new starting number
Resetting the counter is permanent. The next invoice will use the new counter value. This does NOT affect existing invoices - only new invoices generated after the reset.
When resetting for a new year:
- Wait until the first invoice of the new year
- Reset counter to
1 - The new invoice will be:
INV-2025-00001
Set a custom starting number for new installations or after format changes:
Setting Initial Counter Value
- In the "Invoice Numbering" settings
- Find "Starting Invoice Number" field
- Enter your desired starting value
- Examples:
1- Start from 1 (default)1001- Start from 10015000- Start from 5000
- Save settings
- Professional appearance: Starting from 1001 makes your store look established
- Continuing from old system: Match numbering from previous invoice system
- Multiple stores: Use different ranges for different stores (1000-1999, 2000-2999)
1 | Format: INV-{increment}1001 | Format: INV-{year}-{increment}10000 | Format: {increment}Recommended Configurations
Prefix: INV-
Starting: 1001
Result: INV-2024-01001
Prefix: INV-
Suffix: -NYC
Result: INV-202412-00001-NYC
Prefix: INV-
Suffix: -US
Result: INV-2024/00001-US
Key Guidelines
- ✓ Always include a prefix - Makes invoice numbers instantly recognizable
- ✓ Use year component - Helps with organization and record-keeping
- ✓ Start from 1001 - Looks more professional than starting from 1
- ✓ Keep it consistent - Don't change format mid-year
- ✓ Test before going live - Generate test invoices to verify format
- ✓ Document your format - Keep a record of your numbering system
- ✗ Changing format frequently - Confuses accounting
- ✗ Using special characters - May cause system issues
- ✗ Very long formats - Keep invoice numbers readable
- ✗ Resetting counter mid-period - Can cause duplicate numbers across years
Always test your numbering configuration before using it in production:
- Configure your format, prefix, and suffix
- Set your starting number
- Save settings
- Create a test order
- Generate an invoice for the test order
- Verify the invoice number matches your expected format
- Generate 2-3 more test invoices to verify sequential numbering
- Check that numbers increment correctly
- ✓ Invoice number format is correct
- ✓ Prefix displays properly
- ✓ Suffix displays properly (if used)
- ✓ Year/month components show correct dates
- ✓ Sequential numbering works (1, 2, 3...)
- ✓ Starting number is correct
- ✓ Numbers are unique for each invoice
You now have a professional invoice numbering system set up with custom formats, prefixes, and sequential counters.
Your invoice numbering is ready! All new invoices will use your configured format automatically.
Invoice Templates
Invoice Templates
Select and customize from 7 professional invoice template styles
Available Template Styles
The plugin includes 7 professionally designed invoice templates, each with a unique style and layout. All templates are fully functional and include your company information, order details, and customer data.
- Simple, clean layout
- Standard formatting
- Universal design
- Easy to read
- Bold header sections
- Modern typography
- Contemporary style
- Strong visual hierarchy
- Elegant typography
- Refined layout
- Professional appearance
- Timeless design
- Structured layout
- Corporate styling
- Clear sections
- Business-focused
- Creative layout
- Contemporary style
- Unique design elements
- Modern aesthetics
- Minimalist design
- Maximum white space
- Clean typography
- Modern simplicity
- Refund-specific design
- Clear refund indicators
- Professional appearance
- Credit note compatible
Business Type Recommendations:
- Retail & E-commerce: Default or Bold Modern
- Professional Services: Classic Elegant or Corporate Professional
- Creative Agencies: Creative Contemporary or Modern Minimalist
- B2B Companies: Corporate Professional
- Tech Startups: Bold Modern or Modern Minimalist
Switching Between Templates
Change Invoice Template
You can switch between templates at any time. The new template will apply to all newly generated invoices:
- Go to WooCommerce → Settings → PDF Invoices
- Scroll to the "Template Settings" section
- Find the "Invoice Template" dropdown
- Select your desired template from the list:
- Default
- Bold Modern
- Classic Elegant
- Corporate Professional
- Creative Contemporary
- Modern Minimalist
- Refund Theme
- Click "Save Changes"
- The new template will be used for all future invoices
Changing the template only affects newly generated invoices. Existing invoices keep their original template. To update an existing invoice, you must regenerate it from the order page.
Regenerate Invoices with New Template
To update existing invoices with your new template:
- Change your template in the settings (as described above)
- Go to WooCommerce → Orders
- Open an order that already has an invoice
- In the Invoice meta box, click "Regenerate Invoice"
- The invoice will be recreated with the new template
- The invoice number remains the same
To regenerate multiple invoices at once:
- Select orders on the Orders page
- Use Bulk Actions → "Regenerate Invoices"
- All selected orders will have their invoices recreated with the new template
Template Preview
Preview templates before applying them to see how they'll look with your data:
Method 1: Test Invoice Generation
- Select a template in the settings
- Save changes
- Create a test order with sample products
- Generate an invoice for the test order
- Download and review the PDF
- If not satisfied, select a different template and repeat
Method 2: Preview with Existing Orders
- Select a template in the settings
- Don't save yet
- Open a different browser tab
- Go to an existing order and regenerate its invoice
- Review the generated PDF
- If satisfied, return to settings and save
Always test templates with actual order data before finalizing your choice. Each template displays information slightly differently, so what looks good with one product layout may not work as well with another.
Template Customization Options
Customize how templates display your information:
Company Branding
- Company Logo: Appears in the header of all templates
- Company Name: Displayed prominently at the top
- Company Address: Shown in the invoice header
- Contact Information: Phone, email, website included
Invoice Display Options
- Product SKUs: Show/hide SKU codes in product listings
- Product Images: Include product thumbnails (optional)
- Tax Display: Show individual tax rates or totals
- Payment Method: Display payment method used
- Shipping Method: Show shipping method selected
- Order Notes: Include customer order notes
Formatting Options
- Paper Size: A4, Letter, Legal, A5
- Date Format: Various date display formats
- Currency Symbol: Position and format
- Number Format: Decimal and thousand separators
All customization options are in:
WooCommerce → Settings → PDF Invoices → Template Settings
Standard Information in All Templates
Regardless of which template you choose, all templates include:
Invoice Header
- Company logo (if uploaded)
- Company name and contact information
- Invoice number and date
- Order number and date
Customer Information
- Billing address
- Shipping address (if different)
- Customer name and contact
- Customer email and phone
Order Details
- Product names and descriptions
- Quantities ordered
- Individual prices
- Line item totals
- Product variations and options
Totals Section
- Subtotal
- Shipping cost
- Tax amounts (itemized)
- Discounts/coupons applied
- Grand total
Footer Information
- Payment method
- Tax/VAT number (if configured)
- Additional notes or terms
Template Selection Best Practices
Tips for Choosing Your Template
- Match Your Brand: Choose a template that aligns with your brand identity and website design
- Consider Your Industry: Corporate templates for B2B, creative templates for agencies, clean templates for retail
- Test with Real Data: Generate invoices with various product types and order amounts
- Check Readability: Ensure all information is clearly visible and easy to read
- Print Testing: If customers print invoices, test how the template prints on paper
- Customer Feedback: Ask customers which format they find most professional
- Consistency: Once chosen, stick with one template for consistency
Changing templates frequently can confuse customers and create inconsistency in your records. Choose a template and use it for at least a full fiscal year before changing.
You now understand all 7 available invoice templates and how to switch between them. Choose the template that best represents your brand and start generating professional invoices!
Next: Proceed to Section 06: Email Attachments to learn how to automatically attach invoices to your WooCommerce order emails.
Email Attachments
Email Attachments
Automatically attach invoices to WooCommerce order notification emails
WooCommerce Email Types
WooCommerce sends various email notifications during the order lifecycle. The plugin can automatically attach invoices to these emails:
| Email Type | When Sent | Recommendation |
|---|---|---|
| New Order | Sent to store admin when a new order is received | Optional |
| Customer Processing Order | Sent to customer when order status changes to Processing (payment received) | Recommended |
| Customer Completed Order | Sent to customer when order is marked as Completed | Recommended |
| Customer On-Hold Order | Sent to customer when order is placed on hold (awaiting payment) | Optional |
| Customer Refunded Order | Sent to customer when an order is fully or partially refunded | Recommended |
| Cancelled Order | Sent to customer when order is cancelled | Optional |
For most stores, attach invoices to:
- ✓ Customer Processing Order - Provides invoice immediately after payment
- ✓ Customer Completed Order - Confirms final invoice with delivery
- ✓ Customer Refunded Order - Includes credit note for refunds
Configure Automatic Attachments
Access Email Settings
- Go to WooCommerce → Settings → PDF Invoices
- Look for the "Email Attachment Settings" section
- This section controls which emails include invoice attachments
Select Email Types
Choose which email notifications should automatically include invoices:
- In the Email Attachment Settings section
- You'll see checkboxes for each email type
- Check the boxes for emails that should include invoices:
- ☐ New Order (to admin)
- ☑ Customer Processing Order (recommended)
- ☑ Customer Completed Order (recommended)
- ☐ Customer On-Hold Order
- ☑ Customer Refunded Order (recommended)
- ☐ Cancelled Order
- Click "Save Changes"
Don't attach invoices to every email:
- Attaching to "On-Hold" emails may confuse customers (order not confirmed yet)
- Attaching to "Cancelled" emails is unnecessary (order cancelled)
- Admin "New Order" emails don't need customer invoices
Configure Attachment Behavior
Additional email attachment options:
Generate Invoice Before Email
Enable this option to ensure invoices are generated before email is sent:
- ☑ "Generate invoice before sending email"
- This creates the invoice automatically if it doesn't exist
- Prevents emails being sent without invoice attachments
- Recommended: Enabled
Attachment File Name
Configure how invoice files are named in emails:
- Default:
invoice-[order-number].pdf - Example:
invoice-12345.pdf - The file name format is automatically set by the plugin
Enable these settings:
- ✓ Attach to Customer Processing Order
- ✓ Attach to Customer Completed Order
- ✓ Attach to Customer Refunded Order
- ✓ Generate invoice before sending email
Testing Email Attachments
Test Email Functionality
Always test email attachments before going live:
Method 1: Place Test Order
- Configure your email attachment settings
- Save all changes
- Place a test order on your store
- Use your own email address as the customer
- Complete the payment (use test mode if available)
- Check your email inbox for the Processing Order email
- Verify the invoice PDF is attached
- Download and open the attachment to verify content
Method 2: Resend Existing Order Email
- Go to WooCommerce → Orders
- Open an existing order
- In the Order Actions dropdown, select "Resend customer processing order notification"
- Click "Go"
- Check the customer's email (or your test email)
- Verify the invoice is attached
- Email arrives in inbox (not spam folder)
- PDF file is attached
- File opens correctly
- Invoice contains correct order information
- Company logo and branding appears
- All order details are accurate
Troubleshooting Email Issues
Common Issues and Solutions
Issue: Emails not arriving at all
Solutions:
- Check WooCommerce email settings are configured correctly
- Verify your hosting allows email sending
- Check spam/junk folders
- Use an SMTP plugin (like WP Mail SMTP)
- Contact your hosting provider about email delivery
Issue: Emails arrive but no invoice attached
Solutions:
- Verify email attachment settings are enabled and saved
- Check that "Generate invoice before sending" is enabled
- Ensure the invoice was generated for the order
- Check server file permissions on
/wp-content/uploads/ - Verify server has write permissions
Issue: Attachment is corrupted or won't open
Solutions:
- Check server PHP memory limit (increase to 256MB)
- Verify PDF generator library is working correctly
- Regenerate the invoice from the order page
- Check for plugin conflicts (deactivate other PDF plugins)
- Test with a different email client
Issue: Emails going to spam folder
Solutions:
- Use an SMTP email service (SendGrid, Mailgun, etc.)
- Set up SPF and DKIM records for your domain
- Reduce PDF file size (optimize logo images)
- Use a professional email address (not generic Gmail)
- Test with different email providers
Issue: Large PDF files causing email issues
Solutions:
- Compress your company logo image
- Disable product images in invoices
- Use a simpler template
- Increase server max attachment size
- Consider email service with higher attachment limits
Most email servers have attachment size limits (typically 10-25MB). Keep invoice PDFs under 5MB for best deliverability.
Email Attachment Best Practices
Recommendations for Optimal Email Delivery
- Use SMTP Service: Install WP Mail SMTP or similar plugin for reliable email delivery
- Optimize File Size: Keep invoices under 2MB by optimizing images
- Test Regularly: Send test orders monthly to verify email functionality
- Monitor Deliverability: Check if customers are receiving invoices
- Backup Option: Include invoice download link in email text
- Professional Email: Use your domain email (@yourstore.com)
- Selective Attachment: Only attach to relevant emails (Processing, Completed)
- Enable automatic invoice generation to ensure invoices exist before emails send
- Test with multiple email providers (Gmail, Outlook, Yahoo)
- Keep invoice templates simple to reduce file size
- Use transactional email services for business-critical emails
- Monitor email logs to track delivery issues
Your invoices are now automatically attached to WooCommerce order emails. Customers will receive professional PDF invoices without any manual intervention!
Next: Proceed to Section 07: Credit Note Generation to learn how to automatically create credit notes for refunded orders.
Credit Note Generation
Credit Note Generation
Automatically create credit notes for refunded orders with professional formatting
Understanding Credit Notes
Credit notes are official documents issued when an order is refunded. They serve as proof of the refund and are essential for accounting and tax compliance.
What is a Credit Note?
- Legal document showing amount refunded to customer
- References the original invoice number
- Contains details of items refunded
- Required for accounting and tax purposes
- Provides clear refund audit trail
When Credit Notes Are Issued
- Full Refunds: Complete order refund
- Partial Refunds: Some items or amounts refunded
- Restocking: Items returned to inventory
- Order Cancellations: After payment processed
Invoice: Documents money owed by customer
Credit Note: Documents money owed to customer (refund)
Credit notes have negative amounts and reference original invoice numbers.
Automatic Credit Note Generation
Enable Automatic Generation
Configure the plugin to automatically create credit notes when orders are refunded:
- Go to WooCommerce → Settings → PDF Invoices
- Scroll to "Credit Note Settings" section
- Find "Automatic Credit Note Generation" option
- Check the box to enable automatic generation
- Click "Save Changes"
When enabled, the plugin monitors your orders for refunds. When you process a refund in WooCommerce:
- ✓ Credit note is automatically generated
- ✓ Credit note number is assigned
- ✓ PDF is created and saved
- ✓ Credit note is attached to the order
- ✓ Can be included in refund notification email
Automatic Generation Process
When you refund an order, the credit note is automatically created:
- Open an order in WooCommerce → Orders
- Click the "Refund" button
- Enter refund amount or select items to refund
- Add refund reason (optional)
- Click "Refund via [payment method]"
- WooCommerce processes the refund
- Plugin automatically generates credit note
- Credit note appears in order details
- Original invoice number reference
- Credit note number
- Refund date
- Items refunded with quantities
- Refund amount (negative values)
- Reason for refund
- Company and customer information
Manual Credit Note Creation
Generate Credit Note Manually
You can manually generate credit notes for refunded orders:
- Go to WooCommerce → Orders
- Open an order that has been refunded
- In Order Actions dropdown, select "Generate Credit Note"
- Click "Go" button
- Credit note PDF is generated and downloaded
- Credit note information is saved to the order
When to Use Manual Generation
- Automatic generation was disabled when refund was processed
- Need to regenerate credit note after changes
- Creating credit note for old refunded orders
- Credit note generation failed automatically
To manually generate a credit note:
- Order must have a refund processed
- Original invoice should exist (recommended)
- Refund details must be present in order
Credit Note Numbering
Credit notes use a separate numbering system from invoices:
Numbering Format
- Prefix: Configure custom prefix (e.g.,
CN-orCREDIT-) - Sequential Number: Automatic increment (001, 002, 003...)
- Suffix: Optional suffix for categorization
- Year/Month: Include date components if desired
Configure Credit Note Numbering
- Go to WooCommerce → Settings → PDF Invoices
- Find "Credit Note Numbering" section
- Set Credit Note Prefix (e.g.,
CN-) - Configure number format:
{prefix}{year}{increment} - Set starting number (default: 1)
- Click "Save Changes"
CN-2024-001(prefix + year + sequential)CREDIT-00001(prefix + sequential)CN-202412-001(prefix + year/month + sequential)CR-2024/001(prefix + year/sequential with separator)
Credit note numbers are independent from invoice numbers. Use a different prefix to distinguish them clearly (e.g., INV- for invoices, CN- for credit notes).
Credit Note Templates
The plugin includes 2 specialized templates for credit notes:
Standard professional credit note design with clear refund information:
- Clean layout matching default invoice style
- Clear "CREDIT NOTE" header
- Reference to original invoice number
- Negative amounts clearly displayed
- Professional appearance for all business types
Distinctive red-themed design that stands out:
- Red color scheme for easy identification
- Bold "CREDIT NOTE" branding
- Clear refund indication with colored elements
- Matches "Refund Theme" invoice template
- Visually distinct from regular invoices
Select Credit Note Template
- Go to WooCommerce → Settings → PDF Invoices
- Find "Credit Note Template" dropdown
- Select either:
- Default - Standard professional style
- Red Theme - Distinctive red design
- Click "Save Changes"
- Future credit notes will use the selected template
Use Red Theme if: You want credit notes to be immediately visually distinct from invoices in accounting and filing systems.
Use Default if: You prefer consistent styling across all documents or have strict brand guidelines.
Accessing Credit Notes
Access and download credit notes from multiple locations:
From Order Details Page
- Open the refunded order
- Look for the "Credit Note" meta box
- Click "Download Credit Note" button
- PDF downloads to your computer
From Order Actions
- Open the order
- Use Order Actions → Download Credit Note
- Click "Go"
- Credit note PDF downloads
Customer Access
Customers can download credit notes from their account:
- My Account → Orders
- View order details
- Click "Download Credit Note" link
- PDF opens or downloads
Credit notes can be automatically attached to refund notification emails. Configure this in Email Attachment Settings (Section 06).
Credit Note Best Practices
Professional Credit Note Management
- Always Enable Automatic Generation: Ensures every refund has proper documentation
- Keep Original Invoices: Credit notes reference original invoice numbers
- Use Clear Prefixes: Distinguish credit notes from invoices (CN- vs INV-)
- Include Refund Reasons: Document why refund was issued
- Send to Customers: Attach credit notes to refund emails
- Archive Properly: File credit notes with corresponding invoices
- Maintain Sequential Numbering: Never skip or duplicate numbers
Many jurisdictions require credit notes for refunds for tax and accounting compliance. Always issue credit notes for refunded transactions to maintain proper financial records.
You now have automated credit note generation for all refunded orders, ensuring complete financial documentation and compliance.
Next: Proceed to Section 08: Shipping Label Generation to learn how to create professional shipping labels for your orders.
Shipping Label Generation
Shipping Label Generation
Create and print professional shipping labels with multiple template styles
About Shipping Labels
Shipping labels are essential documents attached to packages containing delivery information:
What's Included in Shipping Labels
- Recipient Address: Customer's shipping address
- Sender Address: Your business/warehouse address
- Order Information: Order number and date
- Label Number: Unique tracking identifier
- Barcode/QR Code: Scannable tracking code (optional)
- Package Details: Weight, dimensions (if configured)
Why Use Shipping Labels
- Ensures accurate delivery addresses
- Professional appearance for packages
- Includes tracking and identification
- Speeds up warehouse fulfillment process
- Reduces shipping errors
These labels are for package identification and address display. They work alongside carrier-specific labels (USPS, FedEx, UPS) by providing clear order and address information on your packages.
Available Label Templates
Choose from 6 professionally designed shipping label templates:
Generate Shipping Labels
Generate Label for Single Order
Create a shipping label for any order:
- Go to WooCommerce → Orders
- Open the order needing a shipping label
- In Order Actions dropdown, select "Generate Shipping Label"
- Click "Go" button
- Label PDF is generated and downloaded
- Label number is assigned automatically
- Label information is saved to the order
The shipping label PDF contains all address and order information formatted for your selected template and label size. Ready to print and attach to your package!
Access Generated Labels
Download and access shipping labels:
From Order Page
- Open the order details
- Look for "Shipping Label" meta box
- Click "Download Label" button
- PDF downloads to your computer
From Order Actions
- Use Order Actions dropdown
- Select "Download Shipping Label"
- Click "Go"
- Label PDF downloads
Regenerate Labels
If shipping address changes after label generation:
- Update the shipping address in the order
- Use Order Actions → "Generate Shipping Label"
- New label is created with updated information
- Label number remains the same
Bulk Label Generation
Generate Labels for Multiple Orders
Process multiple shipping labels at once:
- Go to WooCommerce → Orders
- Select multiple orders using checkboxes
- In Bulk Actions dropdown, select "Generate Shipping Labels"
- Click "Apply"
- Labels are generated for all selected orders
- Success message shows how many labels were created
- Process up to 50 orders at a time
- Labels with existing labels are skipped
- Download labels individually from each order
- Use bulk generation at end of day for all pending shipments
Filter Orders for Label Generation
Generate labels for specific order groups:
- Filter by status: Processing orders ready to ship
- Filter by date: Today's orders or specific date range
- Filter by shipping method: Specific carriers
- Select filtered results and bulk generate
Print Shipping Labels
Shipping labels are optimized for printing on standard label paper or regular paper:
Printing Options
- Label Sheets: Print on adhesive label sheets (4x6" or A6)
- Regular Paper: Print and tape to packages
- Thermal Printers: Direct thermal printing support
How to Print
- Download the shipping label PDF
- Open the PDF in your PDF viewer
- Click Print or press Ctrl+P (Cmd+P on Mac)
- Select your printer
- Choose print settings:
- Paper Size: Match your label size (4x6", A6, etc.)
- Scale: 100% (actual size)
- Orientation: Portrait or Landscape (template dependent)
- Click Print
- Attach label to package
Important: Always print at 100% scale (actual size). Scaling can cause barcodes to become unscannable and addresses to be incorrectly sized.
- Thermal Label Printers: DYMO, Zebra, Rollo (best for high volume)
- Laser Printers: Good quality for label sheets
- Inkjet Printers: Use waterproof labels
Label Customization
Customize shipping label content and appearance:
Select Label Template
- Go to WooCommerce → Settings → PDF Invoices → Shipping Labels
- Find "Label Template" dropdown
- Select from 6 available templates
- Click "Save Changes"
Company Information on Labels
Your company information (sender address) appears on all labels:
- Uses company details from plugin settings
- Update in: WooCommerce → Settings → PDF Invoices
- Includes: Company name, address, phone, email
Additional Label Options
- Include Order Number: Display order number prominently
- Include Order Date: Show when order was placed
- Include Barcode: Add scannable tracking barcode
- Include QR Code: Add QR code for mobile scanning
Configure these options in Shipping Label Settings (Section 09).
Shipping Label Best Practices
Efficient Label Workflow
- Bulk Generate: Generate all day's labels at once
- Verify Addresses: Check shipping addresses before generating
- Print Immediately: Generate and print labels during packing
- Use Barcodes: Enable barcodes for warehouse scanning
- Consistent Template: Use same template for all shipments
- Quality Paper: Use waterproof or durable label stock
- Test Printing: Test with one label before bulk printing
- Process orders and update to Processing status
- Filter orders by Processing status
- Bulk generate shipping labels for all
- Print all labels in one batch
- Pack orders with labels attached
- Update orders to Completed/Shipped
You can now generate professional shipping labels for all your orders with just a few clicks!
Next: Proceed to Section 09: Shipping Label Settings to customize label templates, sizes, and barcode options.
Shipping Label Settings
Shipping Label Settings
Configure shipping label preferences including templates, paper sizes, and barcode options
Overview
The Shipping Label Settings allow you to configure how shipping labels are generated and displayed for your WooCommerce orders. These settings control label templates, paper formats, numbering systems, and barcode/QR code integration.
General Settings
| Setting | Options | Description |
|---|---|---|
| Enable Shipping Labels | Yes/No (checkbox) | Master switch to enable or disable the shipping label generation feature |
| Generate Labels For Order Statuses | Multiple selection | Select which order statuses should allow label generation (default: Processing, Shipped, Completed) |
Label Format Configuration
Paper Size & Orientation
| Setting | Available Options | Default |
|---|---|---|
| Label Paper Size |
• 4x6 inches (Standard) • 4x4 inches (Square) • A6 (105x148mm) |
4x6 inches |
| Label Orientation |
• Portrait • Landscape |
Portrait |
Template Selection
Choose from available shipping label templates. Templates are PHP files located in templates/shipping-label-*.php
| Template | Filename Pattern |
|---|---|
| Default | shipping-label-default.php |
| Modern | shipping-label-modern.php |
| Classic | shipping-label-classic.php |
Label Numbering System
Number Format Configuration
Configure custom label numbering using format placeholders:
| Placeholder | Output | Example |
|---|---|---|
| {Y} | 4-digit year | 2025 |
| {M} | 2-digit month | 12 |
| {D} | 2-digit day | 02 |
| {NNNN} | Sequential number (4 digits, padded) | 0001, 0042, 1523 |
| {NNN} | Sequential number (3 digits, padded) | 001, 042, 523 |
| {NN} | Sequential number (2 digits, padded) | 01, 42, 99 |
| {N} | Sequential number (no padding) | 1, 42, 523 |
| {ORDER_ID} | WooCommerce order ID | 12345 |
| {ORDER_NUMBER} | WooCommerce order number | ORD-2025-001 |
Example Formats
| Format String | Example Output | Use Case |
|---|---|---|
| SHIP-{Y}{M}{D}-{NNNN} | SHIP-20251202-0001 | Default format (recommended) |
| LBL-{Y}-{NNNN} | LBL-2025-0042 | Year-based tracking |
| SHIP-{ORDER_NUMBER} | SHIP-12345 | Order ID based labels |
Prefix & Suffix
| Setting | Description | Example |
|---|---|---|
| Label Number Prefix | Text added before the format (optional) | PREFIX- → PREFIX-SHIP-20251202-0001 |
| Label Number Suffix | Text added after the format (optional) | -SUFFIX → SHIP-20251202-0001-SUFFIX |
Barcode & QR Code Settings
Barcode Configuration
| Setting | Options | Description |
|---|---|---|
| Show Barcode | Yes/No (checkbox) | Display tracking barcode section on labels (default: Yes) |
| Barcode Type |
• Code 128 (Standard) • Simple Pattern |
Choose barcode format for tracking numbers |
QR Code Configuration
| QR Content Type | Description | Example Data |
|---|---|---|
| Store URL + Order + Tracking Recommended | Creates tracking link to your store | yoursite.com?order=123&tracking=TN456&key=abc |
| Direct Order Tracking URL | Direct link to order tracking page | yoursite.com/my-account/orders/123 |
| Store URL Only | Simple link to your store homepage | yoursite.com |
| Complete JSON Data | Full order data in JSON format | {"order":"123","tracking":"TN456",...} |
| vCard Contact Info | Store contact information as vCard | Store name, address, phone, email |
Uses Google Charts API for high-quality, scannable QR codes. Recommended for production use.
Return Address Configuration
Configure the default return/sender address displayed on all shipping labels:
| Field | Required | Default |
|---|---|---|
| Company Name | Yes | Your site name |
| Address Line 1 | Yes | - |
| Address Line 2 | No | - |
| City | Yes | - |
| State/Province | Yes | - |
| Postal Code | Yes | - |
| Country | Yes | Store base country |
| Phone Number | No | - |
Package Information
| Setting | Description | Default |
|---|---|---|
| Default Package Weight (lbs) | Fallback weight when product weight is not available | 2 lbs |
| Default Package Dimensions | Default package size (e.g., "12 x 10 x 4 inches") | 12 x 10 x 4 inches |
Email Attachment Settings
Automatic Email Attachments
- Order Processing (Customer)
- Order Completed (Customer)
- Order Shipped (Customer)
Company Logo Upload
Label Preview
The settings page includes a live preview of your shipping label design:
- Preview updates dynamically as you change settings
- Shows selected template with current configuration
- Displays barcode and QR code placement
- Verifies logo display and return address formatting
Saving Settings
Bulk Operations
Bulk Operations
Generate multiple invoices/labels at once and perform bulk operations efficiently
Overview Time Saver
Bulk Operations allow you to process multiple orders simultaneously, saving hours of manual work. Generate invoices, create shipping labels, and download documents for hundreds of orders with just a few clicks.
• WooCommerce → Orders (bulk action dropdown)
• WooCommerce → PDF Invoices → Bulk Generation
• Individual order edit screens
Bulk Invoice Generation
From Orders List
Generate Invoices
• Number of invoices generated
• Number of orders skipped (already had invoices)
• Number of errors (if any)
From Dedicated Bulk Page
- Date From: Start date (date picker)
- Date To: End date (date picker)
- Order Status: Select one or more statuses (multiselect dropdown)
- Order ID and number
- Customer name
- Order status
- Order date
- Invoice status (✓ has invoice or "Pending")
Bulk Download as ZIP
Download Multiple Invoices
invoices-[date-range].zip
ZIP File Structure
Each PDF inside the ZIP is named using the format:
invoice-[invoice-number]-[order-id].pdfDownload Shipping Labels as ZIP
Same process as invoices, but select Download Labels (ZIP) from the Bulk Actions dropdown.
ZIP filename format: shipping-labels-[date-from]-to-[date-to].zip
Individual label filenames: label-[order-id]-[label-number].pdf
Bulk Email Sending
• Sent to customer's billing email address
• Invoice PDF attached automatically
• Uses WooCommerce email templates
• Subject: "Your Invoice for Order #[order-number]"
• Orders must have valid customer email addresses
• Invoices must already be generated
• WooCommerce email system must be configured
Date Range Selection
Filter orders by creation date for targeted bulk operations:
Using Date Filters
• Generate invoices for last month's orders
• Download all labels for today's shipments
• Email invoices for orders from specific date range
Order Status Filtering
Available Status Filters
Select which order statuses to include in bulk operations:
- Pending Payment
- Processing
- On Hold
- Completed
- Cancelled
- Refunded
- Failed
- Custom statuses (if added by other plugins)
Multiple Status Selection
• Invoices: "Processing" and "Completed" statuses
• Shipping Labels: "Processing" and "Shipped" statuses
• Credit Notes: "Refunded" status only
Bulk Shipping Label Operations
Generate Labels in Bulk
- Generated: New labels created
- Skipped: Orders already had labels
- Errors: Failed generations (with reasons)
Bulk Download Labels
Download all shipping labels for a date range as a single ZIP file:
Performance & Limitations
Processing Speed
- Typical speed: 2-5 orders per second
- Large batches (100+ orders) may take 30-60 seconds
- Progress displayed in real-time
- Operations run in background (page won't freeze)
Recommended Batch Sizes
| Operation | Recommended Max | Reason |
|---|---|---|
| Invoice Generation | 500 orders | PDF generation is memory-intensive |
| Shipping Label Generation | 300 orders | Barcode/QR generation adds processing time |
| Bulk Email Sending | 100 orders | Email server rate limits |
| ZIP Download | 1000 files | ZIP file size and browser limits |
Error Handling
Common Errors & Solutions
| Error Message | Cause | Solution |
|---|---|---|
| "No orders found" | No orders match the selected criteria | Adjust date range or status filters |
| "No invoices found" | Selected orders don't have invoices yet | Generate invoices first, then download |
| "Failed to create ZIP" | Server permission or disk space issue | Check server permissions on uploads folder |
| "Email sending failed" | SMTP/email configuration issue | Verify WooCommerce email settings |
Barcode & QR Code Integration
Barcode & QR Code Integration
Add barcodes and QR codes to your invoices and shipping labels for tracking
Overview Tracking
The plugin generates industry-standard barcodes and QR codes automatically on invoices and shipping labels. These codes enable quick scanning for order lookup, tracking, and inventory management.
Barcode Support
Enable/Disable Barcodes
Uncheck to hide barcodes
Barcode Formats
Available Barcode Types
| Barcode Type | Description | Use Case |
|---|---|---|
| Code 128 Standard | Industry-standard high-density barcode supporting full ASCII character set |
• Shipping carriers (UPS, FedEx, USPS) • Tracking numbers • Order numbers • Professional barcode scanning |
| Simple Pattern | Basic visual pattern for simple recognition |
• Internal use only • Visual identification • Non-critical scanning |
Code 128 Technical Details
- Supports: All ASCII characters (A-Z, a-z, 0-9, special characters)
- Density: High (compact barcode)
- Checksum: Automatic error detection built-in
- Standard: ISO/IEC 15417
- Compatibility: All standard barcode scanners
Barcode Configuration
Select Barcode Type
- Code 128 (Standard) - Recommended
- Simple Pattern - Basic visual pattern
What Gets Encoded in Barcodes
The plugin automatically encodes the following information in barcodes:
| Document Type | Encoded Data | Example |
|---|---|---|
| Shipping Labels | Custom tracking number (if set) or label number | TN123456789 or SHIP-20251202-0001 |
| Invoices | Invoice number | INV-2025-001 |
| Credit Notes | Credit note number | CN-2025-001 |
QR Code Integration
QR Code Content Types
Configure what information is encoded in QR codes on shipping labels:
| Content Type | Description | Example Output |
|---|---|---|
| Store URL + Order + Tracking Recommended | Creates a tracking link customers can scan to view order status | https://yoursite.com?order=123&tracking=TN456&key=abc123 |
| Direct Order Tracking URL | Direct link to WooCommerce order view page | https://yoursite.com/my-account/orders/123 |
| Store URL Only | Simple link to your store homepage | https://yoursite.com |
| Complete JSON Data | Full order information in JSON format (for apps/integrations) | {"order":"123","tracking":"TN456","status":"shipped"} |
| vCard Contact Info | Store contact information in vCard format (adds to phone contacts) | Store name, address, phone, email in vCard format |
Select QR Code Content
QR Code Generation Methods
Google Charts API (Recommended)
Google QR vs. Local Generation
| Feature | Google Charts API | Local Generation |
|---|---|---|
| Quality | ⭐⭐⭐⭐⭐ Excellent | ⭐⭐⭐ Good |
| Scan Success Rate | 99%+ on all devices | 85-95% depending on printer |
| File Size | Optimized, smaller | Larger |
| Internet Required | Yes (during generation) | No |
| Recommended For | Production, customer-facing | Internal use, offline |
Placement on Documents
Shipping Labels
- QR Code: Top right corner of label
- Barcode: Bottom section above tracking number
- Both appear below shipping address
- Size: Automatically scaled to label dimensions
Invoices
- Barcode: Footer section (invoice number encoded)
- QR Code: Not included on invoices by default
- Positioned for easy scanning without interfering with text
Tracking Workflow
How QR Tracking Works
Barcode Scanning Workflow
Testing Barcodes & QR Codes
Test Before Production
Troubleshooting Scan Issues
| Problem | Cause | Solution |
|---|---|---|
| QR code won't scan | Low print quality or small size |
• Enable "Use Google QR Codes" • Increase label paper size • Check printer DPI settings |
| Barcode scan errors | Incorrect barcode type or damaged print |
• Switch to Code 128 format • Clean printer heads • Use higher quality label paper |
| QR redirects to wrong page | QR content type misconfigured |
• Select "Store URL + Order + Tracking" • Regenerate labels after changing settings |
Compatibility
Supported Devices
- Smartphones: iPhone (iOS 11+), Android (Camera app with QR support)
- Barcode Scanners: Any Code 128 compatible scanner (Honeywell, Symbol, Zebra, etc.)
- Tablets: iPad, Android tablets with camera
- Dedicated QR Scanners: All standard QR code readers
Printer Compatibility
- Thermal label printers (Zebra, Dymo, Rollo, Brother)
- Standard inkjet/laser printers
- Commercial shipping label printers
Order Management Interface
Order Management Interface
Manage invoices and labels directly from the WooCommerce orders screen with quick actions
Overview Admin Interface
The Order Management Interface integrates seamlessly into WooCommerce's native orders screen, adding PDF invoice and shipping label actions directly to each order. Manage documents without leaving the orders page.
Order Actions Dropdown
Accessing Order Actions
Available Invoice Actions
| Action | When Visible | Function |
|---|---|---|
| Generate Invoice | Order has NO invoice yet | Creates new invoice for the order |
| Download Invoice | Invoice already exists | Downloads existing invoice PDF |
| Regenerate Invoice | Invoice already exists | Regenerates invoice with current data (overwrites old PDF) |
| Email Invoice | Invoice already exists | Sends invoice PDF to customer's email |
Available Shipping Label Actions
| Action | When Visible | Function |
|---|---|---|
| Generate Label | Order has NO label yet | Creates new shipping label for the order |
| View Label | Label already exists | Opens label PDF in browser for preview |
| Download Label | Label already exists | Downloads label PDF to computer |
| Regenerate Label | Label already exists | Regenerates label with current settings (overwrites old PDF) |
Credit Note Actions
| Action | When Visible | Function |
|---|---|---|
| Download Credit Note | Order has refunds | Downloads credit note PDF for the refund |
Invoice Meta Boxes (Sidebar)
Accessing Invoice Meta Box
Invoice Meta Box Content
When invoice EXISTS:
- Invoice Number: Displays the generated invoice number (e.g., INV-2025-001)
- Invoice Date: Shows invoice generation date (formatted as "Month Day, Year")
- Action Buttons:
- 📥 Download Invoice - Downloads PDF
- 🔄 Regenerate Invoice - Creates new PDF with latest data
- 📧 Email to Customer - Sends invoice via email
When invoice does NOT exist:
- Message: "No invoice generated yet"
- Single button: Generate Invoice
When PDF file is missing (but invoice number exists):
- Shows invoice number and date
- Warning: "PDF file missing"
- Button: Regenerate Invoice to recreate the PDF
Shipping Label Meta Box
Label Information Display
When label EXISTS:
- Label Number: Shows generated label number (e.g., SHIP-20251202-0001)
- Generated Date: Timestamp of when label was created
- Tracking Number: Custom tracking number if set
- Courier Name: Shipping carrier name if specified
- Action Buttons:
- 👁️ View Label - Preview in browser
- 📥 Download Label - Download PDF
- 🔄 Regenerate Label - Create new label
When label does NOT exist:
- Message: "No shipping label generated yet"
- Button: Generate Label
Tracking Information Section
The meta box includes a dedicated section for managing tracking details:
| Field | Description | Action |
|---|---|---|
| Tracking Number | Text input for courier tracking number | Editable - enter carrier's tracking ID |
| Courier Name | Text input for shipping carrier | Editable - enter carrier name (e.g., "UPS", "FedEx") |
| Tracking Link (URL) | Full tracking URL from carrier | Optional - direct link to carrier tracking page |
Send Tracking Email
After saving tracking information, you can notify the customer:
Credit Note Meta Box
Credit Note Display
When order has refunds:
Each refund is displayed with the following information:
- Credit Note Number: If generated (e.g., CN-2025-001)
- Refund Date: When the refund was created
- Refund Amount: Total amount refunded (formatted with currency)
- Status: "Pending" if credit note not generated yet
Action Buttons:
- 📄 Generate Credit Note (if not yet generated)
- 📥 Download Credit Note (if already generated)
Quick Actions Summary
One-Click Operations
| Document Type | Quick Actions Available |
|---|---|
| Invoice |
• Generate • Download • Regenerate • Email to Customer |
| Shipping Label |
• Generate • View (preview) • Download • Regenerate |
| Credit Note |
• Generate • Download |
| Tracking |
• Update tracking info • Send tracking email |
Invoice Status Indicators
Visual Indicators in Orders List
The plugin adds visual status indicators to quickly identify document status:
| Indicator | Meaning | Location |
|---|---|---|
| ✓ Invoice icon | Invoice exists and PDF is available | Order row hover state / actions column |
| 📦 Label icon | Shipping label exists | Order row hover state / actions column |
| ⚠️ Warning icon | Invoice number exists but PDF file missing | Meta box and order details |
| "Pending" text | Credit note not yet generated for refund | Credit note meta box |
Regenerate Operations
When to Regenerate Documents
Use the regenerate function in these scenarios:
- Order information changed: Customer updated address, products modified, etc.
- Template updated: You changed invoice/label templates in settings
- Company info changed: Updated logo, address, or contact details
- PDF file missing: File was accidentally deleted from server
- Numbering format changed: Want to apply new numbering format (note: number itself stays the same)
Regenerate Process
Admin Notices & Feedback
Success Messages
- "Invoice generated successfully!"
- "Invoice regenerated successfully!"
- "Invoice has been emailed to the customer."
- "Shipping label generated successfully!"
- "Tracking information saved and email sent to customer."
Error Messages
- "Error generating invoice. Please try again."
- "Failed to send email. Check email configuration."
- "Could not generate shipping label. Missing required address information."
- "Security check failed. Please refresh and try again."
Permission Requirements
Required Capabilities
| Action | Required Permission |
|---|---|
| View order actions | manage_woocommerce |
| Generate/download invoices | manage_woocommerce |
| Generate/download labels | manage_woocommerce |
| Send emails to customers | manage_woocommerce |
Plugin Settings Panel
Plugin Settings Panel
Complete walkthrough of all plugin settings and configuration options
Overview Complete Reference
The Plugin Settings Panel provides centralized access to all PDF Invoices Pro configuration options. All settings are organized into logical tabs within WooCommerce's settings interface.
Additional: WooCommerce → Settings → Shipping Labels tab
General Settings
Core Features
| Setting | Type | Default | Description |
|---|---|---|---|
| Enable Invoices | Checkbox | Yes | Master switch to enable/disable invoice generation feature |
| Enable Credit Notes | Checkbox | Yes | Generate credit notes automatically when orders are refunded |
| Enable Shipping Labels | Checkbox | No | Enable shipping label generation feature (in Shipping Labels tab) |
Company Information
| Field | Type | Description |
|---|---|---|
| Company Name | Text | Your business name (appears on invoices and labels) |
| Company Address | Textarea | Full company address (multi-line) |
| Company Phone | Text | Contact phone number |
| Company Email | Contact email address | |
| Tax/VAT Number | Text | Business tax ID or VAT registration number |
| Company Website | URL | Your website URL |
Logo Upload
Invoice Settings
Invoice Generation
| Setting | Options | Description |
|---|---|---|
| Automatic Invoice Generation | Yes/No (checkbox) | Automatically generate invoices when orders reach specified statuses |
| Generate Invoice On Status | Multiselect | Select order statuses that trigger automatic invoice generation (default: Processing, Completed) |
Invoice Numbering
| Setting | Example | Description |
|---|---|---|
| Invoice Number Format | {prefix}{year}{month}{increment} | Template for invoice numbering using placeholders |
| Invoice Prefix | INV- | Text added before invoice number |
| Invoice Suffix | -US | Text added after invoice number |
| Starting Number | 1 or 1001 | First invoice number in sequence |
| Reset Counter | Button | Reset invoice counter to starting number |
Display Options
| Setting | Type | Description |
|---|---|---|
| Date Format | Select | Choose date display format (Y-m-d, d/m/Y, m/d/Y, etc.) |
| Paper Size | Select | A4, Letter, Legal |
| Display Prices Including Tax | Checkbox | Show prices with tax included vs. tax separate |
| Show SKU | Checkbox | Display product SKUs on invoices |
| Show Product Thumbnails | Checkbox | Include small product images on invoices |
Payment Information
| Setting | Description |
|---|---|
| Payment Terms | Free text for payment terms (e.g., "Payment due within 30 days") |
| Bank Account Details | Bank name, account number, routing number (for bank transfer payments) |
| Additional Notes | Footer text displayed on all invoices (e.g., "Thank you for your business!") |
Email Settings
Automatic Email Attachments
| Setting | Type | Description |
|---|---|---|
| Attach Invoice to Emails | Checkbox | Automatically attach invoice PDF to customer emails |
| Email Types | Multiselect | Select which email types should include invoice attachment: • Customer invoice/order details • Order processing • Order completed • Customer note |
Template Settings
Invoice Templates
| Setting | Description |
|---|---|
| Invoice Template | Select from available templates: • Default • Modern • Classic • Minimal • Professional (Templates are PHP files in templates/ folder) |
| Template Preview | Live preview buttons: • 📄 Preview as PDF - Opens full PDF in browser • 🐛 Preview as HTML - Debug view (HTML source) |
Color Customization
| Setting | Type | Description |
|---|---|---|
| Primary Color | Color picker | Main brand color for headers and accents |
| Secondary Color | Color picker | Secondary color for borders and table headers |
| Text Color | Color picker | Primary text color |
Advanced Options
PDF Generation Settings
| Setting | Options | Description |
|---|---|---|
| PDF Engine | DomPDF (default) | PDF generation library used by plugin |
| Font | Select dropdown | Default font for PDFs: • Arial • Helvetica • Times • Courier |
| Font Size | Number (px) | Base font size (default: 12px) |
File Storage
| Setting | Description |
|---|---|
| Storage Location | PDFs stored in: /wp-content/uploads/wc-pdf-invoices-pro/ |
| Auto-Cleanup | Automatically delete PDFs older than X days (optional) Number input (default: disabled) |
| Cleanup Orphaned Files | Button to manually remove PDF files for deleted orders |
Credit Note Settings
| Setting | Description |
|---|---|
| Credit Note Prefix | Prefix for credit note numbers (default: "CN-") |
| Credit Note Format | Numbering format for credit notes (same placeholders as invoices) |
| Starting Number | First credit note number in sequence |
Debug Mode
Developer Tools
| Setting | Function |
|---|---|
| Enable Debug Mode | Checkbox to enable detailed error logging |
| Log Location | Logs written to: /wp-content/uploads/wc-pdf-invoices-pro/logs/ |
| View Log | Button to view recent error logs in browser |
| Clear Log | Button to delete all log files |
System Information
Debug section displays useful system information:
- Plugin version
- WordPress version
- WooCommerce version
- PHP version and memory limit
- DomPDF version
- Upload directory path and permissions
- Database table status
Saving Settings
Settings Backup & Reset
Export Settings
Import Settings
Reset to Defaults
Quick Reference: Settings Locations
| Setting Category | Location |
|---|---|
| Invoice generation, company info, templates | WooCommerce → Settings → PDF Invoices |
| Shipping labels, barcodes, QR codes | WooCommerce → Settings → Shipping Labels |
| Bulk operations interface | WooCommerce → PDF Invoices → Bulk Operations |
| Order-specific actions | WooCommerce → Orders → (individual order edit screen) |
Customer Access to Invoices
Customer Access to Invoices
Enable customers to download their invoices from their account area
Overview Customer Features
The plugin automatically integrates invoice download functionality into WooCommerce's customer-facing areas. Customers can access their invoices through multiple touchpoints without admin access.
• My Account → Orders page
• Individual order view pages
• Email download links
My Account Integration
Orders List View
Customers see invoice download buttons directly on their orders list:
• View
• Pay (if unpaid)
• Download Invoice (if invoice exists)
Button Display Logic
| Condition | Button Visibility |
|---|---|
| Invoice exists for order | ✅ "Download Invoice" button visible |
| No invoice generated yet | ❌ No invoice button shown |
| Order status = Pending Payment | ❌ No invoice button (invoice generated after payment) |
| Order refunded (credit note exists) | ✅ Invoice button + separate credit note access |
Order View Page
Individual Order Details
"Invoice:" Download Invoice (INV-2025-001)
Display Format
The invoice link appears as a prominent, styled element:
- Label: "Invoice:" or custom text
- Link Text: "Download Invoice ([invoice-number])"
- Icon: 📄 PDF icon (optional, theme-dependent)
- Position: Below order items, above customer details
Email Download Links
Automatic Email Integration
When email attachments are enabled in settings, customers receive invoices via two methods:
Method 1: PDF Attachment
- Invoice PDF attached directly to order emails
- Customer can save attachment to device
- Works with all email clients (Gmail, Outlook, Apple Mail, etc.)
- No login required to access
Method 2: Download Link in Email
- Secure download link included in email body
- Customer clicks link to download invoice
- Link includes authentication key for security
- No separate login required if accessed from customer's registered email
Email Types with Invoice Access
| Email Type | Invoice Access | Configurable |
|---|---|---|
| Order Processing | PDF attachment + download link | Yes (in Email Settings) |
| Order Completed | PDF attachment + download link | Yes (in Email Settings) |
| Customer Invoice | PDF attachment + download link | Yes (in Email Settings) |
| Customer Note | Download link only (optional) | Yes (in Email Settings) |
Frontend Display Customization
Customizing Button Text
Developers can customize customer-facing text using WordPress filters:
Customizing Link Styling
Add custom CSS to your theme to style invoice download links:
Security & Permissions
Access Control
| Scenario | Access Granted? | Security Mechanism |
|---|---|---|
| Logged-in customer views own order | ✅ Yes | WordPress user ID verification |
| Guest tries to access order via direct URL | ❌ No | Login redirect |
| Customer A tries to access Customer B's invoice | ❌ No | Order ownership verification |
| Download link from email (with key) | ✅ Yes | Secure key validation |
| Admin/Shop Manager | ✅ Yes (all orders) | User capability check |
Secure Download URLs
All customer download links include security tokens:
- Nonce Verification: WordPress nonce prevents CSRF attacks
- Order Ownership: Plugin verifies customer owns the order
- Expiration: Nonces expire after 24 hours
- IP Validation: Optional IP-based access control
Guest Checkout Handling
Guest Orders (No Account)
For customers who checkout as guests:
Order Lookup for Guests
Guests can use WooCommerce's order lookup feature:
Mobile Responsiveness
Mobile Device Access
- Smartphone: Download buttons fully responsive and touch-friendly
- Tablet: Optimized layout for medium screens
- PDF Viewing: PDFs open in native mobile viewers (iOS Safari, Chrome, etc.)
- Download to Device: Customers can save PDFs to phone/tablet storage
Email Client Compatibility
| Email Client | PDF Attachment | Download Link |
|---|---|---|
| Gmail (Web & App) | ✅ Supported | ✅ Works |
| Outlook / Hotmail | ✅ Supported | ✅ Works |
| Apple Mail (iOS/Mac) | ✅ Supported | ✅ Works |
| Yahoo Mail | ✅ Supported | ✅ Works |
| ProtonMail | ✅ Supported | ✅ Works |
Troubleshooting Customer Access
Common Issues & Solutions
| Issue | Cause | Solution |
|---|---|---|
| No download button visible | Invoice not generated yet | Admin must generate invoice first (or enable automatic generation) |
| "Access denied" error | Customer trying to access another customer's invoice | Ensure customer is logged in with correct account |
| Download link expired | Security nonce expired (24+ hours old) | Customer should request new link from My Account |
| PDF won't open | PDF corrupted or device doesn't support PDF | Regenerate invoice PDF; recommend PDF viewer app |
| Email attachment missing | Email attachment not enabled in settings | Enable "Attach Invoice to Emails" in plugin settings |
Customer Support Tips
Help Your Customers Find Invoices
Add clear instructions to your site's FAQ or help section:
"How to Download Your Invoice"
Method 1 - My Account:
1. Log into your account
2. Go to My Account → Orders
3. Find your order and click "Download Invoice"
Method 2 - Email:
1. Check your order confirmation email
2. Download the attached PDF file, or
3. Click the "Download Invoice" link in the email
Need help? Contact our support team.
Template Customization
Template Customization
Advanced guide for developers to create and customize invoice templates
Overview Developers Advanced
The plugin uses a flexible PHP-based template system that allows complete customization of invoice and shipping label designs. Templates can be overridden in your theme, customized via filters, and extended with custom functionality.
• PHP knowledge (intermediate to advanced)
• Understanding of WordPress template hierarchy
• Familiarity with WooCommerce order objects
• Basic HTML/CSS for PDF styling
Template Structure
Plugin Template Locations
| Template Type | Plugin Location | File Pattern |
|---|---|---|
| Invoices | /templates/invoice/ | {template-name}.php |
| Credit Notes | /templates/credit-note/ | {template-name}.php |
| Shipping Labels | /templates/ | shipping-label-{name}.php |
Default Templates Included
- default.php - Standard invoice template
- modern.php - Contemporary design with bold headers
- classic.php - Traditional invoice layout
- minimal.php - Clean, minimalist design
- shipping-label-default.php - Standard 4x6 shipping label
Theme Override System
Override in Child Theme
The plugin automatically checks for template overrides in your theme:
/wp-content/themes/your-theme/woocommerce/pdf-invoices/
From: plugins/wc-pdf-invoices-pro/templates/invoice/default.php
To: themes/your-theme/woocommerce/pdf-invoices/default.php
Template Hierarchy
The plugin searches for templates in this order:
Available Variables
Invoice Template Variables
All variables are automatically available in templates via extract():
| Variable | Type | Description |
|---|---|---|
| $order | WC_Order | Full WooCommerce order object with all methods available |
| $invoice_number | string | Generated invoice number (e.g., "INV-2025-001") |
| $invoice_date | string | Invoice generation date/time (MySQL format) |
| $company_name | string | Company name from plugin settings |
| $company_address | string | Full company address |
| $company_phone | string | Company phone number |
| $company_email | string | Company email address |
| $company_website | string | Company website URL |
| $company_logo | string | Full URL to company logo image |
| $header_text | string | Custom header text from settings |
| $footer_text | string | Custom footer text from settings |
| $invoice_terms | string | Payment terms and conditions |
| $settings | array | Complete plugin settings array for custom logic |
| $is_preview | boolean | True when generating preview (no real order data) |
Credit Note Template Variables
| Variable | Type | Description |
|---|---|---|
| $refund | WC_Order_Refund | WooCommerce refund object |
| $order | WC_Order | Parent order object |
| $credit_note_number | string | Generated credit note number |
| $credit_note_date | string | Credit note generation date |
| $original_invoice_number | string | Invoice number of the original order |
Creating Custom Templates
Basic Template Structure
Minimal invoice template example:
Template Best Practices
- Use inline CSS styles (external stylesheets don't work in PDFs)
- Avoid complex CSS (position: fixed, flexbox, grid are poorly supported)
- Use tables for layout instead of divs with floats
- Keep images small and use absolute URLs
- Test extensively - DomPDF has CSS limitations
- Use web-safe fonts or embed custom fonts
- Validate HTML structure for PDF rendering
Template Hooks and Filters
Modifying Template Data (Filter)
Add or modify variables available in templates:
Modifying Rendered HTML (Filter)
Modify the final HTML before PDF generation:
Available Filter Hooks
| Hook Name | Parameters | Purpose |
|---|---|---|
| wc_pdf_invoices_pro_template_data | $data, $template_file | Modify variables before template rendering |
| wc_pdf_invoices_pro_template_html | $html, $data, $template_file | Modify final HTML after template rendering |
| wc_shipping_label_settings | $settings | Add custom shipping label settings fields |
PDF-Specific Styling
Supported CSS Properties
DomPDF (the PDF library) supports a subset of CSS 2.1:
| Supported ✅ | Limited Support ⚠️ | Not Supported ❌ |
|---|---|---|
|
• font-family, font-size, font-weight • color, background-color • margin, padding • border, border-collapse • text-align, text-decoration • width, height • page-break-before/after |
• float (basic only) • position: relative • background-image • line-height • opacity |
• position: fixed/sticky • flexbox, grid • transform, transition • box-shadow, text-shadow • @media queries • CSS animations |
Page Break Control
Custom Fonts
To use custom fonts in PDFs, fonts must be added to DomPDF's font directory. Contact support for font installation assistance.
Child Theme Integration
Complete Child Theme Setup
Available Helper Functions
Use these plugin-provided helper functions in templates:
| Function | Returns | Description |
|---|---|---|
| wc_pdf_invoices_format_price($amount) | string | Format price with currency symbol |
| wc_pdf_invoices_format_date($date) | string | Format date according to plugin settings |
| wc_pdf_invoices_get_setting($key) | mixed | Get specific plugin setting value |
Testing & Debugging Templates
Use Preview Mode
Debug Mode
Enable debug mode in plugin settings to log template rendering errors:
Hooks & Filters Reference
Hooks & Filters Reference
Complete developer reference for extending plugin functionality
Overview API Reference
The plugin provides a comprehensive set of action hooks and filters for developers to extend and customize functionality without modifying core plugin files. All hooks follow WordPress coding standards and are update-safe.
• Actions: wc_pdf_invoice_* or wc_pdf_invoices_pro_*
• Filters: wc_pdf_invoices_pro_*
• Priority: Default 10 (higher = runs later)
Action Hooks
Invoice Generation Action
| Hook | Parameters | When Fired |
|---|---|---|
| woocommerce_order_status_completed | $order_id | Order status changes to "Completed" (triggers invoice generation) |
| woocommerce_order_status_processing | $order_id | Order status changes to "Processing" (triggers invoice generation) |
| wc_pdf_invoice_saved_to_database | $order_id, $number, $type, $refund_id, $file_path | After invoice/credit note saved to database |
Usage Examples
Filter Hooks
Template & Display Filters Filter
| Filter | Parameters | Purpose | Return Type |
|---|---|---|---|
| wc_pdf_invoices_pro_template_data | $data, $template_file | Modify template variables before rendering | array |
| wc_pdf_invoices_pro_template_html | $html, $data, $template_file | Modify final HTML before PDF generation | string |
| wc_pdf_invoice_download_text | $text | Customize "Download Invoice" button text | string |
Settings Filters Filter
| Filter | Parameters | Purpose | Return Type |
|---|---|---|---|
| wc_shipping_label_settings | $settings | Add or modify shipping label settings | array |
| woocommerce_my_account_my_orders_actions | $actions, $order | Add custom actions to My Account orders (including invoice download) | array |
Usage Examples
Custom Functionality Examples
Example 1: Send Invoice to External API
Example 2: Conditional Invoice Generation
Example 3: Add Custom Invoice Numbering Logic
Example 4: Auto-Email Invoices to Admin
Integration with Other Plugins
WooCommerce Subscriptions Integration
Advanced Custom Fields (ACF) Integration
WooCommerce Bookings Integration
Helper Functions
Available Global Functions
| Function | Parameters | Returns | Description |
|---|---|---|---|
| wc_pdf_invoices_generate_invoice() | $order_id | string|false | Generate invoice for order, returns file path or false |
| wc_pdf_invoices_order_has_invoice() | $order_id | boolean | Check if order has invoice generated |
| wc_pdf_invoices_get_invoice_number() | $order_id | string | Get invoice number for order |
| wc_pdf_invoices_format_price() | $amount, $order | string | Format price with currency symbol |
| wc_pdf_invoices_format_date() | $date, $format | string | Format date according to plugin settings |
| wc_pdf_invoices_get_setting() | $key, $default | mixed | Get specific plugin setting value |
| wc_pdf_invoices_log() | $message, $level | void | Write to plugin error log ($level: 'info', 'warning', 'error') |
Usage Examples
Best Practices
• Always check if objects/arrays exist before accessing them
• Use proper WordPress escaping functions in templates
• Test with debug mode enabled during development
• Use appropriate hook priorities to control execution order
• Document your custom code for future maintenance
• Return the expected data type from filters
• Use wc_pdf_invoices_log() for debugging
• Don't modify plugin files directly (use hooks/filters instead)
• Don't assume order objects always exist (check with if ($order))
• Don't perform heavy operations in hooks (risk timeout)
• Don't break template rendering by returning incorrect types
• Don't forget to sanitize and escape user input
• Don't use deprecated WooCommerce functions
Order Management Interface
Common Issues & Solutions
Troubleshooting guide for resolving common problems and errors
Overview Support
This guide covers the most frequently encountered issues with PDF Invoices Pro and their solutions. Follow the diagnostic steps for each problem category to quickly resolve issues.
1. Check PHP version (7.4+ required)
2. Verify WordPress & WooCommerce are up to date
3. Ensure upload directory permissions are correct
4. Test with default WordPress theme
5. Disable other plugins temporarily
PDFs Not Generating Critical
Issue: No Invoice Generated After Order
• "Generate Invoice" button appears (invoice hasn't been created)
• No invoice number in order meta
• No errors displayed
Solution Steps:
WooCommerce → Settings → PDF Invoices
Verify "Enable Invoices" checkbox is checked
Check "Generate Invoice On Status" setting includes the order's current status
Enable WordPress debug mode in wp-config.php:
Run PDF generation test from Settings → Debug → "Test PDF Generation"
Issue: PDF File is 0 Bytes or Corrupted
• Invoice number exists but PDF won't open
• File size shows as 0 bytes
• "PDF file missing" warning in order meta box
Common Causes & Solutions:
| Cause | Solution |
|---|---|
| PHP Memory Limit Too Low |
Increase memory limit in wp-config.php: define('WP_MEMORY_LIMIT', '256M'); Or contact hosting provider to increase limit |
| PHP Max Execution Time |
Increase in .htaccess: php_value max_execution_time 300 Or contact hosting provider |
| Template HTML Errors |
Preview as HTML (Settings → PDF Invoices → Preview as HTML) Check browser console for JavaScript errors Validate HTML structure |
| Missing Fonts |
DomPDF requires web-safe fonts (Arial, Helvetica, Times) Check template doesn't use custom fonts without proper installation |
| Broken Logo URL |
Verify company logo URL is accessible (not local file path) Use absolute URLs (http:// or https://) Test logo URL in browser |
Issue: DomPDF Class Not Found
Fatal error: Class 'Dompdf\Dompdf' not found
Email Attachment Issues High Priority
Issue: Invoice Not Attached to Emails
• Customer receives email but no PDF attachment
• Email shows invoice link but not attachment
Solution Steps:
WooCommerce → Settings → PDF Invoices → Email Settings
Check "Attach Invoice to Emails" is enabled
Verify correct email types are selected in "Email Types" multiselect
Invoices are only attached if they already exist
Enable automatic generation or generate manually first
PDF file must be readable by web server:
chmod 644 /wp-content/uploads/wc-pdf-invoices-pro/invoices/*.pdf
Some email clients block PDF attachments
Ask customer to check spam/junk folder
Provide download link as alternative
Issue: Emails Not Sending at All
| Diagnostic | Action |
|---|---|
| Test WooCommerce emails work without plugin | Deactivate PDF plugin temporarily and test order email If still broken, it's a WooCommerce/SMTP issue, not plugin issue |
| Check email logs | Use plugin like "WP Mail Logging" to see if emails are being sent Check for bounce/rejection messages |
| SMTP Configuration | Install "WP Mail SMTP" plugin for reliable email delivery Configure with Gmail, SendGrid, or Mailgun |
| Server email limits | Contact hosting provider about email sending limits Shared hosting often restricts bulk emails |
Template Display Problems Medium Priority
Issue: Template Styling Broken in PDF
• HTML preview looks correct but PDF is broken
• Images missing or misaligned
• Tables overlapping text
• Colors not displaying
DomPDF CSS Limitations:
- Use inline styles instead of external CSS files
- Avoid flexbox/grid - use tables for layout
- No position: fixed/sticky - use static or relative
- Images must use absolute URLs (not relative paths)
- No box-shadow or text-shadow
- Float support is limited - test thoroughly
Debugging Template Issues:
Settings → PDF Invoices → Preview as HTML (Debug)
Check browser console for errors
Remove complex styles one by one until PDF renders
Identify which CSS property causes the issue
Use W3C validator (validator.w3.org)
Fix any structural errors
Issue: Logo Not Displaying
| Check | Fix |
|---|---|
| Logo URL format | Must be absolute URL: https://yoursite.com/logo.png NOT relative: /wp-content/uploads/logo.png |
| File accessibility | Ensure logo URL is publicly accessible (not behind login) Test by opening URL in incognito browser window |
| Image format | PNG and JPG work best SVG support is limited in DomPDF |
| File size | Keep under 500KB for performance Large images slow PDF generation |
| Remote loading | Check "Enable Remote Content" is enabled in Advanced Settings |
Permission Errors Critical
Issue: Cannot Write PDF File
Failed to write PDF file or Permission denied
Fix File Permissions:
/wp-content/uploads/wc-pdf-invoices-pro/
If missing, plugin should create it automatically
Files must be owned by web server user (often www-data or apache)
chown -R www-data:www-data /wp-content/uploads/wc-pdf-invoices-pro/
Settings → Debug → "Test PDF Generation"
If test fails, contact hosting support
Issue: Access Denied When Downloading
Access denied or You do not have permission
Check User Permissions:
| User Type | Required Capability | Solution |
|---|---|---|
| Admin / Shop Manager | manage_woocommerce | Should work automatically If not, check user role hasn't been modified |
| Customer (logged in) | Order ownership | Customer can only download invoices for their own orders Verify correct customer is logged in |
| Guest | Valid email link | Must use secure download link from email Links expire after 24 hours |
Server Configuration Issues Advanced
PHP Requirements
| Requirement | Minimum | Recommended | Check |
|---|---|---|---|
| PHP Version | 7.4 | 8.0+ | Settings → Debug → System Info |
| PHP Memory Limit | 128M | 256M+ | php_info() or hosting panel |
| Max Execution Time | 30s | 60s+ | php_info() or hosting panel |
| Max Upload Size | 2M | 10M+ | Media Library upload test |
Required PHP Extensions
- GD or ImageMagick - For image processing in PDFs
- mbstring - For multi-byte string support
- DOM - For HTML parsing (usually enabled)
- curl or allow_url_fopen - For remote logo loading
Create a file phpinfo.php in your site root with:
<?php phpinfo(); ?>
Visit yoursite.com/phpinfo.php to see all PHP settings
Delete file after checking!
Hosting-Specific Issues
| Hosting Type | Common Issue | Solution |
|---|---|---|
| Shared Hosting | Low memory limits Execution timeouts |
Contact support to increase limits Consider VPS upgrade for high volume |
| Managed WordPress | Restricted file system Custom caching |
Ensure uploads directory is writable Disable caching for PDF generation URLs |
| WP Engine | Object caching conflicts | Exclude PDF URLs from caching Contact WP Engine support if issues persist |
| Cloudflare | PDF download blocked | Add page rule to bypass cache for: *admin-ajax.php?action=wc_pdf* |
Getting Further Help Support
Before Contacting Support
Settings → Debug → Copy "System Info" section
Settings → Enable Debug Mode
Attempt the action that causes the problem
Copy error log
Temporarily switch to default template
Deactivate other plugins
Switch to default WordPress theme
Note if problem persists
Error messages
Plugin settings
Browser console (F12) showing errors
Support Ticket Template
Quick Reference: Error Codes
| Error Message | Quick Fix |
|---|---|
| "DomPDF class not found" | Re-upload plugin completely (vendor folder missing) |
| "Failed to write PDF file" | Check upload directory permissions (chmod 755) |
| "Invoice file not found" | Click "Regenerate Invoice" in order meta box |
| "Security check failed" | Clear browser cache and refresh page |
| "No orders found" | Adjust date range or order status filters |
| "Template not found" | Reset template to "default" in settings |
| "Access denied" | Check user has manage_woocommerce capability |