WC Recurring Invoice Security & Risk Analysis

wordpress.org/plugins/wc-invoice-pdf

WooCommerce invoice PDF generator for recurring / non-recurring orders and Email submission.

40 active installs v1.7.3 PHP + WP 3.1+ Updated Mar 13, 2026
billingcustom-productsinvoicingpdfwoocommerce
100
A · Safe
CVEs total0
Unpatched0
Last CVENever
Safety Verdict

Is WC Recurring Invoice Safe to Use in 2026?

Generally Safe

Score 100/100

WC Recurring Invoice has no known CVEs and is actively maintained. It's a solid choice for most WordPress installations.

No known CVEs Updated 21d ago
Risk Assessment

The "wc-invoice-pdf" v1.7.3 plugin exhibits a concerning security posture due to several critical findings in its static analysis. The presence of 3 AJAX handlers without authentication checks represents a significant attack surface, allowing potentially unauthorized actions. Furthermore, the taint analysis reveals 2 high-severity flows with unsanitized paths, indicating potential vulnerabilities that could be exploited. The plugin also utilizes dangerous functions such as "unserialize" and "exec," which, when combined with unsanitized input, can lead to severe security risks like remote code execution. Despite having no recorded CVEs, the internal code quality issues, particularly the high number of unsanitized taint flows and unprotected AJAX endpoints, overshadow this positive history. The plugin demonstrates some good practices like a high percentage of prepared SQL statements and a reasonable number of output escapes. However, the identified risks in the attack surface and taint analysis, coupled with the use of dangerous functions, necessitate immediate attention and remediation to secure its deployed instances.

Key Concerns

  • AJAX handlers without auth checks
  • High severity unsanitized taint flows
  • Dangerous functions (unserialize, exec)
  • Low percentage of properly escaped output
  • Bundled outdated library (TCPDF v1.0.004)
Vulnerabilities
None known

WC Recurring Invoice Security Vulnerabilities

No known vulnerabilities — this is a good sign.
Code Analysis
Analyzed Mar 16, 2026

WC Recurring Invoice Code Analysis

Dangerous Functions
16
Raw SQL Queries
3
25 prepared
Unescaped Output
68
105 escaped
Nonce Checks
1
Capability Checks
1
File Operations
109
External Requests
4
Bundled Libraries
1

Dangerous Functions Found

