Pay Later & Cash on Delivery
Two flows, both shaped like “money comes later.” Pay Later puts the unpaid amount on the customer’s tab as debt — they walk out with the goods now and settle next visit. Cash on Delivery (COD) is for shipments where the courier collects from the buyer and remits to you afterwards. The invoice issues immediately in both cases; what differs is which account the receivable lives on until cash lands.
Pay Later — customer debt
The customer takes the goods home today; the unpaid balance sits on their tab. Use this when the customer is known to you (regular, account holder, family) and you trust them to settle later.
Ring the sale
Add products to the cart the same as any other sale — scan, tap, search. Attach a customer (search by phone or name, or Create on the fly). A customer is required for pay-later; without one, there’s nowhere to file the debt.
Open Checkout
Click the green Checkout button. The checkout dialog opens with the total at the top.
Choose Partial, enter 0
Pick payment type Partial and enter 0 as the paid amount. The full total goes on the customer’s tab. If the customer pays a deposit, enter that amount instead — the remainder still goes on the tab.
Confirm
Click Complete Sale. The invoice issues immediately, the receipt prints, and the customer’s balance increases by the unpaid amount. The cart resets.
Cash on Delivery — courier collects
COD is for shipped orders where you don’t see the customer at the register. The courier hands them the goods, takes the cash, and remits it to you on the next reconciliation.
Ring the sale and assign to a shipment
Build the cart as usual, then send the order to Shipping instead of completing payment at the register. Pick the carrier (shipping company) and select COD as the settlement type.
Issue the invoice
The invoice issues with no register payment captured. amount_paid stays at 0, paymentMethodName stays empty, and the Pending COD status badge appears on the invoice list and detail dialog.
Courier delivers and collects
The carrier delivers the goods, takes cash from the buyer, and updates the shipment status. Each status change records a displayAt timestamp in the shipment’s history log.
Reconcile when the courier remits
Open the shipment, mark it Settled, and select the cash sub-account that received the remit. The invoice flips to Paid, the customer’s account stays at zero, and a journal entry posts the cash arrival.
Bug #29 fix in v1.6.100
Before v1.6.100, COD shipping invoices that didn’t have a payment method explicitly stamped on them rendered with a blank Payment Method column and a generic “Partially Paid” label — confusing on the list view and worse on printed receipts. v1.6.100 added an implicit-COD fallback in invoiceDisplayService.isCodPending: when an invoice has a shippingCompanyId set, no register payment captured, and isn’t explicitly prepaid or postpaid, it now renders Cash on Delivery — <carrier> with a Pending COD status badge. The persisted status column is unchanged (still 'partial' so AR aging keeps counting correctly) — only the displayed label is corrected.
Related
- Customers — debt and credit — settle pay-later balances, view customer statements
- Shipping — carrier setup, settlement types, reconciliation
- Invoice list — filter by Pending COD, find unsettled debts
- Release notes — v1.6.100 — the COD label fix and the shipping
displayAtchange