Recurring Invoices & Management
For ongoing client relationships, you don't want to manually create the same invoice every month. ClientCove's recurring invoice system handles the schedule for you — set it up once, and the next invoice is generated and (optionally) emailed automatically.
Recurring Invoices
A recurring invoice generates copies of itself on a schedule:
- Monthly retainers
- Quarterly subscription fees
- Annual maintenance contracts
- Per-billing-cycle service charges
The schedule is set on a parent invoice, which acts as the template. ClientCove creates each new invoice from it automatically when its time comes.
How Recurrence Works
- You create an invoice and switch on Recurring Invoice
- Set the frequency, start date, and optional end date
- Choose what happens to each new invoice: email it, create it without emailing, or hold it as a draft for your review
- Save the invoice
- A daily scheduled job checks for recurring invoices whose next date has arrived
- When one is due, ClientCove creates a new invoice from the template:
- Line items, tax rate, discount, notes, and currency are copied
- It gets the next invoice number, and its title is the template's title plus the month (for example "Website Retainer — November 2026")
- The issue date is today, and the due date is today plus the Payment Terms you chose
- Its status is Sent, or Draft if the series holds new invoices for review
- It is emailed to the client only if you chose Email it to the client
- The new invoice's activity log records that it was generated from the template
This continues indefinitely, or until the end date is reached, whichever comes first.
Setting Up a Recurring Schedule
In the Create Invoice modal, or the Edit form for an existing invoice:
1. Switch on "Recurring Invoice"
A section opens with the recurring settings. A note reminds you that this invoice will be used as a template.
2. Set the frequency
Pick from the dropdown:
| Frequency | Next invoice is created |
|---|---|
| Weekly | 1 week later |
| Every 2 Weeks | 2 weeks later |
| Monthly | 1 month later |
| Quarterly | 3 months later |
| Semi-Annually | 6 months later |
| Annually | 1 year later |
3. Set the day of month
For monthly, quarterly, semi-annual, and annual schedules, new invoices are created on this day of the month (1–28). Weekly and every-2-weeks schedules ignore it.
4. Set the payment terms
Each new invoice's due date is its issue date plus these terms: Due on Receipt, or Net 7 through Net 90. The default is Net 30.
5. Set the start date
The first new invoice is created on the start date. If the start date has already passed when you save, the first one is created one period from today instead. The template invoice itself stays as it is. If you send it, the client can pay it like any other invoice.
6. Set an optional end date
Leave blank for indefinite recurrence (until you stop it manually). Set a date for time-bounded contracts (e.g. "12 monthly invoices for the year"). No new invoices are created after the end date.
7. Choose "When a new invoice is created"
- Email it to the client: each new invoice is created as Sent and emailed to the client, with a link to view and pay it
- Create it without emailing: each new invoice is created as Sent, but no email goes out. The client can still see it in the portal
- Hold as a draft for my review: each new invoice is created as a private Draft. The client can't see it until you send it. See Holding Invoices for Review
Series set up before this option existed keep working as before: Auto-send on means Email it to the client, off means Create it without emailing.
8. Save
Save the invoice. New invoices appear in your invoice list automatically, based on the schedule.
Choosing What Happens to New Invoices
Email it to the client
- Pros: Truly hands-off. Set up the recurring schedule and forget it
- Cons: If line items or amounts need to change for a specific cycle, you have to update the template before the next date
- Best for: Stable retainers where the amount never varies
Create it without emailing
- Pros: Nothing is emailed until you send it
- Cons: The invoice is already Sent, so the client can see it in the portal as soon as it's created
- Best for: Clients who prefer to find invoices in the portal rather than by email
Hold as a draft for my review
- Pros: Nothing reaches the client, by email or in the portal, until you've reviewed and sent it. Easy to adjust per-cycle variances (extra hours, expense reimbursements)
- Cons: Each invoice waits for you. Nothing goes out until someone sends it
- Best for: Time-tracked or variable retainers
Holding Invoices for Review
When a series is set to Hold as a draft for my review, each new invoice is created as a Draft:
- The client can't see it. Drafts are private to staff: they don't appear in the client's invoice list, can't be opened, downloaded, or paid, and a payment link to a draft doesn't work until it's sent
- You're notified. You get an email ("Invoice X is ready for review"), a Slack message if Slack is connected and the Invoice overdue event is on, and the invoice appears under Invoices waiting for review in the dashboard's action items
- Nothing is charged yet, even if the series has Automatic Card Payments on
Review the invoice and edit it if needed. Then either:
- Send it: the client is emailed (see below for auto-charge), or
- Mark as Sent: it becomes visible to the client without an email
Sending or marking it as sent resets the issue date to today and the due date to today plus the series' payment terms.
With Automatic Card Payments
If the series auto-charges and the client has a card on file, sending (or marking as sent) a held invoice charges the card at that moment. The confirmation tells you before you click.
- The charge goes through: the client is emailed the paid invoice instead of a request to pay
- It fails, or the bank needs the client to confirm: the client is emailed the invoice to pay
- You raised the amount above what the client agreed to, or changed the schedule: the card isn't charged, and the client is emailed the invoice to pay. They can agree to the new terms when they pay
- You changed the invoice's client: the card isn't charged, and the invoice is sent normally
- Invoices you create with "Generate now" are never charged when sent, only invoices the schedule created
The message after you send tells you exactly what happened. The client always gets at most one email.
Automatic Card Payments
A recurring invoice can charge the client's saved card automatically each time a new invoice is created. Nothing is charged until both you and the client have agreed.
Turning it on
- Open the parent recurring invoice and click Edit
- In the recurring settings, switch on Auto-charge saved card
- Save
Nothing changes yet. The next time the client pays an invoice in this series by card, the payment drawer shows a required checkbox: they agree to save the card and to have it charged for future invoices in this series, at the amount and schedule shown (for example "$250.00 monthly"). Once they pay with the box ticked, the card is on file, and the edit form shows it as "Visa •••• 4242, authorized" with the date.
From then on, each new invoice in the series is charged as soon as the daily schedule creates it. The client receives the paid invoice by email instead of a request to pay.
What it does not do
- It never charges without the client's agreement. Staff cannot save a card for a client. The client has to tick the box themselves while paying.
- It only charges cards. Bank transfers and other payment methods are not saved.
- It only charges invoices created by the schedule. Creating an occurrence by hand does not charge the card, and neither do one-off invoices.
- It never charges more than the client agreed to. If you raise the series amount or change its frequency after the client agreed, the card is not charged. The client is emailed the invoice to pay instead, and can agree to the new terms when they pay.
- It charges at most once per billing period, even if the schedule runs again.
- It does not retry. A charge that fails is not attempted again automatically.
- It charges when each invoice is created if the series emails new invoices or creates them without emailing. If the series holds new invoices for review, the card is charged when you send each one instead. See Holding Invoices for Review.
When a charge doesn't go through
If the card is declined, has expired, or the client's bank asks them to confirm the payment:
- The invoice stays unpaid
- The client is emailed the invoice with a short note explaining why, and a link to pay
- You receive an email (and a Slack message, if Slack is connected and the Invoice overdue event is on)
- The saved card is kept, and next cycle's invoice is charged as normal
When the client pays a failed invoice, they can tick the box again to replace the card on file.
If Stripe's response is unclear (for example a timeout), the client is not emailed, so they are never asked to pay twice. You get an email asking you to check the payment in your Stripe dashboard. If it went through and your Stripe webhook is set up, the invoice is marked paid automatically when Stripe confirms it.
Invoices in a series show their auto-charge status to staff: Auto-charged, Auto-charge failed, Needs client authentication, or Auto-charge needs checking.
Stopping automatic payments
- You: switch off Auto-charge saved card to pause charging, or click Remove card in the edit form to delete the saved card. Removing the card means the client must agree again before any future automatic charge.
- The client: every automatically paid invoice email includes a Stop automatic payments link. They confirm on the page that opens, the card is removed, and you get an email letting you know. Future invoices are then emailed to them to pay.
Turning auto-charge back on after switching it off reuses the card already on file, if there is one. Use Remove card if you want the client to agree again.
Stopping a Recurring Series
To end a recurring schedule:
Method 1 — Set an end date
- Open the parent recurring invoice
- Edit
- Set the End Date to today (or the last cycle date)
- Save
The cron stops creating new occurrences past the end date.
Method 2 — Toggle off recurring
- Open the parent recurring invoice
- Edit
- Switch Recurring Invoice off
- Save
Removes the recurring flag entirely. No more occurrences will generate.
What happens to existing occurrences?
Already-generated occurrences stay in the dashboard with their status (Sent / Paid / etc.). Stopping recurrence only affects future occurrences.
Cancelling an Invoice
For invoices sent in error or no longer collectible:
- Open the invoice (admin/editor)
- Click the Cancel Invoice action in the menu
- Confirm
Cancellation:
- Flips status to Cancelled
- Sends an optional cancellation notice to the billing contact (configurable)
- Stops overdue reminders for this invoice
- Logs the action with reason (if provided)
The invoice stays in the database (the record is preserved) but it's filtered out of "outstanding" and "overdue" views.
To uncancel: edit the invoice and change the status back to Sent. Note that this is unusual — typically you'd create a new invoice rather than reviving a cancelled one.
Editing After Sending
Once an invoice is in Sent / Viewed / Paid / Overdue status, editing is restricted:
| Field | Editable after Sent? |
|---|---|
| Notes | Yes |
| Payment Terms text | Yes |
| Status (manual changes) | Yes (Cancel, Mark Paid) |
| Line items | No — locked |
| Quantities, prices, totals | No — locked |
| Tax rate, discount | No — locked |
| Issue date | No — locked |
| Due date | Yes (admin only) |
| Client | No — locked |
| Currency | No — locked |
The lock preserves the integrity of what was sent. To make substantive changes:
- Cancel the original invoice
- Create a new invoice with the corrected info
- Note the cancellation in the new invoice's notes ("Replaces cancelled INV-2026-0042")
- Send the new invoice
Correcting a Payment
A paid invoice's payment date decides which month the payment counts toward on the Revenue page. If a check was recorded on the wrong day, or a payment landed in the wrong month, fix it from the editor:
- Open the paid invoice and click Edit, or click the pencil icon on its row in the invoices list
- In the Edit Invoice window, Status shows a green Paid badge, with Payment Date and Payment Method below the due date
- Change the Payment Date
- Click Update Invoice
The payment moves to the new month on the Revenue page. The amount collected stays the same.
Payment Method can be changed for payments you recorded with Mark as Paid. The choices are Check, ACH / Bank Transfer, Cash, Credit Card (Offline), PayPal, Venmo, Zelle, and Other. A Stripe payment shows the card that was charged, such as Stripe — Visa •••• 4242, and can't be changed. If the payment had a reference (a check number, say), it's shown under the method.
Changing only the date keeps the time of day that was originally recorded, so saving never shifts a payment into a different month by accident.
These fields only appear once an invoice is paid. To record a payment in the first place, use Mark as Paid.
Linking to the Editor
While the editor is open, the address bar shows ?cove= followed by the invoice's ID, for example /invoices/?cove=4643. That makes the editor linkable:
- Refresh the page and the editor reopens on the same invoice
- Share the link with a teammate and it opens straight into that invoice's editor
- It works on the Invoices list and on a single invoice's page
Closing the editor removes the ?cove= part again. The link only opens the editor for staff who can edit invoices; anyone else sees the page as usual. If the invoice no longer exists, you'll see an error and the editor stays closed.
cove is the same address-bar setting other areas use to open their editors, so links work the same way across the portal.
Bulk Actions
The invoice list table supports bulk operations:
- Tick checkboxes on multiple rows (or the header checkbox to select all)
- The bulk actions bar appears
- Pick an action
Available bulk actions:
- Send — send all selected Draft invoices
- Mark as Paid — manually mark all selected as paid
- Cancel — cancel all selected
- Export Selected to CSV — export only the selected rows
Bulk actions are admin/editor only. Each action confirms with a toast showing the count affected.
CSV Export
The Export CSV button (top toolbar) downloads the current filtered invoice list as a CSV file with these columns:
- Invoice Number
- Client Name
- Status
- Issue Date
- Due Date
- Subtotal
- Tax
- Discount
- Total
- Balance Due
- Currency
- Payment Date (if paid)
- Notes
The export respects all active filters — search, status, client, date range — so you can export "all paid invoices for Acme in Q2" by setting the filters first, then exporting.
Useful for:
- Importing into accounting software (QuickBooks, Xero, FreshBooks)
- Tax preparation
- Custom reporting
- Backup before bulk operations
The Activity Log
Every invoice has an activity log accessible from its detail view:
| Event | Logged when |
|---|---|
| Created | Invoice is created |
| Sent | Email is sent to billing contact |
| Viewed | Client opens the invoice page |
| Payment Initiated | Client clicks Pay (Stripe payment intent created) |
| Payment Succeeded | Stripe webhook confirms payment |
| Payment Failed | Stripe webhook reports a failure |
| Manually Marked Paid | Admin marks paid via the manual flow |
| Status Changed | Any status change (with old → new) |
| Edited | Field changes after sending (with field name) |
| PDF Regenerated | PDF is regenerated |
| Resent | Notification email is resent |
| Cancelled | Invoice is cancelled |
| Refund Processed | Stripe webhook confirms a refund |
| Recurrence Generated | A new occurrence is created from a recurring parent |
Each entry captures: who (user ID, or "Stripe webhook" for system events), when, and metadata (payment amount, IP for client actions, etc.).
The log is append-only — entries can't be edited or deleted. It's the source of truth for billing audits.
Capability Matrix
Final reference for who can do what:
| Action | Roles |
|---|---|
| View Invoices dashboard | Administrator, Editor, Representative (with config) |
| Create invoices | Administrator, Editor (publish_invoices capability) |
| Edit Draft invoices | Administrator, Editor (edit_invoices capability) |
| Edit Sent invoices (limited) | Administrator, Editor |
| Send invoices | Administrator, Editor |
| Mark as Paid manually | Administrator, Editor |
| Cancel invoice | Administrator, Editor |
| Bulk operations | Administrator, Editor |
| CSV Export | Administrator, Editor |
| Configure Stripe | Administrator only |
| Configure invoice settings (numbering, etc.) | Administrator only |
| Set up recurring schedule | Administrator, Editor |
| View invoice as client | Client users with client_billing role OR designated billing contact |
| Pay invoice | Any client user with view access |
| View activity log | Administrator, Editor (full); client (limited to their own actions) |
Subscriber-level users have no invoice access. Client users see only their own client's invoices.
Recurring is set up on the parent — kept off the child invoices. When ClientCove generates a new occurrence from a recurring parent, the new child invoice itself is NOT marked as recurring. This prevents double-recurrence (where a child would also generate occurrences). The series flows from one parent → many children, not parent → child → grandchild.