---
id: "CVE-2026-107750"
kind: "vulnerability"
aliases: ["CVE-2026-107750"]
title: "WooCommerce PDF Invoices plugin: stored XSS via billing fields"
severity: "high"
cvss: 7.2
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["package", "pdf-invoices-packing-slips", "woocommerce", "wordpress"]
not_affected_if: ["newer-version", "plugin-not-installed"]
published_at: "2026-10-31T07:16:33+00:00"
first_seen_at: "2026-10-31T07:34:06+00:00"
updated_at: "2026-10-31T07:34:37+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-107750", "first_seen_at": "2026-10-31T07:34:06+00:00"}]
---

# WooCommerce PDF Invoices plugin: stored XSS via billing fields

The PDF Invoices & Packing Slips for WooCommerce WordPress plugin up to and including 5.16.4 fails to sanitize billing name, company and customer note fields. An unauthenticated attacker can submit entity-encoded script payloads that render and run in the browser of anyone who opens the affected page.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed version of the PDF Invoices & Packing Slips for WooCommerce plugin in the WordPress plugins list and compare it to `5.16.4`
- Look for the plugin's version header in `wp-content/plugins/` (unknown whether a specific file is the source of truth)

## Fix

- PDF Invoices & Packing Slips for WooCommerce: a version newer than `5.16.4` (the exact fixed version is unknown)

## Timeline

- 2026-10-31T07:34:06+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-107750

## From the sources

The PDF Invoices & Packing Slips for WooCommerce plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'billing_address.first_name / last_name / company, customer_note' parameter in all versions up to, and including, 5.16.4 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This is an incomplete fix for CVE-2026-92244: the wp_kses() allow-list introduced in 5.16.2 correctly blocks raw-tag payloads but is bypassed by entity-encoded payloads (e.g., &lt;img onerror=…&gt;) that contain no literal angle-bracket characters and are therefore passed through unmodified before the trailing decode rematerializes them.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
