Recurring Invoices

Define an invoice template once and let DayZero generate each period's invoice on schedule — daily, weekly, biweekly, monthly, quarterly, or annually. Templates can auto-send on generation or drop drafts in for review, and they track exactly how many invoices they've produced. It's built for retainers, subscriptions, and SaaS billing where the same invoice repeats predictably.

Key capabilities

  • Six frequencies: daily, weekly, biweekly, monthly, quarterly, annually
  • Day targeting: day_of_month (1-31) for monthly/quarterly/annual, day_of_week (0=Monday … 6=Sunday) for weekly/biweekly
  • Per-period due date via a days_until_due offset (0-365, default 30)
  • Optional auto-send to email each generated invoice (invoice templates only)
  • Fixed total or line-item template amounts, with optional description
  • End conditions: an end_date, a max_occurrences cap, or run indefinitely — whichever limit comes first stops it
  • Pause / Resume without losing history, Skip Next to skip one occurrence, and Clone to copy a template
  • Cancel to stop permanently; templates auto-complete when a limit is reached
  • Generation history showing every invoice produced, with status and amount
  • AI suggestions that detect recurring patterns from past transactions
  • Multi-currency (USD, CAD, AUD, EUR, GBP); the same engine also powers recurring bills

How it works

A background scheduler checks active templates each day. When a template's next occurrence is due, it generates the invoice, advances the schedule, and either emails it (auto-send) or leaves it as a draft.

flowchart TD
  template["Active template"] --> due{"Due & under limits?"}
  due -->|"No"| wait["Wait for next day"]
  due -->|"Yes"| generate["Generate invoice"]
  generate --> mode{"Auto-send?"}
  mode -->|"Yes"| sent["Emailed to customer"]
  mode -->|"No"| draft["Draft for review"]
  generate --> advance["Advance schedule"]

How to use it

  1. Open Recurring (/books/recurring) and click New Template.
  2. Set Type to Invoice, pick the customer, and choose a Frequency.
  3. Enter the template amount or line items and a Start Date (cannot be in the past).
  4. Set days_until_due so each invoice's due date is offset from its generation date.
  5. Optionally turn on auto-send, set an end date or max occurrences, and add notes.
  6. Use the Invoices / Bills tabs to filter, and the row actions to Pause, Resume, Skip Next, Clone, or Cancel.
  7. Open a template's history to confirm generated invoices are being created and delivered.

Pro tips

  • For monthly billing on a fixed day, set day_of_month; if a month is shorter (e.g., 31 in February), generation falls back to the last day automatically.
  • Leave day_of_month / day_of_week blank to inherit the weekday or day from the start date.
  • Use draft mode (auto-send off) for variable amounts you want to tweak before each send; use auto-send for fixed retainers.
  • Skip Next advances the schedule by one period without generating — ideal for a billing holiday — while Pause halts all generation until you resume.
  • Setting both an end date and a max-occurrences cap is fine; whichever is hit first stops the template and flips its status to completed.
  • Clone starts a fresh copy at 0 occurrences with active status and today's start date by default — handy for spinning up a similar plan for another customer.

In-depth guide

Lifecycle & state transitions

A template moves through these states:

  • Created — starts active with its next generation set to the start date.
  • Generates — only when active, due, under its occurrence cap, and before its end date.
  • Pause — moves it to paused (no generation); Resume returns it to active and recalculates the next occurrence.
  • Completed — reaching the max-occurrences cap or passing the end date marks it completed.
  • Cancel — sets cancelled permanently.
  • Each successful run — increments the generated count, records the last generated date, and advances the schedule by the frequency.

Generation engine

A background scheduler evaluates due templates and produces the invoices, tracking per-template success or failure and the new next occurrence. Generated invoices link back to their template, so the history view lists them with status, amount, due date, and creation time.

Accounting impact

Recurring templates don't post journal entries themselves — they create invoices, and each generated invoice follows the normal invoice lifecycle:

  • Finalizing — debits Accounts Receivable and credits revenue.
  • Payments — reduce its balance.
  • Auto-send on — invoices are generated and emailed.
  • Auto-send off (draft mode) — invoices wait for you to finalize and send.

AI & automation

From transaction history, AI suggestions surface likely recurring patterns — a description, suggested frequency, average amount, counterparty, last occurrence, and a confidence score — that you can turn into templates. This complements manual creation when you're formalizing existing repeat billing.

Limits & edge cases

  • Start and end dates cannot be in the past at creation time.
  • Updating amount/total requires positive values; currency must be one of USD, CAD, AUD, EUR, GBP.
  • Deleting a template is permanent and separate from cancelling; already-generated invoices remain untouched.
  • Templates can be filtered by type, status, and customer.

Start free and automate your retainer billing.