Description
DadsFam Invoice Manager does the invoice side of a WooCommerce shop properly. Create an invoice from any order in one click, or upload one you already have. Store them somewhere customers cannot poke at, track what is paid, and send them out with a link that expires.
It is free. Not free-until-you-need-the-good-bit. Free.
What it does:
- Create an invoice from any WooCommerce order — pick the order, press the button, get a branded PDF
- Put your own business details, logo, VAT number and banking details on it
- Your own invoice numbering, with a prefix and padding that make sense to you
- Upload and manage PDF invoices you produced somewhere else
- Protected folder storage that blocks direct URL access, or Media Library mode if you prefer
- HMAC-signed, single-use download links that expire when you say
- Payment status tracking — Paid, Unpaid, Overdue, Cancelled — changed in one click
- Email status tracking, so you know what actually went out
- Resend an invoice to a customer whenever they ask
- CSV export of every invoice record
- A missing-invoices tracker, so nothing quietly slips through
- Customer My Account Invoices, so they can help themselves
- Custom From Name and From Email, which fixes the wordpress@ sender problem
- Full email branding — logo, colours, footer, social links
- A proper HTML email template editor with live preview
Quotations, also free:
- Build a quotation the same way you build an invoice — line items, discount, tax, extra charges
- Branded A4 PDF, using the same business details and logo as your invoices
- Email it straight to the client
- The client can accept or decline online, and you get told
- Quotations expire on their own after however many days you choose
- Separate quote numbering, so QUO-0001 and INV-0001 never collide
- Turn an accepted quotation into an invoice with one button — everything carries across
A word about PRO
Right, let me be straight with you, because I hate being sold to as much as you do.
Everything above is free and it stays free. Creating invoices is not a premium feature. Putting your own logo and banking details on them is not a premium feature. Those are the things a plugin like this should just do, and if I put them behind a paywall I would be taking the mickey.
There is a PRO add-on. It exists because I am a dad in Cape Town, and this is one of the things that puts food on the table at my house. That is the honest reason. Not “unlock your potential”, not “supercharge your workflow”. Just: if this plugin saved you a headache and you can spare it, PRO helps me keep building.
What PRO adds is the stuff you only want once you are doing real volume — invoices generating themselves on a status change, PDFs re-stamping from UNPAID to PAID on their own, payment reminders going out without you, bulk uploading a hundred invoices from a ZIP, and an audit log of who did what. That is convenience and automation. It is not the plugin working properly, because the plugin already works properly.
So if the free one does everything you need, brilliant. Genuinely. Use it, and I hope it saves you an afternoon. If you get to the point where the automation would save you real time, PRO is at plugins.dadsfam.co.za.
Either way, thanks for using something I built. — Zak, DadsFam
PRO adds:
- Auto-generation — invoices created automatically when an order hits a status you choose
- Smart email triggers — send to the customer on a separate status
- PDF status sync — the PDF re-stamps itself from UNPAID to PAID, no delete-and-recreate
- Automated payment reminders on a schedule
- Bulk upload via ZIP and a CSV mapping
- Audit log of every admin action
- Product variations and bundles broken out on the PDF
Support
Email: support@dadsfam.co.za
Website: https://plugins.dadsfam.co.za
Screenshots



