In this guide you'll learn:

- The different ways you can handle returns using Shopify Collective
- How to use Shopify's API and webhook capabilities to integrate your existing return workflows
- How the refund processing is handled in each scenario

## How it works

1. The retailer chooses how to handle returns.
2. Customers initiate a return on the retailer store (via the Returns app or other 3P apps).
3. The return is routed to the supplier or the retailer depending on the retailer's choice.
4. The supplier or the retailer processes the return.

## Return handling options

Retailers can choose how to handle returns for Collective items by selecting one of the following options: **Retailer generates label**, **Supplier generates label**, or **No action**. Retailers will receive notifications of new returns via the [`returns/approve`](/docs/api/webhooks?reference=toml#list-of-topics-returns/approve) or [`returns/request`](/docs/api/webhooks?reference=toml#list-of-topics-returns/request) webhook, depending on how the return was created.

## Retailer generates label

When this option is selected:

- Collective creates a return on the corresponding supplier order upon receiving the [`returns/approve`](/docs/api/webhooks?reference=toml#list-of-topics-returns/approve) webhook.
- After the supplier receives the returned item and processes a refund, Collective will restock the item on the retailer return and close it. Retailers receive notifications of these events via the [`reverse_fulfillment_orders/dispose`](/docs/api/webhooks?reference=toml#list-of-topics-reverse_fulfillment_orders/dispose) and [`returns/close`](/docs/api/webhooks?reference=toml#list-of-topics-returns/close) webhook topics.

Refund Preferences:

- If retailers select **Automatically refund the customer**, Collective processes the refund for returned items. Retailers will be notified via the [`refunds/create`](/docs/api/webhooks?reference=toml#list-of-topics-refunds/create) webhook. This streamlines the refund process by minimizing merchant intervention, but limits the types of refund policies that can be offered.
- If automatic refunds are not selected, retailers should handle customer refunds (using [`refundReturn`](/docs/api/admin-graphql/latest/mutations/returnRefund)) upon receiving the [`returns/close`](/docs/api/webhooks?reference=toml#list-of-topics-returns/close) webhook. This will require more operational work and potentially longer processing times, but can allow merchants to apply specific refund policies not possible with automatic refunds.

## Supplier generates label

When this option is selected:

- When a retailer order receives a return request or a new approved return opens, Collective requests a return from the supplier and marks the retailer return as approved if it was requested. Retailers are notified via the [`returns/approve`](/docs/api/webhooks?reference=toml#list-of-topics-returns/approve) webhook.
- Once the supplier approves the return and uploads the label, it syncs to the retailer order. The customer receives the shipping label via email, and retailers are notified using the [`reverse_deliveries/attach_deliverable`](/docs/api/webhooks?reference=toml#list-of-topics-reverse_deliveries/attach_deliverable) webhook.
- After the supplier refunds the return, Collective will restock the item on the retailer return and close it, notifying retailers through the [`reverse_fulfillment_orders/dispose`](/docs/api/webhooks?reference=toml#list-of-topics-reverse_fulfillment_orders/dispose) and [`returns/close`](/docs/api/webhooks?reference=toml#list-of-topics-returns/close) webhook topics.

Refund Preferences:

- If retailers select **Automatically refund the customer**, Collective processes the refund for returned items. Retailers will be notified via the [`refunds/create`](/docs/api/webhooks?reference=toml#list-of-topics-refunds/create) webhook. This streamlines the refund process by minimizing merchant intervention, but limits the types of refund policies that can be offered.
- If automatic refunds are not selected, retailers should handle customer refunds (using [`refundReturn`](/docs/api/admin-graphql/latest/mutations/returnRefund)) upon receiving the [`returns/close`](/docs/api/webhooks?reference=toml#list-of-topics-returns/close) webhook. This will require more operational work and potentially longer processing times, but can allow merchants to apply specific refund policies not possible with automatic refunds.

## No Action

When this option is selected:

- Collective will not manage the return after it is created on the retailer's order. No return will be created on the supplier order, and any necessary refund requests must be handled manually.
- Once the retailer processes the return, they should create a refund (using [`refundReturn`](/docs/api/admin-graphql/latest/mutations/returnRefund)), restock the item (using [`reverseFulfillmentOrderDispose`](/docs/api/admin-graphql/latest/mutations/reverseFulfillmentOrderDispose)), and close the return (using [`returnClose`](/docs/api/admin-graphql/latest/mutations/returnClose)).

### Webhook notifications
- Collective creates a return on the corresponding supplier order upon receiving the [`returns/approve`](/docs/api/webhooks?reference=toml#list-of-topics-returns/approve) webhook.