Skip to content

Fulfill an Order

To fulfill an order, you need to create a shipment, update its status, and track delivery events as they happen.

Create a Shipment

To begin fulfillment, submit a request to create a shipment for the order lines you are fulfilling.

Prepare the Payload

Create the create-shipment-request.json file with the payload for the new shipment:

{
  "carrier": "UPS",
  "tracking_number": "test-shipment-number-unique-43-90",
  "tracking_url": "test-shipment-tracking-url-unique-43-90",
  "warehouse_id": 9999,
  "order_line_ids": [
    90
  ],
  "packed_at": "2025-05-10T15:00:00Z"
}

Submit the Request

Use the following command submit your request to the Sandbox environment:

curl -X POST https://dropshipping.thredtest.com/api/v1.0/orders/43/shipments \
  -H "Content-Type: application/json" \
  -H "X-Thredup-Access-Token: YOUR_ACCESS_TOKEN" \
  -d @create-shipment-request.json

Shipment Response

If successful, the API returns 201 Created response including the newly generated shipment id.

{
  "id": 17
}

Verify Shipment on Order

To confirm the shipment was registered correctly, retrieve the order details again. The response will now include the shipment details too.

The Get Order endpoint returns the full details of a specific order. If the order includes shipments, they will also appear in the response.

curl https://dropshipping.thredtest.com/api/v1.0/orders/43 \
  -H "Content-Type: application/json" \
  -H "X-Thredup-Access-Token: YOUR_ACCESS_TOKEN"

Review Shipment Details

The shipment appears in the shipments array of the order. The response below is abbreviated for clarity:

{
  "id": 43,
  ....
  "shipments": [
    {
      "id": 17,
      "state": "packed",
      "carrier": "UPS",
      "tracking_number": "test-shipment-number-unique-43-90",
      "tracking_url": "test-shipment-tracking-url-unique-43-90",
      "warehouse_id": 9999,
      "packed_at": "2025-05-10T15:00:00Z",
      "shipped_at": null,
      "expected_to_deliver_at": null,
      "delivered_at": null,
      "canceled_at": null
    }
  ],
  ....
}

Mark Order as Shipped

Once the shipment is packed and handed off to the carrier, update its status to shipped:

curl -X POST https://dropshipping.thredtest.com/api/v1.0/orders/43/shipments \
-H "Content-Type: application/json" \
-H "X-Thredup-Access-Token: YOUR_ACCESS_TOKEN" \
-d '{
  "state": "shipped",
  "shipped_at": "2024-05-10T15:00:00Z",
  "expected_to_deliver_at": "2024-05-15T10:00:00Z"
}'

Mark Order as Delivered

Once the customer receives the shipment, finalize it by marking it as delivered:

curl -X POST https://dropshipping.thredtest.com/api/v1.0/orders/43/shipments \
-H "Content-Type: application/json" \
-H "X-Thredup-Access-Token: YOUR_ACCESS_TOKEN" \
-d '{
  "state": "delivered",
  "delivered_at": "2024-05-14T10:00:00Z"
}'