Sales Invoices

Product version: 1.0.0+1 Last updated: 2026-10-14 Audience: Tenant users with sales:invoice:read (mark paid / void need sales:invoice:update)


A. What is a Sales Invoice?

A sales invoice is issued in the sale's Invoice & payment step, together with the customer's payment (in full, in part, or later) — see Sales. It snapshots customer and line details, totals, and optional cost/profit fields for reporting.

Numbers look like INV-202608-0001.

Do not confuse these with Billing subscription invoices under the Billing module.

There is no separate “create invoice” button — use Invoice & collect payment on the sale (or Complete sale on the new-sale form).


B. Viewing invoices

  1. Open Sales > Invoices.
  2. Open a row for detail.
  3. Or open an invoice from a confirmed sale; the app also opens it right after the Invoice & payment step.

C. Print / share

Required permission: sales:invoice:read

On invoice detail, use Print / share actions. The app loads a print payload from the API and produces a PDF for sharing or printing (language/RTL quality may improve in later releases).


D. Mark paid

Required permission: sales:invoice:update

Available when the invoice is not paid and not void — for example after a credit sale, a part payment, or when recording the payment failed during the Invoice & payment step.

  1. Tap Mark paid (or Record payment after a partial payment) in Next step — on the invoice, or Record payment on the sale page.
  2. Check the amount. It is prefilled with the remaining balance; enter less to record a partial payment. It must be above zero and cannot exceed the remaining balance.
  3. Choose a payment method: Cash, Card, Bank transfer, or Other (the chosen one is highlighted), then tap Record payment.

Each tap records one payment against the invoice; the app does not collect the money. When the payments cover the balance, the status becomes paid and payment status paid. Until then the invoice stays issued with payment status partial, and you can mark paid again for the rest.

A partially paid invoice cannot be voided, the same as a paid one.

Representative sales: a sales representative records payments on the invoices of their own sales with sales:sale:own. Cash they record themselves stays in their custody cash until settled; payments recorded by anyone else go to the company account. See Sales representatives.


E. Void

Required permission: sales:invoice:update

Available when the invoice is issued (unpaid) and not already void.

  1. Tap Void invoice at the bottom of the invoice and confirm.
  2. Invoice status becomes void.

Critical rule

Voiding does not restore inventory stock in the current product. The related sale typically stays confirmed. To bring the goods back, cancel the sale after void (when your role allows): the warehouse then receives them through Inventory → Customer returns.

Paid invoices cannot be voided in the app.


F. Return items

Required permission: sales:return:manage (view past returns: sales:return:read or sales:return:manage)

A return is not a cancellation: the invoice, the sale and its payments stay exactly as they are, and the return is recorded as a separate operation linked to them.

Available on issued and paid invoices (not void) of a confirmed sale, while at least one item still has quantity left to return.

  1. In the Returns section at the bottom of invoice detail, tap Return items. From the sale page, Return items sits on the invoice card and opens the invoice with the return form ready.
  2. Enter a quantity to return per line (each line shows how many can still be returned), or turn on Return the whole invoice to take back everything left.
  3. Choose Create a customer return (off by default): - Off — the items go straight back into stock (the bin they were picked from, at their issued cost) and the return is Completed at once. - On — the warehouse receives and inspects the items first, as described below.
  4. Optionally add a reason, check the return value, then Confirm return.

What happens next with Create a customer return ticked:

  1. The return is Awaiting warehouse. Its quantities are reserved, so they cannot be returned twice, but no money moves yet.
  2. Inventory opens a customer return (Warehouse → Customer returns): the goods are received, inspected and put back in stock. See Customer returns.
  3. When the warehouse restocks, the return becomes Completed for the items in good condition only, valued at the invoice price. Finance then reverses the revenue: an unpaid balance is reduced first; anything above it becomes a refund due.
  4. If the warehouse accepts nothing, the return is Rejected; if it cancels the customer return, the return is Cancelled. In both cases no money moves and the items can be returned again.

Without a customer return, Finance reverses the revenue right away in the same way. You get a notification when a return that went through the warehouse is completed, rejected or cancelled.

Record a refund

Required permission: sales:invoice:update

When a completed return shows Refund pending, tap Record refund under it, check the amount (prefilled with what is still due, never more) and pick the method (cash, card, bank transfer or other). This records money you handed back; the app does not send the payment. A return can be refunded in several steps until it shows Refunded.

The invoice's Returns section lists every return with its status, value and refund status. A line can be returned in several steps, but never more than was sold. An invoice with returns cannot be voided.


G. Status reference

Field Values
Status issued, paid, void
Payment status unpaid, partial, paid

Previous: Sales

Related: Overview · Customers · Billing invoices (subscription billing — different module)