Sending Invoices & PDF Generation

After an invoice is created, sending it is a single click — ClientCove generates a branded PDF, packages it with a notification email, and delivers it to the client's billing contact. This page covers the email mechanics and the PDF output.

How Sending Works

When you send an invoice, ClientCove:

  1. Generates the PDF (if not already generated) using the configured method
  2. Builds the notification email using your Email Designer template (if configured) or the default template
  3. Attaches the PDF to the email
  4. Sends to the client's billing contact (designated in the Client Workspace Settings tab)
  5. Updates invoice status from Draft → Sent
  6. Records the send in the invoice activity log
  7. Returns to the dashboard with a success toast

The billing contact opens the email, reads the inline summary, and can either:

  • Click the included PDF attachment to download
  • Click the "View Invoice" CTA to open the invoice in the portal (where they can pay if Stripe is configured)

Sending an Invoice

Two paths from the dashboard:

From the create modal

  1. Open Create Invoice
  2. Fill in all fields
  3. Click Save and Send instead of Save as Draft
  4. Invoice is created and sent in one operation

From the single-invoice view

  1. Open a Draft invoice
  2. Click the Send button in the toolbar
  3. Confirm the send
  4. Email goes out, status flips to Sent

Resending

For invoices already in Sent status, the button changes to Resend — same mechanics, useful for nudging clients who haven't paid.

The Notification Email

The default invoice notification email contains:

Subject line

Invoice #INV-2026-0042 from <your company name>

Body

  • Greeting with the recipient's name
  • Brief summary: invoice number, total amount, due date
  • A View Invoice CTA button linking to the portal
  • The invoice PDF as an attachment
  • Footer with your company name and email

Email Designer integration

If you've set up custom email templates in the Email Designer, ClientCove uses the template designated for invoices. The notification picks up:

  • Your portal logo
  • Your color theme
  • Custom header/footer content
  • Custom button styling

To configure templates, go to Settings → Email Designer and create or edit the New Invoice template. Three template types apply to invoices:

Template typeWhen sent
New InvoiceWhen invoice is sent (Draft → Sent)
Payment ReceivedWhen payment is confirmed (any → Paid)
Overdue ReminderWhen overdue cron runs (Sent → Overdue)

If no custom template is configured, ClientCove uses a built-in default that's clean and functional.

PDF Generation

The invoice PDF is generated server-side and stored as a media library attachment. It uses your branding:

  • Your company logo (from Settings → Design)
  • Your company name and email (from Settings → Company Info)
  • Your color theme

The PDF includes:

  • Header with logo, company info, and "INVOICE" label
  • Invoice number, issue date, due date
  • "Bill To" — client name and address
  • Line items table with description, details, quantity, unit price, total
  • Subtotal, tax, discount, total summary
  • Payment instructions with payment email
  • Notes from the invoice
  • Footer with company contact info

The PDF is downloadable from the single-invoice view via a secure URL with a one-time nonce.

PDF Generation Method

ClientCove offers two PDF generation methods, configurable per-invoice via the PDF Method field:

Auto-generate (default)

  • ClientCove renders the invoice HTML to PDF on the server
  • No external service required
  • PDF stays in sync with invoice data — if you regenerate, the latest data is used

Upload PDF

  • For invoices where you want to provide a custom-designed PDF
  • Upload your own PDF file
  • That file is used as the attachment instead of the auto-generated one
  • Useful for special clients with unique formatting requirements

The default for all new invoices is auto-generate. Switch to Upload PDF only when you have a specific reason.

PDF Layout & Branding

The default PDF layout follows a standard professional invoice format:

Top section

  • Left: Company logo + company name + company email
  • Right: "INVOICE" label + invoice number + dates

Bill-To section

  • Client name
  • Client address (from the client's Settings tab)
  • Client billing contact name and email

Line items table

  • Description column (with details on a separate line below if provided)
  • Quantity, Unit Price, Total columns
  • Currency formatted with appropriate symbol

Totals section

  • Subtotal
  • Tax (with rate %) — only shown if > 0
  • Discount — only shown if > 0
  • Total in larger, bold text
  • Balance Due if any payments have been made

Payment section

  • Payment terms text
  • Payment email (where to send wire / ACH details)
  • "Pay online" link with portal URL

Footer

  • Company name and email
  • Generated date

Customization

The default layout is hard-coded in clientcove_get_invoice_pdf_html(). For deeper customization (custom layouts, logos in different positions, additional sections), the function can be overridden via a child theme or filter.

Uploaded PDFs

If you choose Upload PDF as the generation method:

  1. In the invoice editor, switch PDF Method to Upload PDF
  2. The Upload PDF field appears
  3. Click to browse or drag-drop a PDF file
  4. The file is uploaded to the WordPress media library
  5. Save the invoice

The uploaded PDF replaces the auto-generated one wherever a PDF is needed:

  • The download button serves the uploaded file
  • The notification email attaches the uploaded file
  • The single-invoice page shows a "Custom PDF" indicator

You can switch back to auto-generate later — the uploaded file stays in the media library but isn't referenced.

Resending

For invoices in Sent / Viewed / Overdue status:

  1. Open the single-invoice view
  2. Click the Resend button in the toolbar
  3. Confirm

The same email goes out to the same billing contact:

  • The PDF is regenerated (if auto-generate) to pick up any data changes
  • The send is logged in the activity log
  • A toast confirms

Use Resend for:

  • Reminding a client about an unpaid invoice
  • Re-sending after the client says they didn't get the original
  • Sending an updated PDF after status or notes changes

Auto-Detection of Views

When the client clicks the link in the email and lands on the portal invoice page:

  1. ClientCove detects the first view
  2. Stamps the first_viewed_at field with the current timestamp
  3. If the invoice is in Sent status, flips it to Viewed
  4. Logs the view event

The status change is silent — no notification to you, no email. But the dashboard reflects it immediately, so you can see at a glance which invoices have been opened vs ignored.

Subsequent views don't flip the status further (it stays Viewed) but each view is logged.

Overdue Reminders

A daily WordPress cron job checks for overdue invoices:

  1. Iterates through all Sent / Viewed invoices
  2. For each, compares due_date against today
  3. If past due, flips status to Overdue
  4. Optionally sends an overdue reminder email (if configured)

Configuring overdue reminders

In Settings → Invoices:

  • Toggle "Send overdue reminders" on/off
  • Set how many days after due date to send the first reminder (default: 1)
  • Set reminder cadence (one-time / weekly / every 3 days)

The reminder email uses the Overdue Reminder Email Designer template if configured, or the default template otherwise. It includes:

  • Days overdue count
  • Original invoice info (number, date, amount)
  • Pay Now CTA
  • Updated PDF attachment

Cron health

Overdue detection requires WordPress cron to fire reliably. For low-traffic portals, configure system cron to hit wp-cron.php regularly:

* * * * * curl -s https://yourportal.com/wp-cron.php?doing_wp_cron > /dev/null

Without external triggering, overdue status changes may be late on quiet days.

Payment Confirmation Emails

When an invoice is marked Paid (either via Stripe webhook or manual mark-as-paid), ClientCove sends a payment confirmation email:

  • To the billing contact
  • Subject: "Payment received for Invoice #INV-2026-0042"
  • Body: Confirmation message with payment amount, date, method
  • Updated PDF attached (showing the Paid status)

Uses the Payment Received Email Designer template if configured.

The same email goes out for both Stripe-initiated payments (automatic via webhook) and manual marks (e.g. when you mark an invoice paid because the client paid by check).

Was this page helpful?