Title: Inference Works Order Invoice Attach for WooCommerce
Author: gkaminski
Published: <strong>November 2, 2026</strong>
Last modified: November 2, 2026

---

Search plugins

![](https://ps.w.org/inference-works-order-invoice-attach/assets/banner-772x250.
png?rev=3779562)

![](https://ps.w.org/inference-works-order-invoice-attach/assets/icon-256x256.png?
rev=3779562)

# Inference Works Order Invoice Attach for WooCommerce

 By [gkaminski](https://profiles.wordpress.org/grzegorzk/)

[Download](https://downloads.wordpress.org/plugin/inference-works-order-invoice-attach.1.2.0.zip)

 * [Details](https://wordpress.org/plugins/inference-works-order-invoice-attach/#description)
 * [Reviews](https://wordpress.org/plugins/inference-works-order-invoice-attach/#reviews)
 *  [Installation](https://wordpress.org/plugins/inference-works-order-invoice-attach/#installation)
 * [Development](https://wordpress.org/plugins/inference-works-order-invoice-attach/#developers)

 [Support](https://wordpress.org/support/plugin/inference-works-order-invoice-attach/)

## Description

Inference Works Order Invoice Attach for WooCommerce is for shops that issue invoices
in an external accounting tool and only need WooCommerce to deliver the finished
PDF.

**This plugin does not generate invoices.** It does not talk to any accounting API,
assign numbers, or create credit notes. You upload a PDF on the order screen; the
plugin stores it privately and attaches it to the emails you choose.

#### What it does

 * Upload a PDF invoice on the WooCommerce order edit screen (classic and High-Performance
   Order Storage).
 * Attach that file to selected customer emails (completed, processing, refunded,
   or the manual invoice email).
 * Let the customer download the same file from My Account when a PDF is present.
 * Warn — or optionally block a manual status change — if you try to complete an
   order with no invoice uploaded.
 * Store files under a random name inside uploads and provide a permission-checked
   download endpoint.

#### Storage and security

Files live in `wp-content/uploads/iwoia-invoices/{year}/{month}/` with a 32-character
random filename. The original name is never used on disk. An `index.php` and `.htaccess`(`
Deny from all`) are written in the root folder as extra Apache protection.

**Nginx ignores `.htaccess`.** Configure your server to deny direct public access
to the invoice directories. Without such protection, someone who knows a direct 
PDF URL may bypass the download endpoint. Random names make URLs difficult to guess
but do not replace access control. Direct storage URLs are not exposed by this plugin’s
emails or admin interface.

Existing invoices from versions up to 1.1.0 remain in `oia-invoices` and remain 
readable. New uploads use `iwoia-invoices`. Apply the server access restriction 
to both directories when upgrading.

Download is allowed for shop managers, the logged-in order owner, or anyone with
a valid order key (guest links).

#### Privacy

The plugin registers a personal data exporter (reports that an invoice file exists
on an order) and an eraser (deletes the file). No remote requests, telemetry, or
third-party scripts.

## Screenshots

[⌊Invoice metabox on the order edit screen.⌉⌊Invoice metabox on the order edit screen
.⌉[

Invoice metabox on the order edit screen.

[⌊Inference Works → Order invoices.⌉⌊Inference Works → Order invoices.⌉[

Inference Works  Order invoices.

[⌊Invoice action on My Account → Orders.⌉⌊Invoice action on My Account → Orders.⌉[

Invoice action on My Account  Orders.

## Installation

 1. Install and activate WooCommerce.
 2. Upload the plugin folder to `wp-content/plugins/` or install the zip from Plugins
    Add New.
 3. Activate **Inference Works Order Invoice Attach for WooCommerce**.
 4. Open Inference Works  Order invoices and choose which emails receive the PDF.
 5. On an order, upload the invoice PDF, then change status (or send the customer invoice
    email) as usual.

#### Upgrading from Order Invoice Attach 1.1.0 or earlier

Deactivate the former plugin before activating this version, which uses the new 
slug `inference-works-order-invoice-attach`. Do not delete the old plugin with its
invoice cleanup option enabled. The new version imports existing settings without
overwriting new settings and reads legacy invoice metadata and download links. Existing
PDFs are not moved. Activating both versions leaves the new version inactive internally
until the old plugin is deactivated, preventing duplicate order and email hooks.

The WordPress.org package uses language packs from translate.wordpress.org and does
not include bundled PO/MO translations. Existing source translations are maintained
separately for contributors.

## FAQ

### Does this plugin generate invoices?

No. It never creates a PDF, VAT number, or invoice sequence. Use your accounting
software, then upload the finished file on the WooCommerce order.

### Which emails get the attachment?

By default only **Completed order**. You can also enable Processing, Refunded, and
Customer invoice / order details under Inference Works  Order invoices.

### What happens if I complete an order without uploading a PDF?

The default is a warning: the status still changes, the email goes out without an
attachment, and a shop notice plus order note are recorded. You can switch to “block”
so a manual status change is reverted until a PDF is present. Automatic status changes(
checkout, REST, WP-CLI, cron) always use warning mode so payments are not stuck.

### Where are files stored?

In the WordPress uploads directory, in `iwoia-invoices`, with a random hash as the
filename. They are not in the media library.

### Can customers see a “invoice unavailable” message?

No. If no file is uploaded, My Account simply has no Invoice button.

### Will uninstalling delete invoices?

Only if you enable **Delete files and settings on uninstall** in the settings. That
option is off by default.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Inference Works Order Invoice Attach for WooCommerce” is open source software. 
The following people have contributed to this plugin.

Contributors

 *   [ gkaminski ](https://profiles.wordpress.org/grzegorzk/)

[Translate “Inference Works Order Invoice Attach for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/inference-works-order-invoice-attach)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/inference-works-order-invoice-attach/),
check out the [SVN repository](https://plugins.svn.wordpress.org/inference-works-order-invoice-attach/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/inference-works-order-invoice-attach/)
by [RSS](https://plugins.trac.wordpress.org/log/inference-works-order-invoice-attach/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.2.0

 * Add distinctive Inference Works branding and a matching plugin slug and text 
   domain.
 * Replace short internal prefixes and retain compatibility with existing invoice
   data.
 * Limit admin notices to relevant screens and omit bundled compiled translations
   from the WordPress.org package.
 * Tighten invoice path validation and avoid following directory symlinks during
   opt-in uninstall cleanup.

#### 1.1.0

 * Move settings to Inference Works  Order invoices, with redirects from the old
   WooCommerce settings tab.
 * Add the shared Inference Works overview, module registry, matrix icon, and Settings
   action link.
 * Keep existing invoice settings, order uploads, HPOS support, and file storage.

#### 1.0.3

 * Explicitly validate each upload metadata field so Plugin Check can recognize 
   the existing input validation.

#### 1.0.2

 * Use the WordPress upload API while keeping randomized invoice filenames and the
   dedicated storage directory.
 * Verify AJAX nonces in the upload and delete handlers and sanitize upload metadata.
 * Use automatic loading of WordPress.org translations.
 * Exclude development and hidden files from the distribution package.
 * Update tested WordPress version to 7.1 after manual functional verification.

#### 1.0.1

 * Fix fatal error on every page: settings class no longer extends WC_Settings_Page
   before WooCommerce has loaded it.

#### 1.0.0

 * Initial release: PDF upload on orders, email attachments, My Account download,
   privacy tools.

## Meta

 *  Version **1.2.0**
 *  Last updated **13 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [email](https://wordpress.org/plugins/tags/email/)[invoice](https://wordpress.org/plugins/tags/invoice/)
   [order](https://wordpress.org/plugins/tags/order/)[pdf](https://wordpress.org/plugins/tags/pdf/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/inference-works-order-invoice-attach/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/inference-works-order-invoice-attach/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/inference-works-order-invoice-attach/reviews/)

## Contributors

 *   [ gkaminski ](https://profiles.wordpress.org/grzegorzk/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/inference-works-order-invoice-attach/)