Skip to content

Composing & sending invoices

The invoice composer at app.looped.sh/invoices/manage is where you’ll spend most of your time in Invoices. It’s a split-pane:

  • Left — the editor (line items, dates, client picker, tax slider)
  • Right — a live preview of the invoice as the recipient will see it

Edits on the left propagate to the preview as you type.

  1. From the invoices list, click New Invoice. The composer opens with a fresh draft.
  2. Fill the editor:
    • Billed to — pick a client, or create one inline.
    • Issue date — defaults to today.
    • Due date — optional. Setting one means the invoice can flip to OVERDUE after that date.
    • Description — an optional one-liner that appears at the top of the invoice (e.g. “Consulting services rendered, May 2026”).
    • Line items — see below.
    • Tax / VAT — slider, 0–100%. Applied to the subtotal.
  3. Click Save to persist.

Saving generates the serial number (INV-{YEAR}-{00001}) and assigns the next number in your team’s sequence. Drafts are saved with status PENDING until they’re paid or marked otherwise.

Each row of the invoice has:

FieldNotes
DescriptionWhat you’re billing for
QuantityHours, items, units — whatever your line is in
RatePrice per unit
AmountAuto-computed (qty × rate); you can override if needed

Add lines with + Add Line Item. Drag the handle to reorder. The trash icon removes a line.

The subtotal, tax, and total update live in the preview as you edit.

If your team uses Looped Track, the composer has an Import from Track button:

  1. Click Import from Track.
  2. Pick a date range.
  3. Track returns time entries grouped by user / project, with the rate for each user (set on project membership) already applied.
  4. Tick the entries you want. Optionally edit task names or rates inline.
  5. Click Import.

Each ticked entry becomes a line item: description = task name, qty = hours, rate = project member rate. The composer’s totals update.

This is the fastest way to bill for time-and-materials work — log it in Track during the week, import it on Friday afternoon, send.

Click Save. The invoice persists with status PENDING. Drafts can be edited freely; they don’t lock until you send.

The send action lives on the invoice’s detail panel. It only enables when the client has an email — without one, the button shows a tooltip explaining why.

  1. Click the send icon (paper-plane).
  2. Confirm the recipient + email body in the modal.
  3. Confirm.

Looped sends:

  • A PDF attachment of the invoice
  • A link to the Pay portal where the client can pay you online (if you have any payment integrations connected)

The invoice’s sentAt timestamp is recorded; the status remains PENDING until payment.

If the client says they didn’t get the email, click the send icon again. The button’s tooltip flips from “Send invoice email” to “Resend invoice email” once it has been sent before.

For payments received outside Looped (cash, EFT, etc.):

  1. Open the invoice.
  2. Click Mark as paid.
  3. Pick the payment date.

The invoice goes to PAID. If your team has paid notifications enabled, an email goes out to your team.

This bypasses any payment integration. To revert a mark-as-paid you’d need to ask a teammate with API access — UI undo is on the roadmap.

StatusMeans
PENDINGDefault — created but not yet paid
PAIDFully paid (manual mark or via a payment integration webhook)
PAID_PARTIALPartial payment recorded — total received is less than the amount
OVERDUEPast due date and unpaid
EXPIREDThe hosted Pay link has expired and isn’t accepting new payment attempts (cosmetic — the invoice still exists)

You can delete any invoice from its detail page. Deletion is permanent; the line items go with it. Sequential serial numbers are not reused — there will just be a gap.