Installation
- Upload the
dadsfam-invoice-managerfolder to/wp-content/plugins/ - Activate through the Plugins menu in WordPress
- Go to Invoices in your WP Admin sidebar
- Set your From Email in Invoices Email Settings
- Add your business details in Invoices Invoice Details
- Create your first invoice in Invoices Create Invoice
FAQ
-
Do I need anything else to send quotations?
-
No. Quotations are part of this plugin and part of the free version. Your client gets a branded PDF and a link where they can accept or decline, and you get notified either way.
-
I already use DadsFam Quotation Creator. Will this clash?
-
No. If that plugin is active, this one leaves quotations entirely alone — no duplicate menus, no duplicate post type. Your existing quotations stay exactly as they are. If you later remove it, they will simply show up here instead, because both use the same storage.
-
What is the difference between free and PRO?
-
Free creates invoices, brands them, stores them, tracks them and delivers them. PRO automates it — generating invoices on a status change, re-stamping PDFs when payment lands, sending reminders on a schedule, bulk uploading from a ZIP, and keeping an audit log. If you are happy pressing a button when you need an invoice, free is the whole thing.
-
Do I need PRO to create invoices?
-
No. Creating invoices is free, and it stays free.
-
Where are invoices stored?
-
By default in a protected folder inside your WordPress uploads directory, blocked from direct public access via .htaccess. You can switch to Media Library mode in General Settings.
-
Can customers download their invoices?
-
Yes — invoices appear in the customer’s My Account Invoices tab with signed, expiring download links, plus an “Email Me” button.
-
When I change the payment status, does the PDF update?
-
The badge updates everywhere immediately. Re-stamping the actual PDF document (e.g. UNPAID PAID) is done by the PRO add-on for invoices the plugin generated. Uploaded PDFs keep their original file.
-
Why are my emails going to spam?
-
Set a real From Email address on your own domain in Email Settings (e.g. invoices@yourdomain.com).
-
Does this work with WooCommerce HPOS?
-
Yes — fully compatible with WooCommerce High Performance Order Storage.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“DadsFam Invoice Manager” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “DadsFam Invoice Manager” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.3.5
- Fixed: a full business block — address, phone, email and website — ran off the bottom of the coloured header on invoice and quotation PDFs, cutting the last line in half. The header now grows to fit whatever you have filled in, and a very long line is shortened rather than running under the document title.
2.3.4
- Fixed: the quotation screens loaded but had no styling at all. The markup and the stylesheet had ended up using different class names, so nothing matched.
- Fixed: several buttons on the invoice builder linked to pages that do not exist in this plugin.
- Removed: an “Email it to the client” button on the invoice builder that had never been wired to anything and did nothing when clicked.
2.3.3
- Fixed: the quotation screens were blank, and the Quotations menu opened the invoice list without any styling. The quotation module was still pointing at the folders of the plugin it came from, so its pages and its stylesheet were never found.
2.3.2
- Fixed: the Quotations menu never appeared. It was being added a moment before the Invoices menu it belongs under existed, so WordPress quietly discarded it.
- Added: turn a quotation into an invoice. One button on the quotations list copies the client, line items, discount, tax and extra charges across into a new invoice. The quotation is left exactly as it was, and the two are linked, so pressing it again opens the invoice you already made rather than creating a second one.
2.3.1
- Fixed: a fatal error on the admin screens. Four internal constants were left with the wrong names when the quotations module was brought in, so loading an admin page brought the site down. Nobody should have seen 2.3.0; this replaces it.
2.3.0
- Added: Quotations, free. Build a quotation with line items, discount, tax and extra charges, send it to the client as a branded A4 PDF, and let them accept or decline it online. Quotations expire on their own after a number of days you set.
- Added: quotations use the same business details, logo and banking details as your invoices, so you fill that in once. Quote numbering is kept separate so QUO-0001 and INV-0001 never collide.
- Note: if you already run the standalone DadsFam Quotation Creator plugin, this module stays out of its way automatically and your existing quotations are left exactly where they are.
2.2.1
- Fixed: the Manage Invoices table was cut off on the right, hiding the Payment and Actions columns. A width limit meant for the Invoice Details form was being applied to every panel, including the wide data tables.
- Fixed: the invoice tables now scroll sideways on narrower screens instead of having columns clipped off the edge.
2.2.0
- Fixed: customer search on the invoice builder found almost nobody. It only looked at WordPress account names, so it missed the billing name people actually order under, and missed guest customers entirely. It now searches billing first name, last name, company and email across both accounts and past orders.
- Fixed: the builder screens are open to shop managers, but every search and save was being rejected behind the scenes because the permission check demanded a stricter capability than the menu did.
- Fixed: if a search failed it drew an empty box with no explanation. It now says what went wrong.
2.1.9
- Changed: the dashboard note about the paid add-on now explains the honest reason it exists, and can be dismissed for good.
- Fixed: the Invoice Creator shortcut still pointed at the shop with a PRO badge, even though creating invoices is free.
2.1.8
- Added: screenshots on the plugin directory page.
2.1.7
- Added: a full invoice builder. Add line items by hand or pull them from your WooCommerce products, set a discount and tax rate, add extra charges and custom fields, and watch the total update as you type.
- Added: From an Order — pick a WooCommerce order and the whole invoice is filled in from it in one click.
- Added: Created Invoices — everything you have built, in one list.
- Fixed: order totals on the picker showed a raw HTML entity (R180,00) instead of the currency symbol.
- Fixed: the Invoice Details form was too narrow, which clipped the prefix and number fields.
2.1.6
- Added: Create Invoice. Pick any WooCommerce order and produce a branded PDF invoice in one click. This is free and it stays free.
- Added: Invoice Details screen — your business name, address, phone, email, website, VAT number and logo, your own invoice numbering, payment terms, banking details and footer wording. All of it goes on the PDF.
- Changed: the plugin description now reflects that creating invoices is part of the free plugin. PRO is automation and bulk handling, not the basic job.
- Changed: readme tags swapped for terms the directory actually indexes.
2.1.5
- Changed: all plugin and support links now point to https://plugins.dadsfam.co.za/ (the plugin site) rather than the main DadsFam site. Support email is unchanged at support@dadsfam.co.za.
2.1.4
- Security: colour values are now re-validated as literal hex colours at the moment they are written into a stylesheet, a style attribute or an email body, rather than being trusted from the options table. Options can be written by WP-CLI, an import or another plugin, so sanitising on save is not enough on its own — escaping now happens late, at the point of output, in the front-end My Account styles, the admin styles, the branded email header and the email template placeholders.
- Security: every placeholder substituted into the email template is now escaped for the context it lands in — the download link through
esc_url(), the customer name and site name throughesc_html(), and the order number and link expiry as integers. - Security: the logo URL and its pixel dimensions in the branded email header are escaped and type-cast on output.
- Security: the payment-status badge in the Manage Invoices list is passed through
wp_kses_post()on output instead of relying on the helper escaping its own contents. - Quality: variables in the admin views that shared a name with a WordPress global (
$order,$status,$search,$paged,$tab,$tabs,$s) were renamed to plugin-prefixed names. - Quality: replaced the two remaining
@error-suppression operators with real checks, made thein_array()comparisons strict, capped the invoice list query at 100 rows per view, and documented that the base64 helpers are URL-safe transport encoding for the signed download token, not obfuscation.
2.1.3
- Added:
DFIM_Loader::format_invoice_number()and thedfim_inv_number_formatoption key, so the PRO add-on can build invoice numbers from a token pattern instead of a fixed one. As with the other PRO keys held here, the free plugin neither reads nor writes it.
2.1.2
- Added:
DFIM_Loader::normalize_status_list(), a small shared helper so the PRO add-on’s auto-generate/auto-email trigger options can hold more than one order status instead of only one. Added here because this is the shared base class both plugins extend — the free plugin itself does not call it for anything and gates no functionality on it.
2.1.1
- Compliance: audit logging is now entirely part of the separate PRO add-on. The free plugin no longer registers an audit post type or stores any audit data — it simply fires a
dfim_logaction hook that the PRO add-on can listen to. Nothing in the free plugin is locked, limited or gated. - Removed: leftover licence-activation interface (the licence-key field handlers and its nonce) that belonged to the PRO add-on. The free plugin contains no licence checks and no licence storage of any kind.
- Changed: the two JavaScript data objects were renamed to the plugin’s
dfimprefix (dfimAdmin,dfimFront) so every registered global name is unique and distinct.
2.1.0
- Compliance: every feature contained in this plugin is now fully available to all users — the email branding suite (logo, colours, footer, social links, full template editor with live preview) has no licence conditions of any kind. This plugin contains no locked or limited functionality; additional features (invoice generation, reminders, bulk upload, audit log) exist only as a separate add-on plugin and are merely mentioned, per the directory guidelines.
- Changed: automated-reminder settings moved out of this plugin; they are configured inside the PRO add-on, where the reminder feature itself lives.
- Changed: the bundled Select2 library has been removed. Searchable dropdowns now use selectWoo, the maintained Select2 fork that ships with WooCommerce (which this plugin requires), so no third-party library is bundled.
- Changed: the My Account “Email Me” script moved from an inline template tag to a properly enqueued JavaScript file.
- Fixed: plugin and upgrade links now point to the live https://www.dadsfam.co.za/ site.
2.0.3
- Code quality: Plugin Check now reports zero errors and zero warnings. Uninstall variables carry the plugin prefix (uninstall runs in global scope), and the My Account template documents its function-local scope for the naming sniff.
2.0.2
- Code quality: full WordPress Coding Standards pass — the plugin now scans clean (0 errors, 0 warnings) under the official Plugin Check security, escaping, sanitization, database and naming sniffs.
- Security: every output is escaped or type-cast; every request input is unslashed and sanitized; all admin redirects use wp_safe_redirect(); direct file deletions use wp_delete_file().
- Fixed: the Missing Invoices pagination footer showed the last order’s total instead of the result count (variable shadowing).
- Read-only display filters are explicitly annotated as nonce-exempt with justification.
2.0.1
- Security: the admin order-search AJAX endpoint now requires a CSRF nonce in addition to the existing capability check.
- Security: invoice file paths resolved from stored attachment metadata are strictly confined to the WordPress uploads directory, so tampered metadata can never point at arbitrary server files.
- Security: the email template preview endpoint now also verifies the WooCommerce-manager capability.
- Improved: escaped all admin URL output in the changelog pagination.
2.0.0
- Freemium split: this is now the free base plugin. All PRO features (Invoice Creator, auto-generation, PDF status sync, reminders, bulk upload, advanced branding, audit log) have moved to the separate DadsFam Invoice Manager PRO add-on, which requires this plugin to be active.
- New: Clean extension points (
dfim_core_booted,dfim_register_admin_menus,dfim_admin_assets,dfim_manage_tabs,dfim_render_manage_tab,dfim_manage_header_links,dfim_invoice_status_changed,dfim_is_pro_active) let the PRO add-on plug in cleanly. - Improved: The Manage Invoices payment dropdown now fires a status-change event so PRO can re-stamp the generated PDF instantly — no more deleting and re-uploading to fix a Paid/Unpaid stamp.
- Upgrading from a single-plugin (1.9.x) install: all your invoices, settings and license are preserved. Install the PRO add-on to restore generation and the other PRO features.
1.9.10
- Fixed: long invoices flow onto extra pages instead of being cut off (PRO).
- Changed: download-link validity setting consolidated to Email Settings Download Links.
1.9.9
- Fixed: emailed download links no longer fail with “Invalid or tampered download link” — the link is now a single secure token.
- New: “Link valid for (days)” setting and {link_expiry_days} placeholder.
