Description
PhilDesigns Clean Invoices handles the full billing workflow from within your WordPress dashboard — build invoices with line items, generate PDFs, email clients, collect partial or deposit payments, track billable hours, log deductible business expenses, and estimate what you’ll owe on 1099 income, without relying on any third-party invoice service.
Features
- Invoice creation with configurable prefix and auto-incrementing numbers (e.g. INV-0001)
- Line items with description, optional sub-detail, quantity, rate, and auto-calculated amounts
- Tax rate (per-invoice or global default), optional shipping, subtotal, and total
- Invoice statuses: Draft, Sent, Partial, Paid, Overdue — with colour-coded badges
- PDF generation, browser preview, and download
- Send invoice by email to client with PDF attached; test email sends only to you
- Customisable email templates for invoices and payment receipts with placeholder tokens
- BCC on all outgoing invoice emails
- Payment history per invoice — record deposits, installments, and payments individually; status updates automatically from Sent Partial Paid
- Send payment receipt to client when an invoice is paid
- Time tracker with start/stop timer, persistent state, inline editing, and entry merging
- Admin bar quick-timer accessible from any page in the dashboard or front end
- Add tracked time directly to an invoice as a line item
- Client management — name, company, email, phone, and full address
- Expense tracking with vendor, amount, business-use %, Schedule C category references, and an optional receipt upload (PDF or image)
- CSV export of all invoices for a selected year
- Sales and revenue report with monthly breakdown, cash-received-by-month, and expenses by category
- Estimated tax liability panel — cash received minus deductible expenses, times your own flat rate
- Downloadable CPA Tax Summary PDF — income, expenses, and a full year-end ledger in one file
- Dashboard widget showing outstanding invoices and year-to-date revenue
Screenshots










Installation
- Upload the
clean-invoicesfolder to/wp-content/plugins/. - Activate the plugin through the Plugins menu in WordPress.
- Go to Invoices Settings and fill in your company details, logo, and email preferences.
- Go to Invoices Clients and add your clients.
- Go to Invoices Add New to create your first invoice — select a client, add line items, and save to auto-assign an invoice number.
- Use the Send & Actions sidebar to preview the PDF, send the invoice, record a payment, or send a receipt.
- To track time, go to Invoices Time Tracker, start the timer, then use Add to Invoice to append logged hours as a line item.
- To track expenses, go to Invoices All Expenses Add Expense, then check the estimated tax panel and download the CPA Tax Summary PDF from Invoices Reports.
FAQ
-
Does this plugin require any third-party services?
-
PDF generation uses the FPDF library, which is bundled with the plugin. QR codes for Venmo/Zelle payment options are generated locally as well. No external services are contacted.
-
Will my data be deleted if I deactivate the plugin?
-
No — invoice, client, and expense data remains in your database when the plugin is deactivated. Uninstalling the plugin removes all plugin data, including expenses, uploaded receipt files, and settings.
-
Can I customise the invoice layout?
-
Invoice content is configurable through Settings (company details, logo, payment options, thank-you message). The PDF layout is generated by FPDF.
-
Are partial payments supported?
-
Yes — you can record deposits, installments, and payments individually. The invoice status updates automatically: Sent Partial Paid as the balance is paid down.
-
What data is stored per invoice?
-
Invoice number, client, date, due date, line items, tax, shipping, total, status, payment history, and notes. Client data includes name, company, email, phone, and address.
-
What data do the expenses store?
-
Each expense records a date paid, vendor, amount, category (with a Schedule C line reference), business-use percentage, an optional receipt/reference number, an optional uploaded receipt file, and optional notes. The deductible amount (amount × business-use %) is calculated on the fly and is never stored separately, so it always matches what’s shown on the Reports page and in the CPA Tax Summary PDF.
-
Are uploaded receipts publicly accessible?
-
No. Receipt files are stored outside the normal Media Library, in an uploads subfolder that is blocked from direct web access. Each receipt is reachable only through a link containing a long random token, similar to a file-sharing link. That link, not a WordPress login, is what grants access, which lets the CPA Tax Summary PDF work for an accountant who doesn’t have an account on your site. Treat those links as sensitive: anyone who has the exact link (or a copy of the PDF) can view that one receipt. Removing a receipt, or trashing the expense it belongs to, deletes the stored file and invalidates its link. The receipt folder is protected with an
.htaccessfile, which servers that ignore.htaccess(such as Nginx) won’t enforce — the random link token still applies there. -
Does this replace my accountant?
-
No. The estimated tax liability panel and the CPA Tax Summary PDF apply a single flat rate you set yourself to cash received minus deductible expenses — they don’t account for tax brackets, credits, self-employment tax specifics, or other income. They’re meant to make handing clean, organised records to your accountant easier, not to replace their advice.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“PhilDesigns Clean Invoices” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “PhilDesigns Clean Invoices” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.4.0
- Added expense tracking: log business expenses with vendor, amount, category, and business-use percentage; categories map to Schedule C line references for your CPA.
- Added receipt uploads on expenses (PDF or image), stored in a protected folder outside the Media Library and opened through a private link.
- Reports page: added an estimated tax liability panel that subtracts deductible expenses from cash received (optional, toggle in Settings), plus Expenses by Category and Cash Received vs Expenses by Month.
- Reports page: the tax estimate uses cash actually received (payment date), not invoice date, so income lands in the year it was actually paid.
- Added a downloadable CPA Tax Summary PDF per year: income, expenses, cash received by month and by client, and a full expense ledger with links to receipts.
- Report year tabs now include any year that has an invoice, a payment, or an expense.
- Reports and the dashboard widget now share one calculation class so their numbers can’t disagree.
- Fixed the internal version constant, which had drifted from the plugin header version.
1.3.2
- Tested on WP version 7.1, no issues detected.
1.3.1
- Renamed bundled third-party classes (
FPDFPHILCLIN_FPDF,PhilClinQRCodePHILCLIN_QRCode) so they can’t collide with another plugin’s copy of the same library. - Unrolled the settings sanitize-callback registration into one explicit
register_setting()call per option.
1.3.0
- Renamed all plugin identifiers (classes, functions, constants, post types, meta/option keys, AJAX actions, script handles) to a distinct
philclin_/PHILCLIN_prefix. - QR codes for Venmo/Zelle payment options are now generated locally instead of via a third-party API — no payment data leaves your site.
- Removed the FPDF remote-download fallback; the bundled PDF library is now used directly.
- Moved all inline
<style>blocks to properly enqueued stylesheets. - Settings fields now use type-specific sanitization (numbers, email, URL, checkbox) instead of one generic sanitizer.
1.2.0
- Added Hourly vs Flat Rate type toggle per line item — click the icon in the line items table to switch between billing modes.
- Flat Rate items display “Flat Rate” in the Qty/Rate columns on the browser preview and generated PDF.
- Added Hours column to the invoice admin list showing total billable hours at a glance.
- Added Total Hours row in the Invoice Details panel on the edit screen; row is hidden automatically when no hourly items are present.
1.1.0
- Added Time Tracker with start/stop timer, persistent state, inline editing, and entry merging.
- Added admin bar quick-timer accessible from any page in the dashboard or front end.
- Added ability to add tracked time directly to an invoice as a line item.
1.0.0
- Initial release.
