# Fulfilling COD orders: tracking numbers and the fulfilled status

> Fulfill each COD order in Shopify on the day the parcel leaves, with the courier's tracking number. The shopper gets a shipping confirmation, and your orders then show which refused orders really went out. Refusal rates and shipping-loss figures depend on that record.

URL: https://khaleejicod.com/guides/fulfill-cod-orders/  
Updated: 2026-10-26  
Publisher: Trifid Media LLC

Mark a COD order as fulfilled in Shopify on the day the parcel leaves, and add the courier's
tracking number when you do. Shopify can then email the shopper a shipping confirmation with
tracking, and your order history keeps a record that the parcel went out. Without that record, a
refused parcel looks the same as an order you cancelled before shipping, and your refusal numbers
come out wrong.

## What does "fulfilled" mean in Shopify?

**Fulfilling** an order means recording in Shopify that you shipped its items. Each order has a
fulfillment status, such as **Unfulfilled**, **Partially fulfilled** or **Fulfilled**.

Fulfillment status and payment status are separate. A COD order is usually fulfilled days before
it is paid, because the courier has to deliver it, collect the cash and pay you first:

| Stage | Fulfillment status | Payment status |
|---|---|---|
| Order placed | Unfulfilled | Pending |
| Parcel handed to the courier | Fulfilled | Pending |
| Courier pays you for the order | Fulfilled | Paid (after you mark it) |
| Parcel refused and returned | Fulfilled, and you cancel the order | Never marked paid |

For the payment side, see [how to mark COD orders as paid](/guides/mark-cod-orders-paid/).

## How do you fulfill a COD order with a tracking number?

These steps follow Shopify's help page on adding tracking numbers:

1. From your Shopify admin, go to **Orders** and click the order.
2. In the **Unfulfilled** or **In progress** section, click **Mark as fulfilled**.
3. Type the courier's number in the **Tracking number** field. Shopify might recognise the format
   and choose the carrier for you.
4. If no carrier is chosen, or the wrong one is, pick yours from the **Shipping carrier** menu. If
   your courier isn't listed, choose **Other** and paste the complete tracking URL, including the
   digits your courier gave you.
5. To email the shopper, select **Send a notification to the customer**. Shopify only offers this
   when the order has the customer's email address.
6. Click **Mark as fulfilled**.

Forgot the tracking number? Open the order and click **Add tracking** in the **Fulfilled**
section, enter the number and click **Save**. You can send the shopper a shipping update at the
same time.

> **Note:** Shopify says you can't add a tracking number to an order that has no shipping address.

## Can you fulfill many COD orders at once?

Yes. Go to **Orders**, select the orders (the **Unfulfilled** tab helps), click **Mark as**, then
**Fulfilled**. You can tick **Send a notification to the customer**, then click
**Mark as fulfilled**.

Shopify's help page on bulk fulfillment doesn't describe adding tracking numbers in bulk. It says
you can add tracking numbers to the orders afterwards, one by one. If a courier integration or
shipping app fulfills orders for you, check that it adds the tracking number too.

## Why should a COD shopper get tracking?

A COD shopper has paid nothing yet, so the shipping message is a reminder that a parcel and a bill
are on the way. Shopify's **Shipping confirmation** email is sent when you fulfill an order, and
it includes the tracking number. With a tracking link, the shopper can see when to expect the
courier and have the cash ready.

Shopify also has **Out for delivery** and **Delivered** emails. Shopify sends these only when the
carrier or a fulfillment app sends a tracking event with that status, and it says timing and
accuracy vary by carrier. Your courier may also send its own SMS or WhatsApp messages. Check what
it sends so the shopper doesn't get confusing or duplicate messages. For message ideas, see
[confirming COD orders by phone, SMS or WhatsApp](/guides/confirm-cod-orders-phone-sms-whatsapp/).

If Shopify can't follow your courier's delivery status, a **Mark as delivered** button appears on
the fulfillment, so you can record delivery yourself when the courier confirms it.

## Why does the fulfilled status matter for refused orders?

When a COD parcel comes back refused, you usually cancel the order. Shopify lets you cancel an
order that is fulfilled but unpaid. Its help page says cancelling stops you collecting payment for
that order.

Your cancelled orders then fall into two groups:

- **Cancelled and fulfilled:** the parcel went out and came back. Depending on your courier
  contract, you may have paid for the trip out and the trip back.
- **Cancelled and unfulfilled:** you stopped the order before it shipped, so it cost you no
  shipping.

That split feeds two numbers:

- Your RTO rate. RTO (return to origin) means the courier brings an undelivered parcel back to
  you. The rate is RTO parcels divided by parcels handed to the courier, and fulfilled orders are
  your count of parcels handed over. See [RTO explained](/guides/rto-explained/).
- Khaleeji COD's money-lost report. It takes the cancelled COD orders placed in the last 60 days that
  Shopify recorded at least one fulfillment for, and multiplies that count by the shipping out plus
  shipping back costs you enter. Parcels you send without fulfilling the order count as never
  shipped, so the figure comes out too low.

## How do you keep the fulfillment record accurate?

- Fulfill on the day the parcel leaves, not when you pack it.
- If you fulfilled an order by mistake and the parcel never left, cancel the fulfillment before you
  cancel the order. Shopify returns the order to **Unfulfilled** when you cancel a fulfillment.
- If the parcel did go out and came back, leave the fulfillment in place and cancel the order.
- Shopify won't cancel a partially fulfilled order. Cancel the fulfillment first, or use refunds
  and returns instead.
- When you cancel, choose a **Reason for cancellation** and add a **Staff note** such as "Refused
  at door, courier ref 123". Notes like this make refusals easy to tell apart from other
  cancellations later.
- After a refused parcel comes back, check that the items are back in your stock counts.

## How do you find refused orders that had shipped?

On the **Orders** page, filter **Order status** to **Canceled** and **Fulfillment status** to
**Fulfilled**, then click **Save** to keep the view. Shopify's order filters don't include payment
method, so export the list and filter the **Payment Method** column for your COD name. The full
method is in [how to find cancelled COD orders](/guides/find-cancelled-cod-orders/).

## Sources

- [Shopify Help Center: Fulfilling your own orders individually](https://help.shopify.com/en/manual/fulfillment/fulfilling-orders/single-fulfillment)
- [Shopify Help Center: Add tracking numbers to orders](https://help.shopify.com/en/manual/orders/status-tracking/add-tracking-numbers)
- [Shopify Help Center: Fulfilling your own orders in bulk](https://help.shopify.com/en/manual/fulfillment/fulfilling-orders/bulk-fulfillment)
- [Shopify Help Center: Customer notifications](https://help.shopify.com/en/manual/fulfillment/setup/notifications/customer-notifications)
- [Shopify Help Center: Canceling orders](https://help.shopify.com/en/manual/fulfillment/managing-orders/canceling-orders)
- [Shopify Help Center: Filtering orders](https://help.shopify.com/en/manual/fulfillment/managing-orders/viewing-orders/filtering-orders)
