Easy Invoice – Invoice Generator, PDF Quotes & Payments

WordPress invoice plugin for freelancers & small businesses. Create unlimited invoices, PDF quotes & accept PayPal payments.

v2.3.5MatrixAddonsUpdated Added 500 installs88% rating100% support resolved
24
Score
1,366
Errors
2,006
Warnings
+0
Change

Category Scores

Security0
Repo91
Performance100
Maintainability0

Issues to Review

Prioritized issue groups from the latest Plugin Check scan

3,372 findings

Security

1,755

12 issue groups

Maintainability

1,496

11 issue groups

I18n

81

2 issue groups

WARNINGMaintainabilityNon-prefixed global variableGlobal variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$a".1,216
Category
Maintainability
Occurrences
1,216
Severity
warning

Sample message

Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$a".

ERRORSecurityOutput is not escapedAll output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"#{$elementId} { position: absolute; "'.727
Category
Security
Occurrences
727
Severity
error

Sample message

All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"#{$elementId} { position: absolute; "'.

ERRORSecurityUnsafe printing functionAll output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'.400
Category
Security
Occurrences
400
Severity
error

Sample message

All output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'.

WARNINGSecurityNonce verification recommendedProcessing form data without nonce verification.206
Category
Security
Occurrences
206
Severity
warning

Sample message

Processing form data without nonce verification.

WARNINGSecurityRequest data is not unslashed$_GET['action'] not unslashed before sanitization. Use wp_unslash() or similar150
Category
Security
Occurrences
150
Severity
warning

Sample message

$_GET['action'] not unslashed before sanitization. Use wp_unslash() or similar

WARNINGSecurityMissing nonce verificationProcessing form data without nonce verification.117
Category
Security
Occurrences
117
Severity
warning

Sample message

Processing form data without nonce verification.

WARNINGSecurityInput is not sanitizedDetected usage of a non-sanitized input variable: $_FILES['payment_proof']70
Category
Security
Occurrences
70
Severity
warning

Sample message

Detected usage of a non-sanitized input variable: $_FILES['payment_proof']

ERRORI18nMissing Translators CommentA function call to __() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders.67
Category
I18n
Occurrences
67
Severity
error

Sample message

A function call to __() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders.

ERRORMaintainabilitydate datedate() is affected by runtime timezone changes which can cause date/time to be incorrectly displayed. Use gmdate() instead.64
Category
Maintainability
Occurrences
64
Severity
error

Sample message

date() is affected by runtime timezone changes which can cause date/time to be incorrectly displayed. Use gmdate() instead.

WARNINGMaintainabilityDirect QueryUse of a direct database call is discouraged.55
Category
Maintainability
Occurrences
55
Severity
warning

Sample message

Use of a direct database call is discouraged.

Show 15 more
WARNINGMaintainabilityNo Caching55
Category
Maintainability
Occurrences
55
Severity
warning

Sample message

Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().

WARNINGSecurityInput is not validated39
Category
Security
Occurrences
39
Severity
warning

Sample message

Detected usage of a possibly undefined superglobal array index: $_FILES['payment_proof']['error']. Check that the array index exists before using it.

ERRORMaintainabilityMissing direct file access protection38
Category
Maintainability
Occurrences
38
Severity
error

Sample message

PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;

WARNINGMaintainabilityslow db query meta query32
Category
Maintainability
Occurrences
32
Severity
warning

Sample message

Detected usage of meta_query, possible slow query.

WARNINGSecuritywp redirect wp redirect21
Category
Security
Occurrences
21
Severity
warning

Sample message

wp_redirect() found. Using wp_safe_redirect(), along with the "allowed_redirect_hosts" filter if needed, can help avoid any chances of malicious redirects within code. It is also important to remember to call exit() after a redirect so that no other unwanted code is executed.

ERRORI18nUnordered Placeholders Text14
Category
I18n
Occurrences
14
Severity
error

Sample message

Multiple placeholders in translatable strings should be ordered. Expected "%1$d, %2$d", but got "%d, %d" in 'Emptied trash: %d quotes deleted successfully, %d failed.'.

ERRORMaintainabilityNon Enqueued Script12
Category
Maintainability
Occurrences
12
Severity
error

Sample message

Scripts must be registered/enqueued via wp_enqueue_script()

WARNINGMaintainabilityerror log var export10
Category
Maintainability
Occurrences
10
Severity
warning

