How to Safely Undo a Posted Invoice in Shopify

It is four o'clock, the delivery is on the floor, and you have just posted the invoice. Then you notice: that is last week's invoice. Or it is the right invoice posted twice. Or the supplier sent a proforma and the real one, priced differently, arrived an hour later.

Start Free Trial — 14-day free trial on Starter plan, no credit card required.

What Posting an Invoice Actually Changed

The reason undoing a receipt is harder than undoing a typo is that one post writes in several places at once. On a 200-line invoice, posting changed:

Four different kinds of change, spread across every line. That is the whole problem with the manual approach.

Why Undoing It by Hand Goes Wrong

The instinct is to subtract what you added. Open each product, take the quantity back down, move on. For a six-line invoice that is fine. Past that, three things bite.

Quantity is the easy part, and even that drifts. Between posting at 4pm and fixing it at 5pm, you sold things. If you set quantities back to the numbers you remember rather than subtracting the deltas you added, you have just overwritten an hour of real sales.

Cost cannot be un-averaged from memory. This is the one that catches everybody. If you held 4 units at $10 and received 10 at $12, your cost is now $11.43. Removing the 10 units does not restore $10 — you have to know the cost was $10 before, and nothing in the Shopify admin tells you that. The old value is simply overwritten. Unless something recorded the pre-post cost per variant, it is gone, and every margin report from that day forward quietly uses $11.43.

Partial fixes are worse than none. Reverting a hundred lines by hand means some of them get done at 5pm, the rest after dinner, and two get missed entirely. A half-reverted invoice is the hardest state to diagnose later, because the invoice looks handled.

What a Real Revert Has to Do

Smart Restock keeps a record of every adjustment a post made — the delta applied, the location, and the cost each variant carried beforehand. Reverting replays that record backwards, and the design rules are worth knowing whether or not you use the app, because they are what separates a clean undo from a new problem.

It is all-or-nothing. Every quantity on the invoice is reversed in one batched operation, not variant by variant. If the cost restores that follow fail partway, the quantities that were already reversed get put back and the invoice is left exactly as it was — still posted, still whole. You never end up with the half-reverted state.

It reverses deltas, not snapshots. A revert subtracts what the invoice added. The units you sold in the meantime stay sold. Where one invoice had several lines against the same variant, the reversal is combined and applied once.

It refuses to clobber a later change. This is the important one. If another invoice re-blended that variant's cost after this one posted, or somebody edited the cost by hand, restoring the old figure would destroy a correct, deliberate value. So the revert detects the conflict, leaves that variant's cost alone, and tells you which ones it skipped and why. The same check runs on selling price: if you re-priced a product yourself after posting, your price stands.

Revert, or Fix Forward?

Not every mistake wants a revert. The rough rule: revert when the document was wrong, fix forward when a line was wrong.

Revert the whole invoice when you posted a duplicate, posted a proforma that a real invoice later replaced, posted the wrong supplier's document, or routed the whole delivery to the wrong location . In all of these the invoice should never have posted at all.

Fix the single line when one item matched the wrong product, or a pack size was read as eaches when it was a case of twelve. Reverting that one line lets you change its allocation and re-post it without disturbing the 199 lines that were right.

Do neither when the supplier shorted you and the invoice bills for stock that never arrived. That is not a posting error — the invoice posted what it said. Handle it as a credit or a return so the paper trail matches what actually moved.

Cheaper Than Any Undo: Catching It at Review

A revert is a safety net, and safety nets are best unused. Nothing in Smart Restock writes to Shopify until you press post — parsing an invoice and matching its lines changes nothing in your store. Everything between upload and post is a review screen, which is the cheapest place in the whole workflow to catch a mistake.

Three habits prevent most reverts outright. Check the supplier and the invoice date on the review screen before anything else — duplicates and proformas both announce themselves there. Glance at the cost variance summary, which shows what the posting will do to your inventory value: a number an order of magnitude off usually means a pack size or a decimal separator has been read wrong. And confirm the location routing on a delivery that splits across sites, since a whole-invoice mis-route is the most tedious thing to unwind.

That said, the reason to know the revert exists is confidence. Merchants who do not trust an app's undo tend to review every line of every invoice forever, which costs more hours over a year than the occasional mistake ever would.

The Honest Limits

A revert undoes what the app itself did. It is not a time machine for your store.

That last one matters more than it looks. An undo feature that quietly half-works is worse than no undo at all, because you stop checking.

Post your next invoice knowing you can take it back

Run a real invoice through during the 14-day free trial. Nothing touches Shopify until you post — and posting is reversible when it goes wrong.

Receiving you can undo

Turn supplier invoices into accurate Shopify stock and cost — with a review step before anything posts, and a clean revert when it shouldn't have.