---
title: "Create Fulfillment"
method: POST
path: "/stores/{storeId}/orders/{orderId}/fulfillments"
tags: ["Orders"]
---

# Create Fulfillment

`POST /stores/{storeId}/orders/{orderId}/fulfillments`

Create a fulfillment for specific line items within an order, including tracking information. The orderId parameter can be either the external order ID you provided when creating the order, or the internal Redo order ID returned from the create order response. Requires the [`orders_write`](/docs/api-reference/scopes) scope.

## Request body

- OrdersApiCreateFulfillmentRequestSchema — Request body for creating a fulfillment.
  - `fulfillmentId` string — Unique identifier for the fulfillment. If not provided, will be auto-generated.
  - `lineItems` object[], required — List of line items to fulfill.
    - `id` string, required — Line item ID to fulfill.
    - `quantity` integer, required — Quantity to fulfill for this line item.
  - `tracking` object, nullable — Optional tracking information for the shipment.
    - `carrier` string, required — Name of the shipping carrier (e.g., FedEx, UPS, USPS).
    - `code` string, required — Tracking number/code for the shipment.
  - `useDummyTracking` boolean — If true, creates a dummy tracker for testing without calling external tracking APIs. Useful for development and testing the fulfillment status update endpoint.
  - `initialTracking` object — Initial tracking information for the dummy tracker. Only used when useDummyTracking is true. If not specified, defaults to status "pre_transit".
    - `status` 'pre_transit' | 'unknown' | 'in_transit' | 'out_for_delivery' | 'available_for_pickup' | 'delivered' | 'return_to_sender' | 'failure' | 'cancelled' | 'error', required — Initial shipment status for the dummy tracker. Only actual statuses are allowed (not automation events).
    - `estimatedDeliveryDate` string, date-time, nullable — Estimated delivery date in ISO 8601 format.
    - `message` string, nullable — Tracking event message.
    - `datetime` string, date-time, nullable — Timestamp of the tracking event in ISO 8601 format.
    - `location` OrdersApiTrackingLocationSchema — Location information for a tracking event.
      - `city` string, nullable
      - `state` string, nullable
      - `country` string, nullable
      - `postalCode` string, nullable

## Response `200`

Success

- OrdersApiFulfillmentResponseSchema — Successful fulfillment operation response.
  - `success` true, required
  - `fulfillment` OrdersApiFulfillmentSchema, required — Fulfillment information.
    - `id` string, required — Unique fulfillment ID.
    - `createdAt` string, date-time, required — ISO 8601 date string for when the fulfillment was created.
    - `lineItems` OrdersApiFulfillmentLineItemSchema[], required — List of line items in this fulfillment.
      - `id` string, required — Line item ID that was fulfilled.
      - `quantity` integer, required — Quantity fulfilled for this line item.
      - `title` string, required — Title/name of the product.
      - `productId` string, required — Product ID.
      - `variantId` string, nullable — Product variant ID.
      - `sku` string, nullable — SKU of the product.
    - `trackingCompany` string, nullable — Shipping carrier name (e.g., FedEx, UPS).
    - `trackingNumber` string, nullable — Tracking number for the shipment.
    - `status` 'pre_transit' | 'unknown' | 'in_transit' | 'out_for_delivery' | 'available_for_pickup' | 'delivered' | 'return_to_sender' | 'failure' | 'cancelled' | 'error', required — Current shipment status.
    - `estimatedDeliveryDate` string, nullable — Carrier's estimated delivery date (YYYY-MM-DD), typically in the destination's local time. Some carriers do not clearly distinguish local vs UTC, so the date may occasionally be off by one day.
    - `deliveredAt` string, date-time, nullable — ISO 8601 timestamp of when the shipment was delivered.
    - `trackingHistory` OrdersApiTrackingEventSchema[], required — List of tracking events in chronological order.
      - `message` string, required — Tracking event message.
      - `status` string, required — Status at this tracking event.
      - `datetime` string, date-time, required — ISO 8601 timestamp of the tracking event.
      - `location` OrdersApiTrackingLocationSchema — Location information for a tracking event.
        - `city` string, nullable
        - `state` string, nullable
        - `country` string, nullable
        - `postalCode` string, nullable

## Other responses

- `400` — Bad Request (validation error)
- `401` — Unauthorized (invalid or missing API token)
- `404` — Order not found
- `default` — Error

---

[API](https://skmtc.dev/redoapp/apis/redo-api.md) · [All operations](https://skmtc.dev/redoapp/apis/redo-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/redoapp/redo-api/revisions/119714540a45/schema)
