← All help topics

🧾 Laundry Invoices

Where your laundries upload their own invoices — by page or by API.

These are the invoices the laundry produces and sends you — you do not create them here (that is the separate Invoices page, your own billing). Each laundry uploads its own invoice document and links it to the exact jobs it covers.

What is a “job”?

A job is one confirmed batch the laundry washed and returned, which the property then received and counted in Linen Matching. The laundry is paid for every piece it washed, whatever state it came back in — the clean pieces put On Shelf plus any that came back still-dirty (collected for a re-wash) or damaged (sorted out of circulation). Only pieces lost in transit (never arrived) are not billed. Each job shows the date it was confirmed, its billed piece count and the items in it — with a note like “· incl. 2 still-dirty, 1 damaged” whenever the billed count is higher than what reached the shelf, so the charge is easy to check. A batch that is still disputed is not a job and cannot be billed until it is resolved.

Note Every invoice must cover at least one job — you cannot upload an invoice without ticking one. A job can sit on only one live invoice at a time, so the same batch can never be billed twice. If the property disputes an invoice, its jobs are released and can be put on a fresh one.
Note One invoice per property group. A laundry never mixes two groups’ linen, so it bills each property group on its own invoice. On the page the confirmed jobs are grouped by property group, and ticking a job from another group clears the previous selection — so a single invoice always covers exactly one group, and the group it covers is shown in the list. (By API, POST /api/laundry/invoices rejects a jobs list that spans two groups, and GET /api/laundry/jobs returns each job’s groupId/groupName so the laundry’s software can split them per group.)

Submitting from the page

  1. Open Laundry Invoices (from the Laundry app, or the menu on the property side).
  2. Under Confirmed jobs to bill, tick each job this invoice covers. Only confirmed, not-yet-billed jobs are listed.
  3. Choose the invoice file — a PDF or an image (PNG/JPG), up to 8 MB.
  4. The amount is filled in automatically from the jobs you ticked — each job’s pieces at your agreed per-item prices (hard-wash jobs at the hard-wash price). It is read-only, and the Invoice details box below shows exactly how it was worked out. Add the period it covers (for example “July 2026”) and an optional note.
  5. Click Submit invoice. It appears in the list straight away with the status Awaiting review.

Submitting by API

  1. An administrator opens Settings → Laundries, finds the laundry and clicks Generate API key — copy the key (it is shown only once).
  2. The laundry’s software calls GET /api/laundry/jobs (header Authorization: Bearer <key>) to list its billable jobs and their ids.
  3. It then sends POST /api/laundry/invoices with the same header and a JSON body: jobs (an array of job ids — at least one), fileName, contentBase64 (the file), and optionally amount, period, note.
  4. GET /api/laundry/invoices lists everything that key has submitted, with each invoice’s status. Each key only ever sees and adds its own laundry’s jobs and invoices.

What happens next

The property reviews each invoice on the Invoice Approvals page and either approves it for payment, later marks it paid, or disputes it. You can follow the status of every invoice right here — Awaiting review, Confirmed, Paid or Disputed — and a disputed invoice shows the reason so you can correct it and submit a fresh one.

Automatic signing (optional)

If an administrator switches on automatic invoice signing (Settings → Authentication), every PDF you upload here is digitally signed on the spot with your own identity — no extra step, using your existing sign-in. Signed invoices carry a 🔏 Signed mark in the list and on the Invoice Approvals page. It is an internal approval &amp; audit signature (an *advanced* electronic signature from your own sign-in provider, not a qualified/QES one); if signing is unavailable for any reason, the plain PDF is simply stored as before.

Laundry users are limited to this

A user marked Is Laundry user on the Users page is an outside laundry account, not one of your staff. They can only reach the Laundry app and the pages linked from it — counting, and submitting invoices here — and are sent back to the Laundry app if they open anything else. (Their exact rights will grow over time.)

Note Administrators can also upload an invoice on a laundry’s behalf and can see every laundry’s invoices; ordinary staff can view and download them but not submit. Keep each API key secret — if one leaks, Regenerate it on Settings → Laundries to instantly cut off the old one.
Tip The amount is calculated from the ticked jobs automatically; just add the period so the property can see at a glance what it still owes.

Open Laundry Invoices