Browse the manual
Recurring invoices
Automate invoice generation with schedules that create invoices each day, week, or month.
On this page
For: business owners billing the same customer on a regular schedule. Where: Recurring in the navigation. Owners, admins and employees see it.
How recurring invoices work
A recurring invoice is a template that generates new invoices on a schedule. You set the customer, line items, price basis, tax choices and schedule once. Pepper creates a new draft, or issues and emails an invoice, each time the schedule fires.
When a schedule is due:
- Pepper creates one invoice for the stored next invoice date.
- With auto-send off, the invoice stays a draft for review.
- With auto-send on, Pepper issues the invoice and saves its email in the outbox.
- The next invoice date advances from the scheduled date, so the schedule does not drift.
- After saving the invoice and schedule, Pepper attempts the queued email.
Setting up a recurring schedule
- Click Recurring in the navigation.
- Click New schedule.
- Enter a name.
- Select an active customer.
- Select the currency.
- Check the bank account and PDF template.
- Optional: select a Language.
- Under Frequency and duration, fill in the schedule fields:
| Field | Description |
|---|---|
| Every | The interval, from 1 to 365. Required |
| Period | Days, weeks, or months. Required |
| Start date | The date of the first invoice. Required |
| End date | Optional. Leave empty to run indefinitely. Must be on or after the start date |
| Max occurrences | Optional. Leave empty for no limit |
- Add at least one template line item.
- Click Create schedule.
New schedules use the company currency, default bank account and default PDF template. Customer's language uses the customer's Document language. Choose the currency before adding lines; the currency field locks while lines exist.
The template uses the same line fields as an invoice. Description has its own width. Quantity, price, tax and amount come next, followed by Discount, Unit and Line note.
To remove a line, open More actions beside Description. Choose the numbered remove action. Add from catalog opens search below the lines. Cancel or Escape closes it without adding an item.
If a field is invalid, the form shows an error and creates no schedule.
Generated invoices
Each time the schedule fires, Pepper creates a new invoice with:
- The schedule creator as the invoice owner
- The saved bank account and PDF template
- The same customer
- The same currency and decimals, and the same line items, quantities, and prices
- Each line's saved tax choice, including its price basis, rate, class, rule and exemption wording
- An issue date equal to the schedule's next invoice date. With auto-send, see the exception below
- A due date equal to the issue date plus the default payment terms from Settings
- The schedule's language, or the customer's Document language when the schedule uses Customer's language
The generated invoice starts as a draft without a document number. Pepper assigns a number from the invoice sequence only when it finalizes the invoice.
Saved tax choices and older schedules
New schedules save each line's tax choice. Generated invoices keep that choice. Later edits to rates, classes or rules do not recalculate it. Configured rules do not run again for every occurrence.
An older schedule can still use its selected rate as it stands on the generation date. Editing its name or quantity keeps that behavior. To replace it, open the schedule and select the tax choice again. Review the current rate, class, rule and price basis, then save. Future invoices use that saved choice; earlier invoices stay unchanged.
Under Entered price, choose Without tax to add tax to entered prices. Choose Includes tax to extract tax from those prices. Under Tax matching inputs, enter the context you intend the configured rules to match. Pepper does not derive a tax jurisdiction from the customer address. Read tax setup and selection.
Auto-send
With auto-send enabled, Pepper finalizes each new invoice at once and assigns a number from the invoice sequence. It then queues an email through the same outbox as the send dialog:
- Recipients: every active contact with Receives invoices. When there is none, the customer's email address. The primary billing contact is not a fallback. See Who receives emails.
- Content: the Invoice send template in the invoice language, with the issued original PDF attached.
- Result: the invoice page shows the mail server result on its Delivery tab. A temporary failure gets the same retries as any other email.
If nobody can receive the email, the invoice stays issued and Pepper sends nothing. The Email history of the invoice shows "Not sent: no recipient accepts this email." Fix the contacts, then click Send invoice on the invoice.
Invoice numbers follow issue dates (see Issue dates). A scheduled date can be earlier than the latest invoice in the sequence. This happens after a missed run, or after you finalize a later invoice by hand. In that case Pepper uses the latest issue date instead, and moves the due date by the same number of days. The invoice detail page then shows Scheduled for with the original date. The schedule's next invoice date still counts from the scheduled date, so the schedule does not drift.
Example: a monthly schedule is due on 1 October. The scheduler did not run, and you finalized an invoice dated 3 October by hand. On 4 October, Pepper issues the scheduled invoice dated 3 October, scheduled for 1 October, due 2 November with 30-day terms. The next invoice date becomes 1 November.
If the scheduler and Generate now start the same occurrence at the same time, Pepper creates one invoice.
With auto-send disabled, Pepper creates each invoice as a draft with the scheduled date. You can review, edit, and finalize it. Pepper assigns the document number at finalization. The normal issue date rules apply: if the error names a later date, change the issue date and finalize again.
Pause and resume
Pause a recurring schedule to stop generating invoices without deleting the schedule. Resume it to continue from the stored next invoice date.
If that date passed while the schedule was paused, Pepper creates the missed invoices after you resume. It creates one missed invoice per daily run, with the original issue and due dates. With auto-send, a date earlier than the latest invoice in the sequence moves to that date (see Auto-send).
Next invoice indicator
Active schedules show the next invoice date on the recurring invoice detail page.
Recurring is a table. Each row shows the schedule name, customer and currency, the frequency, the next invoice date, the number of generated invoices and the status. A paper plane icon marks a schedule that emails its invoices.
Search matches the schedule name. Use the All, Active and Paused tabs above the list. They stay visible at every screen width and show the schedule counts. Search sits below them. When a search has no matches, Clear filters removes the search and keeps the schedule tab.
Click a schedule name to see its cadence, saved lines and generated invoices. The generated list contains actual invoices only. Return through Recurring above the record to keep your filters and focus the same schedule.
Monthly dates
Monthly schedules keep the day of the start date. A start date at month end keeps month end: 31 January → 28 February → 31 March in 2026. A start on 30 January uses 28 February, then returns to 30 March. A start on 28 February 2026 is a month-end schedule, so March uses the 31st.
Catch-up behavior
If your server misses a scheduled date, Pepper generates one due invoice per run. Each run starts at 06:00 in the Business timezone from Settings > Company. Downtime or a stopped cron job can cause missed runs. It does not batch-create multiple missed invoices at once. An authorized person can use Generate now to catch up sooner. Each run can queue an email when auto-send is on.
Failed generation
The schedule shows its last attempt and a failure notice. Check that the customer is active and the template has valid line items. Correct the cause, then use Generate now to retry. Settings > Email and Settings > Reminders show the last start, completion, success and failure of each scheduled job.
Requirements
Recurring invoices require a cron job running php artisan schedule:run every minute on your server. Without cron, Pepper cannot create invoices on a schedule. The same cron job sends the queued auto-send emails.
On shared hosting, set up a cron job in cPanel or Plesk. See CLI commands for the command.
Permissions
- Owner and Admin: can create and manage all recurring schedules and see every generated invoice.
- Employee: can create schedules and manage the schedules they created. Generated invoices keep the schedule creator as their owner, so employees can open invoices from their own schedules.
- Accountant: has no access to recurring schedules.
Related pages
Need help with the product?
Contact support