Title: Emboss &#8211; PDF Invoices, Credit Notes &amp; Packing Slips for WooCommerce
Author: Themology
Published: <strong>May 14, 2026</strong>
Last modified: November 7, 2026

---

Search plugins

![](https://ps.w.org/emboss-pdf-invoices-for-woocommerce/assets/banner-772x250.gif?
rev=3789155)

![](https://ps.w.org/emboss-pdf-invoices-for-woocommerce/assets/icon-256x256.gif?
rev=3789155)

# Emboss – PDF Invoices, Credit Notes & Packing Slips for WooCommerce

 By [Themology](https://profiles.wordpress.org/themology/)

[Download](https://downloads.wordpress.org/plugin/emboss-pdf-invoices-for-woocommerce.1.1.0.zip)

 * [Details](https://wordpress.org/plugins/emboss-pdf-invoices-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/emboss-pdf-invoices-for-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/emboss-pdf-invoices-for-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/emboss-pdf-invoices-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/emboss-pdf-invoices-for-woocommerce/)

## Description

Emboss creates the PDF documents a WooCommerce store needs for every order: invoices,
receipts with a PAID badge, proforma invoices for unpaid orders, a credit note for
every refund, and packing slips or delivery notes for fulfillment. Documents attach
to WooCommerce emails, and customers download them from My Account.

Everything is in the free plugin. There is no premium tier, no upsell, and no tracking.
The settings live under WooCommerce > Settings > Invoices and use the same controls
as the rest of WooCommerce.

#### Documents

 * Invoice for orders awaiting payment, and a receipt with a PAID badge, payment
   date and method once the order is paid.
 * Proforma invoice for unpaid orders. It uses its own number (`PRO-` plus the order
   number), so it never takes an invoice number. Bank transfer and cheque orders
   get a proforma with your bank details or cheque instructions until you mark them
   as paid.
 * Credit note for every refund, each with its own number, date, amount, refunded
   items and reason. The credit note shows which invoice it credits.
 * Packing slip with line items, SKUs and weight, and no prices. Rename it to “Delivery
   note” under Branding if that is what your store calls it.

#### E-invoicing (UBL)

Turn on e-invoices under Invoices > E-invoicing and every invoice gets a UBL XML
file next to its PDF. Choose Peppol BIS Billing 3.0 or XRechnung 3.0. Refunds get
a credit note XML that points back to the invoice.

 * By default only business orders get an e-invoice: orders with a buyer VAT number
   or Peppol ID. You can create one for every order instead.
 * Optional VAT number, Peppol ID and Leitweg-ID fields at checkout, for both the
   Checkout block and the classic checkout.
 * VAT numbers saved by common EU VAT plugins are read too.
 * A tax mapping table matches each WooCommerce tax rate to a VAT category. Untaxed
   sales to EU businesses default to reverse charge.
 * The XML attaches to the same emails as the PDF and is in the bulk ZIP download.

Sample files pass the KoSIT validator against the XRechnung 3.0.2 and Peppol BIS
3.0.21 rules. Nothing is sent to any network: the XML is built on your server, and
you send or upload it yourself.

#### Right-to-left and CJK languages

Arabic, Hebrew and Persian text prints with joined letters in the right reading 
order, and right-to-left documents get a mirrored layout in every template. A Text
direction setting picks the direction from the site or order language, or you can
set it yourself.

For Chinese, Japanese and Korean, click “Download CJK fonts” under Invoices > Advanced,
or upload your own TrueType font. Nothing is downloaded until you click the button.

#### Printing and bulk tools

 * Print invoices or packing slips for up to 100 selected orders as one PDF, each
   order on its own page.
 * Download PDFs for many orders as one ZIP file.
 * Export your invoice and credit note list as CSV.
 * Create PDFs for orders placed before Emboss was installed. They run in the background
   with Action Scheduler.

#### Where documents appear

 * Attached to the customer Processing, On hold, Completed, Refunded and Invoice
   emails, and to the New Order email sent to the store. You choose which emails
   carry them.
 * On the My Account orders list and order page, and on the order received page,
   including for guest customers.
 * On the WooCommerce orders list and the order screen, with download, regenerate
   and email buttons.
 * Through the REST API, for apps and integrations.

#### Built for WooCommerce

 * Sequential invoice numbers with database locking, so two orders placed at the
   same moment never share a number. Issued numbers and dates never change on regenerate.
 * Prefix, suffix, padding, starting number and date placeholders, with a live preview
   of the next number.
 * Four templates: Modern, Classic, Minimal and an 80 mm Thermal layout for receipt
   printers. A4 or Letter paper.
 * Invoices in the order’s language with WPML or Polylang.
 * Subscriptions renewals get their own invoice, and keep the buyer’s VAT number
   and Peppol ID.
 * HPOS and Cart and Checkout blocks compatible. Orders are read and written only
   through WooCommerce CRUD.
 * Theme template overrides that survive plugin updates.

#### Documentation and support

 * [Emboss product page](https://themology.com/products/easy-pdf-invoices-for-woocommerce)
 * [Emboss documentation](https://themology.com/docs/easy-pdf-invoices-for-woocommerce):
   setup, every setting, e-invoicing, RTL and CJK, template overrides, hooks and
   the REST API.
 * Questions and bug reports go to the [support forum](https://wordpress.org/support/plugin/emboss-pdf-invoices-for-woocommerce/)
   on WordPress.org.

#### Privacy

Emboss does not collect telemetry and does not load assets from a CDN. The two optional
features below are the only times it contacts another server, and both are off until
you turn them on.

#### External services

**QR codes on packing slips** (Invoices > Branding > QR code on packing slips, off
by default). When it is on, the plugin asks the [QR Server API](https://goqr.me/api/)
at `https://api.qrserver.com/v1/create-qr-code/` for a QR code image and embeds 
it in the packing slip. The data sent is the order edit URL. Each QR code is cached
on your site for 12 hours, so printing the same order again does not call the API.
If the API can’t be reached, the packing slip still prints, without the QR code.

 * Provider: Foundata GmbH (Germany)
 * Terms of service: [goqr.me/de/rechtliches](https://goqr.me/de/rechtliches/)
 * Privacy policy: [goqr.me/de/rechtliches/datenschutz-qrserver.html](https://goqr.me/de/rechtliches/datenschutz-qrserver.html)

**CJK font download** (Invoices > Advanced > Download CJK fonts, runs only when 
an admin clicks the button). The plugin downloads three font files from the Google
Fonts repository on GitHub (`raw.githubusercontent.com`), pinned to one commit. 
No store or customer data is sent. Each file’s size and SHA-256 hash are checked
before it is saved in the plugin’s private storage folder.

 * Chocolate Classical Sans (Chinese and Japanese) and Nanum Gothic Regular and 
   Bold (Korean), all under the [SIL Open Font License 1.1](https://openfontlicense.org)
 * Provider: GitHub, Inc.
 * Terms of service: [GitHub Terms of Service](https://docs.github.com/en/site-policy/github-terms/github-terms-of-service)
 * Privacy policy: [GitHub General Privacy Statement](https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement)

If you would rather not use the download, upload your own .ttf font on the same 
screen. Uploading contacts no server.

## Screenshots

[⌊The Invoices settings tab inside WooCommerce > Settings.⌉⌊The Invoices settings
tab inside WooCommerce > Settings.⌉[

The Invoices settings tab inside WooCommerce > Settings.

[⌊A generated invoice with the store logo and accent color.⌉⌊A generated invoice
with the store logo and accent color.⌉[

A generated invoice with the store logo and accent color.

[⌊A receipt showing the PAID badge with payment date and method.⌉⌊A receipt showing
the PAID badge with payment date and method.⌉[

A receipt showing the PAID badge with payment date and method.

[⌊The download button on the My Account orders screen.⌉⌊The download button on the
My Account orders screen.⌉[

The download button on the My Account orders screen.

[⌊The Emails section: choose which order emails carry the PDF.⌉⌊The Emails section:
choose which order emails carry the PDF.⌉[

The Emails section: choose which order emails carry the PDF.

[⌊The Tools tab with the CSV export and the tool that creates PDFs for past orders.⌉⌊
The Tools tab with the CSV export and the tool that creates PDFs for past orders
.⌉[

The Tools tab with the CSV export and the tool that creates PDFs for past orders.

[⌊The Emboss box on the order edit screen with download, regenerate and email buttons.⌉⌊
The Emboss box on the order edit screen with download, regenerate and email buttons
.⌉[

The Emboss box on the order edit screen with download, regenerate and email buttons.

[⌊A generated invoice with terms and conditions and the registered office block.⌉⌊
A generated invoice with terms and conditions and the registered office block.⌉[

A generated invoice with terms and conditions and the registered office block.

[⌊My Account orders list with a download button on every eligible order.⌉⌊My Account
orders list with a download button on every eligible order.⌉[

My Account orders list with a download button on every eligible order.

[⌊The order details page in My Account with the download button.⌉⌊The order details
page in My Account with the download button.⌉[

The order details page in My Account with the download button.

## Installation

 1. Install Emboss from Plugins > Add New, or upload the `emboss-pdf-invoices-for-woocommerce`
    folder to `/wp-content/plugins/`.
 2. Activate the plugin from the Plugins screen.
 3. Go to WooCommerce > Settings > Invoices and add your logo, company details and 
    tax number.
 4. Place a test order and check that the PDF is attached to the email.

## FAQ

### Does Emboss create credit notes for partial refunds?

Yes. Every refund, full or partial, gets its own credit note with its own number.
A credit note made by an earlier version keeps its number and total and still covers
the refunds it covered. The refund email attaches the credit note, and My Account
lists every credit note on the order.

### Can I send a proforma invoice before the customer pays?

Yes. Unpaid orders get a proforma invoice with the amount due and your payment instructions.
It says “This is not a tax invoice.” and uses the `PRO-` prefix, so your invoice
numbers stay sequential. The real invoice is created when the order is paid. You
can turn proformas off under Invoices > General.

### Does it generate packing slips or delivery notes?

Yes. Packing slips print from the order screen, the orders list, as one PDF for 
many orders, or as a ZIP. Set “Packing slip name” under Branding to “Delivery note”
and the PDF, file name and buttons use that name.

### Which e-invoice formats are supported?

Peppol BIS Billing 3.0 and XRechnung 3.0, both in UBL 2.1. XRechnung needs a seller
contact phone number and email under Invoices > E-invoicing. If one is missing, 
the XML is not created and the E-invoicing screen tells you which field to fill 
in.

### Does Emboss send e-invoices over the Peppol network?

No. Emboss creates the XML file. Upload it to your Peppol access point or your customer’s
portal, or send it by email. An e-invoice for an order without a buyer Peppol ID
is for your records.

### Does it support Arabic, Hebrew and other right-to-left languages?

Yes. Arabic, Hebrew and Persian print fully, with a mirrored layout. Urdu prints
in the Naskh style, but two letters (heh goal and yeh barree) show as boxes with
the bundled font, and the Nastaliq style is not available.

### Does it support Chinese, Japanese and Korean?

Yes, once CJK fonts are added under Invoices > Advanced. Download them with one 
click (about 16 MB) or upload your own .ttf font. OpenType CFF (.otf) fonts are 
not supported.

### Does this plugin work with HPOS and the Checkout block?

Yes. Emboss declares compatibility with WooCommerce’s custom order tables and with
the Cart and Checkout blocks.

### Can I customize the document templates?

Yes. Copy the templates from `emboss-pdf-invoices-for-woocommerce/templates/` into`
your-theme/emboss-pdf-invoices/` and edit them. Your copies survive plugin updates.
The [templates guide](https://themology.com/docs/easy-pdf-invoices-for-woocommerce/templates)
explains the override folder and the four template styles.

### Can I set the invoice number format?

Yes. Invoices > Numbering has a prefix, suffix, zero padding, starting number and
date placeholders, with a live preview of the next number.

### How do I attach a PDF invoice to WooCommerce emails?

Go to WooCommerce > Settings > Invoices > Emails and pick which order emails carry
the PDF. You can also send a download link instead of an attachment.

### Will my invoice numbers reset if I deactivate the plugin?

No. Numbers, PDFs and order data are kept by default. You can change this under 
Invoices > Advanced.

### What does “Delete everything” remove when I delete the plugin?

It removes the settings, counters, the plugin’s storage folder with every PDF and
XML, and downloaded CJK fonts. Buyer VAT numbers, Peppol IDs and Leitweg-IDs stay
on the orders, because they are part of your tax records.

### Why does Emboss need PHP 8.3?

The text shaping library used for Arabic and Hebrew needs a current PHP version,
and PHP 8.3 is what WooCommerce recommends. On older PHP versions, Emboss shows 
a notice and does not load, so your store keeps running.

### Does it work on nginx?

Yes. The storage folder ships with an `.htaccess` file for Apache, which nginx ignores.
Add this rule to your server block so PDFs can only be opened through the plugin’s
own permission checks:

    ```
    location ~* /wp-content/uploads/emboss-pdf-invoices/ { deny all; }
    ```

Replace `emboss-pdf-invoices` with your Storage directory setting if you changed
it.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Emboss – PDF Invoices, Credit Notes & Packing Slips for WooCommerce” is open source
software. The following people have contributed to this plugin.

Contributors

 *   [ Themology ](https://profiles.wordpress.org/themology/)

[Translate “Emboss – PDF Invoices, Credit Notes & Packing Slips for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/emboss-pdf-invoices-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/emboss-pdf-invoices-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/emboss-pdf-invoices-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/emboss-pdf-invoices-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/emboss-pdf-invoices-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.0

 * Security: Updated the bundled PDF library (dompdf) to 3.1.6, which fixes six 
   reported issues.
 * Security: The CSV export adds a leading quote to text cells that start with a
   spreadsheet formula character.
 * New: One credit note per refund, with its own number, the refund’s date and amount,
   and the refunded items or the refund reason. The refund email attaches the credit
   note for that refund.
 * New: Proforma invoices for unpaid orders, with their own `PRO-` number, the amount
   due, and your bank or cheque details.
 * New: Bank transfer and cheque orders get a proforma until you mark them as paid.
   A “Bank transfer and cheque orders” setting switches back to “Invoice right away”.
 * New: E-invoices in UBL XML, in Peppol BIS Billing 3.0 or XRechnung 3.0 format,
   with buyer VAT number, Peppol ID and Leitweg-ID fields at checkout and a tax 
   mapping table.
 * New: Arabic, Hebrew and Persian documents with joined letters, right-to-left 
   order and a mirrored layout in all four templates, and a Text direction setting.
 * New: Chinese, Japanese and Korean documents. Download CJK fonts with one click
   or upload your own .ttf font.
 * New: “Print invoices (one PDF)” and “Print packing slips (one PDF)” bulk actions
   for up to 100 orders.
 * New: A “Packing slip name” setting, so packing slips can be called “Delivery 
   note”.
 * New: CSV export and the past orders tool moved to their own Invoices > Tools 
   tab.
 * New: My Account, the order received page and the order screen list every credit
   note, plus the proforma and XML downloads.
 * New: The REST API `documents` map has `credit_notes`, `proforma` and `ubl` entries.
 * New: After 10 documents, a dismissible notice asks for a review on WordPress.
   org.
 * Fix: Pending and other unpaid orders stay without an invoice number when you 
   use “Download PDFs (ZIP)”, regenerate, the past orders tool, or the REST API.
 * Fix: “Email customer” on an unpaid order leaves the order without an invoice 
   number.
 * Fix: “Set next invoice number” refuses a number that was already issued and tells
   you the lowest number you can use.
 * Fix: “Set next invoice number” also counts trashed orders, so a restored order
   never shares a number.
 * Fix: Deleting a refund removes its credit note PDF. Its number is never reused.
 * Fix: Viewing an order in My Account, on the order screen or through the REST 
   API leaves its documents unchanged.
 * Fix: The storage directory setting only accepts a folder the plugin owns, and“
   Delete everything” only removes that folder.
 * Fix: PDF folder protection works on Apache 2.4 servers without the old access
   module.
 * Fix: The download limit skips shop managers.
 * Fix: The bulk “Regenerate PDFs” notice says why each order was skipped.
 * Fix: Subscriptions renewals work with other plugins that change the renewal order.
 * Fix: Queuing PDFs for past orders shows how many orders were queued.
 * Tweak: A credit note made by 1.0.x keeps its number, date and total, and still
   covers the refunds it covered. Refunds made after the update get their own credit
   notes.
 * Tweak: The QR code and font download requests send a plain plugin name instead
   of your site address.
 * Tweak: Problems creating the storage folder are written to the WooCommerce log.
 * Tweak: Emboss needs PHP 8.3 or later.
 * Tweak: Tested up to WooCommerce 11.2.
 * Dev: New filters `epdi_proforma_available`, `epdi_proforma_notice`, `epdi_proforma_due_date`,`
   epdi_proforma_payment_instructions`, `epdi_proforma_gateways`, `epdi_bulk_print_limit`,`
   epdi_einvoice_applies`, `epdi_einvoice_tax_category`, `epdi_einvoice_vat_meta_keys`,`
   epdi_document_direction` and `epdi_pdf_shaped_html`.
 * Dev: New actions `epdi_document_generated` and `epdi_einvoice_generated`.

#### 1.0.2

 * Fix: the order edit screen’s Update button and order actions stopped working 
   when the Emboss metabox was present.
 * Fix: the Numbering “next number” tool and the Advanced tab CSV export did nothing;
   both work again.
 * Fix: invoice numbers were issued to failed block checkout attempts. Documents
   are now generated on processing, completed, and on-hold orders (configurable 
   under General), never on pending.
 * Fix: cash on delivery, cheque, and bank transfer orders showed a PAID receipt
   while processing. They get an invoice until the order is completed.
 * Fix: partial refunds now produce a credit note, and the partially refunded email
   attaches it.
 * Fix: the on-hold email and Subscriptions renewal emails now attach the PDF.
 * Fix: “Email customer” and “Email invoices to customers” always attach the PDF.
 * Fix: regenerating an invoice kept the same number but could change its format
   and date. Issued numbers and dates are now fixed.
 * Fix: CSV export and backfill ignored the To date when a From date was set.
 * Fix: the plain-text email download link broke for guest customers.
 * Fix: uninstall with “Delete everything” left the counters and the storage folder
   behind.
 * Fix: the REST PDF endpoint returned a corrupted file.
 * Fix: the order number, date, and payment method block was missing on documents
   with a separate shipping address.
 * New: packing slips from the order screen, the orders list, and a bulk ZIP download.
 * New: each order keeps its invoice or receipt, credit note, and packing slip as
   separate files, so a refund keeps the paid invoice visible.
 * New: My Account and the thank you page offer the credit note next to the invoice.
 * New: the Date format setting is applied to documents.
 * New: the orders list, the CSV export, and the REST metadata show the credit note
   number, and the REST metadata lists every document of an order.
 * New: the bank transfer and cheque “on-hold” email has its own attachment setting.
 * Changed: the “Auto-clean old PDFs” setting was removed; invoices are never deleted
   automatically.
 * Changed: the Language setting is now applied; documents follow the order language
   only when “Use the order language” is selected.
 * Changed: the epdi_attach_to_email filter now receives the per-email setting as
   its default instead of always true.

#### 1.0.0

 * Initial release.
 * WooCommerce settings tab with General, Branding, Legal, Numbering, Emails, and
   Advanced sections.
 * HPOS and Cart/Checkout block compatibility declared.
 * Plugin row Settings link and Support link.
 * Secure storage directory created on activation.

## Meta

 *  Version **1.1.0**
 *  Last updated **12 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 8.3 or higher **
 * Tags
 * [credit note](https://wordpress.org/plugins/tags/credit-note/)[e-invoice](https://wordpress.org/plugins/tags/e-invoice/)
   [packing slips](https://wordpress.org/plugins/tags/packing-slips/)[pdf invoice](https://wordpress.org/plugins/tags/pdf-invoice/)
   [woocommerce invoice](https://wordpress.org/plugins/tags/woocommerce-invoice/)
 *  [Advanced View](https://wordpress.org/plugins/emboss-pdf-invoices-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/emboss-pdf-invoices-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/emboss-pdf-invoices-for-woocommerce/reviews/)

## Contributors

 *   [ Themology ](https://profiles.wordpress.org/themology/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/emboss-pdf-invoices-for-woocommerce/)