---
schema_version: "1"
id: 94cd72cdd8ea07b63f1e83877313ea42880906bc2c2afaa73b236f7533e00a5e
title: FulfillmentOrder Class
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/apexref/apex_ConnectAPI_FulfillmentOrder_static_methods.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_FulfillmentOrder_static_methods.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: a04d5f0f6583eb1b13412e912c02511684162953faeedf8cac2fc7028644c6bc
description: Fulfill orders in Order Management.These methods are for FulfillmentOrder. All methods are static.Cancel FulfillmentOrderLineItems from a FulfillmentOrder. This action doesn’t cancel the associated OrderItemSummaries, so reallocate the canceled quantities to a new FulfillmentOrder.Create one or more FulfillmentOrders and FulfillmentOrderLineItems for an OrderDeliveryGroupSummary, which defines a delivery method and recipient for an OrderSummary. You specify the OrderItemSummaries to allocate, which can be fulfilled from different locations. Specifying multiple fulfillment groups creates one FulfillmentOrder for each location. For each OrderItemSummary, a FulfillmentOrderLineItem is created and assigned to the corresponding FulfillmentOrder.Create an invoice for a FulfillmentOrder that doesn’t have one.Create FulfillmentOrders for multiple OrderDeliveryGroups in a single request.Create Invoices for multiple FulfillmentOrders.
---
# FulfillmentOrder Class

Fulfill orders in Order Management.

## Namespace

[ConnectApi](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_classes_connect_api.htm "The ConnectApi namespace (also called Connect in Apex) provides classes for accessing the same data available in Connect REST API. Use Connect in Apex to create custom experiences in Salesforce.")

## FulfillmentOrder Methods

These methods are for FulfillmentOrder. All methods are static.

