Skip to Content
Q&A

Efficiently Processing Returns in Odoo

From RMA request to credit invoice—without spending half an hour researching each return.

Back to all Q&A
February 10, 2026 by
Efficiently Processing Returns in Odoo
DAADit Group, Nick

Situation: there's a box on the counter. A customer has sent something back, but who it was, which order it belongs to and why it came back — that's for you to figure out. Before you know it, one return costs half an hour of detective work. You want to book the stock back in, issue a credit if needed, and record what was wrong.

Step 1: create the return from the delivery

Always start from the original delivery, not from a loose stock adjustment. Look up the order (via Inventory → Deliveries or via the customer's sales order), open the delivery and click Return. In the window you enter which products and quantities are coming back — a partial return is perfectly possible. Odoo automatically creates an incoming transfer, neatly linked to the original delivery. That keeps the whole history traceable: order, delivery, return, all connected.

Step 2: assess — stock, scrap or back to the supplier

Preferably work with a separate returns location, so returns don't end up uncontrolled among the sellable stock. From there you decide per product:

  • Back into stock: product is fine → move it to the normal stock location.
  • Reject: defective → use the Scrap button; Odoo writes it off to the scrap location.
  • Back to the supplier: manufacturing fault → create a return on the original receipt, so that chain is correct too.

Step 3: the credit note

Is the customer getting money back? Open the original invoice and click Add Credit Note. Odoo copies the lines; for a partial return you adjust the quantities. You offset the credit note against an outstanding invoice or refund it — and the books are right without any manual work.

Knowing why it came back

This is where the real gain lies. Add a mandatory reason field to return transfers (via Studio, or simpler: a fixed list of tags). After a few months you'll see patterns: "wrong size" calls for a better size chart on the website, "defective" for a conversation with the supplier, "not as expected" for better product photos. A workwear webshop that tracked this discovered that one trouser model caused three quarters of its returns.

Finally

Practical tip: agree internally on one fixed day a week on which the returns location must be empty. Returns that sit around are money gathering dust. Want to set up your returns process properly, including reporting on return reasons? Contact DAADit Group.

Situation: there is a box on the counter. A customer sent something back, but who it was, which order it belongs to and why it came back — that is for you to figure out. Before you know it, one return costs half an hour of detective work. You want the stock booked back in, a credit note where needed, and a record of what went wrong.

Step 1: create the return from the delivery

Always start from the original delivery, not from a loose stock adjustment. Find the order (via Inventory → Deliveries or through the customer's sales order), open the delivery and click Return. In the dialog, enter which products and quantities are coming back — partial returns are fine. Odoo automatically creates an incoming transfer, neatly linked to the original delivery. The whole history stays traceable: order, delivery, return, all connected.

Step 2: assess — restock, scrap or back to the vendor

Preferably use a dedicated returns location, so returns do not slip back into sellable stock unchecked. From there you decide per product:

  • Back into stock: product is fine → move it to the regular stock location.
  • Scrap: defective → use the Scrap button; Odoo writes it off to the scrap location.
  • Back to the vendor: manufacturing fault → create a return on the original receipt, so that chain stays correct too.

Step 3: the credit note

Does the customer get money back? Open the original invoice and click Add Credit Note. Odoo copies the lines; for a partial return you adjust the quantities. You then offset the credit note against an open invoice or refund it — and the books balance without manual work.

Knowing why it came back

This is where the real value sits. Add a mandatory reason field to return transfers (via Studio, or simpler: a fixed tag list). After a few months you will see patterns: "wrong size" calls for a better size chart on your website, "defective" for a talk with your supplier, "not as expected" for better product photos. A workwear webshop that tracked this discovered that a single trouser model caused three quarters of all returns.

Wrapping up

Practical tip: agree internally on one fixed day per week when the returns location must be empty. Returns left sitting around are money gathering dust. Want your returns process set up tightly, including reporting on return reasons? Get in touch with DAADit Group.

Question not answered?

Our Odoo consultants are happy to think along with you. Book a no-obligation intro call.

Book an appointment
Automatically calculate shipping costs per order
Let the shipping method determine whether it's €5, €15, or free.