Solidus includes a comprehensive returns system. This system includes logic for
customer returns, refunds, and exchanges. The solidus_backend
gem includes an
admin interface for managing returns and exchanges.
The returns system is built with an automated returns process in mind, and it can be extended to take advantage of the way that your store manages shipments, return shipments, or a third-party warehouse.
We recommend that you create a sandbox store to get familiar with the returns system. Create multiple return authorizations (RMAs), customer returns, and experiment with various reimbursement types, return reasons, and so on.
The following sections summarize the core models that make up Solidus's returns system.
The central model in Solidus's returns system is the Spree::ReturnItem
.
Many of the other models in the returns system require one or many return items.
Each Spree::ReturnItem
tracks a lot of information about the return, and the
objects have many attributes. For example, it tracks whether the item is
resellable, whether the returned item has been received, and the total amount
that should be refunded or applied to the customer's store credit.
For more information about return items, see the Return items article.
A customer return starts with a return authorization. A store administrator
creates a Spree::ReturnAuthorization
(also called an RMA) for an order or part
of an order.
The RMA can authorize the return of one item or many items on the order. Once
the RMA is created, the Spree::ReturnItem
s on it can be included in a new
customer return.
See the Return authorizations article for more information.
A Spree::CustomerReturn
represents an item or a group of items that the
customer is going to return to you.
Similar to a return authorization, a Spree::CustomerReturn
can be associated
with one or many Spree::ReturnItem
s from a single order.
A Spree::Reimbursement
represents your store's compensation to the customer
who is returning items. Since each Spree::ReturnItem
can be returned for a
different reason, you may have multiple reimbursements for a single
Spree::CustomerReturn
.
See the Reimbursements article for more information.
Each Spree::ReturnItem
is associated with a Spree::ReimbursementType
. This
allows you to offer many kinds of reimbursements, like store credit, refunds,
and exchanges.
Solidus is an open source platform supported by the community. We encourage everyone using Solidus to contribute back to the documentation and the code.
If you’re interested in contributing to the docs, get started with the contributing guidelines. If you see something that needs fixing and can’t do it yourself, please send us an email.