Skip to content

Sending and Sharing an Invoice

Once you've created an invoice, you need to get it to the client. FoxCLM gives you two paths:

  • Send - email the invoice directly to the linked clients
  • Share - generate a public URL with a QR code; paste into SMS, chat, or email

Both result in a client-facing page where they can view and (optionally) pay. This tutorial walks through both.

Prerequisites: an invoice with at least one client linked. See Your First Invoice if you haven't created one yet.

1. The invoice actions panel

Open Invoices in the sidebar. Each row has an Actions column on the right with all the things you can do:

Invoice actions

Action reference:

ButtonWhat it does
SendEmails the invoice to every linked client
Submit for ApprovalRoutes the invoice to an admin before sending (if you've enabled Invoice Approval Lock)
EditOpens the full line-item editor
DesignerOpens the visual designer
CloneDuplicates the invoice with an incremented invoice number
ShareGenerates a public URL (turns into Copy Link / Unshare once active)
DeleteSoft-deletes - recoverable from Recycle Bin

2. Sending by email

Click Send on any invoice. FoxCLM:

  1. Looks up every client linked to the invoice.
  2. Pulls their email from client_info.email.
  3. Sends a templated email with a link to the public invoice page.
  4. Moves the invoice workflow state from draft to sent.
  5. Writes an entry in the workflow history.

If you've configured a send_invoice_email workflow action on the draft -> sent transition, it also fires any custom subject line and body you've defined.

What the client sees in their email

A short email with your company branding, the invoice number, the total, and a View Invoice button that links to the share page.

3. Sharing without email

Click Share on a draft invoice. FoxCLM generates a unique URL and the row expands to show it:

Expanded invoice with share link and history

The expanded row shows:

  • Line Items - everything that will be billed (Description, Qty, Rate, Amount)
  • Workflow History - a timestamped audit log of every status change with the reason (e.g. "auto overdue - Automatically marked overdue - past due date", "send draft - sent", "revert paid - draft")

Once shared, the action buttons change:

  • Copy Link - copy the full URL to your clipboard
  • Unshare - invalidate the token; anyone holding the old URL gets a 404

You can also generate a QR code from the share to display on mobile or print on physical invoices.

4. The client-facing invoice page

Whether sent by email or shared manually, the client lands on the public viewer page:

Public invoice view

Key elements:

  • Header - "Shared Invoice" title and tagline
  • Language selector - clients can switch languages (English, Chinese, Malay, Spanish, Korean)
  • Rendered invoice - the full invoice as designed, with your branding
  • Status watermark - e.g. "DRAFT" or "PAID" overlay
  • Line items table - grouped by client if the invoice has multiple billable parties
  • Bottom bar (sticky) - total amount and payment buttons

If you enabled Show payment link on shared invoice during creation:

  • Pay with Alipay button - available for AUD, CAD, EUR, GBP, HKD, JPY, MYR, NZD, SGD, USD
  • Pay with WeChat Pay button - available for CNY only

Clicking either redirects the client to Stripe Checkout. After successful payment, Stripe sends a webhook to FoxCLM, which:

  1. Records a payment_records entry with the Stripe Payment Intent ID.
  2. Advances the invoice workflow state to paid.
  3. Fires any send_paid_confirmation workflow action.
  4. Changes the share page message to "Payment received - thank you!".

5. Revoking or refreshing shares

  • Unshare any time to invalidate the URL.
  • Re-share to generate a new URL (old one stays dead).

Unsharing doesn't delete anything - it just revokes public access.

Automating send and share

Combine these with workflow actions to eliminate the manual click:

TransitionActions
draft -> sentsend_invoice_email, share_invoice
sent -> overduesend_overdue_notice
Any -> paidsend_paid_confirmation, unshare_invoice

With this setup, clicking Send once handles the whole lifecycle. No manual follow-ups.

What's next

FoxCLM Documentation