{"id":301722,"date":"2026-08-20T02:21:43","date_gmt":"2026-08-20T02:21:43","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ezy-e-invoice\/"},"modified":"2026-08-20T02:29:23","modified_gmt":"2026-08-20T02:29:23","slug":"ezy-e-invoice","status":"publish","type":"plugin","link":"https:\/\/srd.wordpress.org\/plugins\/ezy-e-invoice\/","author":14517681,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.2.4","stable_tag":"2.2.4","tested":"7.0.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"ezy E Invoice","header_author":"eHut.tech","header_description":"A modern and easy e-invoice plugin \u2013 create, send and manage professional invoices with PDF attachments. Supports WooCommerce product sync, client management, configurable tax \/ service charges and branded emails.","assets_banners_color":"728099","last_updated":"2026-08-20 02:29:23","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/ehut.tech\/donate\/","header_plugin_uri":"https:\/\/github.com\/saifuldhaka\/ezy-E-Invoice","header_author_uri":"https:\/\/ehut.tech\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":55,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.2.4":{"tag":"2.2.4","author":"abssaiful","date":"2026-08-20 02:29:23"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3655693,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3655693,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3655693,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3655693,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.2.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3655693,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3655693,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3655693,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3655693,"resolution":"4","location":"assets","locale":"","width":1280,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3655693,"resolution":"5","location":"assets","locale":"","width":1280,"height":800},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3655693,"resolution":"6","location":"assets","locale":"","width":1280,"height":800},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3655693,"resolution":"7","location":"assets","locale":"","width":1280,"height":800},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3655693,"resolution":"8","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"<strong>Dashboard<\/strong> \u2013 Quick-glance stats: total invoices, revenue, pending and paid counts.","2":"<strong>Settings \u2013 Company Details<\/strong> \u2013 Enter your brand name, logo, address and registration numbers.","3":"<strong>Settings \u2013 Invoice Config<\/strong> \u2013 Invoice prefix, numbering, currency and payment terms.","4":"<strong>Settings \u2013 Tax &amp; Charges<\/strong> \u2013 Enable\/disable tax, service charge and discount with custom labels and rates.","5":"<strong>Settings \u2013 Email Settings<\/strong> \u2013 Sender name, address, subject, body template and CC\/BCC.","6":"<strong>Clients List<\/strong> \u2013 Searchable, paginated client table with inline edit and delete.","7":"<strong>Add \/ Edit Client<\/strong> \u2013 Modal form with all client fields.","8":"<strong>Products List<\/strong> \u2013 Product catalogue with WooCommerce sync button.","9":"<strong>Create Invoice<\/strong> \u2013 Step-by-step builder: client autocomplete, dynamic line items, live totals.","10":"<strong>Invoice List<\/strong> \u2013 Filter by status (Draft \/ Sent \/ Paid \/ Overdue), search and bulk actions.","11":"<strong>View Invoice<\/strong> \u2013 Full invoice preview with download PDF and resend buttons.","12":"<strong>PDF Invoice<\/strong> \u2013 Sample of the generated PDF sent to clients."}},"plugin_section":[],"plugin_tags":[15149,267,12480,1764,286],"plugin_category":[41,45,50],"plugin_contributors":[276600],"plugin_business_model":[],"class_list":["post-301722","plugin","type-plugin","status-publish","hentry","plugin_tags-billing","plugin_tags-email","plugin_tags-invoice","plugin_tags-pdf","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_category-media","plugin_contributors-abssaiful","plugin_committers-abssaiful"],"banners":{"banner":"https:\/\/ps.w.org\/ezy-e-invoice\/assets\/banner-772x250.png?rev=3655693","banner_2x":"https:\/\/ps.w.org\/ezy-e-invoice\/assets\/banner-1544x500.png?rev=3655693","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ezy-e-invoice\/assets\/icon-128x128.png?rev=3655693","icon_2x":"https:\/\/ps.w.org\/ezy-e-invoice\/assets\/icon-256x256.png?rev=3655693","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ezy-e-invoice\/assets\/screenshot-1.png?rev=3655693","caption":"<strong>Dashboard<\/strong> \u2013 Quick-glance stats: total invoices, revenue, pending and paid counts."},{"src":"https:\/\/ps.w.org\/ezy-e-invoice\/assets\/screenshot-2.png?rev=3655693","caption":"<strong>Settings \u2013 Company Details<\/strong> \u2013 Enter your brand name, logo, address and registration numbers."},{"src":"https:\/\/ps.w.org\/ezy-e-invoice\/assets\/screenshot-3.png?rev=3655693","caption":"<strong>Settings \u2013 Invoice Config<\/strong> \u2013 Invoice prefix, numbering, currency and payment terms."},{"src":"https:\/\/ps.w.org\/ezy-e-invoice\/assets\/screenshot-4.png?rev=3655693","caption":"<strong>Settings \u2013 Tax &amp; Charges<\/strong> \u2013 Enable\/disable tax, service charge and discount with custom labels and rates."},{"src":"https:\/\/ps.w.org\/ezy-e-invoice\/assets\/screenshot-5.png?rev=3655693","caption":"<strong>Settings \u2013 Email Settings<\/strong> \u2013 Sender name, address, subject, body template and CC\/BCC."},{"src":"https:\/\/ps.w.org\/ezy-e-invoice\/assets\/screenshot-6.png?rev=3655693","caption":"<strong>Clients List<\/strong> \u2013 Searchable, paginated client table with inline edit and delete."},{"src":"https:\/\/ps.w.org\/ezy-e-invoice\/assets\/screenshot-7.png?rev=3655693","caption":"<strong>Add \/ Edit Client<\/strong> \u2013 Modal form with all client fields."},{"src":"https:\/\/ps.w.org\/ezy-e-invoice\/assets\/screenshot-8.png?rev=3655693","caption":"<strong>Products List<\/strong> \u2013 Product catalogue with WooCommerce sync button."}],"raw_content":"<!--section=description-->\n<p><strong>ezy E Invoice<\/strong> makes creating and sending professional e-invoices effortless. Build your client list, link your products (with optional WooCommerce sync), and fire off a branded PDF invoice by email in just a few clicks.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Client Management<\/strong> \u2013 Store unlimited clients with name, company, email, phone, address and notes. Quick-search autocomplete when creating invoices.<\/li>\n<li><strong>Product\/Service Catalogue<\/strong> \u2013 Maintain a product list with price and description. One-click WooCommerce sync imports your existing store products.<\/li>\n<li><strong>Smart Invoice Builder<\/strong> \u2013 Select a client, add line items with quantity and unit price, and watch the totals update live. Supports discount, tax and service charge.<\/li>\n<li><strong>PDF Generation<\/strong> \u2013 Every invoice is rendered as a professionally styled PDF using FPDF \u2013 no third-party SaaS required.<\/li>\n<li><strong>Automatic Email Delivery<\/strong> \u2013 The moment you click <em>Create &amp; Send<\/em>, the client receives a branded HTML email with the PDF attached.<\/li>\n<li><strong>Invoice Management<\/strong> \u2013 List, filter, resend, mark as paid, download or delete invoices from a clean admin table.<\/li>\n<li><strong>Flexible Settings<\/strong> \u2013 Configure company branding, invoice prefix &amp; numbering, payment terms, bank\/payment details, tax label &amp; rate, service charge, discount toggle, currency, email sender details, CC\/BCC and custom footer notes.<\/li>\n<li><strong>WooCommerce Integration<\/strong> \u2013 Optionally sync WooCommerce products into the ezy E Invoice product catalogue with a single button.<\/li>\n<\/ul>\n\n<h4>Use Cases<\/h4>\n\n<ul>\n<li>Freelancers billing clients for services<\/li>\n<li>Small businesses issuing recurring invoices<\/li>\n<li>WooCommerce store owners needing a simple invoicing module outside of orders<\/li>\n<\/ul>\n\n<h4>Languages<\/h4>\n\n<p>Ready for translation (<code>.pot<\/code> file included). All strings are wrapped in <code>__()<\/code> \/ <code>esc_html__()<\/code> with the <code>ezy-e-invoice<\/code> text domain.<\/p>\n\n<!--section=installation-->\n<p><strong>Automatic (recommended)<\/strong><\/p>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong> in your WordPress admin.<\/li>\n<li>Search for <strong>ezy E Invoice<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong> then <strong>Activate<\/strong>.<\/li>\n<\/ol>\n\n<p><strong>Manual<\/strong><\/p>\n\n<ol>\n<li>Download the ZIP file.<\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Upload the ZIP and click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<\/ol>\n\n<p><strong>First-Time Setup<\/strong><\/p>\n\n<ol>\n<li>Navigate to <strong>ezy E Invoice \u2192 Settings<\/strong>.<\/li>\n<li>Fill in your <strong>Company Details<\/strong> (name, logo, address, registration numbers).<\/li>\n<li>Configure <strong>Invoice Settings<\/strong> (prefix, starting number, currency, payment terms).<\/li>\n<li>Set <strong>Tax &amp; Charges<\/strong> (GST\/VAT\/SST rate, service charge, discount options).<\/li>\n<li>Configure <strong>Email Settings<\/strong> (from name, from address, subject, body template).<\/li>\n<li>Save, then add your clients and products \u2014 you're ready to invoice!<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20work%20without%20woocommerce%3F\"><h3>Does this plugin work without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce is completely optional. You can manually add products\/services to the ezy E Invoice catalogue without WooCommerce installed.<\/p><\/dd>\n<dt id=\"how%20are%20pdfs%20generated%3F\"><h3>How are PDFs generated?<\/h3><\/dt>\n<dd><p>PDFs are generated server-side using the FPDF library (bundled). No external service is required.<\/p><\/dd>\n<dt id=\"what%20email%20service%20does%20the%20plugin%20use%3F\"><h3>What email service does the plugin use?<\/h3><\/dt>\n<dd><p>It uses WordPress's built-in <code>wp_mail()<\/code> function, so it works with any SMTP plugin (e.g. WP Mail SMTP, FluentSMTP).<\/p><\/dd>\n<dt id=\"can%20i%20customise%20the%20invoice%20pdf%20design%3F\"><h3>Can I customise the invoice PDF design?<\/h3><\/dt>\n<dd><p>The PDF template is in <code>templates\/invoice-pdf-html.php<\/code> and the generator class is in <code>includes\/class-ezy-pdf.php<\/code>. Developers can override these to suit their brand.<\/p><\/dd>\n<dt id=\"where%20are%20invoices%20stored%3F\"><h3>Where are invoices stored?<\/h3><\/dt>\n<dd><p>Invoices are stored in custom database tables created on activation. No post types are used, keeping your WordPress database clean.<\/p><\/dd>\n<dt id=\"can%20i%20resend%20an%20invoice%3F\"><h3>Can I resend an invoice?<\/h3><\/dt>\n<dd><p>Yes. From <strong>ezy E Invoice \u2192 Invoices<\/strong>, click <strong>Resend<\/strong> on any invoice row to re-email the PDF to the client.<\/p><\/dd>\n<dt id=\"is%20there%20a%20bulk%20delete%20option%3F\"><h3>Is there a bulk delete option?<\/h3><\/dt>\n<dd><p>Bulk actions are on the roadmap for v2.2. For now, individual delete is available on each invoice row.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20uninstall%20the%20plugin%3F\"><h3>What happens if I uninstall the plugin?<\/h3><\/dt>\n<dd><p>The <code>uninstall.php<\/code> file removes all plugin options. Database tables are retained by default to protect your data. You can manually drop them if needed.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.4<\/h4>\n\n<ul>\n<li>Maintenance: Version bump to 2.2.4.<\/li>\n<li>Confirmed: All previous review fixes from v2.2.3 retained \u2014 ABSPATH guard, clean phpcs:ignore on PDF style block, and smart FPDF loader.<\/li>\n<\/ul>\n\n<h4>2.2.3<\/h4>\n\n<ul>\n<li>Fix: Removed rogue <code>&lt;style&gt;<\/code> tag caused by a broken phpcs:ignore comment embedded inside the PHP docblock \u2014 the embedded <code>&lt;?php ?&gt;<\/code> tag unintentionally closed PHP mode, making <code>&lt;style&gt; is required<\/code> output as literal HTML. Docblock is now plain text.<\/li>\n<li>Fix: Replaced the broken inline phpcs:ignore with a clean <code>&lt;?php \/\/ phpcs:ignore ... ?&gt;<\/code> line placed immediately before the <code>&lt;style&gt;<\/code> block, correctly suppressing the WPCS enqueue warning for this PDF-only template.<\/li>\n<li>Fix: Confirmed <code>if ( ! defined( 'ABSPATH' ) ) exit;<\/code> guard remains at line 2 of <code>templates\/invoice-pdf-html.php<\/code>.<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Fix: FPDF smart-load \u2014 if another plugin has already loaded FPDF, EZYEIN_FPDF now extends it instead of loading the library again, avoiding duplicate code in memory.<\/li>\n<li>Fix: FPDF class wrapped with class_exists( 'EZYEIN_FPDF' ) guard in both fpdf.php and class-ezy-pdf.php to prevent duplicate class definition errors.<\/li>\n<li>Fix: Inline  tag in invoice-pdf-html.php annotated with phpcs:ignore \u2014 template is PDF-only (ob_start capture), never served to browser.<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Fix: Added phpcs:ignore with justification on read-only GET parameter \u2014 no nonce needed on display-only admin pages.<\/li>\n<li>Fix: Invoice view page now accessible via direct URL or bookmark (no nonce expiry issue).<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Security: Replaced deprecated utf8_decode() with mb_convert_encoding() in PDF generator.<\/li>\n<li>Security: Explicit sanitization of all $_POST fields in client and product save handlers.<\/li>\n<li>Security: Added wp_unslash() to json_decode() item fields in invoice handler.<\/li>\n<li>Security: Nonce verification added to filter\/pagination links on invoices list page.<\/li>\n<li>Improvement: Plugin URI updated to GitHub repository.<\/li>\n<\/ul>\n\n<h4>2.1.9<\/h4>\n\n<ul>\n<li>Fix: Added ABSPATH guard and phpcs:disable to all FPDF font PHP files (third-party library).<\/li>\n<li>Fix: Replaced readfile() with WP_Filesystem()-&gt;get_contents() for PDF delivery.<\/li>\n<li>Fix: Removed all error_log() debug calls from PDF class.<\/li>\n<\/ul>\n\n<h4>2.1.8<\/h4>\n\n<ul>\n<li>Fix: PDF is always regenerated fresh on download \u2014 no more stale cached layout served.<\/li>\n<\/ul>\n\n<h4>2.1.7<\/h4>\n\n<ul>\n<li>Fix: Items table no longer overlaps Bill To section when client has many address lines.<\/li>\n<\/ul>\n\n<h4>2.1.6<\/h4>\n\n<ul>\n<li>Fix: FPDF font path now uses DIRECTORY_SEPARATOR \u2014 fixes font loading on Windows (Laragon\/WAMP\/XAMPP).<\/li>\n<\/ul>\n\n<h4>2.1.5<\/h4>\n\n<ul>\n<li>Fix: All strings converted via iconv() before passing to FPDF \u2014 resolves UTF-8 encoding errors.<\/li>\n<li>Fix: Logo image load wrapped in try\/catch \u2014 skipped gracefully on failure.<\/li>\n<\/ul>\n\n<h4>2.1.4<\/h4>\n\n<ul>\n<li>Fix: PDF download now uses secure admin_init handler with nonce \u2014 forces browser download instead of opening in tab.<\/li>\n<\/ul>\n\n<h4>2.1.3<\/h4>\n\n<ul>\n<li>Fix: Moved phpcs:disable to line 2 in all view\/template files for guaranteed PHPCS coverage.<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li>Refactor: All class\/constant\/option\/menu prefixes updated to EZYEIN_ for WordPress.org compliance.<\/li>\n<li>Fix: Replaced fragile ABSPATH path detection with wp_upload_dir().<\/li>\n<\/ul>","raw_excerpt":"A modern and easy e-invoice plugin \u2013 create, send and manage professional PDF invoices directly from your WordPress admin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/301722","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=301722"}],"author":[{"embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/abssaiful"}],"wp:attachment":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=301722"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=301722"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=301722"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=301722"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=301722"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=301722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}