WebVortex Invoices

Description

WebVortex Invoices gives you full invoice management inside your WordPress admin:

  • Client management with international address support (country dropdown)
  • Product/service catalog with per-item VAT rates and multi-currency pricing
  • Exchange rates — choose from 26 built-in currencies for your invoices
  • Invoice planning — recurring invoices with six billing intervals: annual, bi-annual, quarterly, monthly, weekly, or one-time
  • Manual invoice creation — multiple line items, per-item VAT, currency override
  • PDF generation — built-in renderer, no external libraries required
  • Automatic invoice generation — recurring plannings create draft invoices on schedule via WP-Cron; you review and send them
  • HTML email templates — rich template editor with merge tags
  • Payment reminders — a built-in three-stage reminder flow (first reminder, second reminder, final notice); the dashboard shows the moment one is ready, and you send it with a single click
  • Customisable — default pay days, default currency, from name/email, banner image

Recurring invoices in six billing intervals, with a built-in three-stage payment reminder flow that tells you exactly when to follow up — no subscription, no transaction fees.

External services

This plugin’s premium licensing is powered by Freemius, a third-party service that handles licence activation, upgrades, and renewals.

What is sent and when: when the plugin connects (on activation, or when you choose to opt in), basic site data is shared with Freemius — site URL, WordPress/PHP version, plugin version, and an anonymised usage identifier — so that licence status can be verified and update/upgrade notices can be shown. If you purchase a premium licence, your licence key and the activating site’s URL are also sent to validate and track that activation. No client, invoice, or financial data created within this plugin (clients, invoices, catalog items, exchange rates) is ever sent to Freemius or any other external service.

This connection is only used for licensing. It does not affect the plugin’s core invoicing functionality, which works fully offline/self-hosted.

Freemius’s terms of service: https://freemius.com/terms/
Freemius’s privacy policy: https://freemius.com/privacy/

Screenshots

Installation

  1. Upload the plugin folder to /wp-content/plugins/
  2. Activate the plugin through the Plugins menu in WordPress
  3. Go to Invoices Settings to configure your defaults
  4. Set your default currency under Invoices Settings
  5. Add clients, set up your catalog, and create your first planning

FAQ

Does this require any external libraries for PDF?

No. The PDF renderer is built in and has no dependencies.

Can I bill in currencies other than EUR?

Yes. Select any of the 26 built-in currencies as your default under Invoices Settings. All invoices will use that currency.

My WP-Cron doesn’t fire reliably. What can I do?

Set up a real server-level cron job (via Plesk, cPanel, or your host’s scheduler) that calls wp-cron.php directly. This is the most reliable solution regardless of which plugin you use.

Can I override pay days per invoice?

The default payment term is set in Settings and applies to all invoices.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“WebVortex Invoices” is open source software. The following people have contributed to this plugin.

Contributors

Translate “WebVortex Invoices” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

2.6.5

  • Changed: the 5-site/25-site price line under each product’s single-site price now uses a light blue instead of grey, so it reads as “more options here” instead of fine print.

2.6.4

  • Changed: the “From …” price lines in the Pro features and More WebVortex tools tabs now show the actual 5-site and 25-site prices (confirmed at 3x and 10x the single-site price) alongside the single-site price, instead of only noting that those tiers exist.

2.6.3

  • Changed: the in-plugin documentation pages (Pro features and More WebVortex tools) quoted every add-on and the WebVortex Suite bundle at one flat price. Now that licences come in single-site, 5-site and 25-site tiers, each price line is now shown as “From …” with a note that the 5-site and 25-site tiers exist, instead of a single number that only ever matched the single-site price.

2.6.2

  • Fixed: the plain HTML tables used by the in-plugin documentation tabs (Help & Documentation every tab) had no padding or borders defined anywhere in the stylesheet, so cells sat edge to edge with no breathing room. Same root cause as the line-item table collision fixed in Invoices Pro 1.0.44 (a table with no CSS behind it), here showing as cramped rather than overlapping since a browser renders it, not Dompdf. Added proper cell padding and borders, scoped to the documentation pages only.

