Garage Door OS Docs
Invoices & Payments

Recurring Invoices

Enable scheduled billing templates, business send-day defaults, customer overrides, and the Recurring tab.
7 min read

Recurring Invoices

Configure scheduled invoice generation from recurring templates—separate from Stripe/Helcim subscription billing for automatic card charges.

Overview

Recurring invoices let you define a template invoice (customer, line items, schedule) and have ServiceFlow generate a new invoice each billing cycle. Templates appear on Invoices → Recurring. Generated copies keep the template invoice number with a suffix: {templateNumber}-{sequence}-{MMDDYYYY} (for example INV-0042-1-07032026).
Two related but different features:
FeaturePurpose
Recurring invoice templates (this guide)Clone and send (or draft) invoices on a schedule
Customer subscriptions (/customers/subscriptions)Stripe ACH/card subscription checkout tied to a recurring-flagged invoice
You can use one or both depending on whether you need scheduled invoice documents vs. processor-managed auto-pay.

Configuration at a glance

Recurring billing is configured in three layers. Set them in this order:
LayerWhere in the appWhat you configure
1. BusinessSettings → GeneralRecurring Invoice SettingsTurn the feature on; default send day (month/week); Send automatically vs Create drafts for manual review
2. Customer (optional)Customers → Edit → expand AdvancedPer-customer send-day overrides below Payment Terms
3. TemplateInvoices → New Invoice (or edit) → Review & Submit stepRecurring Invoice toggle + Recurring Schedule
Send-day rules (business default or customer override):
Template scheduleSend-day setting used
Weekly, bi-weeklyDefault Send Day of Week (Sunday = 0 … Saturday = 6)
Monthly, quarterly, bi-annual, annualDefault Send Day of Month (1–28)
Only one send-day rule applies per template, based on its schedule.

How to access

AreaMenu pathRoute
Business settingsSettings → GeneralRecurring Invoice Settings/settings/general
Recurring templates listInvoices → Recurring tab/invoices?tab=recurring
New recurring templateInvoices → New Invoice/invoices/new
Edit a templateInvoices → RecurringView, or /invoices/:id/edit/invoices/:id/edit
Customer send-day overridesCustomers → EditAdvanced/customers/edit/:id
ACH/card subscriptionsCustomers → Subscriptions/customers/subscriptions
Requires business:settings (or admin) for business toggles, and invoices:view / invoices:update for templates.

What you can do today

  • Enable or disable recurring invoices for the whole business.
  • Set a default send day of month (1–28) for monthly, quarterly, bi-annual, and annual schedules.
  • Set a default send day of week for weekly and bi-weekly schedules.
  • Choose Send automatically or Create drafts for manual review when the daily job generates invoices.
  • Mark invoices as recurring templates when creating or editing (when the feature is enabled).
  • View all templates on the Recurring tab with schedule, next send date, and active/paused status.
  • Pause or resume a template without deleting it.
  • Override send days per customer (optional) in the customer form Advanced section.

Prerequisites

  • Recurring invoices enabled under Settings → General → Recurring Invoice Settings.
  • A customer with bill-to email (and phone if you use dual SMS) when Send automatically is on.
  • Email integration (Mailgun or similar) configured for auto-send.
  • API server running with the daily recurring-invoice cron (enabled by default on single-instance dev; see Environment & deployment below).

Step-by-step configuration

1. Enable recurring invoices (business)

  1. Go to Settings → General (/settings/general).
  2. Scroll to Recurring Invoice Settings (below Late Fee Settings).
  3. Turn on Enable Recurring Invoices.
  4. Set Default Send Day of Month (1–28) — used for monthly, quarterly, bi-annual, and annual templates.
  5. Set Default Send Day of Week — used for weekly and bi-weekly templates (Sunday through Saturday).
  6. Under Invoice Delivery, choose:
    • Send automatically — generated invoices are emailed when the daily job runs (and SMS if Send Text Messages with Emails is on under Customer Notifications on the same page).
    • Create drafts for manual review — generated invoices stay in draft until staff review and send from the invoice list or detail page.
  7. Click Save Settings at the top of General Settings.
Note: Default 'Send to customer' on save (under Customer Notifications on the same page) only affects the checkbox when staff manually create or save jobs, estimates, and invoices. It does not control cron-generated recurring invoices—use Invoice Delivery above for that. See Send to Customer (Default).

2. Optional: customer send-day overrides

