Documents and invoices

Invoices

Bill a client from the same place you do the work, with numbering that survives an audit.

Where this lives. Sign in and open /invoices in the app.

What it does

Invoices (/invoices), part of emailcampaign.ai (Campaign Cloud in the signed-in sidebar), lists every invoice, quote, proforma, credit note, and receipt with tabs for All, Drafts, Unpaid, Overdue, Paid, and Void, plus summary tiles and an aging breakdown (current, 1-30, 31-60, 61-90, 90+ days). Templates & billing profile (/settings/invoicing) is where you set your billing identity (legal name, address, tax IDs), reusable templates, tax rates, and a catalogue of items you sell.

Clicking New invoice creates a draft instantly from your default template (or a blank one) and opens it for editing; every field saves automatically. A draft has no number yet. Issue assigns it a permanent number from the template's numbering pattern (for example INV-2026-0004) and locks it in: voiding an invoice later keeps its number in the series rather than reusing it, and discarding a draft is the only way to remove an invoice that never got one.

Send emails the invoice with its PDF attached and a link to its hosted page. From picks one of your connected Google, Microsoft, or hosted mailboxes (replies come back to that inbox), or falls back to "Platform mailer (fallback, no reply inbox)"; you can mark one as the default sender. If live sending is off on the server, the confirmation says the send was simulated. Each template also carries a Reminders schedule (days relative to the due date, e.g. -3, 0, 3, 7, 14) that a background job uses to email overdue reminders automatically, alongside the manual Send reminder button.

The client opens the invoice from a white-labeled hosted page at /inv/<token> with your logo and accent color, Print and Download PDF buttons, and a Pay button when online payment is on. Mark as paid (or Record payment) updates the status yourself for bank transfers or cash; Copy pay link (Stripe) generates a link that expires in 24 hours.

Stripe is bring-your-own-account: connect in Settings with a restricted or secret API key, verified against Stripe, encrypted, and never shown again. Once connected, invoices get a Pay button and link (card, Apple Pay, Google Pay, and whatever else you enable in Stripe); money settles directly in your Stripe balance, and the invoice marks itself paid and emails a receipt automatically. A webhook makes that instant rather than within 30 minutes. Disconnecting stops new pay links but leaves existing invoices, payments, and numbers untouched.

Before you start

  • Viewing invoices needs the "view invoices" permission, a different, narrower baseline than most of the app's "view dashboard."
  • Creating, editing, sending, recording payments, duplicating, and templating invoices need "manage invoices."
  • Issuing a draft, voiding an invoice, and creating a credit note need "issue invoices."
  • Only someone with "manage invoices" can connect or disconnect Stripe (the app's own copy says "owner or admin").
  • You need at least one saved billing profile and one template with lines for "New invoice" to produce something usable immediately; a blank draft still works with everything filled in by hand.

Set it up, step by step

  1. Open Templates & billing profile under Settings (or the link on the Invoices page) and add your billing profile: legal name, address, and tax IDs.
  2. Create a template: set its numbering pattern, currency, due days, tax mode, default sender mailbox, and reminder days.
  3. Go to Invoices and click New invoice (or pick a specific template from the dropdown arrow next to it).
  4. Edit the lines, PO number, and dates as needed; changes save on their own.
  5. Click Issue to lock in the invoice number.
  6. Click Send, choose the sending mailbox, confirm the recipient, and send.
  7. To accept online payments, open Settings, paste a Stripe restricted key under "Get paid online," and click Connect Stripe.
  8. When money arrives outside Stripe, open the invoice and click Mark as paid or Record payment.

What you should see

A draft shows no invoice number in its header. After Issue, the header shows the permanent number and the status changes. The Invoices list's Overdue tile and aging row only populate once something is actually unpaid past its due date. The hosted page shows a green "Paid" badge once payment lands, and if the client paid through Stripe Checkout, the page shows "Confirming your payment with Stripe…" briefly before switching to "Thank you — your payment was received."

Common problems

  • Can't find New invoice, or Issue/Void/Send is missing. Your role lacks "manage invoices" or "issue invoices"; check Settings > Roles.
  • The send confirmation says "simulated." Live sending is turned off on this server; no real email went out.
  • Copy pay link (Stripe) isn't there. The invoice has no balance due, or Stripe isn't connected yet.
  • A voided invoice's number looks "missing" from a later sequence. That's expected: voiding does not release or reuse the number.

Common questions

Why does invoice numbering matter?

Because most tax authorities expect a sequence with no gaps. Numbers here are issued in order and never reused, which is what makes the set defensible later.

Last updated September 19, 2026. Written by the team that operates the platform.

Invoicing Clients: Numbering, PDFs, Sending and Reminders