An order that is returned is not an order that is cancelled. In Odoo they are two distinct events, separated in time: the money going back to the buyer and the unit going back somewhere. If your integration treats them as one, after a quarter inventory and accounting have drifted apart and nobody can explain the gap.
Refund and physical return are two different events
The refund is a credit note against the sale. The physical return is a reverse delivery that puts units into a location. Amazon can refund the buyer before the goods arrive, and it can refund when they never arrive because the buyer does not send them. Modelling the two events separately is what lets you answer the question that always comes up: how much money have I refunded and how many units have I got back. They are not the same number and there is no reason they should be.
Who decides whether the unit is resellable
With FBM the decision is yours: the box arrives at your warehouse, somebody opens it and decides. With FBA you do not decide. The return goes back to an Amazon fulfilment centre, where the unit is graded sellable or unsellable, with a reason. That grading changes your available inventory and reaches you as data, not as a decision. What Odoo has to do is read it and apply it: if the unit comes back sellable, it goes into available stock; if not, it goes into a location you cannot sell from.
The expensive mistake is dumping everything returned into available stock «to check later». Those units get listed, get sold and do not exist. A quarantine location is set up once and prevents overselling.
The inventory adjustment is a location, not a number
The temptation is to fix the quantity by hand and move on. It works once; three months later nobody knows why theoretical and physical stock disagree. The right way is for every return to generate its own move: customer to warehouse for the sellable unit, customer to quarantine or scrap for the one that is not. The adjustment is then traceable — date, reason and source order — and the cost of goods you can no longer sell shows up where it belongs, rather than buried in an unexplained write-off.
What gets lost, damaged or never comes back
There is a third case that is neither a return nor a sale: the unit Amazon loses or damages inside its own network. Amazon compensates that with a reimbursement to the seller, which is not the refund the buyer receives even though the words look alike. In accounting it is income; in inventory it is a write-off. Register only the money and stock stays high forever; register only the write-off and it looks like you lost goods for free. Both entries or neither.
Everything closes against the settlement
The place where this gets verified is the settlement. Every return leaves a trace there: the amount refunded to the buyer, the referral fee Amazon returns or keeps, the returns processing fee where it applies, and reimbursements for lost goods. Bringing settlements into Odoo and matching them line by line against credit notes and stock moves is what turns «I think it adds up» into «it adds up». And when something does not match — a credit note with no settlement line, or the reverse — there is money or goods somebody has to go and find.
When automating this is not worth it
If you sell a handful of orders a month and get the occasional return, this is handled by hand without drama, and automating it means spending money on a problem you do not have. The threshold is not the number of orders: it is the number of returns nobody is looking at. Once there are more than one person can review one by one, or once you sell in several countries and each return drags its destination VAT along, manual work stops paying off. That part is covered in selling on several Amazons from one Odoo.
What our connector does
The Amazon connector for Odoo imports returns with their reason and, for FBA, the grading Amazon gave them. For FBM it creates the stock return against the original delivery, or flags the line as do-not-restock; for FBA it does not invent local moves: the sellable and unsellable balance is reconciled through the FBA inventory sync. It drafts the credit note from the source invoice, imports Amazon's reimbursements for lost or damaged goods and brings in settlements, which post against the same clearing account as the credit notes. It runs on Odoo 17, 18 and 19, and Odoo 20 the day it ships. If what does not add up is the whole FBA warehouse and not just returns, that is in Amazon FBA inside Odoo.
Frequently asked questions
What if the buyer keeps the goods and still gets refunded?
It happens, and you need to be able to count it. In accounting it is a credit note with no stock move. Flag those cases: a repeated pattern on the same reference is a product or fraud problem, not an accounting one.
Are FBA and FBM returns kept apart?
Yes, and you should. They arrive by different routes and end up in different locations: one goes back to an Amazon centre, the other to your warehouse. The original order already tells you which is which.
Does every return need a credit note?
It depends on whether you invoice the sale and on your tax regime, and that call belongs to your accountant, not to us. What is always required is that the credit note stays linked to the original order: without that link, settlement reconciliation cannot be automated.
Useful links inside FlexigoTech
What we do about this
Are Amazon returns throwing your stock out?
Tell us whether you sell FBA, FBM or both, how many returns a month you handle and whether settlements already reach Odoo. We will check whether the gap comes from stock, credit notes or reimbursements for lost goods. Write to comercial@flexigobe.com or book a call.

