Appearance
Order Lifecycle
This page documents order states, transition rules, review flags, and manual/offline payment handling.
Core states
pendingpaidfulfilledrefundedcanceled
Invalid transitions are blocked (for example paid -> pending). Terminal states such as refunded and canceled are protected.
Terms & consent record
When terms acceptance is required, the order records the terms version the buyer agreed to and a UTC timestamp, stamped server-side at checkout (the client only asserts acceptance — the authoritative version comes from your settings). These two fields are deliberately retained through GDPR anonymisation: once the personal data beside them is scrubbed they are no longer personal data, but they remain the legal record that consent was given, and to which version.
"Shipped" status (cash on delivery)
A physical order can be marked shipped independently of payment, so a cash-on-delivery parcel reads as "Shipped" to the customer while payment is still pending — rather than the misleading "Pending" it would otherwise show in transit. This is a display/fulfilment signal, not a new order state: the pending → paid → fulfilled machine above is unchanged.
- Use Mark as shipped in an order's Tracking panel (a tracking number is optional).
- Mark fulfilled is offered only once an order is paid; it back-fills the shipped timestamp if it was never set.
- Digital-only orders never show shipping controls — there is nothing to ship.
Payment integrity and review flags
After webhook processing, received payment amount is compared against order totals. Significant variance triggers a review flag (needs_review) so staff can inspect before fulfillment.
Typical review reason:
payment_amount_mismatch
Manual transactions (offline methods)
Bank transfer and cash on delivery orders are paid outside NXCart, so you record the money yourself when it arrives. Stripe and PayPal payments are recorded automatically by their webhooks and can't be entered or changed by hand.
Recording a payment
- Open the order in Orders. It must still be Pending.
- In Record Payment, enter the amount received. Leave it empty to record the whole remaining balance.
- Optionally add a reference (such as the bank statement line or receipt number) and a note.
- Click Record Payment.
You can record a payment in parts, for example when a customer pays in installments or underpays. While the recorded payments are less than the order total, the order stays Pending and shows Paid so far and Balance due. As soon as they reach the total, the order becomes Paid: the invoice is issued and any digital downloads are released.
Every recorded payment is listed under Payments in the order and logged for audit.
Voiding a payment you recorded by mistake
Void corrects a payment you entered by hand, while the order is still Pending. Use it when, for example:
- you recorded the payment on the wrong order;
- you typed the wrong amount (100 instead of 10);
- the bank returned or reversed a transfer after you recorded it;
- you entered the same receipt twice.
To void a payment, click the red Void button under it in Payments and confirm. Then record the correct payment, if there is one.
What voiding does:
- The payment stays in the order's history, struck through and marked Voided, so you keep a record of what happened.
- It no longer counts toward Paid so far, so the Balance due goes back up.
- Who voided it, and when, is logged for audit.
- No money is moved. Voiding only corrects NXCart's record; return any money to the customer yourself if needed.
When you can't void:
- The order is already Paid. By then the invoice has been issued and downloads released, so treat it as a refund: return the money to the customer and change the order's state to Refunded.
- The payment came from Stripe or PayPal. Gateway payments are confirmed by the gateway itself. To give the money back, refund it in the Stripe or PayPal dashboard, then set the order to Refunded in NXCart.
For that reason the Void button only appears on payments of pending bank transfer and cash on delivery orders.
Packing slips
A packing slip tells whoever packs an order what goes in the parcel and where it goes.
- One order: open it in Orders and click Packing slip (PDF). The button appears when the order has something to ship.
- Several orders: tick them in the Orders list and click the box icon at the top. You get one PDF with a page per order, up to 100 orders at a time.
Each slip shows your store, the order number, date and shipping method, the shipping address with the customer's phone, and every item to pack with a tick box, its quantity, SKU and weight, then the number of items and the total weight. Digital products are left out, since there is nothing to pack.
- Weights come from your products' current weights. If a product has no weight set, the slip says the total weight is incomplete.
- Prices are left off by default, so the slip can go in the parcel even when it is a gift. To add them, turn on Show prices on packing slips in Settings → General.
- Language: the slip uses the language the customer ordered in, like the invoice.
- Logo: the store logo appears when Show store logo on invoices and proformas is on.
Customer-facing order pages
- Public order status: secure links for guest access.
- My Orders: authenticated customer order list/detail.
- Tracking updates: exposed on order view after fulfillment actions.
Stale order cleanup
The scheduled cleanup task can cancel old pending orders and release reserved stock.
Key settings:
- Enable cleanup
- Threshold in hours (default 48)
- Schedule via Joomla Scheduled Tasks