A returns process for Australian ecommerce needs three things to survive a busy week: a policy your customers can read in ten seconds, a return label they can generate without emailing you, and a receiving step that updates stock exactly once. Get that last part wrong and your inventory quietly drifts until a stocktake exposes the mess.
Most returns advice stops at the customer-facing policy. The expensive failures happen after the parcel comes back: the item that was refunded but never put back on the shelf, or the one that got restocked twice because two people touched the same return. This guide covers the whole loop, with a bias toward keeping stock accurate.
Write a returns policy that answers the obvious questions
A good policy is short and decides the arguments before they start. At minimum, state four things:
- The window. 30 days from delivery is common and easy to administer. Pick a number and apply it consistently.
- The condition. Unused, tags on, original packaging. Spell out what disqualifies a return so the inspection step is a checklist, not a judgement call.
- Who pays return postage. For change-of-mind returns it is reasonable to ask the customer to pay. For a faulty item, you wear it.
- Refund or exchange, and how fast. "Refunded within 3 business days of the item passing inspection" sets the right expectation.
One thing your policy cannot do: override the consumer guarantees. Under the Australian Consumer Law, customers are entitled to a repair, replacement or refund when goods are faulty, not as described, or do not do what they should, and that right exists regardless of what your store policy says about windows or change of mind. A "no refunds" sign is not legal cover. Your change-of-mind policy is a goodwill layer that sits on top of those guarantees, not instead of them.
Generate return labels so customers don't have to email you
The slowest part of most returns processes is the back-and-forth to get a label sorted. The fix is to issue the return-shipping label as part of the approval, not after a conversation. Australian carriers support return-to-sender style services:
- Australia Post offers returns labels the customer can use at any post office, and prepaid options where you cover the cost.
- StarTrack and the courier carriers handle returns through their account portals, usually as a booked pickup or a reverse consignment.
Decide upfront whether you pay or the customer pays, because that choice drives the label type. If you are eating change-of-mind postage to win loyalty, at least watch what it costs you per return; the same levers that cut your outbound spend apply here. We go deeper on that in reducing shipping costs on Shopify in Australia.
Build a physical receiving and inspection station
Returns that pile up on the floor get processed in a panic, and panic is where stock errors come from. Give returns a dedicated bench. The job at that bench is simple and repeatable: match the parcel to a return record, inspect against your condition rules, and route the item to one of three bins.
- Match. Find the order and the expected return so you know what should be in the box.
- Inspect. Check it against the policy condition. Photograph anything that fails so you have a record if the refund is disputed.
- Route. Resaleable, repair, or write-off. The bin it lands in decides the stock effect.
Triage: condition decides action decides stock
The single most useful artefact in a returns process is a triage table pinned above the bench. It turns a judgement call into a lookup, which is what you want when you are processing forty returns the Monday after a sale.
| Condition on arrival | Action | Stock effect |
|---|---|---|
| As-new, resaleable, all packaging | Restock to sellable location | +1 sellable, exactly once |
| Resaleable but packaging damaged | Repack, restock to sellable | +1 sellable after repack |
| Minor fault, repairable | Move to repair queue | No sellable change until fixed |
| Faulty or used, not resaleable | Write off, refund per ACL | No restock; record the loss |
| Wrong item sent back / unverified | Hold, contact customer | No stock change until resolved |
The stock-accuracy trap: update inventory exactly once
Here is where returns quietly corrupt inventory. Two failure modes show up again and again:
- Refunded but never restocked. Someone issues the refund in Shopify but the item never gets added back, so you are selling stock you physically have but the system thinks is gone.
- Restocked twice. The refund flow auto-restocks, then a staff member also adds it back by hand, and now you have a phantom unit that will oversell and trigger an awkward cancellation.
The cure is a rule, not vigilance: a single step owns the stock increase, and everyone else trusts it. Decide whether the refund event restocks or the inspection step does, never both. Whoever scans the item in is the one and only writer of that +1. If you let two systems both think they are responsible, you get drift, and drift is invisible until a stocktake bites. This is the returns-side version of the same discipline that keeps picking honest, which we cover in pick and pack accuracy.
Handle the refund or exchange last
Process money only after the item has passed inspection. "We'll refund once it arrives and checks out" is fair, defensible, and stops you refunding goods that come back broken. For exchanges, treat the outbound replacement as a normal order against current stock rather than a special case, so it goes through your usual pick and pack and gets a tracking number like everything else. Keep a record on the order of what came back, in what condition, and what you decided. When a customer disputes a refund three weeks later, that note is the difference between a quick answer and an afternoon of guessing.
The honest takeaway
A returns process survives a busy week when it is boring: a clear policy, a label the customer generates themselves, a bench with three bins, a triage table on the wall, and one rule about who updates stock. The policy keeps customers calm; the single-writer rule keeps your inventory honest. Everything else is just doing the steps in order.
If you run returns through OrderOps, it creates the return labels and keeps restocks idempotent so a returned item updates stock exactly once, no matter who touches it. More in the returns docs.