Solavel Solavel Docs

Recurring Transactions

docs/solavel-finance/recurring.md

Who can use this: Owner, Manager, Accountant. URL / Route: /finance/recurring/templates (finance.recurring.templates.index). Per-type: ?type=invoice|bill|direct_pay|journal. Plan / feature gate: tracker.recurring_invoices, tracker.recurring_bills, tracker.recurring_expenses, tracker.recurring_journals (premium). Permissions: recurring.view, recurring.create, recurring.edit, recurring.delete, recurring.run.

Purpose

A Recurring Template generates the same document on a schedule — a monthly retainer invoice, a quarterly rent bill, a weekly expense, or a standing journal entry. You define the template once; Solabooks creates fresh documents automatically on each due date.

What can recur

Type Produces Feature key
Invoice Customer invoices tracker.recurring_invoices
Bill Supplier bills tracker.recurring_bills
Expense Direct-pay expenses tracker.recurring_expenses
Journal Journal entries tracker.recurring_journals

Step by step

Create a recurring template

Permission: recurring.create.

  1. Open Recurring ▸ Templates and choose the type tab (Invoices, Bills, Expenses, Journals).
  2. Click New template — or, from any existing invoice/bill, use More actions ▸ Make recurring to seed a template from that document.
  3. Fill in the document content (customer/supplier, line items, amounts) exactly as you would the one-off document.
  4. Set the schedule: frequency (weekly / monthly / quarterly / yearly), start date, and optional end date or occurrence count.
  5. Choose the run mode:
    • Create as draft — a draft document is created each cycle for you to review and post.
    • Auto-post — the document is created and posted automatically.
  6. Save the template.

Run / preview

Route: recurring.run. Permission: recurring.run.

Templates run automatically via the scheduler. You can also trigger a template manually to generate the next document immediately, useful for testing.

Edit or pause

Editing a template changes only future generated documents — already-created documents are untouched. Pause a template to stop generation without deleting it.

Common mistakes

  • "I edited the template but my generated invoice still has the old amount." Edits only affect future generated documents. To fix an already-created document, edit the invoice / bill itself.
  • "Auto-post template didn't post — I got a draft." That happens when the due date falls in a locked period. Unlock the period (or accept the draft) and post manually.
  • "Page returns 404." The recurring middleware checks all four recurring feature keys at once. If any is missing, the whole /recurring/templates page is blocked. Check at Settings.
  • Pausing vs Deleting. Pause keeps the template (and its history) but stops new documents being generated. Delete is permanent — generated documents remain but the template is gone. Pause unless you're sure.
  • Numbering surprises. Generated docs pull from the normal sequence — so if a manual invoice claimed INV-00050 between two scheduled runs, the next scheduled run will get INV-00051, not the next number in a separate "recurring" sequence.

Tips

  • Use Make recurring from an existing document instead of creating a template from scratch — line items, accounts, and tax codes are inherited.
  • Add the template's next-run dates to the Calendar view so you see what's about to land.
  • Filter the template list by type: /finance/recurring/templates?type=invoice (or bill, direct_pay, journal).

Behaviour and rules

  • Editing the template never edits past documents. Each generated document is independent once created.
  • Feature gating is combined. The /recurring/templates page checks the recurring feature keys together — your plan must grant the relevant key for the type you want.
  • Numbering. Generated documents draw numbers from the normal sequence — see Settings.
  • Auto-post respects period locks. If the due date falls in a locked period, an auto-post template creates a draft instead and flags it.

Related

Source: docs/solavel-finance/recurring.md ← All documentation