Settings Reference
Settings Reference#
Every setting in Emboss - PDF Invoices and Packing Slips for WooCommerce, organised by tab. The settings live under WooCommerce > Settings > Invoices and use native WooCommerce field types (SelectWoo, the WP color picker, the WordPress media library).
All settings are stored in a single consolidated epdi_settings option. Sequential counters live in their own option rows for atomic updates.
General tab#
Enable PDF generation#
Master switch. Disable to stop the plugin from generating PDFs without deactivating it.
- Default: Enabled
Document type mode#
Controls how the plugin decides Invoice vs Receipt vs Credit Note.
- Auto (recommended) — uses order status: refunded → credit note, paid → receipt, otherwise invoice.
- Always Invoice — every order generates an Invoice regardless of payment status.
- Always Receipt — every order generates a Receipt with PAID badge.
- Default: Auto
Paper size#
PDF paper size for non-thermal templates.
- A4 — 210 × 297 mm.
- Letter — 8.5 × 11 inches.
- Auto-detect from store country — Letter for US/CA, A4 elsewhere.
- Default: Auto-detect
The Thermal template variant always renders at 80 × 297 mm and ignores this setting.
Date format#
How dates render in PDF documents.
- WordPress default — uses
get_option('date_format'). - Custom — pick from a date format picker (e.g.,
j F Y,Y-m-d,n/j/Y). - Default: WordPress default
Language#
PDF language source.
- Inherit from WordPress — uses the site language at the time of generation.
- Override — pick a specific locale.
- Default: Inherit
For multilingual stores, see Compatibility > WPML and Polylang — per-order language is handled automatically when those plugins are active.
Branding tab#
Company logo#
Click Upload logo to open the WordPress media library.
- Recommended: 600 × 200 px PNG or JPG at 72 dpi.
- Appears on every document except Minimal (text-only by design).
- Default: empty (uses WooCommerce store logo if set, otherwise the site logo).
Template variant#
Pick from four bundled variants.
- Modern — Stripe-inspired, clean, sans-serif. Default.
- Classic — formal serif, centred title.
- Minimal — accountant-friendly, monospace numbers.
- Thermal — 80mm POS receipt printer layout.
See Templates & Branding for variant details and theme override instructions.
Accent colour#
Used for document title underline, grand total row, and PAID badge background.
- Default:
#2c3338
Footer text#
Free-text footer that appears at the bottom of every document. Plain text only — line breaks are preserved, HTML is stripped.
- Default: empty
QR code on packing slips#
Off by default. When enabled, a QR code image is fetched from the QR Server API and embedded in every packing slip. The encoded payload is the order edit URL (admin-side) for warehouse scanning.
- Cached locally for 12 hours per order.
- See Compatibility > External services for privacy details.
- Default: Disabled
Legal tab#
Tax/VAT number#
Your store’s VAT or sales tax registration number. Appears on every document.
- Default: empty
Company registration number#
Companies House number, EIN, IRD, or whatever your jurisdiction requires.
- Default: empty
Registered name#
If different from the company name on the Branding tab.
- Default: empty (uses Company name from Branding)
Registered address#
If different from the company address.
- Default: empty (uses WooCommerce store address)
Terms and conditions#
Free-text terms that appear on invoices only (not receipts or credit notes). Use this for payment terms, late fees, or any contractual language.
Plain text. Line breaks preserved.
- Default: empty
Numbering tab#
Invoice numbering#
Format preview#
A live preview of the next invoice number, updating as you change the fields below.
Prefix#
Free text before the number. Date placeholders supported: {YYYY}, {YY}, {MM}, {DD}.
- Default:
INV-
Suffix#
Free text after the number.
- Default: empty
Padding digits#
Number of digits to pad the sequential number with leading zeros (1–10).
- Default:
6(e.g.,000042)
Start number#
The first number to use.
- Default:
1
Annual reset#
When on, the counter resets to Start number on the first order of each calendar year. Combined with the {YYYY} placeholder, this produces year-scoped sequences.
- Default: Off
Next number display + manual override#
Shows the number that will be assigned to the next invoice. Click Override to set a specific value with a confirmation dialog.
The override has a uniqueness check — you can’t set it to a number already in use by an existing order. Use carefully; setting the next number lower than already-issued numbers can break tax compliance.
Credit note numbering#
Same fields as invoice numbering, but for credit notes. Independent counter so credit note numbers don’t collide with invoice numbers.
- Default prefix:
CN-
Emails tab#
Per-email toggles#
Toggle attachment on or off for each WooCommerce email type:
| Default | |
|---|---|
| Customer Processing Order | On |
| Customer Completed Order | On |
| Customer Refunded Order | On |
| Customer Partially Refunded Order | On |
| Customer Invoice / Order Details | Off |
| New Order (admin) | On |
Toggling off means the PDF is neither generated for that email nor attached.
Attachment method#
Controls how the PDF gets to the customer.
- Attachment — file attached to the email.
- Link — download link in the email body, no attachment.
- Both — file attached and link in the body.
- None — neither.
- Default: Attachment
Download link position#
When the attachment method is link or both, controls where the link appears in the email body.
- Before order table — top of the body.
- After order table — bottom of the body.
- Default: After order table
Advanced tab#
PDF storage directory#
Filesystem path where generated PDFs are stored.
- Default:
wp-content/uploads/easy-pdf-invoices/ - Each PDF lives in a year/month subdirectory:
easy-pdf-invoices/2026/04/. - Filenames include a random hash to defeat URL guessing.
- Directory is created on activation with
.htaccess,web.config, andindex.phpto block direct access.
You can override this via the epdi_storage_dir filter, but this is rarely needed.
Auto-cleanup old PDFs#
Delete PDF files older than X days. The plugin can regenerate them on demand if a customer downloads later.
0= never (default).- Useful for stores with strict storage budgets and high order volume.
Enable REST API#
Off by default. When on, three endpoints become available under /wp-json/epdi/v1/documents/:
GET /documents/{order_id}— invoice metadata.GET /documents/{order_id}/pdf— PDF binary.POST /documents/{order_id}/regenerate— force regeneration.
All endpoints require the manage_woocommerce capability. See REST API for the full spec.
- Default: Disabled
Debug mode#
When on, the plugin logs info events to WooCommerce > Status > Logs under the easy-pdf-invoices source: number assignments, PDF generation, attachments, downloads.
By default, only errors are logged.
- Default: Disabled
Uninstall behaviour#
What happens when the plugin is deleted from the Plugins screen.
- Keep data — counters, settings, order meta, and PDF files are preserved. Reinstalling restores everything.
- Delete everything — counters, settings, order meta, and PDF files are removed.
The uninstall.php script honours this setting.
- Default: Keep data
Tools panel#
The Advanced tab also exposes admin tools as form embeds:
CSV export#
Filter by date range and document type, then download as CSV with UTF-8 BOM (Excel-friendly).
Backfill past orders#
Generate PDFs for past orders within a date range. Optional Force checkbox regenerates existing PDFs too.
Backfill queues each order via Action Scheduler. Monitor progress under Tools > Scheduled Actions.
See Admin Tools for full documentation on these tools.
Programmatic access#
Read settings:
$settings = get_option( 'epdi_settings', array() );
$prefix = $settings['numbering']['invoice_prefix'] ?? 'INV-';
Or use the SettingsRepository facade for typed access:
$repo = \EasyPDFInvoices\Settings\SettingsRepository::instance();
$prefix = $repo->get( 'numbering.invoice_prefix', 'INV-' );
$enabled = $repo->is_enabled( 'enable_pdf_generation' );
Update settings (use sparingly — prefer the settings UI):
$repo->update( 'branding.accent_color', '#0073aa' );
Defaults summary#
The full default settings array on a fresh install:
array(
'enable_pdf_generation' => 'yes',
'document_type_mode' => 'auto',
'paper_size' => 'auto',
'date_format' => 'wordpress',
'language' => 'inherit',
'branding' => array(
'logo_id' => 0,
'company_name' => '', // falls back to WC store name
'company_address' => '', // falls back to WC store address
'template_variant' => 'modern',
'accent_color' => '#2c3338',
'footer_text' => '',
'qr_on_packing' => 'no',
),
'legal' => array(
'tax_number' => '',
'registration_number'=> '',
'registered_name' => '',
'registered_address' => '',
'terms_text' => '',
),
'numbering' => array(
'invoice_prefix' => 'INV-',
'invoice_suffix' => '',
'invoice_padding' => 6,
'invoice_start' => 1,
'invoice_annual_reset' => 'no',
'credit_prefix' => 'CN-',
'credit_suffix' => '',
'credit_padding' => 6,
'credit_start' => 1,
'credit_annual_reset' => 'no',
),
'emails' => array(
'attach_to_new_order' => 'yes',
'attach_to_processing' => 'yes',
'attach_to_completed' => 'yes',
'attach_to_refunded' => 'yes',
'attach_to_partially_refunded'=> 'yes',
'attach_to_customer_invoice' => 'no',
'attachment_method' => 'attachment',
'download_link_pos' => 'after',
),
'advanced' => array(
'storage_dir' => '', // computed at runtime
'auto_cleanup_days' => 0,
'rest_api_enabled' => 'no',
'debug_mode' => 'no',
'uninstall_behaviour' => 'keep',
),
);