> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # UpdateFulfillment # Package: orders # Namespace: Fulfillments # Method link: https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/order-fulfillments/update-fulfillment.md ## Permission Scopes: Manage Orders: SCOPE.DC-STORES.MANAGE-ORDERS ## Introduction Updates a fulfillment's properties. To update a field's value, include the new value in the `fulfillment` field in the body params. To remove a field's value, pass `null`. --- ## REST API ### Schema ``` Method: updateFulfillment Description: Updates a fulfillment's properties. To update a field's value, include the new value in the `fulfillment` field in the body params. To remove a field's value, pass `null`. URL: https://www.wixapis.com/ecom/v1/fulfillments/{fulfillment.id}/orders/{orderId} Method: PATCH # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: fulfillment.id Method parameters: param name: fulfillment | type: Fulfillment | description: for now, this is a sub-object of Orders, so can refer to order line items by id. - ONE-OF: - name: trackingInfo | type: FulfillmentTrackingInfo | description: Tracking info. - name: trackingNumber | type: string | description: Shipping/delivery tracking number. - name: shippingProvider | type: string | description: Shipping provider name. Can be either a predefined provider for automatic tracking link generation, or a custom provider name for manual tracking link management. Predefined providers that support automatic tracking link generation: `"fedex"` - FedEx shipping services `"ups"` - UPS shipping services `"usps"` - United States Postal Service `"dhl"` - DHL shipping services `"canadaPost"` - Canada Post shipping services For predefined providers: - The `trackingLink` field will be automatically populated based on the `trackingNumber` - Standard tracking URL formats are used for each carrier - No additional configuration is needed For custom shipping providers: - Use any string value to identify your provider - You must manually provide the `trackingLink` - Useful for local carriers or specialized shipping services - name: trackingLink | type: string | description: URL where customers can track their shipment status. For predefined shipping providers: - Automatically generated based on the `trackingNumber` - Uses the carrier's official tracking URL format - No manual input required For custom shipping providers: - Must be provided when creating the fulfillment - Should be a valid URL to the carrier's tracking page - Can include the tracking number as a parameter if needed - name: customInfo | type: CustomFulfillmentInfo | description: Custom fulfillment info. - name: fieldsData | type: object | description: Custom fulfillment info in key:value form. - name: id | type: string | description: Fulfillment GUID. | required: true - name: lineItems | type: array | description: Line items being fulfilled. - name: id | type: string | description: Line item GUID (mirrors the GUID of the order line item). - name: quantity | type: integer | description: Line item quantity. * If this property isn't passed on creation, it defaults to the number of items not already linked to a fulfillment. * If the order does not have the requested quantity of line items available to add to this fulfillment, the fulfillment will not be created and an error is returned. - name: status | type: string | description: The current status of the fulfillment process. Supported values: + `"Pending"` - Initial state when fulfillment is created but processing hasn't started. + `"Accepted"` - Order has been received and validated for fulfillment. + `"Ready"` - Items have been picked and packed, ready for shipping. + `"In_Delivery"` - Items have been handed over to the shipping carrier. + `"Fulfilled"` - Delivery has been completed successfully. The status typically progresses from Pending → Accepted → Ready → In_Delivery → Fulfilled. Status can be updated manually or automatically depending on your fulfillment workflow. - name: completed | type: boolean | description: Fulfillment handling complete. Return type: UpdateFulfillmentResponse - name: orderWithFulfillments | type: OrderWithFulfillments | description: Order GUID and the orders' associated fulfillments after update. - name: orderId | type: string | description: Order GUID. - name: fulfillments | type: array | description: Fulfillments associated with the order. - ONE-OF: - name: trackingInfo | type: FulfillmentTrackingInfo | description: Tracking info. - name: trackingNumber | type: string | description: Shipping/delivery tracking number. - name: shippingProvider | type: string | description: Shipping provider name. Can be either a predefined provider for automatic tracking link generation, or a custom provider name for manual tracking link management. Predefined providers that support automatic tracking link generation: `"fedex"` - FedEx shipping services `"ups"` - UPS shipping services `"usps"` - United States Postal Service `"dhl"` - DHL shipping services `"canadaPost"` - Canada Post shipping services For predefined providers: - The `trackingLink` field will be automatically populated based on the `trackingNumber` - Standard tracking URL formats are used for each carrier - No additional configuration is needed For custom shipping providers: - Use any string value to identify your provider - You must manually provide the `trackingLink` - Useful for local carriers or specialized shipping services - name: trackingLink | type: string | description: URL where customers can track their shipment status. For predefined shipping providers: - Automatically generated based on the `trackingNumber` - Uses the carrier's official tracking URL format - No manual input required For custom shipping providers: - Must be provided when creating the fulfillment - Should be a valid URL to the carrier's tracking page - Can include the tracking number as a parameter if needed - name: customInfo | type: CustomFulfillmentInfo | description: Custom fulfillment info. - name: fieldsData | type: object | description: Custom fulfillment info in key:value form. - name: id | type: string | description: Fulfillment GUID. - name: createdDate | type: string | description: Fulfillment creation date and time in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format. - name: lineItems | type: array | description: Line items being fulfilled. - name: id | type: string | description: Line item GUID (mirrors the GUID of the order line item). - name: quantity | type: integer | description: Line item quantity. * If this property isn't passed on creation, it defaults to the number of items not already linked to a fulfillment. * If the order does not have the requested quantity of line items available to add to this fulfillment, the fulfillment will not be created and an error is returned. - name: status | type: string | description: The current status of the fulfillment process. Supported values: + `"Pending"` - Initial state when fulfillment is created but processing hasn't started. + `"Accepted"` - Order has been received and validated for fulfillment. + `"Ready"` - Items have been picked and packed, ready for shipping. + `"In_Delivery"` - Items have been handed over to the shipping carrier. + `"Fulfilled"` - Delivery has been completed successfully. The status typically progresses from Pending → Accepted → Ready → In_Delivery → Fulfilled. Status can be updated manually or automatically depending on your fulfillment workflow. - name: completed | type: boolean | description: Fulfillment handling complete. Possible Errors: HTTP Code: 409 | Status Code: ALREADY_EXISTS | Application Code: TRACKING_NUMBER_ALREADY_EXISTS | Description: fulfillment with tracking number already exist ``` ### Examples ### Update Fulfillment Updating a fulfillment's tracking number and tracking link. ```curl curl -X PATCH \ 'https://www.wixapis.com/ecom/v1/fulfillments/1d93cd8e-0de5-469b-b802-88bcd76cb222/orders/eb4b91d3-51f3-494d-94df-479ff2c6eb08' \ -H 'Content-Type: application/json' \ -H 'Authorization: ' \ -d '{ "fulfillment": { "trackingInfo": { "trackingNumber": "45782", "trackingLink": "https://www.fedex.com/apps/fedextrack/?action=track&trackingnumber=45782" } } }' ``` --- ## JavaScript SDK ### Schema ``` Method: wixClientAdmin.orders.Fulfillments.updateFulfillment(identifiers, options) Description: Updates a fulfillment's properties. To update a field's value, include the new value in the `fulfillment` field in the body params. To remove a field's value, pass `null`. # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: identifiers.orderId, identifiers.fulfillmentId, identifiers Method parameters: param name: identifiers | type: UpdateFulfillmentIdentifiers none | required: true - name: fulfillmentId | type: string | description: Fulfillment GUID. | required: true - name: orderId | type: string | description: Order GUID. | required: true param name: options | type: UpdateFulfillmentOptions none - name: fulfillment | type: Fulfillment | description: Fulfillment info to update. - ONE-OF: - name: trackingInfo | type: FulfillmentTrackingInfo | description: Tracking info. - name: trackingNumber | type: string | description: Shipping/delivery tracking number. - name: shippingProvider | type: string | description: Shipping provider name. Can be either a predefined provider for automatic tracking link generation, or a custom provider name for manual tracking link management. Predefined providers that support automatic tracking link generation: `"fedex"` - FedEx shipping services `"ups"` - UPS shipping services `"usps"` - United States Postal Service `"dhl"` - DHL shipping services `"canadaPost"` - Canada Post shipping services For predefined providers: - The `trackingLink` field will be automatically populated based on the `trackingNumber` - Standard tracking URL formats are used for each carrier - No additional configuration is needed For custom shipping providers: - Use any string value to identify your provider - You must manually provide the `trackingLink` - Useful for local carriers or specialized shipping services - name: trackingLink | type: string | description: URL where customers can track their shipment status. For predefined shipping providers: - Automatically generated based on the `trackingNumber` - Uses the carrier's official tracking URL format - No manual input required For custom shipping providers: - Must be provided when creating the fulfillment - Should be a valid URL to the carrier's tracking page - Can include the tracking number as a parameter if needed - name: customInfo | type: CustomFulfillmentInfo | description: Custom fulfillment info. - name: fieldsData | type: object | description: Custom fulfillment info in key:value form. - name: lineItems | type: array | description: Line items being fulfilled. - name: _id | type: string | description: Line item GUID (mirrors the GUID of the order line item). - name: quantity | type: integer | description: Line item quantity. * If this property isn't passed on creation, it defaults to the number of items not already linked to a fulfillment. * If the order does not have the requested quantity of line items available to add to this fulfillment, the fulfillment will not be created and an error is returned. - name: status | type: string | description: The current status of the fulfillment process. Supported values: + `"Pending"` - Initial state when fulfillment is created but processing hasn't started. + `"Accepted"` - Order has been received and validated for fulfillment. + `"Ready"` - Items have been picked and packed, ready for shipping. + `"In_Delivery"` - Items have been handed over to the shipping carrier. + `"Fulfilled"` - Delivery has been completed successfully. The status typically progresses from Pending → Accepted → Ready → In_Delivery → Fulfilled. Status can be updated manually or automatically depending on your fulfillment workflow. - name: completed | type: boolean | description: Fulfillment handling complete. Return type: PROMISE - name: orderId | type: string | description: Order GUID. - name: fulfillments | type: array | description: Fulfillments associated with the order. - ONE-OF: - name: trackingInfo | type: FulfillmentTrackingInfo | description: Tracking info. - name: trackingNumber | type: string | description: Shipping/delivery tracking number. - name: shippingProvider | type: string | description: Shipping provider name. Can be either a predefined provider for automatic tracking link generation, or a custom provider name for manual tracking link management. Predefined providers that support automatic tracking link generation: `"fedex"` - FedEx shipping services `"ups"` - UPS shipping services `"usps"` - United States Postal Service `"dhl"` - DHL shipping services `"canadaPost"` - Canada Post shipping services For predefined providers: - The `trackingLink` field will be automatically populated based on the `trackingNumber` - Standard tracking URL formats are used for each carrier - No additional configuration is needed For custom shipping providers: - Use any string value to identify your provider - You must manually provide the `trackingLink` - Useful for local carriers or specialized shipping services - name: trackingLink | type: string | description: URL where customers can track their shipment status. For predefined shipping providers: - Automatically generated based on the `trackingNumber` - Uses the carrier's official tracking URL format - No manual input required For custom shipping providers: - Must be provided when creating the fulfillment - Should be a valid URL to the carrier's tracking page - Can include the tracking number as a parameter if needed - name: customInfo | type: CustomFulfillmentInfo | description: Custom fulfillment info. - name: fieldsData | type: object | description: Custom fulfillment info in key:value form. - name: _id | type: string | description: Fulfillment GUID. - name: _createdDate | type: Date | description: Fulfillment creation date and time in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format. - name: lineItems | type: array | description: Line items being fulfilled. - name: _id | type: string | description: Line item GUID (mirrors the GUID of the order line item). - name: quantity | type: integer | description: Line item quantity. * If this property isn't passed on creation, it defaults to the number of items not already linked to a fulfillment. * If the order does not have the requested quantity of line items available to add to this fulfillment, the fulfillment will not be created and an error is returned. - name: status | type: string | description: The current status of the fulfillment process. Supported values: + `"Pending"` - Initial state when fulfillment is created but processing hasn't started. + `"Accepted"` - Order has been received and validated for fulfillment. + `"Ready"` - Items have been picked and packed, ready for shipping. + `"In_Delivery"` - Items have been handed over to the shipping carrier. + `"Fulfilled"` - Delivery has been completed successfully. The status typically progresses from Pending → Accepted → Ready → In_Delivery → Fulfilled. Status can be updated manually or automatically depending on your fulfillment workflow. - name: completed | type: boolean | description: Fulfillment handling complete. Possible Errors: HTTP Code: 409 | Status Code: ALREADY_EXISTS | Application Code: TRACKING_NUMBER_ALREADY_EXISTS | Description: fulfillment with tracking number already exist ``` ### Examples ### Update a fulfillment (with elevated permissions) Updates the fulfillment's `trackingNumber` ```javascript import { orderFulfillments } from '@wix/ecom'; import { auth } from '@wix/essentials'; /* Sample identifiers value: * { * orderId: 'a6c3a817-579d-4cb5-8521-2fe53b2c4bf1', * fulfillmentId: 'a838877d-3f13-49f3-ab29-1cde478e0949' * }; * * Sample options value: * { * fulfillment: { * trackingInfo: { * trackingNumber: '45677' * } * } * }; */ const elevatedUpdateFulfillment = auth.elevate(orderFulfillments.updateFulfillment); export async function myUpdateFulfillmentFunction(identifiers, options) { try { const updatedOrderFulfillments = await elevatedUpdateFulfillment(identifiers, options); const fulfillmentsArray = updatedOrderFulfillments.fulfillments; console.log('Success! Updated fulfillment', updatedOrderFulfillments); return updatedOrderFulfillments; } catch (error) { console.error(error); // Handle the error } } /* Promise resolves to: * * { * "orderWithFulfillments": { * "orderId": "a6c3a817-579d-4cb5-8521-2fe53b2c4bf1", * "fulfillments": [ * { * "_id": "a838877d-3f13-49f3-ab29-1cde478e0949", * "_createdDate": "2023-03-07T14:30:21.535Z", * "lineItems": [ * { * "_id": "00000000-0000-0000-0000-000000000001", * "quantity": 1 * } * ], * "trackingInfo": { * "trackingNumber": "45677", * "shippingProvider": "usps", * "trackingLink": "https://tools.usps.com/go/TrackConfirmAction.action?tLabels=45677" * } * } * ] * } * } * */ ``` ### Update a fulfillment Updates the fulfillment's `trackingNumber` ```javascript import { orderFulfillments } from '@wix/ecom'; /* Sample identifiers value: * { * orderId: 'a6c3a817-579d-4cb5-8521-2fe53b2c4bf1', * fulfillmentId: 'a838877d-3f13-49f3-ab29-1cde478e0949' * }; * * Sample options value: * { * fulfillment: { * trackingInfo: { * trackingNumber: '45677' * } * } * }; */ export async function myUpdateFulfillmentFunction(identifiers, options) { try { const updatedOrderFulfillments = await orderFulfillments.updateFulfillment(identifiers, options); const fulfillmentsArray = updatedOrderFulfillments.fulfillments; console.log('Success! Updated fulfillment', updatedOrderFulfillments); return updatedOrderFulfillments; } catch (error) { console.error(error); // Handle the error } } /* Promise resolves to: * * { * "orderWithFulfillments": { * "orderId": "a6c3a817-579d-4cb5-8521-2fe53b2c4bf1", * "fulfillments": [ * { * "_id": "a838877d-3f13-49f3-ab29-1cde478e0949", * "_createdDate": "2023-03-07T14:30:21.535Z", * "lineItems": [ * { * "_id": "00000000-0000-0000-0000-000000000001", * "quantity": 1 * } * ], * "trackingInfo": { * "trackingNumber": "45677", * "shippingProvider": "usps", * "trackingLink": "https://tools.usps.com/go/TrackConfirmAction.action?tLabels=45677" * } * } * ] * } * } * */ ``` ### updateFulfillment (self-hosted) Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md). ```javascript import { createClient } from '@wix/sdk'; import { orderFulfillments } from '@wix/ecom'; // Import the auth strategy for the relevant access type // Import the relevant host module if needed const myWixClient = createClient ({ modules: { orderFulfillments }, // Include the auth strategy and host as relevant }); async function updateFulfillment(identifiers,options) { const response = await myWixClient.orderFulfillments.updateFulfillment(identifiers,options); }; ``` ---