{"id":345427,"date":"2026-07-28T21:31:18","date_gmt":"2026-07-28T21:31:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/phildesigns-clean-invoices\/"},"modified":"2026-07-28T21:30:57","modified_gmt":"2026-07-28T21:30:57","slug":"phildesigns-clean-invoices","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/phildesigns-clean-invoices\/","author":6264553,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.1","stable_tag":"1.3.1","tested":"7.0.2","requires":"6.7","requires_php":"7.4","requires_plugins":null,"header_name":"PhilDesigns Clean Invoices","header_author":"PhilDesigns","header_description":"Create, send, and track client invoices from your WordPress dashboard.","assets_banners_color":"6c6b77","last_updated":"2026-07-28 21:30:57","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/phil-designs\/clean-invoices","header_author_uri":"https:\/\/phildesigns.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.1":{"tag":"1.3.1","author":"PDidee","date":"2026-07-28 21:30:57"}},"upgrade_notice":{"1.3.0":"<p>Internal identifier prefix changed from ci_\/CI_ to philclin_\/PHILCLIN_ per WordPress.org review; QR codes now generate locally. If you have existing invoices\/clients\/settings, back up before updating.<\/p>","1.2.0":"<p>Adds Hourly\/Flat Rate line item types, a live hours total in the invoice editor, and a Hours column in the invoice list.<\/p>","1.1.0":"<p>Adds the Time Tracker, admin bar quick-timer, and add-to-invoice workflow.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3626454,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3626454,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3626454,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3626454,"resolution":"1","location":"assets","locale":"","width":2150,"height":1574},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3626454,"resolution":"10","location":"assets","locale":"","width":2772,"height":456},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3626454,"resolution":"2","location":"assets","locale":"","width":2562,"height":1508},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3626454,"resolution":"3","location":"assets","locale":"","width":1751,"height":6221},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3626454,"resolution":"4","location":"assets","locale":"","width":2554,"height":842},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3626454,"resolution":"5","location":"assets","locale":"","width":2759,"height":3036},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3626454,"resolution":"6","location":"assets","locale":"","width":1686,"height":2096},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3626454,"resolution":"7","location":"assets","locale":"","width":882,"height":1156},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3626454,"resolution":"8","location":"assets","locale":"","width":961,"height":1202},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3626454,"resolution":"9","location":"assets","locale":"","width":1420,"height":636}},"screenshots":{"1":"Invoice list with status badges, PDF download, and quick-send actions.","2":"Invoice editor with line items, totals, and the Send &amp; Actions sidebar.","3":"Client address book.","4":"Settings page with company info, payment options, and email templates.","5":"Time Tracker with timer, log table, and add-to-invoice workflow.","6":"Sales and revenue report with monthly breakdown.","7":"Dashboard widget showing outstanding invoices.","8":"Recording a payment \u2014 deposits, installments, or full payment.","9":"Invoice preview."}},"plugin_section":[262246],"plugin_tags":[15149,1151,16236,1764,15154],"plugin_category":[45,50],"plugin_contributors":[272989],"plugin_business_model":[],"class_list":["post-345427","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-billing","plugin_tags-clients","plugin_tags-invoices","plugin_tags-pdf","plugin_tags-time-tracking","plugin_category-ecommerce","plugin_category-media","plugin_contributors-pdidee","plugin_committers-pdidee"],"banners":{"banner":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/banner-772x250.png?rev=3626454","banner_2x":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/banner-1544x500.png?rev=3626454","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/icon-256x256.png?rev=3626454","icon_2x":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/icon-256x256.png?rev=3626454","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/screenshot-1.png?rev=3626454","caption":"Invoice list with status badges, PDF download, and quick-send actions."},{"src":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/screenshot-2.png?rev=3626454","caption":"Invoice editor with line items, totals, and the Send &amp; Actions sidebar."},{"src":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/screenshot-3.png?rev=3626454","caption":"Client address book."},{"src":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/screenshot-4.png?rev=3626454","caption":"Settings page with company info, payment options, and email templates."},{"src":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/screenshot-5.png?rev=3626454","caption":"Time Tracker with timer, log table, and add-to-invoice workflow."},{"src":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/screenshot-6.png?rev=3626454","caption":"Sales and revenue report with monthly breakdown."},{"src":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/screenshot-7.png?rev=3626454","caption":"Dashboard widget showing outstanding invoices."},{"src":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/screenshot-8.png?rev=3626454","caption":"Recording a payment \u2014 deposits, installments, or full payment."},{"src":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/screenshot-9.png?rev=3626454","caption":"Invoice preview."},{"src":"https:\/\/ps.w.org\/phildesigns-clean-invoices\/assets\/screenshot-10.png?rev=3626454","caption":""}],"raw_content":"<!--section=description-->\n<p><strong>PhilDesigns Clean Invoices<\/strong> handles the full billing workflow from within your WordPress dashboard \u2014 build invoices with line items, generate PDFs, email clients, collect partial or deposit payments, and track billable hours without relying on any third-party invoice service.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Invoice creation with configurable prefix and auto-incrementing numbers (e.g. INV-0001)<\/li>\n<li>Line items with description, optional sub-detail, quantity, rate, and auto-calculated amounts<\/li>\n<li>Tax rate (per-invoice or global default), optional shipping, subtotal, and total<\/li>\n<li>Invoice statuses: Draft, Sent, Partial, Paid, Overdue \u2014 with colour-coded badges<\/li>\n<li>PDF generation, browser preview, and download<\/li>\n<li>Send invoice by email to client with PDF attached; test email sends only to you<\/li>\n<li>Customisable email templates for invoices and payment receipts with placeholder tokens<\/li>\n<li>BCC on all outgoing invoice emails<\/li>\n<li>Payment history per invoice \u2014 record deposits, installments, and payments individually; status updates automatically from Sent \u2192 Partial \u2192 Paid<\/li>\n<li>Send payment receipt to client when an invoice is paid<\/li>\n<li>Time tracker with start\/stop timer, persistent state, inline editing, and entry merging<\/li>\n<li>Admin bar quick-timer accessible from any page in the dashboard or front end<\/li>\n<li>Add tracked time directly to an invoice as a line item<\/li>\n<li>Client management \u2014 name, company, email, phone, and full address<\/li>\n<li>CSV export of all invoices for a selected year<\/li>\n<li>Sales and revenue report with monthly breakdown<\/li>\n<li>Dashboard widget showing outstanding invoices and year-to-date revenue<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>clean-invoices<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Invoices \u2192 Settings<\/strong> and fill in your company details, logo, and email preferences.<\/li>\n<li>Go to <strong>Invoices \u2192 Clients<\/strong> and add your clients.<\/li>\n<li>Go to <strong>Invoices \u2192 Add New<\/strong> to create your first invoice \u2014 select a client, add line items, and save to auto-assign an invoice number.<\/li>\n<li>Use the <strong>Send &amp; Actions<\/strong> sidebar to preview the PDF, send the invoice, record a payment, or send a receipt.<\/li>\n<li>To track time, go to <strong>Invoices \u2192 Time Tracker<\/strong>, start the timer, then use <strong>Add to Invoice<\/strong> to append logged hours as a line item.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20any%20third-party%20services%3F\"><h3>Does this plugin require any third-party services?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"will%20my%20data%20be%20deleted%20if%20i%20deactivate%20the%20plugin%3F\"><h3>Will my data be deleted if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>No \u2014 invoice and client data remains in your database when the plugin is deactivated. Uninstalling the plugin removes all plugin data.<\/p><\/dd>\n<dt id=\"can%20i%20customise%20the%20invoice%20layout%3F\"><h3>Can I customise the invoice layout?<\/h3><\/dt>\n<dd><p>Invoice content is configurable through Settings (company details, logo, payment options, thank-you message). The PDF layout is generated by FPDF.<\/p><\/dd>\n<dt id=\"are%20partial%20payments%20supported%3F\"><h3>Are partial payments supported?<\/h3><\/dt>\n<dd><p>Yes \u2014 you can record deposits, installments, and payments individually. The invoice status updates automatically: Sent \u2192 Partial \u2192 Paid as the balance is paid down.<\/p><\/dd>\n<dt id=\"what%20data%20is%20stored%20per%20invoice%3F\"><h3>What data is stored per invoice?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Renamed bundled third-party classes (<code>FPDF<\/code> \u2192 <code>PHILCLIN_FPDF<\/code>, <code>PhilClinQRCode<\/code> \u2192 <code>PHILCLIN_QRCode<\/code>) so they can't collide with another plugin's copy of the same library.<\/li>\n<li>Unrolled the settings sanitize-callback registration into one explicit <code>register_setting()<\/code> call per option.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Renamed all plugin identifiers (classes, functions, constants, post types, meta\/option keys, AJAX actions, script handles) to a distinct <code>philclin_<\/code> \/ <code>PHILCLIN_<\/code> prefix.<\/li>\n<li>QR codes for Venmo\/Zelle payment options are now generated locally instead of via a third-party API \u2014 no payment data leaves your site.<\/li>\n<li>Removed the FPDF remote-download fallback; the bundled PDF library is now used directly.<\/li>\n<li>Moved all inline <code>&lt;style&gt;<\/code> blocks to properly enqueued stylesheets.<\/li>\n<li>Settings fields now use type-specific sanitization (numbers, email, URL, checkbox) instead of one generic sanitizer.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added Hourly vs Flat Rate type toggle per line item \u2014 click the icon in the line items table to switch between billing modes.<\/li>\n<li>Flat Rate items display \"Flat Rate\" in the Qty\/Rate columns on the browser preview and generated PDF.<\/li>\n<li>Added Hours column to the invoice admin list showing total billable hours at a glance.<\/li>\n<li>Added Total Hours row in the Invoice Details panel on the edit screen; row is hidden automatically when no hourly items are present.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added Time Tracker with start\/stop timer, persistent state, inline editing, and entry merging.<\/li>\n<li>Added admin bar quick-timer accessible from any page in the dashboard or front end.<\/li>\n<li>Added ability to add tracked time directly to an invoice as a line item.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Create, send, and track client invoices from your WordPress dashboard.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/345427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=345427"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pdidee"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=345427"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=345427"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=345427"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=345427"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=345427"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=345427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}