Recurring invoices
Some work bills the same way on a schedule: a monthly retainer, a support plan, a fixed hosting fee. A recurring invoice captures that once - a client, a set of fixed-amount lines, and a cadence - and Clerq drafts each invoice for you when it comes due. You'll find them under the Recurring tab on the Invoices page.
Setting one up
New recurring invoice opens a single form:
- Name - an internal label, like Acme monthly retainer. It's how the schedule is listed; it never appears on the invoice.
- Client - who gets billed.
- Currency - the currency every generated invoice is raised in.
- Repeats - the cadence, written as every N weeks, months, quarters or years. Leave the number at 1 for a plain weekly or monthly schedule, or raise it (up to 52) for, say, every 2 weeks.
- First invoice date - when the series starts. The first invoice is dated on this day, and every following occurrence steps out from it.
- Payment terms (days) - how long after each invoice's date it falls due. Set 0 for due-on-issue.
- End date and Max invoices - optional stop conditions. Set either, both or neither; leave both blank to keep billing until you pause or end it.
- VAT treatment - standard, zero-rated or EU reverse charge, exactly as on a one-off invoice. The picker only appears once your business has a VAT number set; until then generated invoices are zero-rated. Standard rate needs your rate configured in settings first.
- Lines - the fixed-amount lines stamped onto every invoice this generates (a retainer fee, a fixed monthly total). Amounts are plain figures in the schedule's currency; one with more decimal places than the currency allows is rejected, never rounded.
- Notes - optional free text printed at the foot of every generated invoice.
- Issue automatically - see below.
How invoices are generated
When an occurrence comes due, Clerq stamps out a fresh invoice from the schedule: its client, currency, tax setup, lines and notes, dated on the occurrence, due after the payment terms, and covering the period from that date up to the day before the next occurrence.
The standard VAT rate is read live at generation time rather than frozen onto the schedule, so a rate change in settings flows through to future invoices - just like a hand-made one.
Generation is exact and safe under concurrency: each run is claimed under a row lock, so a restart, a missed sweep, or a second worker can never double-bill, and invoice numbers stay sequential. If a schedule's start date is well in the past, Clerq catches up in bounded steps rather than firing every missed invoice at once - the remainder rolls to the next sweep.
Auto-issue, or review first
Whether a generated invoice is issued for you or left to review is the Issue automatically switch:
- Off (the default) - each invoice lands as a draft. Review it, then issue and send it yourself, exactly as with any other invoice.
- On - Clerq assigns the next number and marks the invoice sent the moment it's generated. You still download and send the PDF; only the issuing step is automated.
Auto-issue is best-effort per invoice. If one can't be issued cleanly - most commonly an EU reverse-charge invoice that's missing a VAT number - it's left as a draft for you to fix, and the schedule is flagged Needs attention with the reason. The rest still issue.
Cadence and month-ends
Weekly schedules step by whole weeks. Month-based schedules pin to the day-of-month of the start date, clamped to each month's length, so they never drift earlier over time: a schedule starting on the 31st bills 31 Jan -> 28 Feb -> 31 Mar, not 31 Jan -> 28 Feb -> 28 Mar.
Pausing, ending and editing
Each schedule has its own page, with the controls to steer it:
- Pause / Resume - pausing stops generation; resuming rolls the next run forward past any occurrences missed while paused. A pause is a skip, never a deferred back-bill.
- End - stops the schedule for good. It's terminal: to bill the client this way again, create a fresh one. Invoices it already produced are kept.
- Edit - change the template or cadence at any time. Cadence changes apply from the schedule's current place in the series; if nothing has generated yet, the change re-pins to the new start date.
- Generate next now - bill the next occurrence immediately instead of waiting for the sweep - handy to raise the first invoice the moment a retainer is agreed.
- Delete - removes the schedule and its template. The invoices it generated are real documents and stay put; they simply detach from the schedule.
Generated invoices are ordinary invoices
A generated invoice is a normal invoice in every other respect - it lists alongside the rest, and everything in Time & invoicing applies: void it, duplicate it, mark it paid, export its PDF. The schedule's page also lists every invoice it has produced, so you can see the run at a glance.
An AI assistant can manage retainers for you too: listing them, setting one up, pausing or ending it, and generating the next invoice on demand are among the actions exposed through the MCP server.
Running the scheduler (self-hosting)
On a normal long-running deployment there's nothing to set up: the app runs an in-process scheduler that sweeps for due schedules every 15 minutes and catches up shortly after each restart.
Serverless or edge hosts have no long-lived process to tick, so point an
external scheduler (a platform cron job, or a plain curl on a timer) at
POST /api/cron/run instead. That endpoint is guarded by the CLERQ_CRON_TOKEN
environment variable and returns 404 until the token is set, so it's never an
open endpoint on a default install. The sweep is idempotent, so running both the
in-process ticker and the cron endpoint is harmless. To turn the in-process
ticker off entirely, set CLERQ_DISABLE_SCHEDULER=1. See
Environment variables
for both settings.
Just need fixed-amount lines on a single invoice, not a schedule? Add them straight to a draft - see Time & invoicing.