Directory / plugin

Paperwork – Invoices & Documents for WooCommerce

v1.0.0 · by Mykola Lukin

Invoices, credit notes, packing slips and more for WooCommerce: numbering without gaps, an archive that never changes, and a visual template designer.

About this plugin

Paperwork issues the documents a WooCommerce shop is required to keep, and keeps them the way an
auditor expects to find them: numbered without gaps, stored as issued, and explainable months later.

A default install does one thing — an invoice on a paid order — and stays out of the way. Five
further document types are there when a shop needs them and switched off until then, and ten more
come with the premium version.

What it does

  • Invoices, packing slips and credit notes, attached to the emails you choose, downloadable from
    My Account, and available in bulk from the orders list.
  • Numbering that does not skip. Numbers are allocated atomically, so two orders completing at the
    same moment cannot take the same one. When a number is never used, the Status page counts it and
    wp paperwork gaps says which, and why, from the audit trail.
  • An archive, not a renderer. A document is rendered once, at the moment it is issued, and every
    later download serves that same file. An invoice a customer received in March still says in
    December what it said in March, whatever has changed in your settings since.
  • A visual template designer. Drag the blocks your documents are made of, per document type, with
    your own logo, colours and wording. Templates are data, so they survive updates.
  • Sixteen document types in all. Six in the free plugin — invoice, credit note, proforma,
    receipt, packing slip and delivery note — and ten in the premium version: quotes, order
    confirmations, deposit and balance invoices, statements, gift receipts, return forms, pick lists,
    shipping and address labels.
  • Written for real shops. HPOS-compatible, multilingual-aware, RTL-aware, and every template is
    overridable from your theme.

E-invoicing (premium)

For shops that have to file electronically, the premium version serialises one EN 16931 semantic model into
UBL 2.1, Peppol BIS 3.0, CII D16B, Factur-X and ZUGFeRD, and XRechnung. Each document is validated
against a shipped XSD before it is allowed out, and the report says which business rules were
checked rather than implying an official rule set was run.

E-invoicing is off by default and stays off until you review your VAT categories, because a
wrong VAT category is a filing error rather than a rendering glitch. An unmapped tax rate produces no
document and names the rate instead of guessing.

Free and premium

Everything above is free except where the premium version is named. Premium adds the fulfilment,
sales, automation and compliance capabilities: shipping labels, pick lists, per-shipment documents,
returns, quotes, statements, deposit and balance invoices, the export centre, cloud backups,
automatic printing, the REST API, the payment helpers, VAT validation, e-invoicing and Peppol
delivery.

The plugin in the WordPress.org directory is the free version and contains none of the premium
code. The premium version is a separate download from https://paperwork.u2code.com/, and a shop
that stops paying for it keeps every document it has ever issued: losing access stops new documents
being made, it never removes old ones.

External services

Paperwork does not need an account or an API key for anything it does. Two connections can exist,
both of them yours to make:

  • Freemius. The plugin includes the Freemius SDK, which offers the premium version and, only if
    you opt in when asked after activation, sends anonymous usage data (site address, WordPress and
    plugin versions, the admin e-mail address) to Freemius. Nothing is sent before you opt in, and
    declining changes nothing about how the plugin works. Terms: https://freemius.com/terms/ —
    privacy policy: https://freemius.com/privacy/
  • A Chromium conversion service. Optional, off by default. If you switch the Chromium renderer
    on and enter the address of a Gotenberg-compatible service you run, the HTML of each document
    rendered that way is sent to that address and the PDF comes back. The plugin ships with no such
    service and names none.

Source code

The template designer is a React application. It ships compiled, in assets/designer/, and as
source, in js-source/. To rebuild it from source:

cd js-source && npm install && npm run build

Everything else is plain PHP, CSS and JavaScript, shipped as written. The PHP libraries in
vendor-prefixed/ are unmodified copies of their upstream releases, namespaced to avoid clashes.

Built to be checked

This plugin is developed against acceptance scripts that run on a real shop rather than only against
unit tests: a thousand numbers pulled by twenty parallel workers, five hundred orders exported at
once, and every admin screen opened over real HTTP. Where something cannot be verified — a service
with no account, a format whose official validator will not run on PHP — the plugin says so in its
own diagnostics rather than claiming otherwise.

Plugin tags