2.6.1

  • Fixed: sending a dunning reminder checked whether it was due, then sent the email, then recorded that it had been sent — three separate steps with no protection between them, so an overlapping automatic run and a manual “Remind” click could in rare cases send the same reminder to a client twice. The stage change is now claimed atomically before anything is emailed, so only one of two overlapping attempts can ever proceed.

2.6.0

  • Changed: automatically sending payment reminders (the daily task escalating a sent invoice through its three dunning stages by itself) is now a premium feature, matching what the documentation already said and what Pro’s “Automatic sending” of newly generated invoices already worked like. The free plugin still tracks all three stages exactly as before and computes the moment each one is ready — you now send it yourself, with one click.
  • Added: a “Remind” button now works at every dunning stage (previously only the first); sending the second reminder or final notice by hand is no longer limited to the automatic task.
  • Added: a “Reminders ready to send” dashboard card, so it’s never silently unclear that one is waiting on you.

2.5.10

  • Changed: the documentation no longer describes the daily task as sending payment reminders.

2.5.9

  • Fixed: the documentation still described a catalog item’s currency as something that “may differ from the invoice currency”, left over from before 2.5.5 made every invoice use exactly one currency throughout. The text now describes the field as only the item’s starting price.

2.5.8

  • Fixed: after 2.5.7 gave each stored PDF an unguessable filename, that same filename was shown to clients as the attachment name on invoice and reminder emails. Email attachments now always show a clean “invoice-.pdf” name, independent of the randomized filename used for storage. The admin download button already showed the clean name and was not affected.

2.5.7

  • Security: invoice PDFs were stored under a predictable, sequential filename (matching the invoice number) inside the public uploads directory. The admin-side download link was already protected by a nonce and a capability check, but the file itself was still directly reachable at its exact URL with no authentication at all, on any server configuration where .htaccess rules are consulted. The stored filename now includes a random, unguessable token, and the storage directory is denied to direct web access outright rather than only having directory listing disabled.
  • Security: an AJAX endpoint for reading a catalog item’s details checked its nonce but not the user’s capability, so any logged-in user of any role (not only administrators) could call it. It now requires the same access level as every other action in this plugin.
  • Hardened: the sender name, sender address and recipient address used when sending an email now have any stray line break stripped immediately before the message headers are built, in addition to the existing sanitization applied when those values are saved.

2.5.6

  • Fixed: an invoice generated automatically from a recurring planning always used whatever VAT rate was stored on the planning when it was last saved, ignoring the KOR VAT-exemption setting at the time the invoice was actually generated. The exemption is now re-evaluated fresh on every automatic generation, exactly as it already was for invoices created by hand.
  • Fixed: the invoice numbering counter was read and written as two separate steps, so two invoices saved at nearly the same moment could in rare cases receive the same invoice number. The counter is now incremented atomically.
  • Changed: removed two stray entries from the internal list of this plugin’s own options (one was a filter name that was never actually stored as an option; the other did not correspond to any setting). No user-facing effect.

2.5.5

  • Fixed: an invoice line could keep a different currency than the invoice itself once the invoice’s currency was changed after lines were already added. Every line now always uses the invoice’s own currency; this is enforced when saving, not only in the browser.
  • Fixed: an invoice generated automatically from a recurring planning always used the site’s default currency, ignoring the currency configured on that specific planning.

2.5.4

  • Added: a Dashboard as the plugin’s new landing page, showing the open (unpaid) amount, the overdue amount, invoiced-this-month against last month, invoice counts by status, and your active recurring plannings. Existing menu items (Invoices, Invoice Planning, Clients, Catalog, Settings, Documentation) are unchanged, and everything the Invoices page could already do still works exactly as before.
  • Changed: the plugin’s top-level admin menu slug is now wvinv-dashboard (previously wvinv-generated). The Invoices list itself keeps its own wvinv-generated page and every existing link to it.

2.5.3

  • Changed: the built-in documentation page is now written in English, so it matches the rest of the plugin interface. The Dutch text is moving to translate.wordpress.org, where it will be delivered to Dutch sites as a regular translation.
  • Fixed: the built-in documentation still described the Payment Bridge add-on as running on WooCommerce. It uses Mollie Payment Links directly, and the text now says so.

