Docs Emboss - PDF Invoices and Packing Slips for WooCommerce

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#

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

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.

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:

EmailDefault
Customer Processing OrderOn
Customer Completed OrderOn
Customer Refunded OrderOn
Customer Partially Refunded OrderOn
Customer Invoice / Order DetailsOff
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

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, and index.php to 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',
    ),
);