> For the complete documentation index, see [llms.txt](https://docs.shopperos.stackline.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.shopperos.stackline.com/fulfillment/orders-cancellations-returns.md).

# Fulfillment orders, cancellations and returns

Follow each order to delivery, and handle cancellations and returns, on the pages under **Fulfillment**. A **fulfillment order** is the request that ShopperOS sends to Amazon MCF to ship one order. Each order from your storefront, Walmart, or TikTok Shop gets one.

```mermaid
flowchart LR
    A["Order on your storefront, Walmart or TikTok Shop"] --> B["Pending"]
    B -->|Amazon accepts the order| C["Processing"]
    C -->|Some items ship| D["Partially shipped"]
    C -->|Every package leaves the warehouse| E["Shipped"]
    E -->|The carrier delivers every package| F["Delivered"]
    E -->|Tracking| J["The shopper and the sales channel"]
    B -.->|Cancel Order| G["Cancelling"]
    C -.->|Cancel Order| G
    G -.->|Amazon confirms| H["Cancelled"]
    B -.->|The order fails| I["Error"]
```

*The solid path is a normal order, from the channel through Amazon MCF to delivery. The dotted paths are a cancellation and a failure.*

For the money side of a storefront order, see [Orders](/selling-and-checkout/orders.md). To set up Amazon MCF, see [Amazon MCF](/fulfillment/amazon-mcf.md).

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Fulfillment → Overview</strong></td><td>How your orders are doing in a time range.</td></tr><tr><td><strong>Fulfillment → Orders</strong></td><td>Each order, from <strong>Pending</strong> to <strong>Delivered</strong>, with its actions.</td></tr><tr><td><strong>Fulfillment → Cancellations</strong></td><td>Cancellation requests from Walmart shoppers.</td></tr><tr><td><strong>Fulfillment → Returns</strong></td><td>Returns from your marketplace channels. You grade TikTok Shop returns here.</td></tr></tbody></table>

## Overview shows how your orders are doing

**Fulfillment → Overview** shows your orders for a time range. Pick the range at the top right. The range includes all of its first and last days, in UTC. **Commerce → Overview** uses the same days, so the two order counts agree.

<figure><img src="https://489913050-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FblcXcPwOUg5osGsERflQ%2Fuploads%2Fgit-blob-93884363c2b0d7305e9846d64a9ff2c2befeb0d3%2Ffulfillment-overview.jpg?alt=media" alt="Fulfillment → Overview"><figcaption><p>Pick the time range at the top right. Click a bar in Orders by status to open that status.</p></figcaption></figure>

| Section              | What it shows                                                                                                                                                                                |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Key metrics**      | **Total orders**, **Pending fulfillment**, **Delivered**, **Errors**, **Fulfillment rate**, **Avg fulfillment time**, **Delivery rate**, and **Cancelled**, for orders created in the range. |
| **Orders over time** | Order volume each day, or each week for a long range, with the fulfilled and errored share.                                                                                                  |
| **Orders by status** | Where the orders in the range are now. Click a bar to open that status in **Orders**.                                                                                                        |
| **Catalog links**    | **Linked SKUs** and **Unlinked SKUs**, for all time. Click **Review unlinked SKUs →** to link them.                                                                                          |
| **Recent orders**    | The five newest orders. Click **View all →** for the rest.                                                                                                                                   |
| **Activity log**     | Connection, channel, linking, and order events for the account.                                                                                                                              |

If a connection reports errors, a banner shows **N connection(s) reporting errors**. Click **Review channels** to fix it.

## Orders lists every fulfillment order

**Fulfillment → Orders** lists your fulfillment orders. The list refreshes every 30 seconds.

<figure><img src="https://489913050-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FblcXcPwOUg5osGsERflQ%2Fuploads%2Fgit-blob-5b48e2edf8e5ff8f6c4d0559162baea7c9cea017%2Ffulfillment-orders.jpg?alt=media" alt="Fulfillment → Orders"><figcaption><p>The status tabs are above the list. The Fulfillment column shows the status and the tracking chip.</p></figcaption></figure>

### Find an order

Use any of these controls to narrow the list.

* **Time range**: pick it at the top right. The default is the last four weeks.
* **Status**: click a status tab to show orders in one status.
* **Search**: choose **Order #** or **Customer** in the search box, and type.
* **Channel**: if you have more than one sales channel, pick one in **All channels**. This filter applies to the page you see. Page through to see the rest.
* **Export**: click it to download the orders in the range and status.

| Column          | What it shows                                                                                                            |
| --------------- | ------------------------------------------------------------------------------------------------------------------------ |
| **Order**       | The order ID, and the first item with its quantity.                                                                      |
| **Date**        | When the order was created.                                                                                              |
| **Channel**     | The sales channel, and the shopper's name.                                                                               |
| **Fulfillment** | The status, any error, and the carrier with the end of the tracking number. Click the tracking chip to track the parcel. |
| **Shipping**    | The shipping speed, and the number of shipments.                                                                         |

### Each order has one status

The status says where the order is now.

| Status                                               | Meaning                                                            |
| ---------------------------------------------------- | ------------------------------------------------------------------ |
| <mark style="color:orange;">Pending</mark>           | ShopperOS has the order, and will send it to Amazon.               |
| <mark style="color:blue;">Processing</mark>          | Amazon accepted the order, and is preparing it.                    |
| <mark style="color:orange;">Cancelling</mark>        | You asked to cancel. ShopperOS waits for Amazon to confirm.        |
| <mark style="color:orange;">Partially shipped</mark> | Some items shipped. The rest are still on the way, or cannot ship. |
| <mark style="color:green;">Shipped</mark>            | Every package left the warehouse.                                  |
| <mark style="color:green;">Delivered</mark>          | The carrier delivered every package.                               |
| Cancelled                                            | The order is cancelled and will not ship.                          |
| <mark style="color:orange;">Requires review</mark>   | ShopperOS stopped the order for a person to check.                 |
| <mark style="color:red;">Error</mark>                | The order failed. The order page shows why.                        |

An order on hold also shows <mark style="color:orange;">On Hold</mark>. It stays at Amazon until you release it.

### TikTok Shop sample orders

A free sample for a creator shows a badge next to the status. TikTok Shop marks these orders. The badge shows on the orders list and on the order page.

| Badge                 | Meaning                                                                                  |
| --------------------- | ---------------------------------------------------------------------------------------- |
| **Sample**            | A free sample for a creator.                                                             |
| **Refundable sample** | A free sample. TikTok refunds the product cost when the creator meets a sales threshold. |

Point to the badge to read the details and the retail value of the sample, when TikTok sends it. A sample order ships through Amazon MCF like any other TikTok Shop order.

## The order page shows the money, items and packages

Click an order ID to open its page. It shows the money, the items, the packages, and the address in one place.

| Section           | What it shows                                                                                                                                                            |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Order Total**   | The subtotal, shipping, tax, and total.                                                                                                                                  |
| **Items Ordered** | Each item. A line shows **N unit(s) unfulfillable** when Amazon cannot ship it.                                                                                          |
| **Shipment**      | Each package with its carrier, tracking number, and estimated delivery. Click **Track** to open the carrier page. Click **View contents** to see what is in the package. |
| **Ship To**       | The delivery address.                                                                                                                                                    |
| **Order Details** | The channel, the fulfillment account, the shipping speed, the payment, and the order IDs.                                                                                |

Before an order ships, **Shipment** reads **Not yet shipped**. A held order adds **Order is on hold — release to begin fulfillment**.

A **Partial — X of Y units shipped** banner shows when only some units shipped. It lists the units Amazon cannot ship.

### The buttons depend on the status

The buttons at the top of the order page change with the order status.

| Button             | Shows when                                           | What it does                                               |
| ------------------ | ---------------------------------------------------- | ---------------------------------------------------------- |
| **Edit Order**     | **Pending** or **Processing**                        | Changes the shipping speed, the address, or the packaging. |
| **Release / Edit** | The order is on hold                                 | The same dialog. Use it to release the order.              |
| **Retry Order**    | **Error**                                            | Sends the order to Amazon again.                           |
| **Cancel Order**   | **Pending**, **Cancelling**, or **Processing**       | Cancels the order at Amazon, and can refund the shopper.   |
| **Refund**         | Money remains on a storefront charge                 | Refunds what remains to the original card.                 |
| **Return**         | **Shipped**, **Partially shipped**, or **Delivered** | Starts an Amazon MCF return.                               |

### Edit or release an order

One dialog changes an order and releases a held order. Open the order page first.

{% stepper %}
{% step %}

### Open the dialog

Click **Edit Order**, or **Release / Edit** for a held order. The dialog opens.
{% endstep %}

{% step %}

### Change what you need

* **Fulfillment Action**: click the button to switch between **Hold** and **Ship**. To release a held order, set it to **Ship**.
* **Shipping Speed**: **Standard (3–5 days)**, **Expedited (2 days)**, or **Priority (1 day)**.
* **Destination Address**: correct the name, street, city, state, postal code, or country.
* **Blank Box (unbranded packaging)** and **Block AMZL (no Amazon Logistics)**.
  {% endstep %}

{% step %}

### Save

Click **Save Changes**.
{% endstep %}
{% endstepper %}

Done. Amazon uses the changed order. A released order begins fulfillment.

### Cancel an order

You can cancel an order until Amazon ships it. Open the order page first.

ShopperOS refunds only storefront orders. A Walmart or TikTok Shop order shows **Paid on Walmart** or **Paid on TikTok**, and has no refund option here.

{% stepper %}
{% step %}

### Start the cancel

Click **Cancel Order**. **Cancel this order?** opens.
{% endstep %}

{% step %}

### Choose a reason

Choose a **Reason**: **Customer request**, **Inventory**, **Fraud**, **Staff**, or **Other**.
{% endstep %}

{% step %}

### Decide on the refund

For a storefront order with money left on the charge, **Refund $X** is ticked. Untick it to keep the money.
{% endstep %}

{% step %}

### Confirm

Click **Yes, Cancel**. While ShopperOS waits for Amazon, the order shows **Cancelling**.
{% endstep %}
{% endstepper %}

Done. The status changes to **Cancelled** when Amazon confirms. If a row then shows in **Needs attention**, see the next section.

### Needs attention lists the work left

The **Needs attention** box shows work that is left when the order, the payment, and the channel disagree. Each row has a button. Most buttons ask you to confirm first, because they cannot be undone.

| Row                                                          | Button                 | What it does                                                  |
| ------------------------------------------------------------ | ---------------------- | ------------------------------------------------------------- |
| **$X still charged**                                         | **Refund $X**          | Refunds the shopper for an order that ended without shipping. |
| **Fulfillment is cancelled but checkout is still open**      | **Mark cancelled**     | Closes the checkout order. No money moves.                    |
| **Refunded before shipping, but the order will still ship**  | **Cancel order**       | Cancels the shipment.                                         |
| **Storefront order is still open**                           | **Cancel on channel**  | Cancels the order in Shopify. The shopper gets no email.      |
| **Stock was decremented and has not been restored**          | **Restore stock**      | Puts the units back on the channel.                           |
| **Fulfillment is delivered; channel still shows in transit** | **Mark delivered**     | Marks the Shopify shipment as delivered.                      |
| **Unwind this failed order**                                 | **Cancel fulfillment** | Cancels a failed order at Amazon.                             |
| **Couldn't load payment**                                    | **Retry**              | Loads the payment again.                                      |

A row goes away when its problem is fixed.

### Fix an order error

Read the banner, fix the cause, then retry. An order in <mark style="color:red;">Error</mark> shows a banner with the error type, a suggestion, and Amazon's message.

| Type           | Suggestion                                                                     | What to do                                                                                                           |
| -------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- |
| **Address**    | Verify the shipping address and update the order.                              | Click **Edit Order**, correct the address, then click **Retry Order**.                                               |
| **Inventory**  | Check MCF inventory levels. The item may be out of stock.                      | Check the SKU in [Inventory](/fulfillment/listings-and-inventory.md#inventory). Retry when stock arrives, or cancel. |
| **Auth**       | Re-authorize your Amazon connection from the Accounts page.                    | Reconnect your Amazon account in **Fulfillment → Channels**, then retry.                                             |
| **Rate Limit** | Amazon is rate-limiting requests. Retry in a few minutes.                      | Wait a few minutes, then click **Retry Order**.                                                                      |
| **Provider**   | An unexpected error occurred. Try retrying, or contact support if it persists. | Retry once. If it fails again, contact your Stackline team.                                                          |

## Start a return from an order

You can start an Amazon MCF return for an order that shipped. Open the order page first.

{% hint style="warning" %}
**Amazon MCF return policy.** The Amazon return label is not prepaid. The shopper pays the postage. The MCF return does not refund the shopper. For a storefront order, use **Refund** on the order page.
{% endhint %}

{% stepper %}
{% step %}

### Start the return

Click **Return**. The return dialog opens.
{% endstep %}

{% step %}

### Pick the item and reason

Pick the **Item**, then the **Reason**. Amazon supplies the list of reasons.
{% endstep %}

{% step %}

### Add a comment

Optionally, add a **Comment (optional)**.
{% endstep %}

{% step %}

### Submit

Click **Submit Return**. The return shows in the **Returns** card on the order page, with its status.
{% endstep %}
{% endstepper %}

Done. When Amazon authorizes the return, the card shows the RMA number and the return address. Click **View RMA Label Page** to get the label for the shopper. To return another item, click **New Return**.

## Cancellations

Approve or deny each Walmart cancellation request on **Fulfillment → Cancellations**. Walmart shoppers can ask to cancel an order, and this page lists the requests.

{% hint style="warning" %}
Walmart cancels an unanswered request by itself after about 48 hours. To resolve requests without waiting for you, turn on **Auto-handle cancellations**. See [Marketplace channels, Auto-handle cancellations](/fulfillment/marketplace-channels.md#auto-handle-cancellations).
{% endhint %}

<figure><img src="https://489913050-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FblcXcPwOUg5osGsERflQ%2Fuploads%2Fgit-blob-58388812cfede7c8cb3d01cfcd29c7b90f0a6d3b%2Fcancellations.jpg?alt=media" alt="Fulfillment → Cancellations"><figcaption><p>Each request shows its Respond by time. The time turns red when it has passed.</p></figcaption></figure>

| Tab                | Shows                                                           |
| ------------------ | --------------------------------------------------------------- |
| **Pending**        | Requests that wait for you.                                     |
| **Approved**       | Requests you or ShopperOS approved.                             |
| **Denied**         | Requests you or ShopperOS denied.                               |
| **Auto-cancelled** | Requests the channel cancelled because nobody answered in time. |
| **All**            | Every request.                                                  |

Each row shows the **Channel order**, the **Fulfillment order**, the **Requested items** (or **Entire order**), and the **Respond by** time. **Respond by** turns red when the time has passed. Under the status, **Automatic** or **Resolved manually** shows who resolved it.

### Answer a request

Choose one of two answers.

{% tabs %}
{% tab title="Approve" %}

1. Click **Approve** to cancel the fulfillment order and confirm the cancellation on the channel.
2. Click **Yes** to confirm, or **No** to go back.
   {% endtab %}

{% tab title="Deny" %}

1. Click **Deny** to keep the order.
2. Click **Yes** to confirm, or **No** to go back.
3. Make sure the order ships before the **Respond by** time.
   {% endtab %}
   {% endtabs %}

Done. The request moves to **Approved** or **Denied**.

## Returns

Grade TikTok Shop returns on **Fulfillment → Returns**. The page lists returns from your marketplace channels. Returns from other channels show for reference only.

| Tab              | Meaning                                                                       |
| ---------------- | ----------------------------------------------------------------------------- |
| **Requested**    | The buyer asked. Some requests wait for your approval, such as a replacement. |
| **Approved**     | The return is approved.                                                       |
| **In transit**   | The parcel is on its way to you. This tab opens first.                        |
| **Received**     | The parcel arrived.                                                           |
| **Needs review** | The return needs a decision.                                                  |
| **Completed**    | The return is done.                                                           |
| **Rejected**     | The return was rejected.                                                      |
| **All**          | Every return.                                                                 |

To find a parcel in your hand, type its tracking number, return ID, or order ID in the search box. The search looks across every status.

### Grade a return

Your grade decides the buyer's refund. Grade before **Respond by**. After that time, the channel refunds the buyer automatically.

A row that shows **Refunded at drop-off** cannot be rejected. Some TikTok choices, such as a refund in place of an exchange, can only be made in TikTok Seller Center.

{% stepper %}
{% step %}

### Record the parcel

When a parcel arrives, click **Mark received**. This only records it in ShopperOS. Nothing goes to the channel.
{% endstep %}

{% step %}

### Open the grade

Open the parcel, and click **Grade**.
{% endstep %}

{% step %}

### Pick a decision

The channel decides which choices you get, for example:

* **Approve**: the item is as expected, and the buyer is refunded.
* **Refund with a deduction**: enter the **Refund amount** the buyer gets back.
* **Reject**: the item does not qualify for a refund.
  {% endstep %}

{% step %}

### Give a reason

For a rejection or a deduction, pick a **Reason**. The channel shows it to the buyer. Optionally, add a **Note (optional)**.
{% endstep %}

{% step %}

### Send

Click **Send decision**.
{% endstep %}
{% endstepper %}

Done. The status updates when the channel confirms.

## Troubleshooting

Each answer below starts from what you see.

<details>

<summary>What if I see "Failed to load orders. Please try again."?</summary>

Reload the page.

</details>

<details>

<summary>What if I see "No orders found."?</summary>

Widen the time range, or clear the search and filters.

</details>

<details>

<summary>What if an order stays Pending for hours?</summary>

Contact your Stackline team.

</details>

<details>

<summary>What if I see "You don't have access to this order's payment."?</summary>

Ask an admin of your organization to check your access.

</details>

<details>

<summary>What if I see "The channel does not accept a decision for this return right now."?</summary>

The return may be decided already. Reload the list to see its status.

</details>

<details>

<summary>What if I see "Could not send the decision"?</summary>

Try again. If it fails again, decide the return in TikTok Seller Center.

</details>

<details>

<summary>What if I see "Action failed" on Cancellations?</summary>

Try again before the **Respond by** time. If it fails again, contact your Stackline team.

</details>

## Next step

Set up the marketplaces that send you orders.

{% content-ref url="/pages/ktcT7R3GexEmSMo7S3I9" %}
[Marketplace channels (Walmart, TikTok Shop)](/fulfillment/marketplace-channels.md)
{% endcontent-ref %}