Use this when one customer should bill on a different day than the business default.
  1. Open Customers and Edit the customer (/customers/edit/:id).
  2. Expand the Advanced section at the bottom of the form.
  3. Below Payment Terms (and credit limit when applicable), set either or both (leave blank to use business defaults):
    • Recurring Invoice Send Day (Month) — overrides the business default for monthly+ schedules.
    • Recurring Invoice Send Day (Week) — overrides the business default for weekly/bi-weekly schedules.
  4. Save the customer.
These fields appear only when recurring invoices are enabled for your business.

3. Create a recurring invoice template

  1. Go to Invoices → New Invoice (/invoices/new).
  2. Complete Basic Information, Addresses, and Items & Services as for any invoice.
  3. On the Review & Submit step:
    • Turn on Recurring Invoice.
    • Choose Recurring Schedule: weekly, bi-weekly, monthly, quarterly, bi-annual, or annual.
    • Optionally use Send to customer on save if you want the template itself delivered immediately (separate from future scheduled copies).
  4. Save the invoice.
The saved record is a template (isRecurring with no parent template). ServiceFlow computes Next send date from the schedule and send-day rules. New templates start as Active.
If recurring is disabled at the business level, the recurring controls are hidden and an info message links to General Settings.

4. Edit an existing template

  1. Open Invoices → Recurring (/invoices?tab=recurring) and click View, or open /invoices/:id/edit.
  2. Update line items, amounts, or schedule on Review & Submit.
  3. Save — future generated copies use the updated template content.
Changing the schedule or send-day rules recalculates Next send date from the current date and applicable send-day settings.

5. Manage templates on the Recurring tab

  1. Open Invoices (/invoices).
  2. Select the Recurring tab (/invoices?tab=recurring).
  3. Review Customer, Schedule, Next Send, Status, and Amount.
  4. Use View to open the template, or Pause / Resume to stop or restart scheduled generation without deleting the template.
Paused templates are skipped by the daily job until resumed. If recurring is disabled in settings, the tab still appears but shows a warning that the feature is off.

6. What happens on each billing cycle

Once per day (default 4:00 AM server time), for each active template whose next send date has arrived:
  1. ServiceFlow clones the template (line items, amounts, customer, addresses).
  2. Assigns invoice number {templateNumber}-{sequence}-{MMDDYYYY} where sequence is the count of prior generated invoices for that template plus 1.
  3. If Send automatically is on, emails the customer; otherwise leaves the copy in draft for review.
  4. Advances the template’s next send date by one period (week, month, quarter, etc.).
Staff can open draft children from the main Invoices list, edit if needed, and send manually.

7. Stripe / Helcim subscriptions (optional)

For automatic card or ACH charges on a recurring amount, use Customers → Subscriptions and generate a subscription link from a recurring-flagged invoice. That flow is independent of template cloning—see Stripe Payments and subscription setup on the customer subscriptions page.

Environment & deployment

For local development, the main API runs recurringInvoiceCronService in-process daily at 4:00 AM server time while the API process is running.
Business settings are stored in businesses.settings JSON:
{
  "recurringInvoiceConfig": {
    "enabled": false,
    "defaultSendDayOfMonth": 1,
    "defaultSendDayOfWeek": 1,
    "autoSend": false
  }
}
Customer optional overrides: recurringSendDayOfMonth (1–28), recurringSendDayOfWeek (0–6, Sunday = 0).
See HomeImprovment/docs/ENVIRONMENT_VARIABLES.md for cron and production multi-instance notes.

Troubleshooting

SymptomCheck
No Recurring Invoice toggle on new invoiceEnable Recurring Invoices under Settings → General and save.
Recurring tab emptyCreate a template with Recurring Invoice on; only top-level templates (not generated children) appear.
Invoices not auto-sendingInvoice Delivery must be Send automatically; customer needs email; email integration must be configured.
Wrong billing dayVerify business Default Send Day settings and any customer Advanced overrides match the template’s schedule type (week vs month).
Template not generatingConfirm status is Active (not Paused) and Next Send date is today or earlier; API must be running for the daily cron.

Current limitations

  • Customer send-day fields live in the Advanced collapsed section—expand Advanced on edit to find them.
  • Email notification when drafts await review is not automated yet; staff should monitor the invoice list or Recurring tab when using manual review mode.
  • The daily job runs in-process on the API (recurringInvoiceCronService). On multi-instance production, coordinate with your deployment so only one instance runs scheduled jobs, or add an external scheduler later.
  • Mobile app does not yet expose the Recurring tab or business recurring settings.

Related features