unserializereturn static fn () => unserialize($serializedString);vendor_build\doctrine\instantiator\src\Doctrine\Instantiator\Instantiator.php:130
unserializeunserialize($serializedString);vendor_build\doctrine\instantiator\src\Doctrine\Instantiator\Instantiator.php:204
unserialize$this->unserializeFromArray(unserialize($str));vendor_build\jms\metadata\src\SerializationHelper.php:28
unserialize$this->expression = new SerializedParsedExpression(...unserialize($str));vendor_build\jms\serializer\src\Expression\Expression.php:64
assertassert($context instanceof SerializationContext);vendor_build\jms\serializer\src\GraphNavigator\SerializationGraphNavigator.php:107
assertassert($doctrineMetadata instanceof ORMClassMetadata || $doctrineMetadata instanceof ODMClassMetadatvendor_build\jms\serializer\src\Metadata\Driver\DoctrineTypeDriver.php:22
assertassert(strlen($matches[0]) === 1);vendor_build\phpstan\phpdoc-parser\src\Ast\ConstExpr\ConstExprStringNode.php:73
assertassert($json !== false);vendor_build\phpstan\phpdoc-parser\src\Parser\ParserException.php:95
assertassert($savepoint !== null);vendor_build\phpstan\phpdoc-parser\src\Parser\TokenIterator.php:343
assertassert($commentStartPos >= 0);vendor_build\phpstan\phpdoc-parser\src\Printer\Printer.php:580
exec$execResult = exec('command -v -- '.escapeshellarg($name));vendor_build\symfony\process\ExecutableFinder.php:97
proc_open$process = @proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $envPairs,vendor_build\symfony\process\Process.php:348
proc_openreturn $result = (bool) @proc_open('echo 1 >/dev/null', [['pty'], ['pty'], ['pty']], $pipes);vendor_build\symfony\process\Process.php:1233
execexec(\sprintf('taskkill /F /T /PID %d 2>&1', $pid), $output, $exitCode);vendor_build\symfony\process\Process.php:1458
proc_open} elseif ($ok = proc_open(\sprintf('kill -%d %d', $signal, $pid), [2 => ['pipe', 'w']], $pipes)) {vendor_build\symfony\process\Process.php:1471
unserializereturn unserialize(self::parseScalar(substr($scalar, 12)));vendor_build\symfony\yaml\Inline.php:621

Bundled Libraries

TCPDF1.0.004

SQL Query Safety

89% prepared28 total queries

Output Escaping

61% escaped173 total outputs
Data Flows
8 unsanitized

Data Flow Analysis

9 flows8 with unsanitized paths
OpenInvoice (src\Menu\InvoiceMenu.php:57)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
3 unprotected

WC Recurring Invoice Attack Surface

Entry Points3
Unprotected3

AJAX Handlers 3

authwp_ajax_InvoiceMetaboxsrc\WcExtend\InvoiceMetabox.php:11
authwp_ajax_Invoicewc-recurring.php:93
authwp_ajax_InvoiceTaskwc-recurring.php:95
WordPress Hooks 43
actionwc_recurring_invoice_creatingsrc\Extend\Xrechnung.php:20
filterwoocommerce_account_menu_itemssrc\Menu\AccountInvoice.php:17
actionwoocommerce_account_invoices_endpointsrc\Menu\AccountInvoice.php:18
filterwoocommerce_my_account_my_orders_querysrc\Menu\AccountInvoice.php:21
actionadmin_menusrc\Menu\InvoiceMenu.php:20
actionadmin_headsrc\Model\InvoiceList.php:12
actionphpmailer_initsrc\Schedule\InvoiceTask.php:86
actionphpmailer_initsrc\Schedule\InvoiceTask.php:187
actionphpmailer_initsrc\Schedule\InvoiceTask.php:289
actionwoocommerce_edit_account_formsrc\WcExtend\CustomerProperties.php:14
actionwoocommerce_save_account_detailssrc\WcExtend\CustomerProperties.php:15
actionwoocommerce_login_formsrc\WcExtend\CustomerProperties.php:18
actionwp_loginsrc\WcExtend\CustomerProperties.php:19
actionshow_user_profilesrc\WcExtend\CustomerProperties.php:22
actionedit_user_profilesrc\WcExtend\CustomerProperties.php:23
actionprofile_updatesrc\WcExtend\CustomerProperties.php:24
filterwoocommerce_admin_billing_fieldssrc\WcExtend\CustomerProperties.php:25
actionadd_meta_boxessrc\WcExtend\InvoiceMetabox.php:19
actionpost_updatedsrc\WcExtend\InvoiceMetabox.php:20
actionmanage_shop_order_posts_custom_columnsrc\WcExtend\InvoiceMetabox.php:23
actionwoocommerce_before_cartsrc\WcExtend\RecurringExtension.php:12
actionwoocommerce_cart_contentssrc\WcExtend\RecurringExtension.php:13
actionwoocommerce_update_cart_action_cart_updatedsrc\WcExtend\RecurringExtension.php:14
filterwoocommerce_product_data_tabssrc\WcProduct\wc_product_service.php:7
actionwoocommerce_product_data_panelssrc\WcProduct\wc_product_service.php:9
actionwoocommerce_process_product_meta_servicesrc\WcProduct\wc_product_service.php:10
actionadmin_footersrc\WcProduct\wc_product_service.php:12
filterproduct_type_selectorsrc\WcProduct\wc_product_service.php:13
actionwoocommerce_webspace_add_to_cartsrc\WcProduct\wc_product_webspace.php:10
filterwoocommerce_product_data_tabssrc\WcProduct\wc_product_webspace.php:11
actionwoocommerce_checkout_before_customer_detailssrc\WcProduct\wc_product_webspace.php:13
actionwoocommerce_checkout_order_processedsrc\WcProduct\wc_product_webspace.php:14
actionwoocommerce_checkout_create_order_line_item_objectsrc\WcProduct\wc_product_webspace.php:16
filterwoocommerce_cart_item_subtotalsrc\WcProduct\wc_product_webspace.php:18
filterwoocommerce_cart_item_quantitysrc\WcProduct\wc_product_webspace.php:20
actionadmin_footersrc\WcProduct\wc_product_webspace.php:23
filterproduct_type_selectorsrc\WcProduct\wc_product_webspace.php:24
actioninitwc-recurring.php:28
actionadmin_noticeswc-recurring.php:29
filterplugin_row_metawc-recurring.php:31
actioninvoice_reminderwc-recurring.php:97
actionwc_recurring_order_periodwc-recurring.php:99
actionadmin_enqueue_scriptswc-recurring.php:109

Scheduled Events 1

invoice_reminder
Maintenance & Trust

WC Recurring Invoice Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedMar 13, 2026
PHP min version
Downloads8K

Community Trust

Rating0/100
Number of ratings0
Active installs40
Developer Profile

WC Recurring Invoice Developer Profile

ole1986

3 plugins · 50 total installs

88
trust score
Avg Security Score
92/100
Avg Patch Time
30 days
View full developer profile
Detection Fingerprints

How We Detect WC Recurring Invoice

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/wc-invoice-pdf/browser/js/wc-recurring-admin.js/wp-content/plugins/wc-invoice-pdf/browser/style/wc-recurring.css
Script Paths
browser/js/wc-recurring-admin.js
Version Parameters
wc-invoice-pdf/browser/js/wc-recurring-admin.js?ver=wc-invoice-pdf/browser/style/wc-recurring.css?ver=

HTML / DOM Fingerprints

FAQ

Frequently Asked Questions about WC Recurring Invoice