PluginProbe
Easy Invoice – Invoice Generator, PDF Quotes & Payments / 2.4.2
Easy Invoice – Invoice Generator, PDF Quotes & Payments v2.4.2
2.4.3 2.4.4 2.4.2 2.4.0 2.4.1 2.3.8 2.3.7 2.3.6 2.3.5 2.3.4 2.3.3 2.3.2 2.3.1 2.2.0 2.1.21 2.1.20 2.1.19 2.1.18 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 All 60 releases
← All changes | readme.txt +209 -485 2.3.1 → 2.4.2 View file →
@@ -1,596 +1,320 @@
1 -=== Easy Invoice – Professional Invoice, Quote & Billing Plugin ===
2 -Contributors: MatrixAddons
1 +=== Easy Invoice – Invoice Generator, PDF Quotes & Payments ===
2 +Contributors: matrixaddons
3 3 Tags: invoice, pdf invoice, quotes, billing, payment gateway
4 -Requires at least: 5.6
5 -Tested up to: 7.0
4 +Requires at least: 6.0
5 +Tested up to: 7.1
6 6 Requires PHP: 7.4
7 -Stable tag: 2.3.1
7 +Stable tag: 2.4.2
8 8 License: GPLv2 or later
9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html
10 10
11 -Create unlimited invoices, PDF quotes, accept PayPal payments and manage clients — the WordPress invoice plugin built for freelancers and small businesses.
11 +Invoices, quotes, PDFs and payments inside WordPress. Unlimited documents, PayPal, credit notes, statements and a REST API — free.
12 12
13 13 == Description ==
14 14
15 -Easy Invoice is a comprehensive WordPress invoicing plugin for freelancers, agencies, consultants, and small businesses. Create unlimited invoices and quotes, generate PDF documents, accept online payments through PayPal, and manage client information directly from your WordPress dashboard.
15 +**Easy Invoice** turns your WordPress site into your invoicing system. Create invoices and quotes, send them as PDFs, take payment on the invoice page and keep every client's history in one place — with no per-document limits, no watermarks and no trial period.
16 16
17 -= Links =
17 +It is built for freelancers, consultants, agencies and small businesses that would rather not pay a monthly fee for a separate invoicing service, and for developers who want invoicing that follows WordPress conventions: custom post types, capabilities, hooks, a REST API and coding standards.
18 18
19 -* [Live Demo](https://try.new/plugins/easy-invoice/)
20 -* [Documentation](https://easy-invoice.matrixaddons.com/docs/)
21 -* [Pro Version](https://matrixaddons.com/plugins/easy-invoice/#pricing)
22 -* [Support Forum](https://wordpress.org/support/plugin/easy-invoice/)
19 +[Live demo](https://try.new/plugins/easy-invoice/) · [Documentation](https://easy-invoice.matrixaddons.com/docs/) · [Product page & Pro pricing](https://matrixaddons.com/plugins/easy-invoice/) · [Support forum](https://wordpress.org/support/plugin/easy-invoice/)
23 20
24 -= Video Demo =
25 -
26 21 https://www.youtube.com/watch?v=a_0BnBpl0y0
27 22
28 -Watch our comprehensive video demo to see Easy Invoice in action! Learn how to create professional invoices, customize designs, manage clients, and accept payments - all in just a few minutes.
23 += What the free plugin does =
29 24
30 -= Key Features =
25 +**Invoices and quotes**
31 26
32 -**Invoicing & Quotes**
33 -* Unlimited invoices and quotes
34 -* Professional PDF generation
35 -* Auto-increment invoice numbering with custom prefixes
36 -* Convert quotes to invoices with one click
37 -* Clone existing invoices for faster creation
38 -* Custom invoice and quote terminology
39 -* Set default due dates and payment terms
27 +* Unlimited invoices and quotes, with automatic numbering and your own prefix — numbers stay unique even when two people save at the same moment
28 +* Line items with quantities, per-line or global tax, and discounts calculated before or after tax
29 +* Convert an accepted quote into an invoice in one click; clone any document
30 +* Credit notes against issued invoices; client statements with running balances
31 +* Notes, terms, due dates and payment instructions per document; default terms in Settings
40 32
41 -**Payment Processing**
42 -* PayPal payment gateway (free version)
43 -* Accept online payments with "Pay Now" button
44 -* Multiple payment gateways: Stripe, Square, Authorize.Net, Mollie, Paystack, Moneris, Bank Transfer, Cheque, Cash (Pro)
45 -* Manual payment recording (cash, check, bank transfer)
46 -* Partial payment support (Pro)
47 -* Payment status tracking and history
33 +**PDF and print**
48 34
49 -**Client Management**
50 -* Unlimited client records
51 -* Store complete client information
52 -* Automated email notifications
53 -* Client portal with secure login (Pro)
54 -* Payment reminder emails (Pro)
35 +* PDFs are rendered on the server (real, selectable text) with your logo and business details
36 +* Nine document designs: default, modern, classic, minimal, corporate, professional, elegant, creative and legacy
37 +* Rename any label ("Grand Total", "Net", your language) without touching code
38 +* Download from the admin, from the public invoice page, or through the REST API
55 39
56 -**Customization**
57 -* Professional invoice templates
58 -* Add your logo and business details
59 -* Customize templates using CSS
60 -* Flexible tax settings (global or per line item)
61 -* Discount calculations
62 -* Multi-currency support (150+ currencies)
63 -* Custom email templates
64 -* Translation ready
40 +**Getting paid**
65 41
66 -**Automation & Reporting**
67 -* Recurring invoice automation (Pro)
68 -* CSV data export (Pro)
69 -* Invoice and quote reporting
70 -* Revenue tracking and analytics (Pro)
71 -* Bulk Send Email & Bulk Export Selected (Pro)
42 +* PayPal checkout with a Pay Now button on every invoice
43 +* Bank transfer, cheque, cash and any offline method you add (ACH, wire…) — the client sees your instructions, sends a reference and a receipt, and you confirm the payment from the Payments screen
44 +* Payment history with partial, paid and overdue states
45 +* A custom Pay Now link for any other provider
72 46
73 -**Compatibility**
74 -* Works with any WordPress theme
75 -* WooCommerce compatible
76 -* WordPress multisite support
77 -* Page builder compatible
47 +**Clients**
78 48
79 -= Who Uses Easy Invoice? =
49 +* Unlimited client records with billing details and a complete per-client history
50 +* Invoice and quote emails with the PDF attached, from templates you edit
51 +* Every emailed link carries a private access key: a document is shown to you, to the signed-in client it belongs to, or to someone with the emailed link — never to whoever guesses a URL
52 +* Import from Sliced Invoices or Sprout Invoices in one click, or from CSV files with downloadable templates
80 53
81 -* **Freelancers** - Quick invoice creation and payment collection
82 -* **Agencies** - Multi-client management and project billing
83 -* **Small Businesses** - Professional invoicing and recurring billing
84 -* **Consultants** - Quote management and payment tracking
85 -* **E-commerce** - Custom B2B invoicing alongside WooCommerce
86 -* **Service Providers** - Subscription billing and payment plans
54 +**Localisation**
87 55
88 -= Free Version Features =
89 -* [**Unlimited Invoices & Quotes**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Create unlimited invoices and quotes with no restrictions.
90 -* [**PDF Generation**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Generate professional PDF invoices and quotes with one click.
91 -* [**PayPal Payment Gateway**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Accept online payments via PayPal with a built‑in “Pay Now” button.
92 -* [**Client Management**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Store client details and send invoices/quotes via email.
93 -* [**Tax & Discounts**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Add taxes and discounts with before/after‑tax calculation options.
94 -* [**Customization**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Set custom invoice ID prefix, terms & conditions, and footer text.
95 -* [**Email Templates**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Customize invoice and quote email notifications to clients.
96 -* [**Professional Templates**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Use beautiful, printer‑friendly invoice and quote layouts.
97 -* [**Print Invoices & Quotes**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Print documents or save to PDF directly from your browser.
98 -* [**Currency & Formatting**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Control currency symbol, decimals, and separators to match your locale.
99 -* [**Custom Payment Links**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Add an external “Pay Now” link for any payment provider.
100 -* [**Works With Any Theme**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Compatible with all properly coded WordPress themes and page builders.
101 -* [**Translation Ready**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Fully translatable for global use.
56 +* 121 currencies, with symbol, position, decimals and separators set per document
57 +* Dates in the site's timezone; translation-ready (text domain `easy-invoice`)
58 +* Multisite compatible
102 59
103 -= Pro Version Features (Addon-Based) =
60 +**For developers**
104 61
105 -Easy Invoice Pro is **addon-driven**. After installing the Pro plugin, go to **Easy Invoice → Addons** and turn on only the features you actually need — disabled addons contribute zero PHP, zero database queries, zero hooks. The 19 addons are organised into three tiers.
62 +* REST API for invoices, quotes, clients and PDFs — [API reference](https://easy-invoice.matrixaddons.com/docs/api-reference)
63 +* Migration from Sliced Invoices and Sprout Invoices built in
64 +* Actions and filters at every step; documents are custom post types you can query
65 +* WordPress coding standards, escaped output, prepared SQL, nonce-protected actions
66 +* Tested with 10,000 invoices and 10,000 quotes on one site: every admin screen stays under a second
106 67
107 -**Personal Tier — included free with the Pro plugin (no license key required). 12 addons:**
68 += Easy Invoice Pro: 26 addons, switch on what you need =
108 69
109 -* [**Recurring Invoices & Subscriptions**](https://easy-invoice.matrixaddons.com/docs/addons/recurring-invoices/): Set the frequency, end date, and payment method once; Easy Invoice generates and sends each invoice on schedule. Optional auto-charge through your gateway closes the loop — predictable revenue, zero admin.
110 -* [**Partial Payments & Deposits**](https://easy-invoice.matrixaddons.com/docs/addons/partial-payments/): Require a deposit (% or flat) before work begins, then let clients pay the balance in installments. Tracks every part-payment and shows the running balance — no spreadsheets, no manual reconciliation.
111 -* [**Client Portal**](https://easy-invoice.matrixaddons.com/docs/addons/client-portal/): Clients log in to a branded portal to view invoices, download PDFs, see payment history, and accept or decline quotes — on their own time. Includes the **Easy Invoice Account** Gutenberg block.
112 -* [**PDF Toolkit**](https://easy-invoice.matrixaddons.com/docs/addons/pdf-toolkit/): Custom headers and footers, watermark stamps (PAID / DRAFT / OVERDUE / VOID), color and font controls, and per-document branding. Make every PDF look enterprise-grade.
113 -* [**Bulk Email & Export**](https://easy-invoice.matrixaddons.com/docs/addons/bulk-operations/): Bulk actions on every list screen — email batches of invoices in one click, or export selected rows to CSV. "Export All" downloads your entire history, perfect for year-end accounting.
114 -* [**Item Library**](https://easy-invoice.matrixaddons.com/docs/addons/item-library/): Save your common services and products with name, description, price, and SKU. Insert into any invoice or quote in one click — stop retyping and keep pricing consistent across every document.
115 -* [**Custom Invoice & Quote Templates**](https://easy-invoice.matrixaddons.com/docs/addons/custom-templates/): Build your own invoice and quote layouts with the visual editor — drag in logos, company info, item tables, totals, signatures, and footers. Save multiple templates and assign different layouts per client.
116 -* [**Additional Tax Lines**](https://easy-invoice.matrixaddons.com/docs/addons/additional-tax/): Add unlimited named tax lines per invoice — VAT + duty, GST + PST, federal + state — each with its own rate. Renders every tax as a separate line on the PDF.
117 -* [**Email Enhancements**](https://easy-invoice.matrixaddons.com/docs/addons/email-enhancements/): Branded HTML emails with your colors and logo. CC / BCC, auto-attach the PDF, customise the subject and body per invoice, and set a Reply-To so client replies reach the right inbox.
118 -* [**Secure Links for Invoices & Quotes**](https://easy-invoice.matrixaddons.com/docs/addons/secure-links/): Replace predictable invoice/quote permalinks with cryptographically signed, expiring URLs. Stops competitors and customers from incrementing IDs to view documents that aren't theirs.
119 -* [**Privacy & GDPR Tools**](https://easy-invoice.matrixaddons.com/docs/addons/privacy-tools/): Wires Easy Invoice into WordPress's Personal Data Export and Erase tools. Sets an invoice data-retention policy and populates the privacy-policy boilerplate. Required for EU GDPR and California CCPA compliance.
120 -* [**Reports & Analytics**](https://easy-invoice.matrixaddons.com/docs/addons/reports/): Visual dashboard for invoice revenue, outstanding balances, payment status, and per-client performance. Filter by any date range and export for your accountant.
70 +[Easy Invoice Pro](https://matrixaddons.com/plugins/easy-invoice/) is a separate plugin that adds addons on top of the free one. Each addon has its own on/off switch under **Easy Invoice → Addons**; an addon you leave off loads no code and runs no queries. Pro requires Easy Invoice 2.4.0 or newer.
121 71
122 -**Pro Payment Gateways** — every one of these unlocks alongside the free PayPal & Manual gateways:
72 +**Personal — 16 addons, on as soon as Pro is installed (no licence key needed to use them)**
123 73
124 -* [**Stripe**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Card, Apple Pay, Google Pay, Link — SCA / 3-D Secure built in.
125 -* [**Square**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): US / CA / UK / AU / JP card processing with webhook reconciliation.
126 -* [**Authorize.Net**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Long-standing US gateway — credit cards + eChecks via AIM.
127 -* [**Mollie**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Europe-friendly: SEPA, iDEAL, Bancontact, Sofort, Klarna, card.
128 -* [**Paystack**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Africa-first (NGN / GHS / ZAR / KES / USD): card, bank transfer, USSD, mobile money & QR. HMAC-SHA512 signed webhooks.
129 -* [**Moneris**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Canada's largest card processor — Visa, Mastercard, AMEX, Interac.
130 -* [**Bank Transfer**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Show your IBAN / SWIFT on the invoice; mark paid on wire arrival.
131 -* [**Cheque**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): Display your mailing address; mark paid when the cheque clears.
132 -* [**Cash**](https://matrixaddons.com/plugins/easy-invoice/#free-vs-pro): In-person cash with custom collection instructions.
74 +* [Recurring Invoices & Subscriptions](https://easy-invoice.matrixaddons.com/docs/recurring-invoices/) — generate and email invoices on any schedule; optional auto-charge through Stripe or PayPal
75 +* [Partial Payments & Deposits](https://easy-invoice.matrixaddons.com/docs/addons/partial-payments/) — require a deposit, let clients pay the balance in instalments
76 +* [Client Portal](https://easy-invoice.matrixaddons.com/docs/addons/client-portal/) — clients log in to view invoices, download PDFs, see payments and accept or decline quotes
77 +* [PDF Toolkit](https://easy-invoice.matrixaddons.com/docs/addons/pdf-toolkit/) — watermarks (PAID, DRAFT, OVERDUE, VOID or your own), custom headers, footers, colours and fonts
78 +* [Custom Invoice & Quote Templates](https://easy-invoice.matrixaddons.com/docs/addons/custom-templates/) — a visual builder for your own layouts
79 +* [Item Library](https://easy-invoice.matrixaddons.com/docs/addons/item-library/) — saved products and services with price and SKU, inserted in one click
80 +* [Bulk Email & Export](https://easy-invoice.matrixaddons.com/docs/addons/bulk-operations/) — email batches of invoices; export selected rows or everything to CSV, Excel or PDF
81 +* [Additional Tax Lines](https://easy-invoice.matrixaddons.com/docs/addons/additional-tax/) — unlimited named taxes per invoice (VAT + duty, GST + PST, federal + state)
82 +* [Email Enhancements](https://easy-invoice.matrixaddons.com/docs/addons/email-enhancements/) — your own HTML email layout; replies routed by kind
83 +* [Secure Links](https://easy-invoice.matrixaddons.com/docs/addons/secure-links/) — signed, expiring document URLs
84 +* [Payment Links & QR Codes](https://easy-invoice.matrixaddons.com/docs/addons/payment-links/) — a link or QR code for a fixed or open amount, usable anywhere
85 +* [Quote E-Signatures](https://easy-invoice.matrixaddons.com/docs/addons/quote-signatures/) — clients sign when they accept a quote; signature, name, time and connection recorded
86 +* [Quote Request Forms](https://easy-invoice.matrixaddons.com/docs/addons/quote-forms/) — WPForms, Gravity Forms, Contact Form 7 or Fluent Forms submissions become draft quotes
87 +* [WooCommerce Invoicing](https://easy-invoice.matrixaddons.com/docs/addons/woocommerce/) — an invoice for every paid order; refunds become credit notes
88 +* [Reports & Analytics](https://easy-invoice.matrixaddons.com/docs/addons/reports/) — revenue, outstanding balances, per-client performance, month-by-month profit and loss
89 +* [Privacy & GDPR](https://easy-invoice.matrixaddons.com/docs/addons/privacy-tools/) — client documents included in WordPress personal-data export and erasure requests
133 90
134 -**Professional Tier — unlocked with a Professional license. 3 addons:**
91 +**Pro payment gateways** (alongside the free PayPal, bank transfer, cheque and cash): Stripe (cards, Apple Pay, Google Pay, Link, 3-D Secure), Square, Authorize.Net, Mollie (SEPA, iDEAL, Bancontact, Klarna), Paystack (cards, bank transfer, USSD, mobile money) and Moneris.
135 92
136 -* [**Time Tracking & Project Billing**](https://easy-invoice.matrixaddons.com/docs/addons/time-tracking/): Built-in start/stop timer with per-project and per-client entries. Convert any block of tracked time into invoice line items in one click — replaces your standalone time-tracking tool.
137 -* [**Expense Tracking & Reimbursable Items**](https://easy-invoice.matrixaddons.com/docs/addons/expense-tracking/): Track project expenses (software, mileage, materials, contractor costs) with receipt uploads. Apply markup and roll selected expenses into invoice line items.
138 -* [**Smart Reminders & Late Fees**](https://easy-invoice.matrixaddons.com/docs/addons/smart-reminders/): Configure a multi-step reminder cadence with per-step templates that escalate in tone. Auto-apply late fees and offer early-payment discounts — typically recovers 30%+ of overdue invoices.
93 +**Professional — 6 more addons, with a Professional licence**
139 94
140 -**Agency Tier — unlocked with an Agency license. 4 addons:**
95 +* [Time Tracking & Project Billing](https://easy-invoice.matrixaddons.com/docs/addons/time-tracking/) — start/stop timer, per-project and per-client entries, one click to invoice lines
96 +* [Expense Tracking](https://easy-invoice.matrixaddons.com/docs/addons/expense-tracking/) — billable expenses with receipts and markup, rolled into invoices
97 +* [Smart Reminders & Late Fees](https://easy-invoice.matrixaddons.com/docs/addons/smart-reminders/) — a multi-step reminder cadence, automatic late fees and early-payment discounts
98 +* [E-Invoicing](https://easy-invoice.matrixaddons.com/docs/addons/e-invoicing/) — Factur-X / ZUGFeRD (EN 16931) PDFs and Peppol UBL for public-sector and EU customers
99 +* [Client Language](https://easy-invoice.matrixaddons.com/docs/addons/client-language/) — every document for a client, page, PDF and email, produced in the client's language
100 +* [Retainers & Prepaid Credit](https://easy-invoice.matrixaddons.com/docs/addons/retainers/) — record a block of hours or a prepayment and draw it down invoice by invoice
141 101
142 -* [**White-Label & Brand Override**](https://easy-invoice.matrixaddons.com/docs/addons/white-label/): Replace the plugin name, admin menu, dashboard icon, PDF footer, and email signature with your own brand. Hide every upgrade prompt — essential for agencies reselling Easy Invoice as a managed service.
143 -* [**Team Members & Audit Log**](https://easy-invoice.matrixaddons.com/docs/addons/team-roles/): Scoped roles (Manager / Accountant / Sales / Viewer) so staff can work without touching refunds or settings. Every action lands in a searchable audit log — required for compliance and accountant hand-offs.
144 -* [**Accounting Sync (QuickBooks / Xero / FreshBooks)**](https://easy-invoice.matrixaddons.com/docs/addons/accounting-sync/): Push invoices to your accounting tool when created; pull payment status back when reconciled there. Chart-of-accounts mapping, customer mirroring, and bank-rec friendly.
145 -* [**Webhooks & Zapier Bridge**](https://easy-invoice.matrixaddons.com/docs/addons/webhooks/): Subscribe any URL to invoice events (paid, accepted, failed, recurring run). HMAC-SHA256 signed payloads, automatic retries. Drops into Zapier, Make, n8n, your CRM — connect to 5,000+ tools.
102 +**Agency — 4 more addons, with an Agency licence**
146 103
147 -[Upgrade to Easy Invoice Pro](https://matrixaddons.com/plugins/easy-invoice/#pricing)
104 +* [White-Label & Brand Override](https://easy-invoice.matrixaddons.com/docs/addons/white-label/) — your name, menu, icon, PDF footer and email signature; every upgrade prompt hidden
105 +* [Team Members & Audit Log](https://easy-invoice.matrixaddons.com/docs/addons/team-roles/) — Manager, Accountant, Sales and Viewer roles, and a searchable log of every action
106 +* [Accounting Sync](https://easy-invoice.matrixaddons.com/docs/addons/accounting-sync/) — QuickBooks Online, Xero and FreshBooks: invoices push out, payment status comes back
107 +* [Webhooks & Zapier](https://easy-invoice.matrixaddons.com/docs/addons/webhooks/) — invoice events to any URL, HMAC-signed with retries; drops into Zapier, Make or n8n
148 108
149 -== Why Upgrade to Pro? ==
109 +[See plans and pricing](https://matrixaddons.com/plugins/easy-invoice/#pricing) — every Pro plan has a 14-day money-back guarantee. Upgrading keeps every invoice, quote, client and payment the free plugin created.
150 110
151 -Easy Invoice Pro is **addon-based** — install once, then toggle individual features on or off from **Easy Invoice → Addons**. Three tiers, designed so you only pay for what you actually need:
111 += Who uses Easy Invoice =
152 112
153 -**Personal Tier (free with the Pro plugin — no license required):**
113 +* **Freelancers** — quote, invoice and collect payment from one screen
114 +* **Agencies and studios** — per-client history, statements, deposits and a client portal
115 +* **Shops and B2B sellers** — proper invoices for WooCommerce orders and everything the cart can't bill
116 +* **Consultants and service firms** — billed hours, expenses, retainers and e-invoices for larger customers
154 117
155 -Twelve addons covering the most-requested business needs:
118 += Privacy =
156 119
157 -* **Recurring Invoices & Subscriptions** — automate retainer / membership billing
158 -* **Partial Payments & Deposits** — accept installment plans
159 -* **Client Portal** — branded self-service area for your clients (Gutenberg block + shortcode)
160 -* **PDF Toolkit** — custom watermarks, headers, footers, branding
161 -* **Bulk Email & Export** — send / export batches of invoices in one click
162 -* **Item Library** — reusable catalog of services and products
163 -* **Custom Invoice & Quote Templates** — drag-and-drop layout builder
164 -* **Additional Tax Lines** — multi-jurisdiction tax handling (VAT + duty, GST + PST)
165 -* **Email Enhancements** — branded HTML, CC / BCC, attached PDFs
166 -* **Secure Links for Invoices & Quotes** — unguessable signed URLs with expiry, owner restriction, and login gating
167 -* **Privacy & GDPR Tools** — one-click GDPR / CCPA compliance, data-retention policy, WP Personal Data Export/Erase wiring
168 -* **Reports & Analytics** — revenue, outstanding balances, client performance dashboard
120 +Easy Invoice stores everything in your own WordPress database and sends nothing to us. The plugin contacts outside services only when you use them: the payment gateway you configure (PayPal in the free plugin), and the WordPress.org update check that every plugin performs. Card details never touch your site — they are handled by the gateway. With the Pro Privacy & GDPR addon, a client's invoices, quotes and payments are included in WordPress's personal-data export and erasure requests.
169 121
170 -**Professional Tier (license required):**
122 += Translations =
171 123
172 -* **Time Tracking & Project Billing** — built-in timer, hourly rates, one-click to invoice
173 -* **Expense Tracking & Reimbursable Items** — track project costs with receipts; markup and bill through
174 -* **Smart Reminders & Late Fees** — multi-step automated payment chase
124 +Easy Invoice is translation-ready (text domain `easy-invoice`, `.pot` in `/languages`). Translate it with Loco Translate, Poedit or on [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/easy-invoice/).
175 125
176 -**Agency Tier (license required):**
177 -
178 -* **White-Label & Brand Override** — rebrand the entire plugin as your own
179 -* **Team Members & Audit Log** — scoped roles + searchable audit trail
180 -* **Accounting Sync** — push invoices to QuickBooks, Xero, FreshBooks; pull payment status back
181 -* **Webhooks & Zapier Bridge** — push events to Zapier, Make, n8n, your CRM
182 -
183 -[View Pro Pricing](https://matrixaddons.com/plugins/easy-invoice/#pricing)
184 -
185 -= Privacy & Security =
186 -
187 -Easy Invoice respects your privacy and follows WordPress security best practices:
188 -
189 -* **No data collection** - We don't collect or store any data from your website
190 -* **GDPR compliant** - All invoice data stays in your WordPress database
191 -* **Secure payments** - Payment processing handled by PCI-compliant gateways
192 -* **No external dependencies** - Plugin works without external API calls
193 -* **Security audits** - Regularly monitored by Patchstack for vulnerabilities
194 -
195 -Payment processing is handled by your chosen gateway (PayPal, Stripe, etc.) according to their privacy policies. Easy Invoice never stores credit card information.
196 -
197 -= Translations & Internationalization =
198 -
199 -Easy Invoice is fully translation ready:
200 -
201 -* **Text Domain:** easy-invoice
202 -* **Translation Method:** Standard WordPress .po/.mo files or Loco Translate plugin
203 -* **RTL Support:** Full right-to-left language support
204 -* **Multi-Currency:** Support for 150+ currencies with custom symbols
205 -* **Date Formats:** Localized date formatting
206 -
207 -English is the default language. Community translations are available through WordPress.org.
208 -
209 -To contribute translations, visit [WordPress.org translation page](https://translate.wordpress.org/projects/wp-plugins/easy-invoice/)
210 -
211 126 == Installation ==
212 127
213 -**Automatic Installation:**
128 +1. In your WordPress admin go to **Plugins → Add New**, search for "Easy Invoice", click **Install Now**, then **Activate**. (Or upload the zip under **Plugins → Add New → Upload Plugin**.)
129 +2. Open **Easy Invoice → Settings** and enter your business name, address, logo, currency and default terms.
130 +3. Under **Settings → Payments**, connect PayPal and/or enable bank transfer, cheque and cash.
131 +4. Go to **Easy Invoice → Clients** and add a client, then **Easy Invoice → Invoices → Add New** to create your first invoice. Send it from the invoice screen; the client receives an email with the PDF and a private link.
214 132
215 -1. Go to Plugins → Add New in your WordPress admin
216 -2. Search for "Easy Invoice"
217 -3. Click Install Now → Activate
218 -4. Follow the setup wizard
133 +**Requirements:** WordPress 6.0 or newer, PHP 7.4 or newer. Any properly coded theme or page builder.
219 134
220 -**Manual Installation:**
135 +**Easy Invoice Pro:** install the Pro plugin from your purchase email next to the free one, then switch on the addons you want under **Easy Invoice → Addons**. Pro needs Easy Invoice 2.4.0 or newer.
221 136
222 -1. Download the plugin ZIP file
223 -2. Go to Plugins → Add New → Upload Plugin
224 -3. Choose the ZIP file and click Install Now
225 -4. Click Activate Plugin
226 -
227 -**Quick Setup:**
228 -
229 -1. Configure business details: Easy Invoice → Settings → General
230 -2. Customize email templates: Easy Invoice → Settings → Email
231 -3. Enable PayPal payments: Easy Invoice → Settings → Payment
232 -4. Create your first invoice: Easy Invoice → Invoices → Add New
233 -
234 -For detailed instructions, see our [documentation](https://easy-invoice.matrixaddons.com/docs/).
235 -
236 137 == Frequently Asked Questions ==
237 138
238 -= What are the minimum system requirements? =
139 += Is the free plugin limited in any way? =
239 140
240 -* WordPress 5.6 or newer
241 -* PHP version 7.4 or higher (PHP 8.0+ recommended)
242 -* MySQL 5.6 or higher
141 +No. Unlimited invoices, quotes, clients and PDFs, with no watermark and no time limit. Pro adds optional addons; it does not unlock things the free plugin holds back.
243 142
244 -= Does Easy Invoice work with any WordPress theme? =
245 -Yes. Easy Invoice is theme-agnostic and works with properly coded WordPress themes. It's compatible with popular themes like Astra, Divi, GeneratePress, and all major page builders.
143 += Which payment methods can clients use? =
246 144
247 -= Can I use Easy Invoice with WooCommerce? =
248 -Yes. Easy Invoice works independently but can be used alongside WooCommerce for custom B2B invoicing and manual invoice generation.
145 +Free: PayPal, plus bank transfer, cheque, cash and offline methods you define yourself (ACH, wire transfer…) — clients send a reference and receipt, you confirm from the Payments screen. Pro adds Stripe, Square, Authorize.Net, Mollie, Paystack and Moneris. You can also put any provider's payment link on the invoice.
249 146
250 -= Is Easy Invoice suitable for beginners? =
251 -Yes. Easy Invoice is designed for users of all skill levels with an intuitive interface. No coding knowledge required.
147 += Are there transaction fees? =
252 148
253 -= How do I accept online payments? =
254 -Free Version: Enable PayPal in Easy Invoice → Settings → Payment. A "Pay Now" button will appear on invoices, allowing clients to pay with PayPal or credit card.
149 +None from Easy Invoice. Your payment gateway charges its own fees.
255 150
256 -Pro Version: Connect additional payment gateways including Stripe, Square, Authorize.Net, or Mollie for direct credit card processing. You can also add custom external payment links for other payment providers.
151 += Can clients pay in instalments, or pay a deposit first? =
257 152
258 -For detailed setup instructions, see our [payment gateway documentation](https://easy-invoice.matrixaddons.com/docs/).
153 +Yes, with the Partial Payments & Deposits addon (Pro, Personal tier).
259 154
260 -= Are there any transaction fees? =
261 -Easy Invoice charges zero transaction fees. You keep 100% of your revenue. Payment gateway fees (PayPal, Stripe, etc.) apply based on their pricing.
155 += Can I set up recurring invoices? =
262 156
263 -= Can clients pay invoices in installments? =
264 -Yes, with Easy Invoice Pro. The Partial Payments feature lets clients pay invoices in multiple installments.
157 +Yes, with the Recurring Invoices & Subscriptions addon (Pro, Personal tier): invoices are generated and emailed on the schedule you set, with optional automatic charging through Stripe or PayPal.
265 158
266 -= How do I track payments? =
267 -Easy Invoice automatically tracks all payments. View payment status, history, and generate reports from the Payments dashboard.
159 += Can I customise the invoice design? =
268 160
269 -= Can I create PDF invoices and quotes? =
270 -Yes. One-click PDF generation is included in the free version.
161 +The free plugin ships nine designs and lets you add your logo, business details, colours and renamed labels. The Pro PDF Toolkit adds watermarks, headers and footers; the Custom Templates addon adds a visual layout builder.
271 162
272 -= How do I customize invoice templates? =
273 -Yes, you have full control over the look of invoices and quotes:
163 += Can I issue a credit note or a statement? =
274 164
275 -1. Go to Easy Invoice → Settings → Templates
276 -2. Choose from professional pre-built templates
277 -3. Customize colors and add your logo
278 -4. Modify layout using custom CSS
279 -5. Add your business details and branding
165 +Yes, both are in the free plugin: credit notes are issued against a paid or partly paid invoice from the invoice screen, and a client statement (with running balance) is available from the client record.
280 166
281 -Pro version offers advanced PDF customization including watermarks, custom layouts, and status badges. For detailed customization guides, visit our [documentation](https://easy-invoice.matrixaddons.com/docs/).
167 += Are invoice links safe to email? =
282 168
283 -= Can I convert quotes to invoices? =
284 -Yes. When a client accepts a quote, you can instantly convert it to an invoice with one click. This streamlines your workflow and ensures consistency between quotes and invoices. All quote data (line items, client details, taxes) is automatically transferred to the new invoice.
169 +Yes. Since 2.4.0 every invoice and quote link carries a per-document access key. A document is shown only to you, to the signed-in client it belongs to, or to someone opening the emailed link — never to anyone who guesses a URL. Links sent before 2.4.0 show a page that offers to email a fresh link to the address the document was issued to.
285 170
286 -= Is there a limit on invoices I can create? =
287 -No. Create unlimited invoices, quotes, and clients in both free and Pro versions.
171 += I see "Page not found" when opening an invoice. =
288 172
289 -= I see a 404 error when viewing an invoice. How do I fix it? =
290 -Go to Settings → Permalinks and click Save Changes to flush rewrite rules. This resolves most 404 issues.
173 +Go to **Settings → Permalinks** and click **Save Changes** once — this refreshes WordPress's URL rules. If you use a caching plugin, clear its cache.
291 174
292 -If the problem persists:
293 -1. Deactivate and reactivate the plugin
294 -2. Check that your .htaccess file is writable
295 -3. Contact support if the issue continues
175 += Can I import data from another invoicing plugin or a spreadsheet? =
296 176
297 -= Can I import data from other invoicing plugins? =
298 -If you're upgrading from Easy Invoice 1.x to 2.0+, the plugin will automatically prompt you to migrate your data.
177 +Yes. **Easy Invoice → Import** migrates directly from Sliced Invoices and Sprout Invoices (with a dry-run count first), and accepts CSV files of clients and invoices — download the CSV templates from the same screen. Exporting to CSV, Excel or PDF is part of the Pro Bulk Email & Export addon.
299 178
300 -For importing from other invoicing plugins:
301 -* Pro version includes CSV import functionality
302 -* Bulk import of invoices and quotes
303 -* Import client data
304 -* Preserve invoice numbers and dates
179 += Does it work with WooCommerce? =
305 180
306 -Contact support if you need assistance with data migration from specific plugins.
181 +The free plugin runs alongside WooCommerce without conflict. The Pro WooCommerce Invoicing addon creates an Easy Invoice invoice for every paid order and turns refunds into credit notes.
307 182
308 -= Does Easy Invoice work on multisite? =
309 -Yes. Easy Invoice is compatible with WordPress multisite installations.
183 += Does it work on multisite? =
310 184
311 -= What PHP version is required? =
312 -Easy Invoice requires PHP 7.4 or higher. We recommend PHP 8.0+ for optimal performance.
185 +Yes. Each site keeps its own invoices, clients and settings.
313 186
314 -= Do I need the Pro version? =
315 -The free version includes unlimited invoices, PDF generation, PayPal payments, and client management. Upgrade to Easy Invoice Pro to unlock the **addon system**: 12 Personal-tier addons (recurring billing, client portal, partial payments, secure links, item library, custom templates, reports, and more) come included free with the Pro plugin — no license key required. A license key adds the Professional and Agency tiers (time tracking, expense tracking, smart reminders, white-label, team roles, accounting sync, webhooks).
187 += Is there a REST API? =
316 188
317 -[Get Easy Invoice Pro →](https://matrixaddons.com/plugins/easy-invoice/#pricing)
189 +Yes — invoices, quotes, clients and PDFs, authenticated with WordPress application passwords. See the [API reference](https://easy-invoice.matrixaddons.com/docs/api-reference).
318 190
319 191 = How does the Pro addon system work? =
320 -Easy Invoice Pro is **addon-driven**. After installing the Pro plugin, go to **Easy Invoice → Addons** and turn on only the features you actually need. Disabled addons contribute zero PHP, zero database queries, zero hooks — so a clean install is as fast as the free plugin.
321 192
322 -There are three plan tiers covering 19 addons in total:
323 -* **Personal tier** — included free when you install the Pro plugin (no license required). 12 addons: Recurring Invoices, Partial Payments, Client Portal, PDF Toolkit, Bulk Email & Export, Item Library, Custom Templates, Additional Tax, Email Enhancements, Secure Links, Privacy & GDPR Tools, and Reports.
324 -* **Professional tier** — requires a Professional license. 3 addons: Time Tracking, Expense Tracking, and Smart Reminders & Late Fees.
325 -* **Agency tier** — requires an Agency license. 4 addons: White-Label, Team Roles & Audit Log, Accounting Sync (QuickBooks / Xero / FreshBooks), and Webhooks & Zapier Bridge.
193 +Pro is one plugin containing 26 addons. Under **Easy Invoice → Addons** you switch each one on or off. The 16 Personal addons work as soon as Pro is installed; Professional and Agency addons need a licence of that tier. An addon you leave off loads no code.
326 194
327 -Each plan includes everything in lower plans. See the [Free vs Pro page](https://easy-invoice.matrixaddons.com/docs/) inside the plugin for the full comparison.
195 += What if I update Pro before the free plugin? =
328 196
329 -= Do Personal-tier addons really work without a license key? =
330 -Yes. The Pro plugin grants Personal-tier access automatically on installation. A license key only unlocks Professional and Agency tiers. This means installing the Pro plugin alone gives you recurring billing, client portal, partial payments, secure links, reports, item library, custom templates, and the rest of the 12 Personal-tier addons — no key to enter, no checkout step beyond the initial purchase.
197 +Pro 2.3.0 needs Easy Invoice 2.4.0. If Pro is updated first it stays inactive with a notice until the free plugin is updated, and the secure links your clients already hold keep working meanwhile.
331 198
332 -= Can I try Pro before buying? =
333 -Yes. We offer a 14-day money-back guarantee. [Get Easy Invoice Pro →](https://matrixaddons.com/plugins/easy-invoice/#pricing)
199 += What happens to my data if I stop paying for Pro? =
334 200
335 -= How do I upgrade from Free to Pro? =
336 -1. Purchase Easy Invoice Pro
337 -2. Install the Pro plugin alongside the free version
338 -3. Activate the Pro plugin
201 +Nothing is deleted. Personal addons keep working; Professional and Agency addons pause until the licence is renewed. Every document stays in your database and the free plugin continues to work with it.
339 202
340 -You're now on the Personal tier — go to **Easy Invoice → Addons** and turn on the features you want.
203 += How do I report a security issue? =
341 204
342 -If you bought a Professional or Agency license, also enter your license key under **Easy Invoice → License** to unlock the higher-tier addons. Existing data is fully preserved across the upgrade.
205 +Please do not open a public forum thread. Report it through the [Patchstack Vulnerability Disclosure Program](https://patchstack.com/database/vdp/8b8da081-d07d-4239-b795-0f0895d186dd), which validates reports and coordinates the fix with us, or use the [contact form](https://matrixaddons.com/contact/).
343 206
344 -= I was using Easy Invoice Pro before the addon system — will my features break? =
345 -No. A one-time migration runs automatically on the next admin page load after you upgrade. It detects which features you were already using and auto-enables the matching addons, so nothing stops working. You can customize what's enabled afterwards from **Easy Invoice → Addons**.
207 += Where do I get help? =
346 208
347 -= Is Easy Invoice secure? =
348 -Yes. Easy Invoice follows WordPress security best practices:
209 +The [documentation](https://easy-invoice.matrixaddons.com/docs/) covers setup and every addon. Free users: the [WordPress.org support forum](https://wordpress.org/support/plugin/easy-invoice/). Pro customers: priority support from the [account area](https://store.mantrabrain.com/).
349 210
350 -* Regular security audits by Patchstack
351 -* No credit card information stored
352 -* All payment processing through PCI-compliant gateways
353 -* Secure data encryption
354 -* Regular security updates
355 -
356 -We take security seriously and respond quickly to any reported vulnerabilities.
357 -
358 -= How can I report security vulnerabilities? =
359 -Report security bugs through the [Patchstack Vulnerability Disclosure Program](https://patchstack.com/database/vdp/8b8da081-d07d-4239-b795-0f0895d186dd). The Patchstack team validates and helps resolve all security issues.
360 -
361 -= Is Easy Invoice GDPR compliant? =
362 -Yes. Easy Invoice stores all data in your WordPress database. No data is collected or transmitted to external servers (except configured payment gateways).
363 -
364 -= Where can I get support? =
365 -For all support issues:
366 -
367 -* **Free Users:** Post in the [WordPress.org support forum](https://wordpress.org/support/plugin/easy-invoice/)
368 -* **Pro Users:** Submit a support ticket for priority assistance
369 -* **Documentation:** Visit our [complete documentation](https://easy-invoice.matrixaddons.com/docs/)
370 -* **Getting Started:** Check our [quick start guide](https://easy-invoice.matrixaddons.com/docs/)
371 -
372 -Our support team is responsive and helpful (check out our reviews!).
373 -
374 -= Do you offer customization services? =
375 -Yes. We offer custom development services for:
376 -
377 -* Custom invoice template design
378 -* Theme integration
379 -* Workflow automation
380 -* Custom feature development
381 -* Third-party integrations
382 -
383 -Contact us at [mantrabrain.com/contact](https://mantrabrain.com/contact/) to discuss your requirements.
384 -
385 211 == Screenshots ==
386 212
387 -1. Dashboard overview showing invoices, quotes, payments, and revenue
388 -2. Invoice listing page with filters, bulk actions, and status management
389 -3. Invoice editor with line items, taxes, and discounts
390 -4. Invoice preview with "Pay Now" button
391 -5. Quote management and listing page
392 -6. Quote editor with real-time calculations
393 -7. Payment tracking with status and history
394 -8. Client management with contact information
395 -9. Settings panel for business details and email templates
396 -10. PDF generation with custom branding
213 +1. Dashboard — outstanding, paid and overdue at a glance, monthly revenue and recent invoices
214 +2. Invoices — filters by status, search, bulk actions and pagination that stays fast with thousands of documents
215 +3. Invoice builder — client, line items, taxes and discounts with a live preview of the chosen design
216 +4. Public invoice page — what the client sees from the emailed link, with the payment panel open on bank transfer
217 +5. Quotes — status filters, conversion to invoice, expiry tracking
218 +6. Quote builder — the same editor, with expiry date and acceptance flow
219 +7. Payments — every payment with its method and status; an offline payment arrives with the client's reference and receipt for you to confirm or reject
220 +8. Clients — records with business name, contact details, statements and balances
221 +9. Settings → Payment Methods — PayPal, bank transfer, cheque, cash, and offline methods you add yourself (ACH, wire transfer), each with its own instructions and receipt setting
222 +10. Credit notes — correct an issued invoice without editing it away; the credit is recorded against the original
223 +11. Client statement — every invoice, payment and credit note in date order with a running balance, exportable as PDF
224 +12. Import — bring invoices, quotes, clients and payments from Sliced Invoices, Sprout Invoices or a CSV
225 +13. Add-ons — 26 add-ons with their own on/off switches; the ones you leave off add no overhead
397 226
398 -
399 227 == Changelog ==
228 += 2.4.2 - September 29, 2026 =
229 +* Fix: the invoice and quote builders could fatal instead of rendering when the preview ran before a document existed; the preview now shows a placeholder until there is something to draw.
230 +* Fix: **a PayPal payment smaller than the invoice total no longer marks the invoice paid.** When PayPal confirmed less than was requested, the pending record was flipped to "completed" before its amount was corrected, so anything reading the payment at that moment still saw the full balance. The settled amount is written first; the invoice lands on Partially paid with the real balance owed.
231 +* Fix: the plugin's own sidebar logo rendered as an empty coloured square — `wp_kses_post()` strips `<svg>`. The mark (and any logo the White-Label addon substitutes) now goes through an SVG-aware allow-list.
232 +* Change: the WordPress admin menu uses the plugin's own icon instead of a generic dashicon, drawn so WordPress recolours it with the admin colour scheme.
233 +* Fix: **offline payments work in the free plugin.** Choosing "Manual Payment" on an invoice showed no instructions, no receipt upload and recorded nothing — the pieces existed but were never wired together. Bank transfer, cheque and cash are now three proper payment methods: each shows your details and instructions, can ask for the client's transaction reference and a receipt (optional or required), and records a pending payment for you to confirm.
234 +* New: **add your own offline payment methods** (ACH, wire transfer, mobile money, a second bank account…) under Settings → Payment Methods → "Add an offline payment method". Each gets its own instructions, reference field and receipt setting, appears in the Pay Now panel, and can be removed again; payments already recorded keep it.
235 +* New: **confirm or reject** each submitted offline payment from the Payments screen. The client's reference, note and receipt are shown on the payment row and the payment page; the admin email carries them too. Confirming marks that payment completed and moves the invoice to Paid or Partially paid by its real balance (it used to mark the invoice paid whatever the amount); rejecting keeps the record for the audit trail and leaves the balance owed. The client sees "payment noted — awaiting confirmation" on the invoice page meanwhile.
236 +* Security: receipts are stored under random names in a folder that refuses direct requests on Apache, and are only ever served to signed-in staff through the plugin (`admin-post.php?action=easy_invoice_payment_proof`). Receipts are deleted with their payment and on a full uninstall.
237 +* Fix: the Payments screen's "Total amount" counted submissions still awaiting confirmation and rejected payments as money received; it now sums confirmed payments only. The status filter gained "Awaiting confirmation" and "Rejected".
238 +* Fix: the free payment reminder never ran (it looked for a status nothing writes). Settings → Advanced → "Payment reminder (days after due date)" now emails the Reminder template once to each invoice still owed that many days after its due date; leave it empty to switch it off. Easy Invoice Pro's own reminders take over when Pro is active.
239 +* Fix: an invoice whose payment methods were limited to "Manual Payment" before this release now offers the three offline methods instead of nothing.
240 +* Change: a brand-new install starts with Bank transfer enabled, so an invoice can be paid from day one; a client can have at most three offline submissions awaiting confirmation on one invoice (filter `easy_invoice_offline_pending_limit`).
400 241
401 -= 2.3.1 - May 21, 2026 =
402 -* Compatibility - **Tested and confirmed compatible with WordPress 7.0.** "Tested up to" bumped from 6.9.
403 -* Fixed - **Client search excluded WooCommerce customers.** `ClientRepository::search()` gated all results on an EXISTS check against Easy Invoice's own meta keys, so users who exist in WordPress (or were imported by WooCommerce) but had no prior Easy Invoice activity were filtered out of every client autocomplete and selector. Replaced with a two-pass query: a user-table search across `user_login`, `user_email`, `display_name`, plus a meta search across `first_name`, `last_name`, `nickname`, `billing_first_name`, `billing_last_name`, `billing_email`, `billing_company` and Easy Invoice's own meta keys. Result limit raised from 10 to 50.
404 -* Fixed - **License Plan Resolver: Personal license showed as Professional.** `PRICE_ID_MAP` mis-mapped EDD `price_id` 1 to Professional. Corrected mapping to: 1=Personal, 2=Professional, 3=Agency, 4=Personal Lifetime, 5=Personal Lifetime (Unlimited). Also fixed the name-based fallback that was matching "Easy Invoice **Pro**" against "Professional" via `strpos` — order is now agency → professional → personal so the parent name no longer poisons the match.
405 -* Added - **Plan variant labels.** Personal Lifetime and Personal Lifetime (Unlimited) now surface as "Personal Lifetime" on the License page chip instead of generic "Personal".
406 -* Fixed - **License page activation count** showed "1 / 0" for unlimited-activation keys (EDD returns `license_limit: 0` for unlimited). Now renders "1 / Unlimited" when limit is `0` / empty / the string "unlimited".
407 -* Improved - **License page UI**: variant badge inline with the Plan chip, "12 months" expiry shown inline, container widened and centered on the page, removed full-screen gray background that bled across all admin pages (`.easy-invoice-admin` now uses `bg-white`).
408 -* Added - **"Docs" link on every Addons-page card state.** Previously only Locked / Available cards linked to docs; the Active state now also exposes the Docs link so users can find documentation for addons they're already using.
409 -* Improved - **Privacy & GDPR settings section** renamed from "Account Settings" — clearer naming that matches the addon that owns the surface. Section is hidden entirely when the Privacy & GDPR Tools addon is not active.
410 -* Internal - One-time cleanup script removed 4,315 duplicate Client Portal pages created by a regression in the page-existence check. New code defers portal-page setup to a manual admin notice rather than auto-creating on every request.
242 += 2.4.1 - September 15, 2026 =
243 +* Fix: on phones the public invoice and quote pages clipped the line-item table's Total column and, in the Modern, Creative and Professional designs, the totals box; every design now fits a 360px screen (narrower screens scroll the table sideways).
244 +* Performance: the payment script (and the jQuery it needs) loaded on every front-end page of the site; it now loads on the public invoice page only. Filter `easy_invoice_load_payment_assets` to add pages.
245 +* Housekeeping: the changelog in this file now summarises each release; the complete, itemised history lives in changelog.txt inside the plugin folder and on GitHub.
411 246
412 -= 2.3.0 - May 17, 2026 =
413 -* Added - **Addon system for Easy Invoice Pro**. Every Pro feature is now an independently-toggleable addon under **Easy Invoice → Addons**. Disabled addons contribute zero PHP, zero database queries, zero hooks.
414 -* Added - **Personal tier is now free with the Pro plugin** (no license key required). Eleven addons unlock automatically when you install Easy Invoice Pro: Recurring Invoices, Partial Payments & Deposits, Client Portal, PDF Toolkit, Bulk Email & Export, Item Library, Custom Invoice & Quote Templates, Additional Tax Lines, Email Enhancements, Privacy & GDPR Tools, and Reports & Analytics. A license key now only unlocks Professional and Agency tiers.
415 -* Added - **Reports addon** (Personal tier) — gating the Reports page on the new addon flag so users can disable it if not needed.
416 -* Added - **Per-addon sidebar navigation** below the Addons menu in the Easy Invoice in-app sidebar — every enabled addon with a primary page gets its own sidebar entry automatically.
417 -* Added - **WP admin notice suppression** now extended to every addon page (dynamic — picks up new addons automatically from the registry).
418 -* Added - **One-time migration** (`MIGRATION_VERSION = '2'`) auto-enables every Personal-tier addon for existing Pro installs based on detected feature usage, so nothing breaks on upgrade. New installs get addons disabled by default — opt-in only.
419 -* Improved - **Free vs Pro page** rewritten as a data-driven layout (680 lines → 200 lines) with the new four-tier plan model (Free / Personal / Professional / Agency) and concrete addon names per row.
420 -* Improved - **Addons page UI**: every card shows the addon's full description (line-clamped to 3 lines), tier-color rail removed in favour of plan pills, addon categories regrouped into 8 meaningful buckets (billing, branding, productivity, clients, team, integrations, compliance, analytics).
421 -* Improved - **Addon card descriptions** rewritten for every addon — benefit-led, concrete, complete sentences with no ellipsis truncation.
422 -* Improved - **License banner** on the Addons page now correctly reflects the new Personal-tier-is-free model: free users see "Get Easy Invoice Pro", Pro-installed-without-license users see "Activate License to unlock Professional / Agency".
423 -* Improved - **Item Library** + **Template Builder** pages now appear only in the in-app sidebar (under the Addons menu) — the duplicate WordPress admin submenu entries were hidden so users don't see the same link twice.
424 -* Improved - **Export All** buttons on invoice, quote, payment, and client list screens are now gated on the `bulk_operations` addon. Free users still see the upsell button; Pro-without-addon hides it cleanly.
425 -* Improved - **Templates moved** into per-addon folders (`addons/{slug}/templates/`) so each addon owns its UI alongside its logic.
426 -* Internal - Five settings controllers had bottom-of-file `register()` calls that fired on autoload regardless of addon state. Removed; registration now happens only inside the addon wrapper.
427 -* Internal - **AddonRegistry** is now the single source of truth for all 16 addons; the Free vs Pro page, addons grid, sidebar, and notice-suppression list all derive from it.
247 += 2.4.0 - September 11, 2026 =
248 +A large release; read the upgrade notice before updating. The full, itemised list (about 190 entries) is in changelog.txt.
428 249
429 -= 2.2.1 - May 15, 2026 =
430 -* Fixed - **PDF download quality**. Invoice / quote PDFs now render with crisp text and sharp table borders instead of soft, slightly-blurry output. Specifically:
431 - - html2canvas capture scale bumped from 1.5x to 2x (matches retina pixel density).
432 - - Switched the embedded bitmap from JPEG @ 0.92 to lossless PNG so text edges and table grid lines no longer suffer JPEG colour-fringe artefacts.
433 - - Locked the capture viewport to the document's own layout width so responsive CSS can't shrink columns mid-capture.
434 - - Enabled jsPDF FlateDecode compression and the slow / higher-quality addImage compression flag — file sizes stay reasonable despite the higher resolution.
435 -* Internal - JS cache buster bumped so browsers pick up the new `document-pdf.js` on first reload after upgrade.
250 +**Security**
251 +* Invoices and quotes were readable, and enumerable, by anyone with the URL, including drafts. Every document now needs a per-document access key (`?ik=` / `?qk=`) carried by emailed links, a signed-in client, or an admin. Links emailed before keys existed show a page offering to email a fresh keyed link to the address the document was issued to; nothing is shown and drafts are never offered.
252 +* Payment endpoints, PDF-download nonces, the payment callback, proof-of-payment file names and the migration "skip" link all authorise properly; Pro card gateways no longer bypass the authorisation check. Stored XSS through a client's profile into the builders fixed. Every output is escaped at the point it is printed; all redirects go through `wp_safe_redirect`.
436 253
437 -= 2.2.0 - May 13, 2026 =
438 -* Added - **Export Selected (Pro)** option in the Bulk Actions dropdown on both Invoice and Quote listings — visible to all users so the feature is discoverable. Pairs with the existing **Send Email (Pro)** option.
439 -* Added - When Easy Invoice Pro is inactive, picking either Pro-gated bulk action now opens the project's existing Upgrade-to-Pro dialog with feature-specific copy (handled by the new `bulk-send-email-teaser.js`). When Pro is active, Pro's own handlers take over and actually run the action behind a Confirm dialog.
440 -* Improved - All Pro-gated submit interceptors moved to native **capture-phase** event listeners so they win against the listing template's own inline jQuery submit handlers (which previously raced our handlers and showed a generic "Confirm Action" prompt on the Quote listing).
441 -* Improved - Settings → Payment now shows a clean "Unlock more payment gateways" teaser block when Pro is inactive, listing every Pro gateway with one-click upgrade links.
442 -* Fixed - Quote listing search form posted to a non-existent page slug (`easy-invoice-quotes-all`); now correctly posts to `easy-quote-all`, so picking a value from the client filter no longer redirects to "you are not allowed".
443 -* Fixed - Default Invoice / Quote email body shipped a leftover `<strong>Shortcode:</strong> <code>[easy_(invoice|quote)_url …]</code>` reference line that got emailed to clients as raw text. The line is removed from the defaults, and a one-time migration strips it from already-saved options.
254 +**New**
255 +* Server-side PDF rendering (dompdf, now bundled): real, text-based PDFs in every design, A4 / Letter / Legal, optional PDF attachment on invoice emails, page numbers on multi-page documents.
256 +* Credit notes against issued invoices, statements of account per client, and issued invoices can no longer be deleted permanently (trash still works).
257 +* REST API at `easy-invoice/v1` (invoices, quotes, clients, PDF download), authenticated and capability-checked; responses never expose access keys.
258 +* Cross-border tax: reverse charge and export handling, VAT identifiers for both parties with VIES checking, EN 16931 tax categories.
259 +* Import from Sliced Invoices, Sprout Invoices and CSV. Attachments from the media library on invoices and quotes. Client-view tracking (first and latest view, count). Convert-to-invoice on each quote row. Clients search box. Uninstall routine that keeps your data unless told otherwise.
260 +* New hooks and filters for addons: `easy_invoice_quote_total`, `easy_invoice_presented_access_token`, `easy_invoice_reports_after_summary`, `easy_invoice_email_headers`, `easy_invoice_client_view_after_details`, `easy_invoice_credit_note_actions`, `easy_invoice_text_setting` and others.
444 261
445 -= 2.1.22 - May 13, 2026 =
446 -* Added - **Filter by Client** dropdown on both **All Invoices** and **All Quotes** listing pages. Persists through view-tab switches, search, pagination, and status-filter chips so you can drill into a single client's history in two clicks.
447 -* Improved - Listing controllers now emit the available clients list and the selected `client_id` to the template, exposing a clean extension point for Pro modules.
262 +**Documents and designs**
263 +* Every invoice and quote design reset and tidied; the public page is a real WordPress page laid out as an A4 sheet, themeable from `{theme}/easy-invoice/`. "Total Due" in every header; Credit note / Paid / Balance due rows once anything is paid; the "To" block names the contact, phone and VAT number; totals rows read in calculation order; the Legacy design prints Terms & Conditions; Minimal quote markup fixed.
264 +* Stock emails rewritten as plain business correspondence; receipts and payment notices correct for partial payments; "Test Template" works; emails sign off with the business name.
448 265
449 -= 2.1.21 - May 11, 2026 =
450 -* Added - "Documentation" link in the Easy Invoice plugin sidebar (under Join Community) that opens the new official documentation site at https://easy-invoice.matrixaddons.com/docs/
451 -* Updated - All in-plugin documentation references now point to the new dedicated docs site (https://easy-invoice.matrixaddons.com/docs/) instead of the legacy URL
452 -* Updated - readme.txt documentation links refreshed across Description, Installation, FAQs and Support sections
266 +**Fixes (selection)**
267 +* Correctness: duplicate invoice, quote and credit-note numbers under concurrent use; negative totals from oversized discounts; line amounts that did not add up to the subtotal; dates defaulting to UTC instead of the site's timezone; taxable state of new lines; "Apply Tax" that could not be switched off; quotes that never expired; acceptance and decline details never saved; quote conversion producing empty lines; customer details dropped on save; attachments that could not be removed.
268 +* Payments: overdue and part-paid invoices could not be paid from their page; a part-paid or credited invoice asked for the full amount again; PayPal IPN left invoices unpaid; bank transfer, cheque and cash from emailed links were refused; "Add New Payment" could not record a payment; trashing or restoring payments left the invoice status untouched; failed or refunded payments put issued invoices back to Draft.
269 +* Admin: team members could not open any screen; the admin was unusable on phones; Dashboard Edit/View links, the invoice list status filter, Reports totals and date ranges, the "Delete client only" option (it deleted the documents), settings image fields, colours that never rendered, sideways-scrolling lists, keyboard and touch access to row actions, about 140 untranslatable strings.
270 +* Performance: invoice totals are stored (dashboard, lists, reports and statements no longer rebuild every model); admin screens that took 30–40 s on a few thousand invoices open in under a second; the Overdue filter, Add Payment picker and payments totals answered from single queries (10,000-invoice stores: 19 s → 3 s); rewrite rules no longer flushed on every request; the admin loads 47 KB of CSS instead of 2.8 MB.
271 +* Packaging: all CDN assets (jsPDF, html2canvas, Chart.js, Select2) bundled; Composer dependencies resolved for PHP 7.4; dead classes, duplicate AJAX registrations and an endpoint that fataled removed; addon descriptions corrected to what is actually implemented.
453 272
454 -= 2.1.20 - April 29, 2026 =
455 -* Security: Manual payment proof uploads now validate file contents with WordPress APIs (`wp_check_filetype_and_ext`) and store only a safe extension; client-supplied multipart MIME types and filenames are not trusted.
456 -* Security: Quote accept and decline (AJAX and POST forms) use a per-quote nonce and load published quotes for non-administrators, preventing cross-quote reuse of a nonce and blocking actions on non-published quotes for guests.
457 -* Security: Unauthenticated payment-instructions AJAX only applies to published invoices.
458 -* Security: Send invoice and send quote email AJAX use a single handler with published-document checks for guests; removed duplicate AJAX registration that could double-send or bypass publication checks.
273 += 2.3.8 - August 21, 2026 =
274 +* Compatibility - **Tested and confirmed compatible with WordPress 7.1.** "Tested up to" bumped from 7.0. The release was audited against the 7.1 codebase rather than smoke-tested: every WordPress function the plugin calls was resolved against the 7.1 symbol table (no removed or renamed API is used), the plugin's global function, class and constant names were diffed against the 92 functions and 5 classes 7.1 introduces (no redeclaration collisions), and the full plugin tree was scanned with PHPCompatibility for PHP 7.4 through 8.4 (zero issues).
275 +* Compatibility - **jQuery UI 1.14.2** ships in WordPress 7.1 (up from 1.13.3). The payment-gateway drag-to-reorder list on Settings -> Payment uses `.sortable()` and `.disableSelection()`; both remain available because core enables `jQuery.uiBackCompat` and still bundles the disable-selection module. The four APIs 1.14 removed (`$.fn._form`, `$.ui.ie`, `$.ui.safeActiveElement`, `$.ui.safeBlur`) are not used anywhere in the plugin.
276 +* Compatibility - **The enforced iframed post editor in 7.1 does not affect Easy Invoice.** Invoices and quotes are edited through the plugin's own admin screens; their post types register with `show_ui => false` and the one UI-visible post type does not declare `editor` support, so no plugin JavaScript or CSS reaches across the editor document boundary.
277 +* Compatibility - Admin styling verified against 7.1 markup: the `#adminmenu`, `#adminmenuwrap`, `#adminmenuback`, `#wpcontent`, `#wpbody-content` and `#wpfooter` containers the plugin restyles are all still emitted by `wp-admin/admin-header.php` and `menu-header.php` in 7.1, and the persistent admin toolbar change touches `#wpadminbar`, which the plugin does not style.
278 +* Compatibility - The REST and media changes in 7.1 (image dimension validation on the sideload endpoint, size-aware encoding quality in attachment responses) are not applicable: the plugin's REST routes are its own (no media, sideload or attachment endpoints) and it calls no attachment or sideload APIs.
279 +* Fixed - **Payment-gateway drag-to-reorder relied on incidental script ordering.** The `easy-invoice-settings` script handle is registered in two different places, and WordPress keeps whichever registration runs first while silently discarding the other's dependency array. The registration that wins did not list `jquery-ui-sortable`, so `settings.js` was printed ahead of jQuery UI Sortable and only worked because its code runs inside a DOM-ready callback. The jQuery UI handles are now declared explicitly on that registration, so `wp_scripts` resolves the load order instead of it falling out of enqueue sequence - worth tightening now that 7.1 ships a new jQuery UI build.
459 280
460 -= 2.1.19 - April 27, 2026 =
461 -* Minor UI issue fixed
462 -* Minor bug fixed on both plugins
281 += 2.3.7 - June 29, 2026 =
282 +* Fixed - **Invoice and Quote listing "Download PDF" button** could leave the user stranded on a blank `admin-ajax.php?action=easy_invoice_generate_pdf...` page instead of downloading the PDF. Root causes on affected sites included page-cache layers (WP Rocket, LiteSpeed, Cloudflare) replaying stale responses of the intermediate admin-ajax URL, security plugins / WAFs stripping the redirect body, and cross-tab session-cookie behaviour (Safari ITP, `SameSite=Strict`) dropping the WP session between the click and the new tab. Two coordinated changes address this:
283 + 1. **The button no longer routes through admin-ajax.** The anchor's native href already points directly at `<invoice-permalink>?auto_download_pdf=1`, and the single-page JS renders the PDF from there. Removing the click interceptor collapses three server round-trips into one and sidesteps every intermediate-hop failure mode. No security posture change — the destination is the same public permalink the hop was going to anyway.
284 + 2. **The server-side download handlers are hardened for any external caller.** `generateInvoicePdf` and `generateQuotePdf` now accept an admin session or a valid per-document access key (`?ik=` / `?qk=`) as alternate authorisation paths when the per-request nonce fails, emit explicit `Cache-Control: no-store` headers to defeat intermediate caching, and fall back to a client-side redirect (`<meta refresh>` + `window.location.replace`) when the server-side redirect can't fire because upstream output already flushed the response headers. Email download links, dashboard widgets, and any other integration calling these endpoints directly benefit from the same hardening.
463 285
464 -= 2.1.18 - April 21, 2026 =
465 -* Maintenance - Version bump release
286 += 2.3.6 - June 26, 2026 =
287 +* Security - Tightened the capability check on the AJAX payment-update endpoint so only users with the dedicated payment-management permission can change payment records or invoice status. **All sites should update.**
288 +* Security - The `[easy_invoice_url]` and `[easy_quote_url]` shortcodes no longer generate per-document access keys for arbitrary visitors. Keys are now produced only when an invoice or quote email is sent; the shortcodes attach an existing key only when the current viewer is the site admin, the bound client, or already holds the key in the page URL.
289 +* Fixed - The bound-client authorisation path on quote Accept / Decline and invoice manual-payment submission silently never succeeded for logged-in customers. The guard relied on PHP's `method_exists()` which returns false for `__call`-resolved methods, and both the Invoice and Quote models resolve `getClientId()` that way. Logged-in clients whose email matches the document's bound client are now correctly recognised. (Admin and emailed-link paths were unaffected.)
290 +* Note - Emailed `{{invoice_url}}` and `{{quote_url}}` links continue to work unchanged for the legitimate recipient. The shortcode change is invisible for admin embeds on admin-context pages; on public pages the shortcode now renders a plain permalink for visitors who don't already hold a valid key (they can still view the document — only the Accept / Decline / submit-manual-payment paths require the key).
466 291
467 -= 2.1.17 - April 17, 2026 =
468 -* Fixed - Client PDF download: long invoice/quote HTML no longer produces blank or truncated PDFs (JPEG/PNG mismatch fixed; browser canvas limits handled; tall content captured in slices and split across A4 pages)
469 -* Fixed - PDF page breaks align to table row and summary block boundaries so line items are not cut in half across pages (row-aware cropping)
292 += 2.3.5 - June 26, 2026 =
293 +* Security - Hardened authorisation on the manual-payment submission flow. **All sites should update.**
294 +* Improved - Invoice share links emailed to clients (`{{invoice_url}}` in email templates, `[easy_invoice_url]` shortcode) now carry a per-invoice access key. Recipients of these links can submit "I paid by bank transfer / cheque" entries as before — no extra steps for the customer.
295 +* Note - Invoice links generated **before** this update will still load and display the invoice and accept online gateway payments (Stripe / PayPal / etc.). The manual-payment submission form appears only after the admin resends the invoice (which produces a new link) or after the client logs in to the WordPress account whose email matches the invoice's bound client. Admins are unaffected — the form is always available from the admin UI.
296 +* Fixed - Race condition under high concurrency where two simultaneous invoice (or quote) creates could be assigned the same number. The counter read-check-write is now serialised via a MySQL named lock; the lock auto-releases on connection close so it cannot leak across requests.
297 +* Added - License recognition for the new Professional Lifetime and Agency Lifetime SKUs so customers on those plans are correctly placed in their tier and see the matching variant label on the License page.
470 298
471 -= 2.1.16 - April 16, 2026 =
472 -* Fixed - Quote builder item total now correctly applies Adjust (%) in real-time calculation
473 -* Fixed - Tax now only applies to items with the Taxable checkbox checked (both Invoice and Quote builders)
474 -* Fixed - Discount Calculation Method (Before Tax / After Tax) now works correctly in both builders
475 -* Fixed - Price Includes Tax setting is now respected in all tax calculations
476 -* Fixed - Calculation Method field correctly reads discount_calculation_method instead of incorrect radio selector
477 -* Fixed - Invoice builder payment manager fallback now correctly finds quote items (.quote-item class)
478 -* Fixed - Invoice discount type None now correctly returns zero discount
479 -* Fixed - Division by zero guard added in tax discount ratio calculation
480 -* Fixed - InvoiceRepository now correctly saves discount_calculation_method from form submission
481 -* Improved - Quote form event listeners now respond to Taxable checkbox, Calculation Method, and Price Includes Tax changes
482 -* Fixed - Invoice adjust field setting now properly controls the adjust field display in Invoice Builder
483 -* Fixed - Corrected method calls to use shouldShowInvoiceAdjustField() instead of shouldShowQuoteAdjustField()
484 -* Improved - Invoice Builder now correctly responds to Show/Hide Adjust Field setting
485 -* Fixed - Adjust field calculations now completely ignored when Show/Hide Adjust Field setting is disabled
486 -* Fixed - JavaScript calculations now respect adjust field setting via localized showAdjustField property
487 -* Fixed - Invoice and Quote models now check adjust field setting before applying adjustment calculations
488 -* Fixed - QuoteItem::getAmount() now respects shouldShowQuoteAdjustField() setting for real-time live preview
489 -* Fixed - InvoiceItem::getAmount() now respects shouldShowInvoiceAdjustField() setting for real-time live preview
299 +Older releases (2.3.4 back to 1.0) are listed in changelog.txt inside the plugin folder and at https://github.com/matrixaddons/easy-invoice/blob/master/changelog.txt.
490 300
491 -= 2.1.15 - April 16, 2026 =
492 -* Fixed - Invoice adjust field setting now properly controls the adjust field display in Invoice Builder
493 -* Fixed - Corrected method calls to use shouldShowInvoiceAdjustField() instead of shouldShowQuoteAdjustField()
494 -* Improved - Invoice Builder now correctly responds to Show/Hide Adjust Field setting
301 +== Upgrade Notice ==
495 302
496 -= 2.1.14 - March 31, 2026 =
497 -* Improved - Invoice and quote builder experience: Editor/Preview shell tabs, localized send-email confirmation, header title aligned with the document title field, dismissible mobile hint, and unsaved-changes warning when leaving the page
498 -* Added - Accessible labels on invoice and quote form section navigation
303 += 2.4.2 =
304 +Offline payments (bank transfer, cheque, cash) now work end to end, with receipts and a confirm/reject step. Also fixes a PayPal payment smaller than the total marking an invoice paid. Coming from 2.3.x? Read the 2.4.0 notice and back up first.
499 305
500 -* Improved - Table sorting functionality to handle new column structure
501 -* Fixed - Client name display logic for better clarity and organization
306 += 2.4.1 =
307 +Small follow-up to 2.4.0: public documents fit phone screens in every design, and the payment script no longer loads on every front-end page. If you are coming from 2.3.x, read the 2.4.0 notice below and back up first.
502 308
503 -= 2.1.13 - March 22, 2026 =
504 -* Improved - User experience with better visual hierarchy
505 -* Fixed - Minor styling issues in pricing display
309 += 2.4.0 =
310 +Large release: invoice and quote links now need a per-document access key (old links get a page offering a fresh one); issued invoices can only be trashed; PDFs render on the server; public pages are real WordPress pages (theme overrides: {theme}/easy-invoice/). Update Pro to 2.3.0. Back up first.
506 311
507 -= 2.1.12 - March 13, 2026 =
508 -* Fixed - Minor issues fixed
509 -* Added - Promotional notice
312 += 2.3.9 =
313 +Security release: invoices and quotes were readable and enumerable by anyone with a URL; access is now checked before anything is rendered. Update as soon as possible.
510 314
511 -= 2.1.11 - February 22, 2026 =
512 -* Fixed - Minor issues fixed
513 -
514 -= 2.1.9 - February 15, 2026 =
515 -* Fixed vendor dependency issue affecting plugin initialization
516 -* Improved compatibility with latest WordPress version
517 -
518 -= 2.1.8 - February 15, 2026 =
519 -* Added custom CSS section for each template
520 -* Enhanced template flexibility for developers
521 -
522 -= 2.1.7 - December 15, 2025 =
523 -* Fixed quote accept and decline functionality
524 -* Improved quote workflow reliability
525 -
526 -= 2.1.6 - December 11, 2025 =
527 -* Tested and confirmed compatibility with WordPress 6.9
528 -* Performance optimizations
529 -
530 -= 2.1.5 - November 20, 2025 =
531 -* Fixed template loading issue
532 -* Improved template rendering performance
533 -
534 -= 2.1.4 - November 11, 2025 =
535 -* Fixed email sending issues with SMTP configurations
536 -* Improved HTML tag support in textarea fields
537 -* Fixed empty data saving issue in description fields
538 -
539 -= 2.1.3 - November 3, 2025 =
540 -* Added review notice
541 -* Added community link for support
542 -
543 -
544 -= 2.1.2 - October 30, 2025 =
545 -* Fixed phone number formatting and validation
546 -* Fixed shortcode rendering issues
547 -* Fixed fatal error during email sending
548 -
549 -= 2.1.0 - October 13, 2025 =
550 -* Enhanced data escaping for security
551 -* Strengthened input sanitization
552 -
553 -= 2.0.9 - August 30, 2025 =
554 -* Fixed quote and invoice auto-increment number generation
555 -* Added regeneration feature for quote and invoice numbers
556 -
557 -
558 -= 2.0.8 - August 30, 2025 =
559 -* Updated checkout link for improved payment flow
560 -
561 -= 2.0.7 - August 17, 2025 =
562 -* Fixed minor UI and functionality issues
563 -* Fixed trash button behavior
564 -
565 -= 2.0.6 - August 27, 2025 =
566 -* Fixed quote acceptance workflow
567 -
568 -
569 -= 2.0.5 - August 24, 2025 =
570 -* Fixed date format display issues
571 -* Fixed various minor bugs
572 -
573 -= 2.0.4 - August 21, 2025 =
574 -* Fixed currency symbol display issues
575 -* Fixed quote line items calculation
576 -
577 -= 2.0.3 - August 19, 2025 =
578 -* Fixed data migration from version 1.x to 2.0
579 -
580 -= 2.0.2 - August 19, 2025 =
581 -* Various bug fixes
582 -* Added legacy template support
583 -
584 -= 2.0.1 - August 16, 2025 =
585 -* Fixed currency formatting and display
586 -* Fixed PDF size and rendering
587 -* Fixed email sending functionality
588 -* Added {{quote_url}} and {{invoice_url}} smart tags
589 -
590 -[View complete changelog](https://matrixaddons.com/plugins/easy-invoice/#changelog)
591 -
592 -== Upgrade Notice ==
315 += 2.3.8 =
316 +WordPress 7.1 compatibility release. Verified against the 7.1 codebase and PHP 7.4-8.4, plus a fix for payment-gateway drag-to-reorder script ordering on the Settings screen.
593 317
594 318 = 2.1.9 =
595 319 Important update fixing vendor dependencies. Recommended for all users.
596 320