Invoice
PDF and HTML. From the order, from My Account, or from a link. Attached to the emails you choose, with a pre-invoice variant for orders not yet paid.
The invoice plugin that has been shipping since 2020.
PDF and HTML invoices, packing slips, shipping labels and inventory reports for WooCommerce. Attached to the emails the store already sends, printed in bulk, on paper or on an 80mm receipt printer, in any language and either direction, from templates you can actually change.
Published by Pepro Dev. I lead its development and maintenance; my co-founders are credited on the plugin page.
فاکتور فروش
شماره سفارش ۱۰۲۴۱ · ۱۴۰۵/۰۷/۰۶ · کارت به کارت
فروشنده
نام فروشگاه، شناسه ملی، کد اقتصادی
خریدار
نام و نشانی، تلفن
| ردیف | شرح کالا | تعداد | مبلغ (تومان) |
|---|---|---|---|
| ۱ | محصول اول | ۲ | |
| ۲ | محصول دوم | ۱ | |
| ۳ | هزینه ارسال | ||
| جمع کل |
یادداشت مشتری و یادداشت فروشگاه
پرداخت شده
What is on that page
// why
There were invoice plugins for WooCommerce in 2020. None of them produced an invoice a store in our market could actually use.
Before
An invoice in our market is a legal document with rules. It carries the seller's national identifier, registration and economic numbers. It uses the Jalali calendar. It reads right to left, in a typeface that is not the one the plugin shipped with. And it very often goes to a thermal receipt printer at a counter rather than to a laser printer in an office.
The plugins available then did none of this. Most could not render a right-to-left PDF at all, and the ones that tried produced a document with the wrong font, the wrong direction and the wrong calendar. Every one of them came with a locked template: change a colour, maybe, but not the structure. So each store that needed a real invoice needed a developer, and each developer wrote the same thing again.
A real Persian PDF invoice, with a proper font, did not exist. So the first job was making one exist.
Once a template could render right to left in a chosen typeface with the Jalali calendar and every legal field, the rest of the paperwork was the same engine with a different layout. And if the template was a file a developer could copy and change, or ship inside their own theme, nobody would need to fork the plugin to make it theirs.
Ultimate Invoice went onto WordPress.org in the summer of 2020 and has had a release every year since. The market it was built for still has no other real answer, and stores far outside that market use it because a plugin that handles right to left, two calendars and three numeral systems handles everything else without complaint.
// documents
Each with its own template, each downloadable, printable and attachable to the emails WooCommerce already sends.
PDF and HTML. From the order, from My Account, or from a link. Attached to the emails you choose, with a pre-invoice variant for orders not yet paid.
What goes in the box, with images, SKUs, weights and dimensions if you want them, and the customer's note.
Addresses, the shipping method, and the tracking number entered on the order.
Every item across the selected orders, totalled, for picking and for the end of the day.
An 80mm template for the receipt printer at a counter, with its own page size and margins.
The invoice as the email itself, from its own template, styled so it survives Gmail.
Select orders, download every invoice as one ZIP, or print every slip and report in one go.
One page that lists every product with an add-to-cart, for phone orders and counters.
// customise
Every document is a template pair, a layout file and a stylesheet, that you can copy, edit, or ship inside your own theme or plugin. Updates never overwrite it.
Separate templates for invoice, PDF, email, packing slip, inventory report and thermal receipt, each with left-to-right and right-to-left defaults. Page size and margins per document.
Show or hide store identifiers, addresses, dates, payment and shipping method, transaction reference, images, notes, weight, dimensions, SKU and totals.
Restrict any document to chosen roles, so a warehouse account prints slips but never sees prices.
Export every setting as JSON or PHP and import it on the next store. An agency sets up once, and settings can live in version control.
// built-where-it-is-hard
Most of what makes this plugin different exists because its first market demanded it. Everywhere else gets the benefit.
// security
An invoice plugin reads every order and writes files to the server. That is a plugin worth having strangers try to break, on purpose, before anyone else does.
Ultimate Invoice is enrolled in the Patchstack Vulnerability Disclosure Program. This is not theoretical: CVE-2025-54869 was reported through the programme, fixed, and shipped through the normal WordPress update. In March 2026 a later release hardened bulk downloads further, randomising archive filenames and deleting them from disk after delivery.
A researcher reports it
Privately, to Patchstack, through the plugin's disclosure page. Never in a public support thread.
Patchstack validates it
Their team confirms the issue, rates its severity and rules out duplicates.
I fix it
Patch, test, and ship a new version to WordPress.org under the disclosure deadline.
Sites update
The fix reaches every store through the normal WordPress update, before anything is public.
It is disclosed properly
The advisory is published after the fix is out, with the researcher credited.
// developers
The second thing developers asked for, after a template, was a way to change it without touching it.
Over 190 filter hooks and more than 15 action hooks with readable names, documented in the wiki. A filter decides who may print what, on top of the role settings.
Register a template from your theme or plugin and it appears in the dropdown next to the built-in ones.
Full support for WooCommerce's new order storage and the legacy one, tested before each WordPress and WooCommerce release lands.
The PDF engine, the email sender and the admin screens are separate classes that do not share state.
// hindsight
What maintaining it has actually involved, and what I would change.
Bulk operations arrived in version 1.4, after the support queue made it obvious that stores were downloading invoices one order at a time. That release added ZIP archives of PDFs, batch printing of slips and inventory reports, and export of the entire settings object, which is what makes agency rollouts and migrations practical.
Late in 2025 I added the 80mm thermal template, per-document page sizes and margins, completed HPOS compatibility, and upgraded mPDF to 8.2.7. A contributor's division-by-zero fix in the discount calculation was merged and credited in the changelog.
// products/
Plugins, apps and internal systems. Each one is shipped, documented, and still looked after.