Amirhossein Hosseinpouramirhp
CV
Active WordPress plugin · WooCommerce

Ultimate Invoice

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.

Get it on WordPress.org Repository and wiki

Published by Pepro Dev. I lead its development and maintenance; my co-founders are credited on the plugin page.

On WordPress.org2020 to today
invoice-10241.pdf · RTL · Jalali · Persian numerals

فاکتور فروش

شماره سفارش ۱۰۲۴۱ · ۱۴۰۵/۰۷/۰۶ · کارت به کارت

فروشنده

نام فروشگاه، شناسه ملی، کد اقتصادی

خریدار

نام و نشانی، تلفن

ردیفشرح کالاتعدادمبلغ (تومان)
۱محصول اول۲
۲محصول دوم۱
۳هزینه ارسال
جمع کل

یادداشت مشتری و یادداشت فروشگاه

پرداخت شده

What is on that page

  • A real right-to-left PDF with an embedded typeface, not a mirrored Latin layout
  • Jalali or Gregorian dates, with your own format string
  • English, Eastern Arabic or Persian digits, chosen once
  • National identifier, registration and economic numbers, each shown or hidden

// why

Why it exists

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.

The realisation

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

Five documents from one order

Each with its own template, each downloadable, printable and attachable to the emails WooCommerce already sends.

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.

Packing slip

What goes in the box, with images, SKUs, weights and dimensions if you want them, and the customer's note.

Shipping label

Addresses, the shipping method, and the tracking number entered on the order.

Inventory report

Every item across the selected orders, totalled, for picking and for the end of the day.

Thermal receipt

An 80mm template for the receipt printer at a counter, with its own page size and margins.

Styled email

The invoice as the email itself, from its own template, styled so it survives Gmail.

Bulk, as one file

Select orders, download every invoice as one ZIP, or print every slip and report in one go.

Quick Shop

One page that lists every product with an add-to-cart, for phone orders and counters.

// customise

Templates, not settings

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.

Templates

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.

What appears on the page

Show or hide store identifiers, addresses, dates, payment and shipping method, transaction reference, images, notes, weight, dimensions, SKU and totals.

Who can see what

Restrict any document to chosen roles, so a warehouse account prints slips but never sees prices.

Portable settings

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

Built where it is hard

Most of what makes this plugin different exists because its first market demanded it. Everywhere else gets the benefit.

Right to left, properly
A real RTL PDF with an embedded typeface.
Two calendars
Gregorian or Jalali, with your own format string.
Three numeral systems
English, Eastern Arabic or Persian digits.
The legal fields
National, registration and economic numbers.
The counter
A thermal template, because that is where many invoices print.
Cheap hosting
Renders PDFs on shared hosting with a modest PHP version and memory limit.
Fully translatable
Every string, with a complete Persian translation shipped.
Any other market
Everything above is a setting. Switch it off and you have a very good invoice plugin.

// security

Security, with a partner watching

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.

  1. A researcher reports it

    Privately, to Patchstack, through the plugin's disclosure page. Never in a public support thread.

  2. Patchstack validates it

    Their team confirms the issue, rates its severity and rules out duplicates.

  3. I fix it

    Patch, test, and ship a new version to WordPress.org under the disclosure deadline.

  4. Sites update

    The fix reaches every store through the normal WordPress update, before anything is public.

  5. It is disclosed properly

    The advisory is published after the fix is out, with the researcher credited.

// developers

Made for developers

The second thing developers asked for, after a template, was a way to change it without touching it.

Repository, wiki and changelog

Hooks

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.

External templates

Register a template from your theme or plugin and it appears in the dropdown next to the built-in ones.

HPOS and legacy

Full support for WooCommerce's new order storage and the legacy one, tested before each WordPress and WooCommerce release lands.

Separated concerns

The PDF engine, the email sender and the admin screens are separate classes that do not share state.

// hindsight

Six years in

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.

PHPWordPressWooCommerceHPOSmPDFWordPress.org SVNPatchstack
branch main 6 active projects ↑ 113 releases products/ultimate-invoice.md Sari --:-- UTC+3:30 its@amirhp.com