- **[cancelFulfillmentOrderLineItems(fulfillmentOrderId, cancelFulfillmentOrderLineItemsInput)](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_FulfillmentOrder_static_methods.htm#apex_ConnectAPI_FulfillmentOrder_cancelFulfillmentOrderLineItems_1)**  
    Cancel FulfillmentOrderLineItems from a FulfillmentOrder. This action doesn’t cancel the associated OrderItemSummaries, so reallocate the canceled quantities to a new FulfillmentOrder.
- **[createFulfillmentOrders(fulfillmentOrderInput)](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_FulfillmentOrder_static_methods.htm#apex_ConnectAPI_FulfillmentOrder_createFulfillmentOrders_1)**  
    Create one or more FulfillmentOrders and FulfillmentOrderLineItems for an OrderDeliveryGroupSummary, which defines a delivery method and recipient for an OrderSummary. You specify the OrderItemSummaries to allocate, which can be fulfilled from different locations. Specifying multiple fulfillment groups creates one FulfillmentOrder for each location. For each OrderItemSummary, a FulfillmentOrderLineItem is created and assigned to the corresponding FulfillmentOrder.
- **[createInvoice(fulfillmentOrderId, invoiceInput)](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_FulfillmentOrder_static_methods.htm#apex_ConnectAPI_FulfillmentOrder_createInvoice_1)**  
    Create an invoice for a FulfillmentOrder that doesn’t have one.
- **[createMultipleFulfillmentOrder(multipleFulfillmentOrderInput)](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_FulfillmentOrder_static_methods.htm#apex_ConnectAPI_FulfillmentOrder_createMultipleFulfillmentOrder_1)**  
    Create FulfillmentOrders for multiple OrderDeliveryGroups in a single request.
- **[createMultipleInvoices(invoicesInput)](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_FulfillmentOrder_static_methods.htm#apex_ConnectAPI_FulfillmentOrder_createMultipleInvoices_1)**  
    Create Invoices for multiple FulfillmentOrders.

### cancelFulfillmentOrderLineItems(fulfillmentOrderId, cancelFulfillmentOrderLineItemsInput)

Cancel FulfillmentOrderLineItems from a FulfillmentOrder. This action doesn’t cancel the associated OrderItemSummaries, so reallocate the canceled quantities to a new FulfillmentOrder.

#### API Version

48.0

#### Requires Chatter

No

#### Signature

public static ConnectApi.FulfillmentOrderCancelLineItemsOutputRepresentation cancelFulfillmentOrderLineItems(String fulfillmentOrderId, ConnectApi.FulfillmentOrderLineItemsToCancelInputRepresentation cancelFulfillmentOrderLineItemsInput)

#### Parameters

fulfillmentOrderId

Type: String

ID of the FulfilllmentOrder.

cancelFulfillmentOrderLineItemsInput

Type: [ConnectApi.FulfillmentOrderLineItemsToCancelInputRepresentation](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_connectapi_input_fulfillment_order_line_items_to_cancel.htm "A list of FulfillmentOrderLineItems and quantities to cancel.")

List of FulfillmentOrderLineItems to cancel.

#### Return Value

Type: [ConnectApi.FulfillmentOrderCancelLineItemsOutputRepresentation](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_connectapi_output_fulfillment_order_cancel_line_items_output.htm "Wraps the base output.")

#### Example

String fulfillmentOrderId = '0a3xx0000000085AAA';
List<ConnectApi.FulfillmentOrderLineItemInputRepresentation> itemToCancelList = new List<ConnectApi.FulfillmentOrderLineItemInputRepresentation>();

for(FulfillmentOrderLineItem fulfillmentOrderLineItem : fulfillmentOrder.FulfillmentOrderLineItems){
  ConnectApi.FulfillmentOrderLineItemInputRepresentation itemToCancel = new ConnectApi.FulfillmentOrderLineItemInputRepresentation();
  itemToCancel.fulfillmentOrderLineItemId = fulfillmentOrderLineItem.Id;
  itemToCancel.quantity = 1;
  itemToCancelList.add(itemToCancel);
}

ConnectAPI.FulfillmentOrderLineItemsToCancelInputRepresentation input = new ConnectAPI.FulfillmentOrderLineItemsToCancelInputRepresentation();        
input.fulfillmentOrderLineItemsToCancel = itemToCancelList;

ConnectAPI.FulfillmentOrderCancelLineItemsOutputRepresentation result = ConnectAPI.FulfillmentOrder.cancelFulfillmentOrderLineItems(fulfillmentOrderId, input);

### createFulfillmentOrders(fulfillmentOrderInput)

Create one or more FulfillmentOrders and FulfillmentOrderLineItems for an OrderDeliveryGroupSummary, which defines a delivery method and recipient for an OrderSummary. You specify the OrderItemSummaries to allocate, which can be fulfilled from different locations. Specifying multiple fulfillment groups creates one FulfillmentOrder for each location. For each OrderItemSummary, a FulfillmentOrderLineItem is created and assigned to the corresponding FulfillmentOrder.

#### API Version

48.0

#### Requires Chatter

No

#### Signature

public static ConnectApi.FulfillmentOrderOutputRepresentation createFulfillmentOrders(ConnectApi.FulfillmentOrderInputRepresentation fulfillmentOrderInput)

#### Parameters

fulfillmentOrderInput

Type: [ConnectApi.FulfillmentOrderInputRepresentation](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_connectapi_input_fulfillment_order.htm "An OrderDeliveryGroupSummary that defines a delivery method and recipient, and a list of fulfillment groups to assign to FulfillmentOrders. Each fulfillment group is a set of OrderItemSummaries that match the OrderDeliveryGroupSummary and share the same fulfillment location. The method creates a FulfillmentOrder for each fulfillment group and a FulfillmentOrderLineItem for each OrderItemSummary.")

OrderItemSummaries to allocate, with location and delivery information.

#### Return Value

Type: [ConnectApi.FulfillmentOrderOutputRepresentation](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_connectapi_output_fulfillment_order_output.htm "A list of IDs of the created FulfillmentOrders.")

#### Example

String orderSummaryId = '1Osxx0000004CCG';
String fulfillmentType = 'warehouse';

String warehouseFromLocationId = \[SELECT Id from Location WHERE LocationType='Warehouse' LIMIT 1\].Id;

ConnectApi.FulfillmentOrderInputRepresentation fulfillmentOrderInput = new ConnectApi.FulfillmentOrderInputRepresentation();
fulfillmentOrderInput.orderSummaryId = orderSummaryId;

List<OrderDeliveryGroupSummary> orderDeliveryGroupSummaryList = \[SELECT Id FROM OrderDeliveryGroupSummary WHERE OrderSummaryId =: orderSummaryId\];

for (OrderDeliveryGroupSummary orderDeliveryGroupSummary: orderDeliveryGroupSummaryList){

  fulfillmentOrderInput.orderDeliveryGroupSummaryId = orderDeliveryGroupSummary.Id;
  List<ConnectApi.FulfillmentGroupInputRepresentation> fulfillmentGroups = new List<ConnectApi.FulfillmentGroupInputRepresentation>();
  ConnectApi.FulfillmentGroupInputRepresentation fulfillmentGroup = new ConnectApi.FulfillmentGroupInputRepresentation();
  fulfillmentGroup.fulfilledFromLocationId = warehouseFromLocationId;
  fulfillmentGroup.fulfillmentType = fulfillmentType;

  List<ConnectApi.OrderItemSummaryInputRepresentation> orderItemSummaries = new List<ConnectApi.OrderItemSummaryInputRepresentation>();

  List<OrderItemSummary> orderItemSummaryList = \[Select Id, quantity FROM OrderItemSummary WHERE OrderSummaryId =: orderSummaryId AND OrderDeliveryGroupSummaryId =: orderDeliveryGroupSummary.Id\];
  for(OrderItemSummary orderItemSummary : orderItemSummaryList){
    ConnectApi.OrderItemSummaryInputRepresentation oisInputRepresentation = new ConnectApi.OrderItemSummaryInputRepresentation();
    oisInputRepresentation.orderItemSummaryId = orderItemSummary.Id;
    oisInputRepresentation.quantity = orderItemSummary.quantity;
    orderItemSummaries.add(oisInputRepresentation);
  }

  fulfillmentGroup.orderItemSummaries = orderItemSummaries;
  fulfillmentGroups.add(fulfillmentGroup);      
  fulfillmentOrderInput.fulfillmentGroups = fulfillmentGroups;

}

ConnectApi.FulfillmentOrderOutputRepresentation result = ConnectAPI.FulfillmentOrder.createFulfillmentOrders(fulfillmentOrderInput);

### createInvoice(fulfillmentOrderId, invoiceInput)

Create an invoice for a FulfillmentOrder that doesn’t have one.

#### API Version

48.0

#### Requires Chatter

No

#### Signature

public static ConnectApi.FulfillmentOrderInvoiceOutputRepresentation createInvoice(String fulfillmentOrderId, ConnectApi.FulfillmentOrderInvoiceInputRepresentation invoiceInput)

#### Parameters

fulfillmentOrderId

Type: String

ID of the FulfillmentOrder.

invoiceInput

Type: [ConnectApi.FulfillmentOrderInvoiceInputRepresentation](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_connectapi_input_fulfillment_order_invoice.htm "Instantiate and include this object with no properties when creating an invoice.")

Required input with no data.

#### Return Value

Type: [ConnectApi.FulfillmentOrderInvoiceOutputRepresentation](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_connectapi_output_fulfillment_order_invoice_output.htm "ID of the created invoice.")

#### Example

String fulfillmentOrderId = '0a3xx0000000085AAA';

ConnectApi.FulfillmentOrderInvoiceInputRepresentation input = new ConnectApi.FulfillmentOrderInvoiceInputRepresentation();
ConnectAPI.FulfillmentOrderInvoiceOutputRepresentation result = ConnectApi.FulfillmentOrder.createInvoice(fulfillmentOrderId, input);

### createMultipleFulfillmentOrder(multipleFulfillmentOrderInput)

Create FulfillmentOrders for multiple OrderDeliveryGroups in a single request.

#### API Version

50.0

#### Requires Chatter

No

#### Signature

public static ConnectApi.MultipleFulfillmentOrderOutputRepresentation createMultipleFulfillmentOrder(ConnectApi.MultipleFulfillmentOrderInputRepresentation multipleFulfillmentOrderInput)

#### Parameters

multipleFulfillmentOrderInput

Type: [ConnectApi.MultipleFulfillmentOrderInputRepresentation](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_connectapi_input_multiple_fulfillment_order.htm "List of inputs for creating fulfillment orders.")

Wraps a list of inputs for creating fulfillment orders.

#### Return Value

Type: [ConnectApi.MultipleFulfillmentOrderOutputRepresentation](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_connectapi_output_multiple_fulfillment_order_output.htm "A list of responses for the individual FulfillmentOrder creation attempts from a request to create multiple fulfillment orders.")

### createMultipleInvoices(invoicesInput)

Create Invoices for multiple FulfillmentOrders.

#### API Version

52.0

#### Requires Chatter

No

#### Signature

public static ConnectApi.MultipleFulfillmentOrderInvoicesOutputRepresentation createMultipleInvoices(ConnectApi.MultipleFulfillmentOrderInvoicesInputRepresentation invoicesInput)

#### Parameters

invoicesInput

Type: [ConnectApi.MultipleFulfillmentOrderInvoicesInputRepresentation](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_connectapi_input_multiple_fulfillment_order_invoices.htm "The FulfillmentOrders to create Invoices for.")

The FulfillmentOrders to create Invoices for.

#### Return Value

Type: [ConnectApi.MultipleFulfillmentOrderInvoicesOutputRepresentation](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_connectapi_output_multiple_fulfillment_order_invoices_output.htm "IDs of the created Invoices.")