Title: WebVortex Invoices
Author: WebVortex
Published: <strong>September 20, 2026</strong>
Last modified: September 20, 2026

---

Search plugins

![](https://ps.w.org/webvortex-invoices/assets/banner-772x250.png?rev=3701331)

![](https://ps.w.org/webvortex-invoices/assets/icon-256x256.png?rev=3701331)

# WebVortex Invoices

 By [WebVortex](https://profiles.wordpress.org/webvortex/)

[Download](https://downloads.wordpress.org/plugin/webvortex-invoices.2.6.5.zip)

 * [Details](https://wordpress.org/plugins/webvortex-invoices/#description)
 * [Reviews](https://wordpress.org/plugins/webvortex-invoices/#reviews)
 *  [Installation](https://wordpress.org/plugins/webvortex-invoices/#installation)
 * [Development](https://wordpress.org/plugins/webvortex-invoices/#developers)

 [Support](https://wordpress.org/support/plugin/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

[⌊The invoice overview, with status at a glance and one-click actions for sending,
reminders and PDF download.⌉⌊The invoice overview, with status at a glance and one-
click actions for sending, reminders and PDF download.⌉[

The invoice overview, with status at a glance and one-click actions for sending,
reminders and PDF download.

[⌊Creating an invoice: multiple line items, per-item VAT and an optional currency
override.⌉⌊Creating an invoice: multiple line items, per-item VAT and an optional
currency override.⌉[

Creating an invoice: multiple line items, per-item VAT and an optional currency 
override.

[⌊Invoice planning, where a recurring invoice is set up once and generated automatically
on schedule.⌉⌊Invoice planning, where a recurring invoice is set up once and generated
automatically on schedule.⌉[

Invoice planning, where a recurring invoice is set up once and generated automatically
on schedule.

[⌊The settings screen: company details, default pay days, default currency and the
sender address.⌉⌊The settings screen: company details, default pay days, default
currency and the sender address.⌉[

The settings screen: company details, default pay days, default currency and the
sender address.

[⌊The email templates, with merge tags for the invoice, the reminder and the final
notice.⌉⌊The email templates, with merge tags for the invoice, the reminder and 
the final notice.⌉[

The email templates, with merge tags for the invoice, the reminder and the final
notice.

[⌊A generated PDF invoice, rendered by the built-in renderer without external libraries.⌉⌊
A generated PDF invoice, rendered by the built-in renderer without external libraries
.⌉[

A generated PDF invoice, rendered by the built-in renderer without external libraries.

[⌊The documentation page for Invoice planning, listing all six billing intervals
and how each one behaves.⌉⌊The documentation page for Invoice planning, listing 
all six billing intervals and how each one behaves.⌉[

The documentation page for Invoice planning, listing all six billing intervals and
how each one behaves.

[⌊The dashboard: open and overdue amounts, this month versus last month, and your
active recurring plannings.⌉⌊The dashboard: open and overdue amounts, this month
versus last month, and your active recurring plannings.⌉[

The dashboard: open and overdue amounts, this month versus last month, and your 
active recurring plannings.

## 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

 *   [ WebVortex ](https://profiles.wordpress.org/webvortex/)

[Translate “WebVortex Invoices” into your language.](https://translate.wordpress.org/projects/wp-plugins/webvortex-invoices)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/webvortex-invoices/),
check out the [SVN repository](https://plugins.svn.wordpress.org/webvortex-invoices/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/webvortex-invoices/)
by [RSS](https://plugins.trac.wordpress.org/log/webvortex-invoices/?limit=100&mode=stop_on_copy&format=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.

## Meta

 *  Version **2.6.5**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 8.0 or higher **
 * Tags
 * [Billing](https://wordpress.org/plugins/tags/billing/)[clients](https://wordpress.org/plugins/tags/clients/)
   [invoice](https://wordpress.org/plugins/tags/invoice/)[invoicing](https://wordpress.org/plugins/tags/invoicing/)
   [pdf](https://wordpress.org/plugins/tags/pdf/)
 *  [Advanced View](https://wordpress.org/plugins/webvortex-invoices/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/webvortex-invoices/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/webvortex-invoices/reviews/)

## Contributors

 *   [ WebVortex ](https://profiles.wordpress.org/webvortex/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/webvortex-invoices/)