Repository navigation
[Epic]: V1→V2 parity — Recurring Invoices #644
Description
Domain epic under the V1→V2 feature-parity umbrella (#136). Full audit: 01-recurring.md (2026-07-18 parity audit, v1 prep/v180 vs v2 develop).
Summary: RecurringInvoice is schedule-CRUD only — no generation engine, no scheduler/job infrastructure exists anywhere in the app. Settings render three toggles (cron_key, automatic_email_on_recur, generate_invoice_number_for_draft) whose backends don't exist. The single biggest blocker is the generation engine (#641) — it unblocks the frequency-parity, stop/reactivate, auto-email, and numbering issues below.
Sub-issues
- [Invoices]: Recurring invoice generation engine — materialize due invoices, advance next-run date, honor end date #641 — Recurring invoice generation engine (schema + service) — critical path
- [Invoices]: Recurring frequency parity — interval-based schedules (every N days/weeks/months/years) #642 — Recurring frequency parity (interval-based schedules)
- [Invoices]: Stop a recurring invoice from the list #643 — Stop a recurring invoice from the list
- [Invoices]: Create a recurring invoice from an existing invoice (edit action) #586 — Create a recurring invoice from an existing invoice (reopened — still a stub)
- [Core]: Trigger recurring invoice scheduler via artisan command #395 — Trigger recurring invoice scheduler via artisan command
- [Invoices]: Reactivate a stopped recurring invoice #362 — Reactivate a stopped recurring invoice
- [Invoices]: Automatically send invoice emails on status change #400 — Automatically send invoice emails on status change
- [Invoices]: Generate invoice number for draft recurring invoices #368 — Generate invoice number for draft recurring invoices
- [Invoices]: Recurring Invoices — filter by recurring status #143 — Filter invoice list by recurring status
- [Invoices]: Dashboard widget for Recurring Invoices #127 — Dashboard widget for Recurring Invoices
- [Core]: Subscription & Contract Management #374 — Subscription/contract management (beyond-parity successor)
Specific
Reach recurring-invoice feature parity with InvoicePlane v1: a working generation engine that materializes due invoices on schedule, full frequency-interval support, stop/reactivate lifecycle, auto-email on generation, and correct draft-numbering behavior.
Measurable
All 11 sub-issues above closed; a recurring schedule created today generates real invoices on its due dates without manual intervention, matching v1's cadence and numbering semantics.
Achievable
Sequenced by the generation engine (#641) as the critical-path dependency; the rest can proceed in parallel once its schema lands.
Relevant
Recurring billing is core SaaS/subscription functionality; today the v2 feature is entirely decorative.
Time-Bound
Engine + schema: 1 sprint. Remaining sub-issues: 2-3 sprints depending on parallelization.
Activity