This module allows you to manage Return Merchandise Authorization (RMA). RMA documents can be created from scratch, from a delivery order or from an incoming email. Product receptions and returning delivery operations of the RMA module are fully integrated with the Receipts and Deliveries Operations of Odoo inventory core module. It also allows you to generate refunds in the same way as Odoo generates it. Besides, you have full integration of the RMA documents in the customer portal.
auto_awesome What this module does
AI-generated from the code · Odoo 19.0Manage Return Merchandise Authorization (RMA) requests for customers: create them from scratch or from a delivery, receive returned goods, send replacements or refunds, and follow everything from a dedicated RMA menu and customer portal.
This module adds a complete RMA (return merchandise authorization) workflow to Odoo, on top of Inventory and Invoicing.
- Users get a new RMA document with its own numbering (RMA0001...), a responsible person, an RMA team, tags, a deadline, a requested operation and a status from Draft to Confirmed, Received, Waiting for return/replacement, Refunded, Returned, Replaced, Finished, Locked or Canceled.
- An RMA can be linked to an existing delivery order and its move, which pre-fills the customer, product, quantity and unit of measure. Shipping and invoice addresses are filled automatically from the customer.
- From the RMA, buttons create the related stock operations: a receipt of the returned goods, a return or replacement delivery to the customer, and a refund invoice. Whether these buttons appear, and whether the operation is done automatically on confirmation, depends on the requested operation configured on the RMA.
- Quantities delivered, remaining and remaining-to-do are computed automatically, and buttons such as Split, Lock, Finish and Create new RMA appear only when the situation allows it.
- Refunds are grouped by invoice address and company; posting a refund is blocked if an invoice line linked to an RMA has a lower quantity than the RMA.
- Customers can follow their RMAs in the portal, and confirmation, receipt and draft notification emails can be sent automatically using configurable templates.
- Warehouses get dedicated RMA in/out operation types, routes and a return location; customers and delivery orders show an RMA count with a shortcut to the related RMAs.
- A dashboard and an RMA report are included.
Depends on
Required by other modules
Menus it adds
Models and fields (21)
- rma · new modeldate, name, sent, state, origin (Source Document), move_id (Origin move), tag_ids (Tags), team_id (RMA team), user_id (Responsible), deadline, priority, refund_id, company_id, partner_id (Customer), picking_id (Origin Delivery), product_id, description, location_id, product_uom (UoM), can_be_split, operation_id (Requested operation), warehouse_id, can_be_locked, child_rma_ids (Child rmas), delivered_qty, parent_rma_id (Parent RMA), remaining_qty (Remaining delivered qty), can_be_new_rma, refund_line_id, can_be_finished
- rma.tag · new modelname (Tag Name), color (Color Index), active, rma_ids, is_public (Public Tag)
- rma.team · new modelname, active, user_id (Team Leader), sequence, company_id, member_ids (Team Members)
- res.users · extends an existing modelrma_team_id (RMA Team)
- stock.move · extends an existing modelrma_id (RMA return), rma_ids (RMAs), rma_receiver_ids (RMA receivers)
- stock.rule · extends an existing model
- res.company · extends an existing modelrma_return_grouping (Group RMA returns by customer address and warehouse), send_rma_confirmation (Send RMA Confirmation), rma_new_rma_button_from_rma (Button to create a new RMA from another one), send_rma_draft_confirmation (Send RMA draft Confirmation), send_rma_receipt_confirmation (Send RMA Receipt Confirmation), rma_mail_confirmation_template_id (Email Template confirmation for RMA), rma_mail_draft_confirmation_template_id (Email Template draft notification for RMA), rma_mail_receipt_confirmation_template_id (Email Template receipt confirmation for RMA)
- res.partner · extends an existing modelrma_ids (RMAs), rma_count (RMA count)
- account.move · extends an existing model
- rma.operation · new modelname, color, active, count_rma_draft, count_rma_processed, action_create_refund (Refund Action), action_create_receipt (Create Receipt), action_create_delivery (Delivery Action), auto_confirm_reception, different_return_product, count_rma_awaiting_action, prevent_delivery_grouping (Do not group deliveries)
- stock.picking · extends an existing modelrma_count (RMA count)
- rma.rma.wizard · new modelrma_id, operation_id (Requested operation)
- stock.warehouse · extends an existing modelrma (RMA), rma_loc_id (RMA Location), rma_in_type_id (RMA In Type), rma_in_route_id, rma_out_type_id (RMA Out Type), rma_out_route_id, rma_out_replace_route_id
- rma.finalization · new modelname (Reason Name), active, company_id
- rma.split.wizard · new modelrma_id (RMA), product_uom (Unit of measure), product_uom_qty (Quantity to extract)
- account.move.line · extends an existing modelrma_id (RMA)
- res.config.settings · extends an existing modelrma_return_grouping, send_rma_confirmation, rma_new_rma_button_from_rma, send_rma_draft_confirmation, group_rma_manual_finalization (Finish RMA manually choosing a reason), send_rma_receipt_confirmation, rma_mail_confirmation_template_id, rma_mail_draft_confirmation_template_id, rma_mail_receipt_confirmation_template_id
- rma.delivery.wizard · new modeltype, rma_count, company_id, product_id (Replace Product), product_uom (Unit of measure), warehouse_id, scheduled_date, product_uom_qty (Product qty), rma_return_grouping (Group RMA returns by customer address and warehouse)
- stock.return.picking · extends an existing modelcreate_rma (Create RMAs), rma_operation_id (Requested operation), picking_type_code
- rma.finalization.wizard · new modelfinalization_id (Reason)
- stock.return.picking.line · extends an existing modelrma_operation_id (Operation), return_product_id, different_return_product
Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 8 confirmed, 1 with no information of 9 versions.
Sources · Odoo 13.0
Confirmed on 2026-11-03 in branch 13.0 of OCA/rma.
terminal Installation and usage
OCA documentation · Odoo 19.0Configuration
Source · Odoo 19.0If you want RMAs to be created from incoming emails, you need to:
- Go to Settings \> General Settings.
- Check 'External Email Servers' checkbox under Discuss section.
- Set an 'alias domain' and an incoming server.
- Go to RMA \> Configuration \> RMA Team and select a team or create a new one.
- Go to 'Email' tab and set an 'Email Alias'.
If you want to manually finish RMAs, you need to:
- Go to Settings \> Inventory.
- Set Finish RMAs manually checkbox on.
By default, returns to customer are grouped by shipping address, warehouse and company. If you want to avoid this grouping you can:
- Go to Settings \> Inventory.
- Set Group RMA returns by customer address and warehouse checkbox off.
- To make exceptions for specific operations (regardless of the global setting):
- Go to RMA / Configuration / Operations.
- Enable Do not group deliveries on the desired operation.
The users will still be able to group those pickings from the wizard.
Usage
Source · Odoo 19.0To use this module, you need to:
- Go to RMA \> Orders and create a new RMA.
- Select a partner, an invoice address, select a product (or select a picking and a move instead), write a quantity, fill the rest of the form and click on 'confirm' button in the status bar.
- You will see an smart button labeled 'Receipt'. Click on that button to see the reception operation form.
- If everything is right, validate the operation and go back to the RMA to see it in a 'received' state.
- Now you are able to generate a refund, generate a delivery order to return to the customer the same product or another product as a replacement, split the RMA by extracting a part of the remaining quantity to another RMA, preview the RMA in the website. All of these operations can be done by clicking on the buttons in the status bar.
- If you click on 'To Refund' button, a refund will be created, and it will be accessible via the smart button labeled Refund. The RMA will be set automatically to 'Refunded' state when the refund is validated.
- If you click on 'Replace' or 'Return to customer' button instead, a popup wizard will guide you to create a Delivery order to the client and this order will be accessible via the smart button labeled Delivery. The RMA will be set automatically to 'Replaced' or 'Returned' state when the RMA quantity is equal or lower than the quantity in done delivery orders linked to it.
- You can also finish the RMA without further ado. To do so click on the Finish button. A wizard will ask you for the reason from a selection of preconfigured ones. Be sure to configure them in advance on RMA \> Configuration \> Finalization Reasons. Once the RMA is finished, it will be set to that state and the reason will be registered.
An RMA can also be created from a return of a delivery order:
- Select a delivery order and click on 'Return' button to create a return.
- Check "Create RMAs" checkbox in the returning wizard, select the RMA stock location and click on 'Return' button.
- An RMA will be created for each product returned in the previous step. Every RMA will be in confirmed state and they will be linked to the returning operation generated previously.
There are Optional RMA Teams that can be used for:
> - Organize RMAs in sections. > - Subscribe users to notifications. > - Create RMAs from incoming mail to special aliases (See configuration > section).
To create an RMA Team (RMA Responsible user level required):
> 1. Go to RMA \> Configuration \> RMA Teams > 2. Create a new team and assign a name, a responsible and members. > 3. Subscribe users to notifications, that can be of these subtypes: > - RMA draft. When a new RMA is created. > - Notes, Debates, Activities. As in standard Odoo. > 4. In the list view, use the cross handle to sort RMA Teams. The top > team will be the default one if no team is set.
No verified information in OCA: Installation.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.