
BrainlessITC PDF Invoices & Packing Slips for Woo creates professional PDF invoices and packing slips for your WooCommerce orders. Everything is generated on your own server – no external service, no account, no API key.
Invoices
- Invoice number, invoice date, order number and order date
- Your logo, store name, address, email, phone, website and tax / VAT ID
- Billing and shipping address, email and phone of the customer (each optional)
- Products with SKU, variation details and item meta, quantity, unit price, tax and line total
- Discounts, shipping, fees, taxes and the order total in the order currency
- Payment method, shipping method and customer note
- Refunds are listed below the original total, which never changes, followed by the net total
- Guest orders, orders without a shipping address and free (zero total) orders
- Two layouts: Classic and Modern, with your accent color
- Notes / terms and a footer printed on every page
- A4 or US Letter, long invoices continue on more pages with repeated table headers and page numbers
Packing slips
- Shipping address (billing address when the order has no shipping address), order number, order date and shipping method
- Products with SKU, variation details, quantity to ship (ordered minus refunded) and a “packed” checkbox
- Never shows prices, taxes or payment information
- Optional: billing address, email, phone, product weight, customer note
Orders screen
- Invoice and packing slip buttons on every order and in the orders list
- Bulk actions “PDF: Invoice” and “PDF: Packing Slip” – one PDF for all selected orders
- Clear messages when an order is not eligible (for example a failed order)
- Works with High-Performance Order Storage (HPOS) and the legacy order storage
Emails and automation
- Attach the invoice to the WooCommerce emails you choose (processing, completed, customer invoice, …)
- Attach the packing slip to the emails you choose (for example “New order” for your warehouse)
- Issue invoices automatically when an order reaches the statuses you choose
- No invoices for failed or cancelled orders unless you allow those statuses
Customer downloads
- “Download invoice” button in My Account (orders list and order details) once an invoice exists
- Guests get a signed link on the order received page and in the order tracking result; the link only works for that order and expires
- An order number or order ID alone never gives access to a document
Safe invoice numbering
Invoice numbers are accounting records, so they are handled with care:
- Every issued number is stored in an invoice register (its own database table).
- Numbers are issued inside a database transaction that locks the number sequence, so simultaneous requests (for example an email and an admin click at the same moment) can never get the same number.
- A unique database key makes sure every number exists only once and every order gets only one invoice.
- An issued number and invoice date never change – also not when you change the prefix or format later.
- If creating the PDF fails, the order keeps its number and the next attempt uses the same number. A failed attempt does not use up a number.
- Deleting an order does not free its number: the register keeps the entry (“order deleted”), so a gap in your order list can always be explained.
- The next number can only be moved forward, never back to a number that was already issued.
- Prefix and suffix support {Y}, {y}, {m} and {d} (date of the invoice); set the minimum number of digits for zero padding.
Pro add-on
A separate, paid add-on adds credit notes for refunds, proforma invoices, shipping labels, more invoice layouts, yearly or monthly number resets, custom fields, product images and a PDF archive with ZIP export. This plugin is complete and fully functional without it.
Privacy
This plugin does not track you or your customers and does not contact any external service to create documents. PDFs are generated on demand and are not stored; the temporary file used for an email attachment is deleted right after the email was sent. The plugin suggests a paragraph for your privacy policy (Settings > Privacy).
On the plugin’s settings page you can opt in to share usage information with Freemius (https://freemius.com) to help us improve the plugin, and the “Add-ons” page lists the separate add-on. Nothing is sent unless you opt in. Freemius terms: https://freemius.com/terms/ – privacy policy: https://freemius.com/privacy/
For developers
- Templates can be overridden in your theme: copy
templates/invoice/classic.phptoyourtheme/brainlessitc-pdf-invoices-packing-slips-for-woo/invoice/classic.php. - Filters:
bitcpdf_document_types,bitcpdf_invoice_templates,bitcpdf_template_data,bitcpdf_document_item,bitcpdf_document_totals,bitcpdf_document_css,bitcpdf_number_series,bitcpdf_formatted_number,bitcpdf_can_issue_invoice,bitcpdf_document_filename,bitcpdf_email_options,bitcpdf_skip_email_attachments,bitcpdf_admin_capability,bitcpdf_bulk_limit,bitcpdf_settings_tabs,bitcpdf_settings_fields,bitcpdf_dompdf_options. - Actions:
bitcpdf_loaded,bitcpdf_document_issued,bitcpdf_pdf_generated,bitcpdf_order_meta_box_after,bitcpdf_template_before_items,bitcpdf_template_item_after_meta,bitcpdf_template_after_totals. - Functions:
bitcpdf_get_invoice_number( $order ),bitcpdf_get_admin_document_url( $type, $order_ids ).
WooCommerce is a trademark of Automattic Inc. This plugin is not affiliated with or endorsed by Automattic or WooCommerce.
Third-party libraries
- Dompdf 3.1 – LGPL-2.1 – HTML to PDF conversion
- php-font-lib – LGPL-2.1-or-later, php-svg-lib – LGPL-3.0-or-later (Dompdf dependencies)
- HTML5-PHP – MIT
- PHP-CSS-Parser – MIT
- DejaVu fonts (bundled with Dompdf) – Bitstream Vera / DejaVu license (free)
- Freemius WordPress SDK – GPL-3.0 – opt-in and add-on listing
Screenshots

Classic invoice layout.

Modern invoice layout.

Packing slip without prices.

Invoice and packing slip buttons on the order screen.

Bulk PDF actions in the orders list.

Invoice settings with safe "next number" handling.