> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.shipbob.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.shipbob.com/_mcp/server.

# Exchanges and Upcoming Outcomes

> Understand available and upcoming non-refund outcomes in ShipBob Returns

Beyond a standard refund, ShipBob Returns currently supports **exchanges** (a different product or variant). **Replacements** and **store credit** are planned but not available yet.

![ShipBob Returns Portal Outcome](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ship.docs.buildwithfern.com/4d45878d49194dc63be5a2c5ecfd1179e46b66a79ecd8a94c68b078b58d60cee/docs/assets/images/returns-portal-outcome.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T164442Z&X-Amz-Expires=604800&X-Amz-Signature=01835960ee96fbe207316b9d0e364b4fda131ac8bf0144e06961560552cecaf1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

## Exchanges

![ShipBob Returns Exchange Draft Order](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ship.docs.buildwithfern.com/d7bac44f3906207aa63c90db5a80dd8d4b8588d8df778a25b959d11e9578ab7b/docs/assets/images/returns-details.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T164442Z&X-Amz-Expires=604800&X-Amz-Signature=cf07c9f49e725e4983d44ea8db3b03d34f621872c988b8d590dac069fb333fe1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

An exchange lets the customer swap the returned item for a different variant or a different product.

**How it works behind the scenes:**

1. When the customer submits an exchange, ShipBob Returns creates a **draft order** in Shopify for the new items. Nothing ships yet — the draft simply holds the exchange.
2. When the return reaches the configured milestone (by default when the return **completes**, i.e. the original items made it back), the draft is converted into a real Shopify order, which flows to fulfillment like any other order.
3. If the return is **cancelled** or **rejected**, the draft order is deleted automatically — no accidental shipments.

**Price differences:** if the new item costs more than the returned one, the customer sees a **Price difference to pay** on the review step and receives a Shopify invoice link to pay the balance. If the new item costs less, the difference is handled as part of the refund settlement.

**What the customer sees:** a variant/product picker in the portal (**Exchange for another item**), the price difference if any, and — on the return status page — an **Exchange for** section listing the items they will receive.

## Replacements ("Send me a replacement")

Replacement is not available yet in ShipBob Returns. This section will be updated when the feature launches.

## Store Credit

Store credit is not available yet in ShipBob Returns. This section will be updated when the feature launches.

For deduction behavior and settlement timing, see [Refunds, Fees & Deductions](/labs/returns/refunds).

## Blocking Outcomes with Flows

Start conservative with blocking rules and expand gradually; overly broad blocks can remove expected options and increase support tickets.

![ShipBob Returns Flow Actions](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ship.docs.buildwithfern.com/27ae45e44d08bbf6bd0b047b41b50a4772fd59e51633f5e684b96eaa616ae4a2/docs/assets/images/returns-flows-actions.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T164442Z&X-Amz-Expires=604800&X-Amz-Signature=7519b6b52659fb15fd9f964c6470c0df0bc8bb8cdf8de4915cfe058b488b0512&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

Sometimes an outcome should not be available for a particular product, reason, or customer. Use the **Block Exchange** and **Block Refund** flow actions to remove an option conditionally — for example:

* Block exchanges on final-run products you no longer stock.
* Block cash refunds for a specific SKU or category, steering customers toward exchange.

Blocked options simply do not appear for the customer in the portal. See [Automate Returns with Flows](/labs/returns/flows) for how conditions and priorities work.

## Quick Comparison

| Outcome          | Customer receives              | Shopify record               | When it is fulfilled                          |
| ---------------- | ------------------------------ | ---------------------------- | --------------------------------------------- |
| **Refund**       | Money back to original payment | Refund on the original order | When you settle (or Auto-Refund fires)        |
| **Exchange**     | A different product/variant    | Draft order → real order     | When the return hits the configured milestone |
| **Replacement**  | Coming soon                    | Coming soon                  | Coming soon                                   |
| **Store credit** | Coming soon                    | Coming soon                  | Coming soon                                   |

## FAQ

#### Are replacement and store credit available now?

No. Replacement and store credit are planned but not currently available in ShipBob Returns.

#### When does an exchange actually ship?

A Shopify draft order is created at submission and converted to a live order when the return reaches your configured fulfillment milestone.

#### Can I hide exchange or refund options for specific cases?

Yes. Use flow actions like **Block Exchange** or **Block Refund** so options are removed conditionally by SKU, reason, customer, or other criteria.

## Related Guides

* [Refunds, Fees & Deductions](/labs/returns/refunds)
* [What Your Customers See: Portal Walkthrough](/labs/returns/customer-portal)
* [Automate Returns with Flows](/labs/returns/flows)