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) sent 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; ClientCove creates each occurrence automatically when its time comes.

How Recurrence Works

  1. You create an invoice and toggle This is a recurring invoice on
  2. Set the frequency (monthly / quarterly / annual) and optional end date
  3. Set whether new occurrences should auto-send or stay as drafts
  4. Save the invoice
  5. A WordPress cron job runs daily, checking for recurring invoices whose next occurrence is due
  6. When due:
    • ClientCove duplicates the invoice (line items, tax, discount, notes — all preserved)
    • Updates the invoice number to the next sequential number
    • Updates issue date to today and due date to today + payment terms
    • Either saves as draft or sends, based on the auto-send setting
    • Logs the recurrence event on both the parent and the new child invoice

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 Draft):

1. Toggle "This is a recurring invoice"

A new section reveals with recurring-specific fields.

2. Set the frequency

Pick from the dropdown:

FrequencyNext occurrence advances by
Monthly+1 month
Quarterly+3 months
Annual+1 year

3. Set the start date

Defaults to the issue date of this invoice. The first occurrence is this invoice; subsequent occurrences are generated from this start date forward.

4. 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").

5. Toggle "Auto-send new occurrences"

  • On: New occurrences are auto-sent to the client (status: Sent immediately)
  • Off: New occurrences land as Drafts; admin reviews and sends manually

6. Save

Save the invoice. The first occurrence is this invoice you just created. Subsequent occurrences will appear in the dashboard automatically based on the schedule.

Auto-Send vs Auto-Create-Draft

The auto-send toggle is the most important recurring decision:

Auto-Send

  • Pros: Truly hands-off — set up the recurring schedule and forget it
  • Cons: If line items / amounts ever need to change for a specific cycle, you have to catch it before the cron runs
  • Best for: Stable retainers where the amount never varies

Auto-Create-Draft

  • Pros: Each cycle creates a draft you review before sending — easy to adjust per-month variances (extra hours, expense reimbursements)
  • Cons: Requires a recurring task to remind you to review and send
  • Best for: Time-tracked retainers where actual hours might vary cycle to cycle

Most ClientCove portals use a mix — flat-fee retainers auto-send; time-tracked or variable retainers auto-draft.

Stopping a Recurring Series

To end a recurring schedule:

Method 1 — Set an end date

  1. Open the parent recurring invoice
  2. Edit
  3. Set the End Date to today (or the last cycle date)
  4. Save

The cron stops creating new occurrences past the end date.

Method 2 — Toggle off recurring

  1. Open the parent recurring invoice
  2. Edit
  3. Toggle This is a recurring invoice off
  4. 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:

  1. Open the invoice (admin/editor)
  2. Click the Cancel Invoice action in the menu
  3. 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:

FieldEditable after Sent?
NotesYes
Payment Terms textYes
Status (manual changes)Yes (Cancel, Mark Paid)
Line itemsNo — locked
Quantities, prices, totalsNo — locked
Tax rate, discountNo — locked
Issue dateNo — locked
Due dateYes (admin only)
ClientNo — locked
CurrencyNo — locked

The lock preserves the integrity of what was sent. To make substantive changes:

  1. Cancel the original invoice
  2. Create a new invoice with the corrected info
  3. Note the cancellation in the new invoice's notes ("Replaces cancelled INV-2026-0042")
  4. Send the new invoice

Bulk Actions

The invoice list table supports bulk operations:

  1. Tick checkboxes on multiple rows (or the header checkbox to select all)
  2. The bulk actions bar appears
  3. 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:

EventLogged when
CreatedInvoice is created
SentEmail is sent to billing contact
ViewedClient opens the invoice page
Payment InitiatedClient clicks Pay (Stripe payment intent created)
Payment SucceededStripe webhook confirms payment
Payment FailedStripe webhook reports a failure
Manually Marked PaidAdmin marks paid via the manual flow
Status ChangedAny status change (with old → new)
EditedField changes after sending (with field name)
PDF RegeneratedPDF is regenerated
ResentNotification email is resent
CancelledInvoice is cancelled
Refund ProcessedStripe webhook confirms a refund
Recurrence GeneratedA 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:

ActionRoles
View Invoices dashboardAdministrator, Editor, Representative (with config)
Create invoicesAdministrator, Editor (publish_invoices capability)
Edit Draft invoicesAdministrator, Editor (edit_invoices capability)
Edit Sent invoices (limited)Administrator, Editor
Send invoicesAdministrator, Editor
Mark as Paid manuallyAdministrator, Editor
Cancel invoiceAdministrator, Editor
Bulk operationsAdministrator, Editor
CSV ExportAdministrator, Editor
Configure StripeAdministrator only
Configure invoice settings (numbering, etc.)Administrator only
Set up recurring scheduleAdministrator, Editor
View invoice as clientClient users with client_billing role OR designated billing contact
Pay invoiceAny client user with view access
View activity logAdministrator, Editor (full); client (limited to their own actions)

Subscriber-level users have no invoice access. Client users see only their own client's invoices.

Was this page helpful?