---
updatedAt: 2025-12-04T09:47:37.000Z
agentTools:
  projectIndex: https://developers.shipup.co/llms.txt
---

# The fulfillment object

In Shipup, a <code>fulfillment</code> represents a shipment of one or more items in an order. When an order has been completely fulfilled, it means that all the items that are included in the order have been sent to the customer.

In most cases, a merchant will make just one shipment per order; however, sometimes the availability or size of items in the order requires a merchant to make more than one shipment. Each shipment should be treated as a separate fulfillment.

<Callout icon="📘" theme="info">
  On rare occasions, a fulfillment can later be split into multiple shipments. A fulfillment can thus have multiple tracker objects associated.
</Callout>

<Table align={["left","left"]}>
  <thead>
    <tr>
      <th>
        FIELD
      </th>

      <th>
        DESCRIPTION
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        **merchant_id**
        string, required
      </td>

      <td>
        ID used by the shop for the fulfillment
      </td>
    </tr>

    <tr>
      <td>
        **fulfillment_number**  
        string, optional
      </td>

      <td>
        Shop reference of the fulfillment. For instance, this can be the order number suffixed by an underscore and the fulfillment count (ABCD_1)
      </td>
    </tr>

    <tr>
      <td>
        **estimated_delivery_range_start**  
        datetime, optional
      </td>

      <td>
        Estimated delivery date for the fulfillment. If estimated_delivery_range_end is also provided, a range will be displayed. Otherwise, estimated_delivery_range_start will be displayed alone
      </td>
    </tr>

    <tr>
      <td>
        **estimated_delivery_range_end**  
        datetime, optional
      </td>

      <td>
        End of estimated delivery date range
      </td>
    </tr>

    <tr>
      <td>
        **custom_variables**  
        object, optional
      </td>

      <td>
        Custom variables for the fulfillment
      </td>
    </tr>

    <tr>
      <td>
        **status_code**  
        string, optional, see [available values](https://developers.shipup.co/reference/fulfillment-statuses)
      </td>

      <td>
        Fulfillment status. This field is **required** if you want to send pre-shipment notifications. Each status_code is associated with a pre-shipment notification
      </td>
    </tr>

    <tr>
      <td>
        **can_assign_items**  
        boolean
      </td>

      <td>
        This attribute is meant to be set to <code>true</code> by default.  
        The only occasion in which this attribute is set to <code>false</code> is when: 1/ you have multiple trackers in the fulfillment 2/ you do not know in which tracker each line item has been shipped, you only know that the items have been shipped
      </td>
    </tr>

    <tr>
      <td>
        **warehouse_merchant_id** string, optional
      </td>

      <td>
        ID of the warehouse (or equivalent) for this fulfillment. When not provided, we will associate the fulfillment to the company's default warehouse.
      </td>
    </tr>

    <tr>
      <td>
        **shipping_address**  
        object, optional
      </td>

      <td>
        An <code>address</code> is a physical address.  
        See address payload above
      </td>
    </tr>

    <tr>
      <td>
        **line_items**  
        array of objects, optional
      </td>

      <td>
        Fulfilled line items (not shipped yet). Before fulfillment, line items are placed in the order object. Once shipped, they are placed in the tracker object.  
        See line Item payload above
      </td>
    </tr>

    <tr>
      <td>
        **trackers**  
        array of objects, optional
      </td>

      <td>
        Trackers related to this fulfillment  
        See tracker payload below
      </td>
    </tr>
  </tbody>
</Table>