=== Easy Invoice – Invoice Generator, PDF Quotes & Payments === Contributors: matrixaddons Tags: invoice, pdf invoice, quotes, billing, payment gateway Requires at least: 6.0 Tested up to: 7.1 Requires PHP: 7.4 Stable tag: 2.4.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Invoices, quotes, PDFs and payments inside WordPress. Unlimited documents, PayPal, credit notes, statements and a REST API — free. == Description == **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. 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. [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/) https://www.youtube.com/watch?v=a_0BnBpl0y0 = What the free plugin does = **Invoices and quotes** * Unlimited invoices and quotes, with automatic numbering and your own prefix — numbers stay unique even when two people save at the same moment * Line items with quantities, per-line or global tax, and discounts calculated before or after tax * Convert an accepted quote into an invoice in one click; clone any document * Credit notes against issued invoices; client statements with running balances * Notes, terms, due dates and payment instructions per document; default terms in Settings **PDF and print** * PDFs are rendered on the server (real, selectable text) with your logo and business details * Nine document designs: default, modern, classic, minimal, corporate, professional, elegant, creative and legacy * Rename any label ("Grand Total", "Net", your language) without touching code * Download from the admin, from the public invoice page, or through the REST API **Getting paid** * PayPal checkout with a Pay Now button on every invoice * Bank transfer, cheque and cash recorded against the invoice — clients can upload proof of a transfer or cheque for you to approve * Payment history with partial, paid and overdue states * A custom Pay Now link for any other provider **Clients** * Unlimited client records with billing details and a complete per-client history * Invoice and quote emails with the PDF attached, from templates you edit * 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 * Import from Sliced Invoices or Sprout Invoices in one click, or from CSV files with downloadable templates **Localisation** * 121 currencies, with symbol, position, decimals and separators set per document * Dates in the site's timezone; translation-ready (text domain `easy-invoice`) * Multisite compatible **For developers** * REST API for invoices, quotes, clients and PDFs — [API reference](https://easy-invoice.matrixaddons.com/docs/api-reference) * Migration from Sliced Invoices and Sprout Invoices built in * Actions and filters at every step; documents are custom post types you can query * WordPress coding standards, escaped output, prepared SQL, nonce-protected actions * Tested with 10,000 invoices and 10,000 quotes on one site: every admin screen stays under a second = Easy Invoice Pro: 26 addons, switch on what you need = [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. **Personal — 16 addons, on as soon as Pro is installed (no licence key needed to use them)** * [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 * [Partial Payments & Deposits](https://easy-invoice.matrixaddons.com/docs/addons/partial-payments/) — require a deposit, let clients pay the balance in instalments * [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 * [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 * [Custom Invoice & Quote Templates](https://easy-invoice.matrixaddons.com/docs/addons/custom-templates/) — a visual builder for your own layouts * [Item Library](https://easy-invoice.matrixaddons.com/docs/addons/item-library/) — saved products and services with price and SKU, inserted in one click * [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 * [Additional Tax Lines](https://easy-invoice.matrixaddons.com/docs/addons/additional-tax/) — unlimited named taxes per invoice (VAT + duty, GST + PST, federal + state) * [Email Enhancements](https://easy-invoice.matrixaddons.com/docs/addons/email-enhancements/) — your own HTML email layout; replies routed by kind * [Secure Links](https://easy-invoice.matrixaddons.com/docs/addons/secure-links/) — signed, expiring document URLs * [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 * [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 * [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 * [WooCommerce Invoicing](https://easy-invoice.matrixaddons.com/docs/addons/woocommerce/) — an invoice for every paid order; refunds become credit notes * [Reports & Analytics](https://easy-invoice.matrixaddons.com/docs/addons/reports/) — revenue, outstanding balances, per-client performance, month-by-month profit and loss * [Privacy & GDPR](https://easy-invoice.matrixaddons.com/docs/addons/privacy-tools/) — client documents included in WordPress personal-data export and erasure requests **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. **Professional — 6 more addons, with a Professional licence** * [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 * [Expense Tracking](https://easy-invoice.matrixaddons.com/docs/addons/expense-tracking/) — billable expenses with receipts and markup, rolled into invoices * [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 * [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 * [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 * [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 **Agency — 4 more addons, with an Agency licence** * [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 * [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 * [Accounting Sync](https://easy-invoice.matrixaddons.com/docs/addons/accounting-sync/) — QuickBooks Online, Xero and FreshBooks: invoices push out, payment status comes back * [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 [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. = Who uses Easy Invoice = * **Freelancers** — quote, invoice and collect payment from one screen * **Agencies and studios** — per-client history, statements, deposits and a client portal * **Shops and B2B sellers** — proper invoices for WooCommerce orders and everything the cart can't bill * **Consultants and service firms** — billed hours, expenses, retainers and e-invoices for larger customers = Privacy = 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. = Translations = 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/). == Installation == 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**.) 2. Open **Easy Invoice → Settings** and enter your business name, address, logo, currency and default terms. 3. Under **Settings → Payments**, connect PayPal and/or enable bank transfer, cheque and cash. 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. **Requirements:** WordPress 6.0 or newer, PHP 7.4 or newer. Any properly coded theme or page builder. **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. == Frequently Asked Questions == = Is the free plugin limited in any way? = 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. = Which payment methods can clients use? = Free: PayPal, plus bank transfer, cheque and cash recorded against the invoice (clients can upload proof for you to approve). Pro adds Stripe, Square, Authorize.Net, Mollie, Paystack and Moneris. You can also put any provider's payment link on the invoice. = Are there transaction fees? = None from Easy Invoice. Your payment gateway charges its own fees. = Can clients pay in instalments, or pay a deposit first? = Yes, with the Partial Payments & Deposits addon (Pro, Personal tier). = Can I set up recurring invoices? = 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. = Can I customise the invoice design? = 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. = Can I issue a credit note or a statement? = 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. = Are invoice links safe to email? = 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. = I see "Page not found" when opening an invoice. = Go to **Settings → Permalinks** and click **Save Changes** once — this refreshes WordPress's URL rules. If you use a caching plugin, clear its cache. = Can I import data from another invoicing plugin or a spreadsheet? = 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. = Does it work with WooCommerce? = 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. = Does it work on multisite? = Yes. Each site keeps its own invoices, clients and settings. = Is there a REST API? = Yes — invoices, quotes, clients and PDFs, authenticated with WordPress application passwords. See the [API reference](https://easy-invoice.matrixaddons.com/docs/api-reference). = How does the Pro addon system work? = 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. = What if I update Pro before the free plugin? = 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. = What happens to my data if I stop paying for Pro? = 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. = How do I report a security issue? = 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/). = Where do I get help? = 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/). == Screenshots == 1. Dashboard — outstanding, paid and overdue at a glance, monthly revenue and recent invoices 2. Invoices — filters by status, search, bulk actions and pagination that stays fast with thousands of documents 3. Invoice builder — client, line items, taxes and discounts with a live preview of the chosen design 4. Public invoice page — what the client sees from the emailed link, with the Pay Now button 5. Quotes — status filters, conversion to invoice, expiry tracking 6. Quote builder — the same editor, with expiry date and acceptance flow 7. Payments — every payment with method, status and the invoice it settles 8. Clients — records with contact details, document counts and balances 9. Settings — business details, logo, currency, taxes, email templates and payment methods == Changelog == = 2.4.0 - September 11, 2026 = * 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; the sheet now uses phone margins, item names wrap and the figures stay on one line, so every design fits a 360px screen (narrower screens scroll the table sideways). * Performance: the payment script (and the jQuery it needs) loaded on every page of the site; it now loads on the public invoice page only. Filter `easy_invoice_load_payment_assets` to add pages. * Change: a link emailed before access keys existed no longer dead-ends at "not found": it shows a page (no document data) offering to email a fresh keyed link to the address the document was issued to — one click for the customer, nothing for the merchant to do. Rate-limited; drafts are never offered. * Fix: the quote list's header cards (total quotes, value by currency, accepted, pending) counted only the 20 rows on screen; they now cover the whole store, from stored quote totals. * Fix: searching the quote list by quote number, client name or email returned nothing; only title text matched. * Performance: the invoice list's Overdue filter, the Add Payment form's invoice picker, the payments list totals and the site-wide outstanding/revenue figures are answered from single SQL passes (10,000-invoice stores: Overdue filter 19 s → 3 s, Add Payment 2 s → 0.4 s). * Fix: two builders open at the same time could save two invoices (or quotes) with the same number — the number the page showed on load overwrote the one claimed on save. Quotes were affected on every concurrent save. * Fix: quote builder client search ignored a name typed while the initial "all clients" list was still loading. * Fixed - **"Apply Tax to This Invoice" could never be switched off.** The builder omits an unchecked box from its request and the form processor treated "absent" as "unchanged", so with tax enabled globally every new invoice came back taxed and unticking the box on an existing one was silently ignored. Absent now means unchecked, as the browser intends. * Fixed - **A discount could make an invoice or quote total negative.** A percentage above 100 or a fixed amount larger than the subtotal was accepted and produced a negative total (and a negative balance due). Both builders now refuse a percentage over 100 or a negative discount with a clear message, the message itself is shown in the toast instead of "Validation failed", and the models cap any discount at the amount it is taken from. * Performance - **Invoice totals are now stored.** Until now a total only existed while a model was in memory, so the invoice list header, the dashboard, the clients page and the reports loaded every open and every paid invoice as a full model on each view — 20 s and 88 MB with 1,200 invoices, and out of memory at a few thousand. `InvoiceTotalsCache` persists the computed total on save, backfills older invoices in the background (a one-off cron job; nothing to run by hand), drops a total when its inputs change (items, discount, tax fields, the global tax settings) and rebuilds everything when the arithmetic itself changes. Those screens now sum in SQL, with the site-wide figures memoised until the next invoice, payment or credit note write. Verified on 2,300 invoices added through the builder: list 20 s → under a second of plugin time, 88 MB → 12 MB. * Fixed - The invoice list's "Total Invoices" card and "All (n)" tab showed the size of the current page (20) instead of the real count, and counted trashed and draft invoices by loading every one of them. * Fixed - **Overdue and partially paid invoices could not be paid from their public page.** The payment panel only offered methods while the status was "available" or "unpaid", so an overdue invoice — the one a client most needs to settle — showed "Payment methods are not configured". Every status that still carries a balance now offers the configured methods (`easy_invoice_payable_statuses` filter). The panel also no longer throws a script error when no method is available. * Fixed - After saving a brand-new invoice or quote the address bar never gained the document id, so a refresh reopened a blank builder and a second Save created a duplicate. The id is now written into the URL as soon as the save succeeds. * Performance - Payments → Add New Payment built a full model for every published invoice on the site to fill its drop-down; on a store with thousands of invoices that was tens of seconds and hundreds of megabytes. It now lists open invoices only (newest 300, filterable, `easy_invoice_payment_form_invoice_limit`), shows the balance still due, and preselects `?invoice_id=`. * Performance - The invoice and quote builders loaded every client on the site into a hidden mirror `