Sample message

var_export() found. Debug code should not normally be used in production.

ERRORSecuritySetting is missing a sanitization callback9
Category
Security
Occurrences
9
Severity
error

Sample message

Sanitization missing for register_setting().

ERRORSecurityException output is not escaped7
Category
Security
Occurrences
7
Severity
error

Sample message

All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"Method $name does not exist"'.

WARNINGMaintainabilityerror log error log6
Category
Maintainability
Occurrences
6
Severity
warning

Sample message

error_log() found. Debug code should not normally be used in production.

WARNINGSecurityInterpolated SQL is not prepared5
Category
Security
Occurrences
5
Severity
warning

Sample message

Use placeholders and $wpdb->prepare(); found interpolated variable $invoice_meta_table at LEFT JOIN $invoice_meta_table pm ON p.ID = pm.post_id\n

ERRORMaintainabilityOffloaded Content4
Category
Maintainability
Occurrences
4
Severity
error

Sample message

Offloading images, js, css, and other scripts to your servers or any remote service is disallowed.

ERRORSecuritySQL query is not prepared4
Category
Security
Occurrences
4
Severity
error

Sample message

Use placeholders and $wpdb->prepare(); found $query

WARNINGMaintainabilityDynamic hook name4
Category
Maintainability
Occurrences
4
Severity
warning

Sample message

Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "$this->getFieldFilterName()".

External Connections

Potential connections found in static code analysis.

22 domains

Outbound calls

210

External assets

3

Incoming endpoints

87

Notable Domains

matrixaddons.com15 · outbound
fontawesome.com4 · outbound
facebook.com2 · outbound
cdn.jsdelivr.net1 · outbound

Platform / Reference Domains

w3.org123 · platform/reference
opensource.org22 · platform/reference
github.com4 · platform/reference
gnu.org1 · platform/reference
wordpress.org1 · platform/reference

External Asset Domains

cdnjs.cloudflare.com7 · asset + outbound

Incoming Endpoints

wp_ajax_nopriv_easy_invoice_accept_quotepublic

wp_ajax

wp_ajax_nopriv_easy_invoice_decline_quotepublic

wp_ajax

wp_ajax_nopriv_easy_invoice_download_invoice_pdfpublic

wp_ajax

wp_ajax_nopriv_easy_invoice_generate_pdfpublic

wp_ajax

wp_ajax_nopriv_easy_invoice_generate_quote_pdfpublic

wp_ajax

wp_ajax_nopriv_easy_invoice_get_payment_instructionspublic

wp_ajax

Admin AJAX endpoints73
wp_ajax_easy_invoice_create_new_invoiceauthenticated

wp_ajax

wp_ajax_easy_invoice_delete_clientauthenticated

wp_ajax

admin_post_fix_easy_invoice_quote_slugsauthenticated

admin_post

admin_post_flush_easy_invoice_rewrite_rulesauthenticated

admin_post

admin_post_register_easy_invoice_post_typesauthenticated

admin_post

wp_ajax_easy_invoice_accept_quoteauthenticated

wp_ajax

wp_ajax_easy_invoice_add_clientauthenticated

wp_ajax

wp_ajax_easy_invoice_approve_paymentauthenticated

wp_ajax

wp_ajax_easy_invoice_bulk_quote_actionauthenticated

wp_ajax

wp_ajax_easy_invoice_check_email_existsauthenticated

wp_ajax

wp_ajax_easy_invoice_create_new_quoteauthenticated

wp_ajax

wp_ajax_easy_invoice_create_sample_invoiceauthenticated

wp_ajax

61 more hidden

Score History

2 score snapshots

+0
1007550250Jun 25, 2026, 04:55 PM UTC Score 24/100 Plugin v2.3.4 Plugin Check 2.0.0 1,366 errors, 1,993 warningsJun 26, 2026, 12:58 PM UTC Score 24/100 Plugin v2.3.5 Plugin Check 2.0.0 1,366 errors, 2,006 warningsJun 25, 2026Jun 26, 2026

v2.3.5

24

Latest

Findings
3,372
Errors
1,366
Warnings
2,006
Check
2.0.0

v2.3.4

24

Score

Findings
3,359
Errors
1,366
Warnings
1,993
Check
2.0.0

Relationship Map

Author, categories, issues, domains, and nearby plugins.

37 nodes

Related Plugins