Title: SoftGlaze PDF Invoices for WooCommerce
Author: Azhar Ali
Published: <strong>July 26, 2026</strong>
Last modified: July 29, 2026

---

Search plugins

![](https://ps.w.org/softglaze-pdf-invoices/assets/banner-772x250.png?rev=3623845)

![](https://ps.w.org/softglaze-pdf-invoices/assets/icon-256x256.png?rev=3623845)

# SoftGlaze PDF Invoices for WooCommerce

 By [Azhar Ali](https://profiles.wordpress.org/softglaze/)

[Download](https://downloads.wordpress.org/plugin/softglaze-pdf-invoices.2.28.3.zip)

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

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

## Description

SoftGlaze PDF Invoices turns WooCommerce orders — and invoices you create by hand—
into clean, professional PDF documents. Everything renders **100% locally**: the
bundled dompdf engine runs on your own server, every logo, icon and font is embedded
from local files, and a document render **never makes an outbound HTTP request**.
The default install talks to **zero** external services; the only features that 
can ever reach the network are opt-in and off by default (the EU VIES VAT lookup,
cloud backup, and WhatsApp Cloud API sending — each to an official service or your
own account).

It scales with you: from “I just need an invoice attached to my order emails” all
the way to a full **self-service invoice-builder website** your visitors sign up
and use — all from one plugin, driven by a modern React admin.

**Full documentation, setup guides and screenshots:** https://softglaze.com/docs/
pdf-invoices-plugin-for-woocommerce-and-manual

**Four document types, one design system**

 * **Invoices, packing slips, proforma invoices and credit notes** — one template
   engine, four faces. Each document type uses a stock design or a custom template
   you build, at the paper size you choose (A4 / Letter).
 * **Credit notes on refund** — refund an order and a credit note is offered automatically,
   referencing the original invoice.
 * **Receipts** — an optional “Receipt vs Invoice” choice at checkout, with its 
   own template and (optionally) its own number sequence.
 * **Delivery notes** — print carrier, tracking number, shipping and expected-delivery
   dates on the invoice and/or packing slip (opt-in, per type).

**Numbering that fits your books**

 * Sequential auto-numbering with **prefix/suffix**, `{YYYY}` / `{MM}` placeholders,
   zero-padding and **yearly reset** — or simply reuse the WooCommerce order number
   or the raw order ID.
 * Separate, race-safe sequences for credit notes and proforma invoices, each with
   its own start / prefix / suffix / padding.
 * Migrating from another plugin? Detect existing YITH / WebToffee numbers and continue
   your sequence from the highest, so numbering stays unbroken.

**Automation**

 * **Auto-generate** documents on the order statuses you choose.
 * A configurable **document × WooCommerce-email matrix** — attach the right document
   to the right transactional email (e.g. the invoice on “Completed”, the packing
   slip on “Processing”).
 * **Fulfillment stages** — a safe parallel flow (_In packaging  Dispatched  In 
   transit  Delivered_) that never touches WooCommerce’s own order statuses, with
   live dashboard counters, optional per-stage customer emails, and the current 
   stage printed on packing slips.
 * **Payment reminders** — automatically email customers past their due date at 
   the day-offsets you set; reminders stop the moment an order is paid.
 * **Accountant export** — on a chosen day each month, email your accountant a ZIP
   of last month’s invoice PDFs plus a CSV index. A global kill-switch pauses every
   automated email at once.

**A real admin, not just a settings page**

 * A **Profit & Loss dashboard** — Revenue, Item costs, **Gross profit**, **Margin%**,
   Tax collected, Refunds and Unpaid outstanding, with a month / quarter / year /
   custom switcher, inline charts, a monthly breakdown and top products, all exportable
   to CSV. (Honestly labelled “gross profit = revenue − item costs” — sales-and-
   margin at a glance, not double-entry accounting.)
 * A searchable, filterable **Documents manager** with bulk actions — generate, 
   email, or download a ZIP — across both WooCommerce and manual documents, with
   source / type / status / stage / date filters.
 * A **Products** table mirroring your WooCommerce catalogue (thumbnail, SKU, price,
   cost, stock) with a **Cost price** field that feeds the margin maths, plus branded**
   product-catalog PDFs**.
 * On the **WooCommerce order screen**: generate / view / email documents, set the
   fulfillment stage, and record carrier & tracking — on both the classic and **
   HPOS** order screens. There’s also an **Invoice column** and bulk actions on 
   the orders list, and a “Download invoice” button in **My Account**.
 * A built-in **System Check** page (and WordPress **Site Health** tests) that verifies
   PHP, extensions, storage and the engine, and renders a **live sample PDF** so
   you can confirm it works before you rely on it.
 * A guided **first-run setup wizard** for company details, currency and numbering(
   with a live invoice-number preview).

**Design your documents visually**

 * A drag-and-drop **template builder**: reorder sections (header, bill-to, meta,
   items, totals, payment, terms, signature, plus text / divider / spacer and a 
   sanitised custom-HTML block), toggle what each shows, and choose which item columns
   print.
 * **Design tokens** — colours, a bundled dompdf-safe font, base size, heading case,
   corner radius, header / totals style, logo position and your uploaded logo.
 * A **side-by-side live preview** renders through the real engine as you edit, 
   plus an “Exact PDF” button — what you preview is exactly what generates. Start
   from any of **10 stock designs**, and export / import templates as JSON between
   sites.
 * **Two layout modes — Flow and Canvas.** Flow stacks sections down the page; **
   Canvas** places blocks freely — drag to move, resize with corner/edge handles,
   nudge with the arrow keys, and layer them front-to-back. Blocks are positioned
   as a percentage of the page, the same coordinates the PDF uses, so the layout
   you build is the layout that prints. Existing templates stay in Flow mode.

**Works with or without WooCommerce**

 * **Manual invoices** — a full “New invoice” screen: saved clients (de-duplicated
   by email), unlimited line items (quantity, unit price, cost, tax rate), currency,
   date, template and status. A race-safe number is assigned, the PDF is stored,
   and a share link is ready — even with WooCommerce switched off.
 * **A public invoice-builder website** — four shortcodes (`[sgci_invoice_builder]`,`[
   sgci_my_invoices]`, `[sgci_dashboard]`, `[sgci_login]` / `[sgci_register]`) let
   visitors sign up, build their own invoices with a live preview, and manage them—
   a complete self-service invoice site. Every document is private to its owner;
   one user can never see another’s. When WooCommerce is active, the same view merges
   into a **My Account  Invoices** tab.

**Share & send**

 * **Public share links** — a tokenised, no-login viewer page with single-PDF download,
   per-document expiry (7 / 30 / 90 days or never), regenerate and revoke, and an
   optional QR code printed on the PDF.
 * Send any document by email from the order screen or the Documents manager, with
   an editable recipient / subject / message, dynamic `{tags}` filled in on send,
   and a logged send history.

**Payments, deposits & client acceptance**

 * **Partial payments and deposits** — record payments against any document (date,
   amount, method, note). Once a payment exists, the PDF prints an **Amount paid**
   and **Balance due** pair beneath the total (on all 10 stock designs and your 
   custom templates), the dashboard’s “Unpaid outstanding” counts the remaining 
   balance, and two tags — `{amount_paid}` and `{balance_due}` — are available in
   the builder. On WooCommerce orders the balance respects the order status (only
   Pending / On-hold show a balance).
 * **Online client acceptance** — turn on an “Accept” button on the public share
   link, per document type (typically a proforma or quote; off by default). The 
   client types their name, ticks an agreement box and accepts; their name, the 
   date/time and IP are recorded, an “Accepted online by …” stamp is added to the
   PDF, and the order screen logs who accepted. It is a clear, honest online acceptance—
   not a legally binding electronic signature.

**WhatsApp delivery**

 * **Click-to-chat (free, zero setup)** — every generated document gets a **WhatsApp**
   button on the order screen and the Documents manager. It opens WhatsApp (app 
   or web) with the customer’s number and a message containing the document’s secure
   share link; your own WhatsApp sends it. There are no API keys, and the plugin
   makes no request of its own.
 * **Cloud API server-send (optional)** — connect your OWN Meta WhatsApp Business
   Cloud API and a “Send on WhatsApp now” action delivers the share link to the 
   customer directly from your server. Inside WhatsApp’s 24-hour customer-service
   window it sends your session message; outside it, it falls back to your pre-approved
   template. It is off by default, your access token is stored encrypted, and nothing
   is ever sent automatically.

**Compliance & exports**

 * **VAT / fiscal-code at checkout** (classic and block checkout) — each field independently
   optional or required, scoped to all countries / EU only / a country list, with
   per-country VAT format checks, the Italian Partita IVA & Codice Fiscale checksums,
   and an optional EU **VIES** online lookup (off by default).
 * **Italian e-invoicing (FatturaPA)** — generate the official FatturaPA 1.2 (FPR12)
   XML for invoices and credit notes, per-document or as a bulk ZIP, **validated
   locally against the Agenzia delle Entrate schema** before download. Honest scope:
   it produces the XML file — it does **not** transmit to the SDI, and it refuses
   to guess when data can’t be mapped cleanly.
 * **Accounting exports** — the Documents list exports to **CSV or XML** (respecting
   your active filters), and each document to a **UBL-lite XML**. Product lists 
   export to CSV / XML too.
 * **Compliance field packs** — show your seller **VAT**, **GST/HST** and a generic**
   Tax ID** in the company block (per document type, off by default), and print 
   an editable **EU reverse-charge note** (defaults to the Art. 196 wording). In
   automatic mode the note appears only where reverse charge actually applies — 
   intra-EU B2B with your EU VAT number and a VAT-registered customer in another
   EU country — or you can set it to always print. The note is informational; it
   never changes your tax totals.

**Multi-language & right-to-left documents**

 * Print the customer-facing document in a chosen language — a store default under**
   Settings  Documents  Language & direction**, or per document (on the invoice 
   editor and the WooCommerce order screen). The built-in labels (Invoice, Bill 
   To, Subtotal, Tax, Total, and the rest) translate automatically.
 * **French, German, Spanish, Dutch, Italian, Portuguese and Hebrew** are built 
   in; Hebrew (and other right-to-left languages) render the whole document right-
   to-left using the bundled font, with no extra setup. With no language chosen,
   documents render exactly as before, and your admin screens stay in English. (
   Arabic is not offered yet — the bundled PDF engine cannot join Arabic letters
   correctly.)

**Cloud backup (optional, off by default)**

 * Copy every generated document to your **own** Dropbox or Google Drive, mirroring
   the local folder layout (`/SoftGlaze Invoices/{Year}/{Month}/`).
 * You use **your own app credentials** via a standard OAuth flow — there is no 
   SoftGlaze server in the middle. Refresh tokens are stored **encrypted at rest**
   on your server.
 * Background uploads with automatic retry, a “Backup everything now” backfill, 
   and a disconnect that revokes and deletes the stored tokens. Nothing is uploaded—
   and no backup task is even scheduled — until you connect an account.

**Privacy, security & compatibility**

 * **Zero external requests by default.** The PDF engine always renders locally;
   the only opt-in network features are the EU VIES check, cloud backup and WhatsApp
   Cloud API sending, each disclosed here and in a settings notice.
 * **HPOS** (High-Performance Order Storage) compatible; all order data is read 
   through WooCommerce CRUD.
 * Generated files live in a **protected uploads directory** (deny-all + index guard)
   and are served only through **capability- and ownership-checked** endpoints —
   a direct link to someone else’s document returns “not found”.
 * Every feature added since your current version is **off by default and update-
   safe**: an existing store’s checkout, documents, emails and numbering are unchanged
   until you opt in.
 * **Developer-friendly** — human-readable React source ships in `src/`; the filters`
   sgci_document_template_json` and `sgci_document_html` let you reshape output 
   in code; and a shared dynamic-tag engine powers `{invoice_number}`, `{order_number}`,`{
   total}`, `{share_url}`, `{carrier}`, `{tracking_code}`, `{order_meta:key}`, `{
   user_meta:key}` and more.

**Bundled libraries** (all GPL-compatible, in `vendor/`): dompdf (LGPL-2.1) with
php-font-lib and php-svg-lib, with docs and tests removed.

## Screenshots

[⌊The dashboard — revenue, gross profit, margin and unpaid-outstanding at a glance,
with a month/quarter/year switcher, inline charts and top products.⌉⌊The dashboard—
revenue, gross profit, margin and unpaid-outstanding at a glance, with a month/quarter/
year switcher, inline charts and top products.⌉[

The dashboard — revenue, gross profit, margin and unpaid-outstanding at a glance,
with a month/quarter/year switcher, inline charts and top products.

[⌊The Documents manager — search, filter and bulk-generate, email or download every
invoice, packing slip, proforma and credit note from one screen.⌉⌊The Documents 
manager — search, filter and bulk-generate, email or download every invoice, packing
slip, proforma and credit note from one screen.⌉[

The Documents manager — search, filter and bulk-generate, email or download every
invoice, packing slip, proforma and credit note from one screen.

[⌊A finished invoice on its public share link — rendered 100% locally with your 
logo, colours, tax lines and a one-click PDF download; no external requests at render
time.⌉⌊A finished invoice on its public share link — rendered 100% locally with 
your logo, colours, tax lines and a one-click PDF download; no external requests
at render time.⌉[

A finished invoice on its public share link — rendered 100% locally with your logo,
colours, tax lines and a one-click PDF download; no external requests at render 
time.

[⌊The visual template builder — drag sections into place, set colour/font/paper 
design tokens, and preview the exact dompdf output as you edit.⌉⌊The visual template
builder — drag sections into place, set colour/font/paper design tokens, and preview
the exact dompdf output as you edit.⌉[

The visual template builder — drag sections into place, set colour/font/paper design
tokens, and preview the exact dompdf output as you edit.

[⌊Settings — the document × WooCommerce-email matrix that attaches the right document
to the right transactional email. Every new feature is off by default and update-
safe.⌉⌊Settings — the document × WooCommerce-email matrix that attaches the right
document to the right transactional email. Every new feature is off by default and
update-safe.⌉[

Settings — the document × WooCommerce-email matrix that attaches the right document
to the right transactional email. Every new feature is off by default and update-
safe.

[⌊On the WooCommerce order screen — generate, view and email documents, set the 
fulfillment stage, and record carrier and tracking details (HPOS-ready).⌉⌊On the
WooCommerce order screen — generate, view and email documents, set the fulfillment
stage, and record carrier and tracking details (HPOS-ready).⌉[

On the WooCommerce order screen — generate, view and email documents, set the fulfillment
stage, and record carrier and tracking details (HPOS-ready).

[⌊The built-in System Check renders a live sample PDF and verifies your environment(
PHP, extensions, storage, engine) so you can see it works before you rely on it.⌉⌊
The built-in System Check renders a live sample PDF and verifies your environment(
PHP, extensions, storage, engine) so you can see it works before you rely on it.⌉[

The built-in System Check renders a live sample PDF and verifies your environment(
PHP, extensions, storage, engine) so you can see it works before you rely on it.

[⌊The WooCommerce Orders list — an Invoice column shows each order's document status
at a glance, with bulk generate/download actions (classic and HPOS screens).⌉⌊The
WooCommerce Orders list — an Invoice column shows each order's document status at
a glance, with bulk generate/download actions (classic and HPOS screens).⌉[

The WooCommerce Orders list — an Invoice column shows each order’s document status
at a glance, with bulk generate/download actions (classic and HPOS screens).

[⌊A WooCommerce order in full — the SoftGlaze box sits right beside the order, so
paperwork, fulfillment stage and tracking live where you already work.⌉⌊A WooCommerce
order in full — the SoftGlaze box sits right beside the order, so paperwork, fulfillment
stage and tracking live where you already work.⌉[

A WooCommerce order in full — the SoftGlaze box sits right beside the order, so 
paperwork, fulfillment stage and tracking live where you already work.

[⌊The manual New-invoice screen — pick a saved client, add line items, currency,
date and template, then save; a race-safe number is assigned and a PDF + share link
are ready (works without WooCommerce).⌉⌊The manual New-invoice screen — pick a saved
client, add line items, currency, date and template, then save; a race-safe number
is assigned and a PDF + share link are ready (works without WooCommerce).⌉[

The manual New-invoice screen — pick a saved client, add line items, currency, date
and template, then save; a race-safe number is assigned and a PDF + share link are
ready (works without WooCommerce).

[⌊The Products table — your synced WooCommerce catalogue with SKU, price, cost and
stock; select rows to export a catalog PDF or manage cost prices.⌉⌊The Products 
table — your synced WooCommerce catalogue with SKU, price, cost and stock; select
rows to export a catalog PDF or manage cost prices.⌉[

The Products table — your synced WooCommerce catalogue with SKU, price, cost and
stock; select rows to export a catalog PDF or manage cost prices.

[⌊Cost prices — record what each product costs you so the dashboard can show real
gross profit and margin.⌉⌊Cost prices — record what each product costs you so the
dashboard can show real gross profit and margin.⌉[

Cost prices — record what each product costs you so the dashboard can show real 
gross profit and margin.

[⌊The Templates overview — 10 stock designs to duplicate, your saved custom templates,
and a per-document-type design-assignment table.⌉⌊The Templates overview — 10 stock
designs to duplicate, your saved custom templates, and a per-document-type design-
assignment table.⌉[

The Templates overview — 10 stock designs to duplicate, your saved custom templates,
and a per-document-type design-assignment table.

[⌊Import from WooCommerce — backfill your existing orders into the unified Documents
list by status and date range, with a resumable progress bar.⌉⌊Import from WooCommerce—
backfill your existing orders into the unified Documents list by status and date
range, with a resumable progress bar.⌉[

Import from WooCommerce — backfill your existing orders into the unified Documents
list by status and date range, with a resumable progress bar.

[⌊Italy / FatturaPA settings — Partita IVA, Codice Fiscale, Regime Fiscale, PEC,
registered office and transmitter details that drive the validated FatturaPA XML
export. Off by default.⌉⌊Italy / FatturaPA settings — Partita IVA, Codice Fiscale,
Regime Fiscale, PEC, registered office and transmitter details that drive the validated
FatturaPA XML export. Off by default.⌉[

Italy / FatturaPA settings — Partita IVA, Codice Fiscale, Regime Fiscale, PEC, registered
office and transmitter details that drive the validated FatturaPA XML export. Off
by default.

[⌊Cloud backup settings — connect your own Dropbox or Google Drive with your own
OAuth app; documents mirror to your account and tokens are stored encrypted. Nothing
uploads until you connect.⌉⌊Cloud backup settings — connect your own Dropbox or 
Google Drive with your own OAuth app; documents mirror to your account and tokens
are stored encrypted. Nothing uploads until you connect.⌉[

Cloud backup settings — connect your own Dropbox or Google Drive with your own OAuth
app; documents mirror to your account and tokens are stored encrypted. Nothing uploads
until you connect.

[⌊The public invoice builder ([sgci_invoice_builder]) — visitors build their own
invoice with saved company details, line items, a design picker and a live preview.⌉⌊
The public invoice builder ([sgci_invoice_builder]) — visitors build their own invoice
with saved company details, line items, a design picker and a live preview.⌉[

The public invoice builder ([sgci_invoice_builder]) — visitors build their own invoice
with saved company details, line items, a design picker and a live preview.

[⌊The My Account → Invoices tab — when WooCommerce is active, the same view-and-
create dashboard appears inside the customer's account area.⌉⌊The My Account → Invoices
tab — when WooCommerce is active, the same view-and-create dashboard appears inside
the customer's account area.⌉[

The My Account  Invoices tab — when WooCommerce is active, the same view-and-create
dashboard appears inside the customer’s account area.

[⌊The standalone customer dashboard ([sgci_dashboard]) — invoices and a "Create 
invoice" builder together as simple tabs, for sites without WooCommerce.⌉⌊The standalone
customer dashboard ([sgci_dashboard]) — invoices and a "Create invoice" builder 
together as simple tabs, for sites without WooCommerce.⌉[

The standalone customer dashboard ([sgci_dashboard]) — invoices and a “Create invoice”
builder together as simple tabs, for sites without WooCommerce.

[⌊A customer's "My invoices" view — search, download, duplicate, copy a share link,
or delete, with clear empty states and status badges.⌉⌊A customer's "My invoices"
view — search, download, duplicate, copy a share link, or delete, with clear empty
states and status badges.⌉[

A customer’s “My invoices” view — search, download, duplicate, copy a share link,
or delete, with clear empty states and status badges.

[⌊Self-contained sign-in / create account ([sgci_login]) — users pick their own 
password and are signed straight in, with an on-site "forgot password" flow and 
no wp-login screen.⌉⌊Self-contained sign-in / create account ([sgci_login]) — users
pick their own password and are signed straight in, with an on-site "forgot password"
flow and no wp-login screen.⌉[

Self-contained sign-in / create account ([sgci_login]) — users pick their own password
and are signed straight in, with an on-site “forgot password” flow and no wp-login
screen.

[⌊Settings → Business — the company identity, logo, bank details and signature that
appear on every document.⌉⌊Settings → Business — the company identity, logo, bank
details and signature that appear on every document.⌉[

Settings  Business — the company identity, logo, bank details and signature that
appear on every document.

[⌊Settings → Numbering — prefix/suffix, {YYYY}/{MM} placeholders, padding and yearly
reset, with a live preview of the next number.⌉⌊Settings → Numbering — prefix/suffix,{
YYYY}/{MM} placeholders, padding and yearly reset, with a live preview of the next
number.⌉[

Settings  Numbering — prefix/suffix, {YYYY}/{MM} placeholders, padding and yearly
reset, with a live preview of the next number.

[⌊Settings → Checkout — collect and validate a VAT number and/or fiscal code at 
checkout (per-country rules, Italian checksums, optional EU VIES lookup).⌉⌊Settings
→ Checkout — collect and validate a VAT number and/or fiscal code at checkout (per-
country rules, Italian checksums, optional EU VIES lookup).⌉[

Settings  Checkout — collect and validate a VAT number and/or fiscal code at checkout(
per-country rules, Italian checksums, optional EU VIES lookup).

[⌊Settings → Frontend — the master switch and controls for the public invoice-builder
site (allowed templates, per-user daily limit, default currency and terms).⌉⌊Settings
→ Frontend — the master switch and controls for the public invoice-builder site (
allowed templates, per-user daily limit, default currency and terms).⌉[

Settings  Frontend — the master switch and controls for the public invoice-builder
site (allowed templates, per-user daily limit, default currency and terms).

[⌊Settings → Automations — payment reminders, per-stage fulfillment emails and the
monthly accountant export, each off by default with its own template.⌉⌊Settings 
→ Automations — payment reminders, per-stage fulfillment emails and the monthly 
accountant export, each off by default with its own template.⌉[

Settings  Automations — payment reminders, per-stage fulfillment emails and the 
monthly accountant export, each off by default with its own template.

[⌊Settings → Advanced — expert options such as promoting fulfillment stages to real
WooCommerce order statuses, with the trade-offs spelled out.⌉⌊Settings → Advanced—
expert options such as promoting fulfillment stages to real WooCommerce order statuses,
with the trade-offs spelled out.⌉[

Settings  Advanced — expert options such as promoting fulfillment stages to real
WooCommerce order statuses, with the trade-offs spelled out.

[⌊The first-run setup wizard — a guided welcome that gets a new store issuing documents
in a few steps.⌉⌊The first-run setup wizard — a guided welcome that gets a new store
issuing documents in a few steps.⌉[

The first-run setup wizard — a guided welcome that gets a new store issuing documents
in a few steps.

[⌊Setup wizard — the business-identity step, pre-filled from your site and WooCommerce
store.⌉⌊Setup wizard — the business-identity step, pre-filled from your site and
WooCommerce store.⌉[

Setup wizard — the business-identity step, pre-filled from your site and WooCommerce
store.

[⌊Setup wizard — the numbering step, with a live preview of your first invoice number.⌉⌊
Setup wizard — the numbering step, with a live preview of your first invoice number
.⌉[

Setup wizard — the numbering step, with a live preview of your first invoice number.

[⌊WhatsApp click-to-chat — a WhatsApp button on each generated document (order screen
and Documents manager) opens a chat pre-filled with the customer's number and the
document's secure share link. No API keys, zero external requests from the plugin.⌉⌊
WhatsApp click-to-chat — a WhatsApp button on each generated document (order screen
and Documents manager) opens a chat pre-filled with the customer's number and the
document's secure share link. No API keys, zero external requests from the plugin
.⌉[

WhatsApp click-to-chat — a WhatsApp button on each generated document (order screen
and Documents manager) opens a chat pre-filled with the customer’s number and the
document’s secure share link. No API keys, zero external requests from the plugin.

[⌊Compliance field packs — show your seller VAT, GST/HST and Tax ID in the company
block and print an editable EU reverse-charge note, per document type. Off by default;
the note never changes your tax totals.⌉⌊Compliance field packs — show your seller
VAT, GST/HST and Tax ID in the company block and print an editable EU reverse-charge
note, per document type. Off by default; the note never changes your tax totals.⌉[

Compliance field packs — show your seller VAT, GST/HST and Tax ID in the company
block and print an editable EU reverse-charge note, per document type. Off by default;
the note never changes your tax totals.

[⌊WhatsApp Cloud API (optional server-send) — connect your own Meta WhatsApp Business
credentials under Settings → Automations, then send a document's share link straight
from your server with one click. Off by default; the access token is stored encrypted.⌉⌊
WhatsApp Cloud API (optional server-send) — connect your own Meta WhatsApp Business
credentials under Settings → Automations, then send a document's share link straight
from your server with one click. Off by default; the access token is stored encrypted
.⌉[

WhatsApp Cloud API (optional server-send) — connect your own Meta WhatsApp Business
credentials under Settings  Automations, then send a document’s share link straight
from your server with one click. Off by default; the access token is stored encrypted.

[⌊Multi-language & right-to-left documents — pick a document language globally or
per document; built-in labels translate into French, German, Spanish, Dutch, Italian,
Portuguese and Hebrew, with full right-to-left rendering for Hebrew.⌉⌊Multi-language&
right-to-left documents — pick a document language globally or per document; built-
in labels translate into French, German, Spanish, Dutch, Italian, Portuguese and
Hebrew, with full right-to-left rendering for Hebrew.⌉[

Multi-language & right-to-left documents — pick a document language globally or 
per document; built-in labels translate into French, German, Spanish, Dutch, Italian,
Portuguese and Hebrew, with full right-to-left rendering for Hebrew.

[⌊The Canvas builder — a freeform layout mode: drop blocks anywhere on the page,
drag to move, resize with handles and layer them, positioned by percentage of the
page so the design matches the printed PDF. Flow (stacked) mode remains the default.⌉⌊
The Canvas builder — a freeform layout mode: drop blocks anywhere on the page, drag
to move, resize with handles and layer them, positioned by percentage of the page
so the design matches the printed PDF. Flow (stacked) mode remains the default.⌉[

The Canvas builder — a freeform layout mode: drop blocks anywhere on the page, drag
to move, resize with handles and layer them, positioned by percentage of the page
so the design matches the printed PDF. Flow (stacked) mode remains the default.

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/` (or install the ZIP from Plugins
    Add New).
 2. Activate it through the Plugins screen.
 3. Open **SoftGlaze Invoices  Settings** and fill in your company, logo, bank and 
    numbering details (they are pre-filled from your site and WooCommerce store).
 4. Open a WooCommerce order and click **Generate Invoice PDF**, or let auto-generation
    handle it on your chosen statuses.

WooCommerce is required for order invoicing. The bundled dompdf library ships with
the plugin; if it is ever missing, documents fall back to print-ready HTML.

## FAQ

### Does it send any data to an external service?

By default, no. Rendering is entirely local — the PDF engine embeds all assets from
your own server and makes no outbound HTTP request when generating a document.

There are exactly three opt-in exceptions, all off by default:

 1. **EU VIES VAT check** — if you turn on **Settings  Checkout  Verify EU VAT numbers
    online with VIES**, a VAT number entered at checkout is sent to the official EU
    VIES service to confirm it exists. Format and checksum checks always run locally
    first.
 2. **Cloud backup** — if you connect a destination under **Settings  Backup**, generated
    documents are uploaded to YOUR own Dropbox or Google Drive using YOUR app credentials.
    There is no SoftGlaze middleman server, refresh tokens are stored encrypted on 
    your server, and nothing is uploaded until you connect an account. Disconnecting
    revokes and deletes the stored tokens.
 3. **WhatsApp Cloud API sending** — if you enable it and save your own Meta credentials
    under **Settings  Automations  WhatsApp Cloud API**, clicking “Send on WhatsApp
    now” on a document sends its share link to the customer via YOUR own WhatsApp Business
    account (`graph.facebook.com`). Your access token is stored encrypted on your server,
    nothing is sent until you connect and click send, and the free click-to-chat button
    needs none of this. (The click-to-chat button itself uses WhatsApp’s `wa.me` links
    and makes no request from your server.)

Until you switch one of these on, the plugin makes zero external requests.

### Is it compatible with High-Performance Order Storage (HPOS)?

Yes. The plugin declares HPOS compatibility and reads orders only through WooCommerce
CRUD.

### What happens to my data if I delete the plugin?

By default, uninstalling removes only the plugin’s own options and order meta. Enable**
Remove data on uninstall** in Settings first if you also want the invoice records
and generated PDF files deleted.

### Are there developer hooks for customising documents?

Yes. Two filters let you override document output in code:

 * `sgci_document_template_json` — `apply_filters('sgci_document_template_json',
   $template, $doc_type)`. Fires when a named custom template is about to render
   a document type; return a modified template array (`name`, `base_preset`, `tokens`,`
   sections`, `doc_types`) to change what renders — for example to reorder sections
   or inject a custom-HTML section programmatically.
 * `sgci_document_html` — `apply_filters('sgci_document_html', $html, $invoice)`.
   Fires on the final document HTML immediately before the PDF is rendered (and 
   before the HTML fallback is written), for every document type and template/layout.
   Return modified HTML to post-process the document.

Dynamic template tags are resolved by one shared engine used by PDFs, emails and
reminders. Alongside `{invoice_number}`, `{order_number}`, `{date}`, `{due_date}`,`{
customer_name}`, `{company_name}`, `{total}` and `{share_url}`, you can pull arbitrary
order or customer meta with `{order_meta:your_key}` and `{user_meta:your_key}`. 
Values are output-escaped; an optional key allowlist (Settings) restricts which 
keys resolve.

### How do I build a complete standalone invoice-builder website with the shortcodes?

You can assemble a self-service invoice site — where visitors sign up and make their
own PDF invoices — from three pages, no WooCommerce needed:

 1. **Turn the feature on.** Go to **SoftGlaze Invoices  Settings  Frontend** and enable
    the master switch. (It is off by default on existing sites and on for brand-new
    installs.) While you are there you can choose which of your saved templates the
    builder may offer, the per-user daily limit, the default currency, and default 
    terms.
 2. **Allow sign-ups.** In **Settings  General**, tick **Membership: Anyone can register**
    so visitors can create an account, or place `[sgci_register]` on a page for the
    standard WordPress registration form.
 3. **Create three pages:**
 4.  * A **“Create invoice”** page containing `[sgci_invoice_builder my_invoices="/
       my-invoices/"]` — the full builder (company details saved per user, client, 
       line items, currency, a design picker, a live preview, and Generate  PDF + share
       link).
     * A **“My invoices”** page containing `[sgci_my_invoices builder="/create-invoice/"]`—
       each user’s own documents, with search, download, duplicate, a copyable share
       link, and delete.
     * A **“Sign in”** page containing `[sgci_login]` (and, if you like, `[sgci_register]`).
 5. **Link them together.** The `my_invoices` and `builder` attributes above accept
    a page path (e.g. `/my-invoices/`), a full URL, or a numeric page ID; they power
    the builder’s “My invoices” link, the list’s “+ New invoice” button, and the empty-
    state call-to-action. Add the three pages to your menu and you have a complete 
    builder site — any membership or login-redirect plugin works alongside it.

**Privacy:** every document a visitor creates is owned by that visitor. One user
can never see, download, or touch another user’s invoices, and a direct link to 
someone else’s document returns “not found”. Guests are shown a login/register prompt
instead of the builder.

### Do I need WooCommerce to use this plugin?

No. WooCommerce is required only for order-based invoicing — turning orders into
documents, the order-screen tools, the orders-list column and the My Account download.
Without WooCommerce you can still create invoices by hand, design templates, use
share links, and run the public invoice-builder site.

### Which document types can it create?

Invoices, packing slips, proforma invoices, credit notes, receipts and delivery 
notes. Each type has its own template assignment and can use its own number sequence.

### Can I create an invoice by hand, without an order?

Yes. The **New invoice** screen lets you pick a saved client (or add one), add unlimited
line items with quantity, unit price, cost and tax rate, choose the currency, date,
template and status, and save. A race-safe number is assigned, the PDF is stored
and a share link is ready — with WooCommerce on or off.

### How does invoice numbering work? Can I set my own format?

Numbering is sequential with an optional prefix and suffix, `{YYYY}` and `{MM}` 
placeholders, zero-padding and an optional yearly reset. Credit notes and proforma
invoices can each use their own separate, race-safe sequence. You can also reuse
the WooCommerce order number or the raw order ID instead of a counter.

### I’m moving from another invoice plugin — can I keep my numbering?

Yes. The plugin can detect existing YITH / WebToffee (and other) invoice numbers,
continue your sequence from the highest one found, and optionally copy the old numbers
onto historical orders. Developers can extend the detected meta keys with the `sgci_import_number_meta_keys`
filter.

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

Use the document × email matrix in Settings to choose which document attaches to
which transactional email (for example the invoice on “Completed”, the packing slip
on “Processing”). You can also auto-generate documents on the order statuses you
choose.

### Can customers download their own invoice?

Yes. When WooCommerce is active there is a “Download invoice” button in My Account
and an optional Invoices tab. You can also send any document by email or share a
tokenised link.

### Are the public share links secure?

Each link carries a random token, has a per-document expiry you choose (7 / 30 /
90 days or never), and can be regenerated or revoked. Generated files live in a 
protected uploads folder and are served only through capability- and ownership-checked
endpoints, so a direct link to someone else’s file returns “not found”.

### Can I put a QR code on the PDF?

Yes — enable the share-link QR code per document type and the link prints as a QR
code in the corner of the PDF. The QR image is generated locally.

### How do partial payments and deposits work?

Record one or more payments (date, amount, method, note) against a document — from
a Payments panel on the manual invoice screen, or a Payments box on the WooCommerce
order (classic and HPOS). The PDF then prints Amount paid and Balance due, and the
dashboard’s unpaid figure counts only the remaining balance.

### Is “client acceptance” a legally binding electronic signature?

No, and it is labelled as such. It records a typed name, an agreement checkbox, 
a timestamp and the client’s IP as a simple, honest online acceptance — useful for
proformas and quotes. It is not a qualified or legally binding e-signature.

### How do I send a document to a customer on WhatsApp?

Click the WhatsApp button on a generated document (order screen or Documents manager).
WhatsApp opens with the customer’s number and a message containing the document’s
share link, ready for you to send. This uses WhatsApp’s `wa.me` links and needs 
no setup or API keys.

### How do I set up server-side WhatsApp sending (Cloud API)?

Under **Settings  Automations  WhatsApp Cloud API**, enable it and save your own
Meta WhatsApp Business credentials (phone-number ID and access token). A “Send on
WhatsApp now” action then delivers the share link from your server. Inside Meta’s
24-hour customer-service window it sends your session message; outside it, it uses
your pre-approved template. It is off by default, the token is stored encrypted,
and every send is a manual click.

### Can I show my VAT / GST number and a reverse-charge note on documents?

Yes. Enter your VAT, GST/HST and a generic Tax ID in **Settings  Company details**,
then switch them on per document type under **Compliance field packs**. You can 
also print an editable EU reverse-charge note; in automatic mode it appears only
on intra-EU B2B documents where reverse charge applies. The note never changes your
tax totals.

### Can I print documents in another language or right-to-left?

Yes. Choose a document language globally or per document. French, German, Spanish,
Dutch, Italian, Portuguese and Hebrew are built in, and Hebrew renders right-to-
left with the bundled font. With no language chosen, documents are unchanged and
the admin stays in English. Arabic is not offered yet, because the bundled PDF engine
cannot join Arabic letters correctly.

### What is the difference between the Flow and Canvas template builders?

Flow stacks the document sections down the page (header, then bill-to, then items,
and so on). Canvas lets you place blocks freely anywhere on the page — drag to move,
resize with handles, and layer them. Both use the same block types and the same 
live preview, and both print exactly what you see. Flow is the default; Canvas is
a per-template choice.

### Can I design a completely custom template, or use my own HTML?

Yes. Build a named template from blocks, or add a custom-HTML block. Custom HTML
is sanitised — scripts, event handlers and remote references are stripped, on save
and on every preview — so it stays safe for the local PDF engine.

### Does it support Italian FatturaPA e-invoicing?

It generates the official FatturaPA 1.2 (FPR12) XML for invoices and credit notes,
per document or as a bulk ZIP, and validates each file locally against the Agenzia
delle Entrate schema before download. It does **not** transmit to the SDI — send
the file via your intermediary or the AdE portal — and it refuses to guess when 
data cannot be mapped cleanly. Off by default.

### Can I back up my documents to Dropbox or Google Drive?

Yes, optionally. Connect your own Dropbox and/or Google Drive app under **Settings
Backup** and each generated document is copied to your account, mirroring the local
folder layout. You use your own OAuth credentials (there is no SoftGlaze server 
in between), refresh tokens are stored encrypted, and nothing is uploaded until 
you connect an account. Off by default.

### What are the requirements, and what if dompdf is missing?

WordPress 6.3+, PHP 7.4+, and WooCommerce for order-based invoicing. The dompdf 
engine is bundled, so there is nothing to install; if it were ever missing, documents
fall back to print-ready HTML.

### Will updating the plugin change my existing invoices or settings?

No. Every feature is off by default or defaults to your current behaviour, so an
existing store’s checkout, documents, emails and numbering are unchanged until you
opt in.

### Where can I find the full documentation and setup guide?

The complete manual — for both WooCommerce and manual/standalone use — is at https://
softglaze.com/docs/pdf-invoices-plugin-for-woocommerce-and-manual. It walks through
every feature above with step-by-step screenshots.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“SoftGlaze PDF Invoices for WooCommerce” is open source software. The following 
people have contributed to this plugin.

Contributors

 *   [ Azhar Ali ](https://profiles.wordpress.org/softglaze/)

“SoftGlaze PDF Invoices for WooCommerce” has been translated into 1 locale. Thank
you to [the translators](https://translate.wordpress.org/projects/wp-plugins/softglaze-pdf-invoices/contributors)
for their contributions.

[Translate “SoftGlaze PDF Invoices for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/softglaze-pdf-invoices)

### Interested in development?

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

## Changelog

#### 2.28.3

 * Compliance field packs (seller VAT / GST / Tax-ID display and the EU reverse-
   charge note) now live under Settings, in the Documents tab, so they work on manual
   invoices and in standalone mode – not only when WooCommerce is active.
 * Fresh installs no longer attach a packing slip to the New Order email by default,
   so an invoice-first store gets one document per order instead of two. Existing
   stores keep their current setting.

#### 2.28.2

Housekeeping — no functional changes.
 * Pointed the in-plugin “Documentation” link
to the plugin’s own manual page.

#### 2.28.1

Housekeeping — no functional changes.
 * Shortened the changelog shown on WordPress.
org to the most recent releases (the complete history now lives in changelog.txt),
keeping it within the directory’s display limit.

#### 2.28.0

Release “CANVAS” — a freeform drag-and-drop / resize page builder.
 * **Design freeform
documents** — the template builder now has a **Canvas** mode alongside the classic**
Flow** (stacked) mode. Drop blocks anywhere on the page, drag to move them, resize
with corner and edge handles, nudge with the arrow keys, and layer them with bring-
front / send-back. A logo top-right, an address bottom-left, a big status watermark
across the middle, an items table sized to a region — however you want it. * **What
you lay out is what prints** — blocks are positioned by percentage of the page, 
the exact same coordinates the PDF engine uses, and the live preview shows the real
document as you design. Nothing runs off the page. * **Opt-in and safe** — every
existing template stays in Flow mode and renders exactly as before; Canvas is a 
per-template choice you switch on. Built with a tiny in-house drag/resize (no third-
party libraries) and, like the rest of the plugin, makes zero external requests.

#### 2.27.0

Release “POLISH” (part 6) — multi-language & right-to-left documents.
 * **Print
documents in your customer’s language** — pick a default document language under
Settings  Documents  Language & direction, or set it per document (on the invoice
editor and the WooCommerce order screen). The document labels — Invoice, Bill To,
Subtotal, Tax, Total, and the rest — translate automatically. French, German, Spanish,
Dutch, Italian, Portuguese and Hebrew are built in. * **Right-to-left support** —
Hebrew (and other RTL languages) render the whole document right-to-left, using 
the bundled font, so no setup or extra fonts are needed. * **Off by default, admin
stays English** — with no language chosen, documents render exactly as before. This
affects the customer-facing PDF/print only; your admin screens are unchanged. Makes
zero external requests, like everything else. (Arabic isn’t offered yet — the bundled
PDF engine can’t join Arabic letters correctly.)

#### 2.26.0

Release “POLISH” (part 5) — WhatsApp Cloud API (server-send).
 * **Send documents
on WhatsApp from your server** — an optional upgrade to the click-to-chat button.
Connect your OWN Meta WhatsApp Business Cloud API and a green “Send on WhatsApp 
now” action appears on documents (Documents page and the order screen). One click
delivers the document’s secure share link straight to the customer — no need to 
open WhatsApp yourself. * **Smart delivery** — inside WhatsApp’s 24-hour customer-
service window it sends your editable session message; outside it, it automatically
falls back to your pre-approved message template. Every send is a manual click —
nothing is ever sent automatically. * **Opt-in, private, and off by default** — 
the free click-to-chat button still works with zero setup. Server-send stays completely
inert until you enable it AND save your own credentials under Settings  Automations
WhatsApp Cloud API. Your access token is stored **encrypted** and never shown again;
the only network request goes to your own Meta account (`graph.facebook.com`), and
only when you click send. Existing sites are unaffected.

#### 2.25.0

Release “POLISH” (part 4) — compliance field packs.
 * **Seller tax IDs on documents**—
add your VAT, GST/HST and a generic Tax ID in Settings  Company details, then switch
them on per document type under Settings  Compliance field packs. They print in 
your company block alongside EIN / D-U-N-S. Off by default, so existing documents
are unchanged. * **EU reverse-charge note** — print a reverse-charge statement (
editable; defaults to the Art. 196 wording) on documents. In automatic mode it appears
only where reverse charge actually applies — intra-EU B2B: your EU VAT number plus
a VAT-registered customer in another EU country — or you can set it to always print
on the enabled document types. * **Note only, never touches your totals** — the 
plugin states the compliance position; you stay in control of the VAT rate. Everything
is opt-in per document type and makes zero external requests.

#### 2.24.0

Release “POLISH” (part 3) — WhatsApp delivery (click-to-chat).
 * **Send a document’s
link on WhatsApp** — each generated document gets a **WhatsApp** button, both on
the WooCommerce order screen and on the Documents manager. Click it and WhatsApp
opens (app or web) with the customer’s number and a message containing the document’s
secure share link, ready to send. * **Zero setup, zero external requests** — it 
uses WhatsApp’s own `wa.me` click-to-chat, so there are no API keys, no configuration,
and the plugin itself never contacts WhatsApp; your own WhatsApp does the sending.
Nothing changes for existing sites until you click the button. * **Smart phone handling**—
the recipient’s number is taken from the order’s billing phone (or the customer 
record) and turned into international format using the billing/store country, so
national-format numbers work; if a number can’t be resolved, WhatsApp simply lets
you pick the contact.

#### 2.23.0

Release “POLISH” (part 2) — client acceptance (“e-sign”).
 * **“Accept” button on
a document’s share link** — turn it on per document type (typically a proforma or
quote) under Settings  Client acceptance. Off by default, so nothing changes for
existing sites until you opt a type in. * **Records who accepted** — the client 
types their name, ticks an agreement box and accepts; their name, the date and time,
and their IP address are recorded. It’s a simple, honest online acceptance — clearly
labelled as **not** a legally binding electronic signature. * **Accepted stamp on
the PDF** — once accepted, every invoice design (all 10 stock layouts and your custom
templates) shows an “Accepted online by …” stamp. Two new template tags, `{accepted_by}`
and `{accepted_on}`, are available in the builder. * **Visible in the admin** — 
a WooCommerce order shows who accepted each document on the order screen and logs
a private order note; the share viewer shows the recorded acceptance in place of
the button. * Still makes zero external requests: the whole flow is on your own 
site.

#### 2.22.0

Release “POLISH” (part 1) — partial payments & deposits.
 * **Record partial payments/
deposits** against any document — each with a date, amount, method and note. On 
a manual invoice, a new Payments panel on the New / Edit invoice screen; on a WooCommerce
order, a Payments box on the order screen (classic and HPOS), saved with the order.***
Balance due on the PDF** — once a payment is recorded, every invoice design (all
10 stock layouts and your custom templates) prints an Amount paid and Balance due
pair beneath the total. Two new template tags, {amount_paid} and {balance_due}, 
are available in the builder. * **Dashboard shows what’s really outstanding** — 
the “Unpaid outstanding” figure now counts the remaining balance (total minus payments
received), not the gross total, so a half-paid invoice shows only what’s still owed.***
Respects the WooCommerce order status** — balance due shows only on orders still
awaiting payment (Pending / On hold); Processing and Completed count as paid, and
cancelled / failed / refunded orders show no balance. * No behaviour changes for
existing sites: a document with no recorded payment prints and counts exactly as
before, and the feature still makes zero external requests.

#### 2.21.1

Listing & documentation update — no functional code changes.
 * Expanded the plugin
description into a full, sectioned feature overview. * Grew the screenshot gallery
from 7 to 30 — the dashboard, Documents manager, WooCommerce order screen, the visual
template builder, System Check, Italian FatturaPA, cloud backup, the public invoice-
builder pages (builder, My Account tab, standalone dashboard, sign-in) and every
settings tab and setup-wizard step. * No change to code behaviour; existing sites
are unaffected, and the plugin still makes zero external requests by default.

#### 2.21.0

Release “COMPLY” (part 3) — Italian electronic invoicing (FatturaPA XML).
 * **FatturaPA
export** — for Italian sellers, generate the official FatturaPA 1.2 XML (FPR12) 
for any invoice or credit note: a per-document “FatturaPA XML” button in the Documents
table, plus a bulk “Export FatturaPA” that ZIPs every document matching your current
filters. * **Validated against the official schema** — every file is checked against
the Agenzia delle Entrate XSD (bundled locally) _before_ it is offered for download,
so you never get a malformed file. A new **System Check  “FatturaPA XML validates”**
row confirms the pipeline at a glance. * **New “Italy” settings tab** — enter your
Partita IVA, Codice Fiscale, Regime Fiscale, PEC, registered office (Sede) and transmitter
details, plus a Natura code for zero-rated lines. Off by default; nothing Italian
appears until you enable it. * **Honest scope** — this produces a compliant XML 
file for you to download. It does **not** transmit to the Sistema di Interscambio(
SDI) — send it via your intermediary or the AdE portal. Where a document cannot 
be mapped cleanly (a customer with no Partita IVA / Codice Fiscale, a 0% line with
no Natura mapping, an unsupported document type), the export is refused with a clear
message rather than guessing. For Italian stores — verify the output with your commercialista
before first transmission. * Still zero external requests: the schema is bundled
and validated locally; the feature makes no network calls.

#### 2.20.0

Release “INSIGHT” (part 3) — order fulfillment stages + document exports.
 * **Fulfillment
stages** — track where each order is with a simple, safe flow: _In packaging  Dispatched
In transit  Delivered_. Set the stage from a dropdown on the order screen (in the
Shipment info box) or inline in the Documents table. It’s a parallel status that
never touches WooCommerce’s own order statuses, so it stays out of the way of every
other plugin and automation. * **Live stage counters** — the dashboard shows how
many orders sit in each stage right now (“In packaging: 5 · Dispatched: 3 · In transit:
2”). * **Optional stage emails** — turn on a customer email for any stage (Settings
Automations  “Fulfillment stage emails”). Each is off by default and uses the same
tag system as reminders, including the new `{stage}` tag and the shipment/tracking
tags — so the “Dispatched” email can carry the carrier and tracking link automatically.***
On the paperwork** — the current stage is printed on packing slips, and every stage
change is logged as a private note on the order for a clean history. * **Document
exports** — export the Documents list as **CSV or XML** for your accountant or bookkeeping
tool; the export respects whatever filters (type, status, source, stage, date range,
search) you have applied. Each document can also be exported as a single UBL-lite
XML file (line items included). These are generic accounting exports and make no
e-invoicing-compliance claim. * **Expert option** — advanced users can switch stages
to _real_ custom WooCommerce order statuses instead of the safe parallel meta (Settings
Advanced). Off by default, with the trade-offs spelled out on the screen. * No behaviour
changes for existing sites: every new toggle is off by default, and the whole feature
still makes zero external requests.

#### 2.19.0

Release “INSIGHT” (part 2) — storefront analytics + guest builder.
 * **Storefront
visitor analytics (opt-in)** — a privacy-first, local-only view of product-page 
and builder-page traffic, top-viewed products, and a daily trend, right on the dashboard.
Aggregate day counts only — no personal data, no IP, no cookies, and zero external
requests. Off by default. * **Guest invoice builder** — optionally let signed-out
visitors use the public builder.

#### 2.18.0

Release “INSIGHT” (part 1) — the Profit / Loss dashboard.
 * **Profit / Loss at 
a glance** — a redesigned dashboard with Revenue, Item costs, **Gross profit** and**
Margin %**, Tax collected, Refunds and Unpaid outstanding, a month/quarter/year/
custom period switcher, inline charts, a monthly breakdown and top products — all
exportable to CSV. Honestly labelled “Gross profit (revenue − item costs)”: this
is sales & margin at a glance, not double-entry accounting. * **Product cost prices**—
a “Cost price” field on the WooCommerce product screen feeds the margin maths (with
a nudge for products still missing a cost).

#### 2.17.0

Release “FRONTEND” (part 2) — a polished, mobile-first experience for the public
builder.
 * **Mobile-first everywhere** — the builder, the invoices list, and the
login/register screens are fully responsive; on a phone the invoices table folds
into tidy labelled cards with full-width, easy-to-tap actions. * **A friendlier “
My invoices”** — search with clear, distinct empty states (nothing yet vs. no matches),
a “+ New invoice” button, colour-coded status badges, a one-tap **Copy** button 
for share links, and confirmation before a delete. * **Live preview, refined** —
the builder’s preview shows an “Updating…” status while it renders and a friendly
placeholder on first paint, and quietly recovers from the occasional hiccup. * **
Toasts** — short, unobtrusive on-screen confirmations (for example “Share link copied”)
that never get in the way, layered on top of the existing after-submit messages.***
Self-contained accounts** — a single, clean card with a Log in / Create account 
toggle where new users pick their own password and are signed straight in, plus 
an on-site “Forgot your password?” flow that emails a reset link and lets people
choose a new password without ever seeing a WordPress login screen. * **Your details,
remembered** — the builder now also saves your website, bank name and IBAN/account
number alongside your company details and logo, and fills them all in automatically
the next time you create a document. * **One dashboard for your customers** — a 
new `[sgci_dashboard]` shortcode puts a user’s invoices and a “Create invoice” builder
together on one page as simple tabs, with a clean sign-out. Any logged-in user can
create documents and sees only their own. * **Merges into WooCommerce  My Account**—
when WooCommerce is active, an “Invoices” tab appears in My Account with the same
view-and-create dashboard. A new setting (SoftGlaze Invoices  Settings  Frontend“
User dashboard”) lets you choose where it lives: both the standalone page and the
My Account tab (default), the My Account tab only, or the standalone page only. 
Without WooCommerce, the standalone page is always used. * **Cross-linked pages**—
point the builder at your invoices page and vice-versa with simple shortcode attributes(`[
sgci_invoice_builder my_invoices="/my-invoices/"]` and `[sgci_my_invoices builder
="/create-invoice/"]`), so the “New invoice” button and the empty-state call-to-
action just work. * The readme now walks you through assembling a complete standalone
invoice-builder website from the shortcodes. No behaviour changes for existing sites—
the frontend stays off until you switch it on, and the whole feature still makes
zero external requests.

#### 2.16.0

Release “FRONTEND” — a public invoice-builder site your visitors can use.
 * **Four
new shortcodes** — `[sgci_invoice_builder]` (a full builder: your company details
saved per user, client, line items, currency, design picker, a live preview, and
Generate  PDF + share link), `[sgci_my_invoices]` (each user’s own documents: search,
download, duplicate, share, delete), and `[sgci_register]` / `[sgci_login]` (thin
wrappers over WordPress accounts). Put one shortcode per page and you have a complete
freeinvoicebuilder.com-style site — any membership plugin works alongside it. * **
Private by design** — every document a visitor creates is owned by that visitor.
One user can never see, download, or touch another user’s invoices, and a direct
link to someone else’s document returns “not found”. * **A new “Frontend” settings
tab** — one master on/off switch (a kill-switch that instantly hides every frontend
page), which of your saved templates the builder may offer (un-ticked templates 
stay private), a documents-per-user-per-day limit (default 20), a preview-render
rate limit, the default currency, and default terms text. * **Safe by default on
update** — the builder is **off** on existing sites after updating (so no public
surface appears unbidden) and on for brand-new installs. Every form is nonce- and
honeypot-protected and rate-limited; uploaded logos go through WordPress media handling(
images only, size-capped); and the whole feature makes zero external requests, like
the rest of the plugin.

For the changelog of earlier releases (2.5.0 through 2.15.1), see changelog.txt.

## Meta

 *  Version **2.28.3**
 *  Last updated **1 week ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.3 or higher **
 *  Tested up to **7.0.3**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/softglaze-pdf-invoices/) and [Urdu](https://ur.wordpress.org/plugins/softglaze-pdf-invoices/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/softglaze-pdf-invoices)
 * Tags
 * [credit note](https://wordpress.org/plugins/tags/credit-note/)[invoice](https://wordpress.org/plugins/tags/invoice/)
   [Packing Slip](https://wordpress.org/plugins/tags/packing-slip/)[pdf invoice](https://wordpress.org/plugins/tags/pdf-invoice/)
   [woocommerce invoice](https://wordpress.org/plugins/tags/woocommerce-invoice/)
 *  [Advanced View](https://wordpress.org/plugins/softglaze-pdf-invoices/advanced/)

## Ratings

No reviews have been submitted yet.

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

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

## Contributors

 *   [ Azhar Ali ](https://profiles.wordpress.org/softglaze/)

## Support

Got something to say? Need help?

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