InvoiceForge for WooCommerce
Beautiful PDF invoices and packing slips for WooCommerce — auto-generated, email-attached, and customer-downloadable. GPL v2. For WordPress.org.
by Arun Rajiah · github.com/arunrajiah/invoiceforge-for-woocommerce · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/arunrajiah/invoiceforge-for-woocommerce/archive/refs/heads/main.zipReadme
InvoiceForge for WooCommerce
Beautiful, automatic PDF invoices and packing slips for WooCommerce — free, open-source, and ready to go in minutes.
What it does
InvoiceForge automatically generates a professional PDF invoice the moment an order is completed. The invoice is attached to the customer's order confirmation email and available for download from My Account. No setup beyond entering your shop details — it just works.
For store admins:
- Download or regenerate invoices from the order edit screen and the orders list
- Bulk-download all invoices for a date range as a single ZIP file
- Sequential, configurable invoice numbering (e.g.
INV-2026-00042)
For customers:
- "Download Invoice" button on My Account → Orders for every completed order
Features
| Feature | Details |
|---|---|
| 📄 Auto PDF invoices | Generated on order completion, attached to the confirmation email |
| 📦 Packing slips | One-click from the order admin page |
| 🔢 Sequential numbering | Configurable prefix, suffix, and year/month tokens |
| ⬇️ Bulk ZIP export | Select orders → download all invoices as a ZIP |
| 🎨 Customisable template | Copy to your theme and edit HTML/CSS freely |
| 📧 Email attachment | Invoice auto-attached to Order Completed email |
| 👤 My Account download | Customers download their own invoices |
| 🔌 WooCommerce native | HPOS-compatible, no external dependencies |
| 🪝 Developer hooks | Actions and filters throughout for custom integrations |
| 🔗 REST API | Programmatic access to invoices |
Installation
From WordPress.org (recommended)
- In your WordPress admin go to Plugins → Add New
- Search for InvoiceForge
- Click Install Now then Activate
Manual install
- Download the latest ZIP from the Releases page
- Go to Plugins → Add New → Upload Plugin
- Upload the ZIP and activate
After activation
- Go to WooCommerce → InvoiceForge → Settings
- Enter your shop name, address, and upload your logo
- Place a test order and complete it — a PDF invoice will be generated and attached to the confirmation email
Configuration
All settings are under WooCommerce → InvoiceForge → Settings:
| Setting | Description |
|---|---|
| Shop name / address | Printed in the invoice header |
| Logo | Uploaded via the WordPress media library |
| Invoice number prefix | e.g. INV- or 2026- |
| Next invoice number | Override the counter if migrating from another plugin |
| Trigger status | Which WooCommerce order status triggers generation (default: Completed) |
| Email attachment | Which outgoing email the PDF is attached to |
| Tax label | How tax is labelled on the invoice (e.g. VAT, GST) |
| Footer text | Bank details, payment instructions, or legal copy |
Template customisation
The default template is a clean, modern HTML/CSS document rendered by mPDF.
To customise it, copy the template into your theme:
wp-content/plugins/invoiceforge-for-woocommerce/templates/pdf/invoice/default.php
→ wp-content/themes/{your-theme}/woocommerce/invoiceforge/invoice/default.php
mPDF supports most CSS 2.1 properties including custom fonts, page margins, headers/footers, and table borders. The template receives a $data array — see includes/pdf/class-invoice-document.php for the full structure.
Hooks reference
All actions and filters are documented in includes/extensibility/class-hook-registry.php.
Key examples:
// Modify invoice data before PDF generation
add_filter( 'invoiceforge_invoice_data', function( array $data, WC_Order $order ): array {
$data['custom_field'] = get_post_meta( $order->get_id(), '_my_field', true );
return $data;
}, 10, 2 );
// Run code after a PDF is generated
add_action( 'invoiceforge_pdf_generated', function( int $order_id, string $type, string $path ): void {
// $type is 'invoice' or 'packing_slip'
// $path is the absolute path to the PDF file
}, 10, 3 );
// Customise the invoice number format
add_filter( 'invoiceforge_invoice_number', function( string $number, int $order_id ): string {
return 'MY-' . $number;
}, 10, 2 );
Pro add-on
InvoiceForge Pro extends the free plugin with:
- 🎨 Visual template designer — 10 pre-built professional themes, live preview
- 📝 Credit notes — auto-generated on WooCommerce refunds
- 📋 Proforma invoices — for quotes and pre-payment orders
- 🚚 Delivery notes — separate document type for fulfilment
- 🇪🇺 ZUGFeRD / Factur-X — embedded XML for EU e-invoicing compliance
- 🇩🇪 XRechnung UBL 2.1 — for German public-sector buyers
- 🏢 B2B fields — VAT ID at checkout, injected into invoices
- 🌍 WPML & Polylang — invoices in the customer's language
- ☁️ Cloud backup — auto-upload to Dropbox, Google Drive, or S3
- 🎨 Custom CSS — override any template style without editing files
Get InvoiceForge Pro — $49/yr →
Local development
# Install all dependencies (including dev tools)
composer install
# Lint (PHPCS + WordPress Coding Standards)
composer lint
# Auto-fix fixable lint issues
composer lint-fix
# Run PHPUnit tests
composer test
WP test suite setup
bash tests/install-wp-tests.sh wordpress_test root root 127.0.0.1 latest
Release process
- Bump the version in
invoiceforge-for-woocommerce.php(header) andreadme.txt(Stable tag:) - Add a changelog entry to
CHANGELOG.mdandreadme.txt - Push to
main— CI runs lint, PHPUnit, and Plugin Check automatically - Tag:
git tag v0.x.x && git push origin v0.x.x - The
deploy-wp-org.ymlworkflow deploys to WordPress.org SVN automatically
Support
- WordPress.org forums — for general questions and community help
- Bug reports — GitHub Issues
- Pro support — hub.arunrajiah.com/support
License
GPL v2 or later — see LICENSE. Free to use, modify, and distribute.