Skip to main content
The Invoices page at /dashboard/commerce/invoices/ is the operational heart of Commerce. From here you draft invoices, send them with payment links, track status from sent through paid, and reconcile against incoming bank deposits. Data lives in crm_invoices and crm_invoice_line_items; the API is at /api/crm/invoices.

The invoice lifecycle

1

Draft

A new invoice starts as a draft — visible only to your team, no email sent, no due date enforced. Iterate until it’s right.
2

Sent

Click Send and the client receives an email with a portal link. The status flips to sent and the due-date clock starts ticking.
3

Paid

A successful payment via the client portal auto-marks the invoice paid. You can also mark paid manually if the client paid by check or wire — just attach the deposit reference for the audit trail.
4

Overdue

An invoice past its due date with a balance owing. Triggers any automated reminder workflows you’ve set up.
5

Void

Voiding cancels the invoice without deleting it. Used for billing errors or canceled work — historical record stays, but the balance no longer counts toward AR.

Creating an invoice

Click New Invoice, pick a client (CRM contact or company), and start adding line items. The most common path.

Line items

Each line item has:
  • Product reference (optional) — pulls name, description, price, and tax flag from your Products catalog
  • Description — overridable per line; what the client sees
  • Quantity — defaults to 1
  • Unit price — override the catalog price for this client
  • Discount — percentage or fixed amount, per line
  • Tax — applied if the line is taxable and the client isn’t tax-exempt
You can also add ad-hoc lines with no product reference — handy for one-off charges that don’t belong in the catalog. If you find yourself adding the same ad-hoc line repeatedly, that’s a signal to add it to Products.

Tax handling

Tax rates come from your account settings (per-jurisdiction) and apply to taxable line items at send time.
  • Tax-exempt clients — Set the flag on the contact or company. Their invoices skip tax automatically and surface the exemption in the PDF.
  • Per-jurisdiction rates — Configure separate rates for the regions you sell in. The invoice picks the right rate based on the client’s billing address.
  • Multi-rate invoices — A single invoice can mix tax rates if line items are flagged differently (rare, but supported).
See Payment Processing — tax configuration for the full settings reference.

Discounts

Two flavors:
  • Per-line — A discount applied to a single line item before tax
  • Invoice-level — A discount applied after subtotal, before tax
Either can be a percentage or a fixed amount. Discount lines show on the PDF for transparency.

Payment terms

Pick from Net 15, Net 30, Net 60, Due on Receipt, or a custom number of days. The terms set the due date relative to the send date. Overdue automation triggers off this date — see Track AR Aging.
Net 30 is the default. If your industry standard is Net 15, change the account default in settings so you don’t have to set it every time.

Sending the invoice

When you click Send, three things happen:
  1. The invoice transitions from draft to sent.
  2. An email goes to the client’s billing contact with a link to the client portal.
  3. A PDF is generated and attached to the email (and stored against the invoice for download later).
The portal link opens an authenticated session — clients don’t need an account, just the magic link in the email. From there they can pay with a saved card, a new card, ACH (where supported), or Apple/Google Pay if your processor supports it.

Marking paid

A payment through the client portal triggers your processor’s webhook (Stripe or Authorize.Net), which marks the invoice paid and records the transaction in crm_invoice_line_items-linked payment records. No manual step needed.

Reconciliation

For automated processors, transactions reconcile against invoices automatically — the webhook from Stripe or Authorize.Net carries the invoice ID. For manual payments, the Reconciliation view shows unmatched deposits and lets you click-to-match against open invoices.
Don’t mark an invoice paid twice. If a client paid online and you also mark it manually, you’ll have a credit balance and a confused accountant. Check the status before marking manually.

PDFs and customization

Every invoice has a downloadable PDF that uses your account’s invoice template — logo, colors, footer text, payment instructions. To customize:
  • Logo and colors — Set in account settings; applies to all invoices and the client portal.
  • Footer / payment instructions — Free-text block on each invoice or default for the account.
  • Custom template — For accounts with specific design needs, the API supports custom templates rendered server-side.

Recurring invoices

Two ways to bill on a recurring cadence:
  • Subscriptions — Best for ongoing retainers and SaaS plans. Handles proration, plan changes, and MRR roll-up.
  • Schedules — Best for milestone billing or fixed-date charges that aren’t a true subscription (e.g., quarterly check-in fees).

Bulk operations

For invoice batches (month-end runs, mass reminders), use the bulk actions:
  • Bulk send — Send all drafts for a client or a billing period
  • Bulk reminder — Resend a payment-link email to all overdue invoices
  • Bulk export — CSV of invoices and line items for accounting reconciliation

API patterns

Common API operations against /api/crm/invoices:
  • POST /api/crm/invoices — create a draft
  • POST /api/crm/invoices/:id/send — transition to sent and email the client
  • POST /api/crm/invoices/:id/payments — record a manual payment
  • POST /api/crm/invoices/:id/void — void an invoice
  • GET /api/crm/invoices?status=overdue — list overdue invoices for a workflow
See Track AR Aging for using the overdue endpoint with workflows.

Troubleshooting

Check the invoice’s activity log — you’ll see whether the email was sent and whether it bounced. Common causes: the client’s billing-contact email is wrong, the email landed in spam (have them search for your domain), or your sending domain isn’t verified — see Email Domains.
The processor webhook didn’t reach Hiveku, or it failed signature verification. Check your processor connection in Payments — re-authorize Stripe, or rotate the Authorize.Net credentials. Once the webhook is healthy, you can manually mark the invoice paid for the affected one.
Three things to check: the line items’ taxable flag, the client’s tax-exempt flag, and the configured tax rate for the client’s billing jurisdiction. Edit the draft, fix whichever is off, and re-send.
Voided invoices keep their number, so you’ll see gaps in the sequence — that’s expected and audit-friendly. Don’t try to renumber; auditors prefer to see the void.
Check that the invoice’s due date is actually past, the workflow is enabled, and the workflow’s filter matches the invoice’s client/segment. See Workflows for the trigger model.

What’s next?

Send Your First Invoice

Walk through the full first-invoice flow.

Track AR Aging

Spot overdue invoices and automate follow-ups.

Estimates

Pre-sales quotes that convert to invoices.

Subscriptions

Recurring billing for retainers and plans.