2.5.2

  • Fixed: a fresh installation created the planning table without the billing_interval and last_generated_date columns, because activation recorded the current version and the schema migrations were then skipped. Both columns are now part of the table definition, and activation runs the migrations instead of assuming the schema is current.
  • Changed: the legacy prefix migration and the uninstall cleanup now work from an explicit list of this plugin’s own option names. Neither one uses a wildcard on the options table any more, so options belonging to other plugins can never be touched.

2.5.1

  • Changed: all functions, classes, constants, options, transients, hooks, nonce actions, menu slugs, script handles and CSS classes now use the unique wvinv_ / WVINV_ prefix, and the wv_invoice_* actions are now wvinv_invoice_*. Existing sites migrate automatically on upgrade: options are renamed and the daily cron event is re-registered under its new name. No invoice data is touched. Add-ons must be updated to the matching release.
  • Changed: extension hooks receive a recursively sanitized copy of the request data instead of the raw $_POST, and any value a callback returns is sanitized again before it is written to the database.
  • Changed: generated PDFs are stored in uploads/webvortex-invoices/ instead of uploads/wv-invoices/. Existing PDFs keep working from their stored path.

2.4.4

  • Fixed: new Invoice Planning entries were never actually written to the database. The wvi_planned_invoices table was missing the invoice_currency column that handle_post() has saved since multi-currency planning shipped, so every insert/update silently failed on the unknown column — the form still redirected to the “Planning created/saved” notice, masking the failure. Added the missing column (with automatic migration for existing sites) and handle_post() now shows the actual database error and keeps your entered data on screen instead of falsely reporting success.

2.4.3

  • Added: a way to actually set the payment link on a Sent invoice. 2.4.2 added a way to view an existing link once it’s there, but not to add or change one — a Sent invoice can’t be opened for full editing (the amount is locked), so there was still no way at all to attach a link to an invoice that never got one automatically, e.g. after a temporary Payment Bridge/Mollie failure. New “Add payment link” / “Change link” action opens a minimal form that only ever writes payment_link_url, with its own nonce, completely separate from the locked invoice-edit form.

2.4.2

  • Added: a “Pay link” button in the invoice list actions whenever payment_link_url is set, since Sent/Paid invoices can no longer be opened for editing — this is otherwise the only way to find a payment link after the fact (manually set, or generated by the Payment Bridge add-on).

2.4.1

  • Added: wvinv_invoice_sent action, fired the moment an invoice is marked Sent (both manual sends and invoices sent from planning). Lets extensions act at the exact point an invoice’s amount becomes final and immutable — used by Payment Bridge to create a payment link at that moment.

2.4.0

  • Added: an optional Payment link (Mollie) field on each invoice. Paste a Mollie payment link created for the exact invoice amount, and the WebVortex Document Portal shows a Pay Now button linking to it for as long as the invoice is unpaid. Works standalone, no Payment Bridge add-on or payment provider integration required.

2.3.0

  • Added: VAT Exemption (KOR) setting for businesses using the Dutch kleineondernemersregeling. When active, VAT is forced to 0% on every new invoice and planning line (server-enforced, not just hidden in the UI), and a configurable exemption text is printed on the PDF in place of the VAT breakdown. Existing invoices and planning lines are unaffected.

2.2.6

  • Fixed: a manually-clicked “Remind” action could re-send a payment reminder that the daily dunning cron had already sent (e.g. from a page loaded before that day’s automatic run), resulting in duplicate reminder emails to the client. The reminder action now re-checks server-side whether the invoice’s current reminder is still within its waiting period before sending anything.
  • Improved: the invoice list’s Reminder column now shows which dunning stage was actually sent (1st reminder / 2nd reminder / final notice) with its date, instead of a single generic “Sent” label.

2.2.5

  • Docs: added final pricing to the Pro Features and More WebVortex Tools tabs (monthly/yearly/lifetime for Pro, Quoting, Document Portal + AFM, and Payment Bridge), plus a new WebVortex Suite bundle promo.

2.2.4

  • Docs: translated the Documentation page to Dutch, consistent with the rest of the admin UI and the Document Portal client area.

Older releases are not listed here to keep this section within the readme size limit.