---
schema_version: "1"
id: 6a0b6773d22967ea53f0e15d2d8e5350922650074d80491175da7a10654bcd8f
title: Fulfillment Order API
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/commerce-cloud/retail-cloud/reference/generated-api-specs/fulfillment-order-api.md
canonical_url: https://developer.salesforce.com/docs/commerce/retail-cloud/references/fulfillment-order-api
source_site: developer.salesforce.com
content_type: documentation
content_hash: 8cc88c52038372ffcdaac719bc0fee89bfd6237f6bae02ad7f9ca776e19837fe
products:
  - Point of Sale for Developers
  - Salesforce APIs
---
Fulfillment Order API

# Fulfillment Order API

**Partial reference:** 2 operation(s) were omitted because their source references could not be resolved.

[Download specification](https://developer.salesforce.com/static/commercecloud/retail-cloud/fulfillment-order-api/fulfillment-order-api-oas-public.yaml)

APIs for in-store fulfillment of orders (BOPIS, BOFIS, ROPIS) imported into the POS from other channels.

**Version:** 2.3.4

## Tags

### Fulfillment Order API

[Download specification](https://developer.salesforce.com/static/commercecloud/retail-cloud/fulfillment-order-api/fulfillment-order-api-oas-public.yaml)

APIs for in-store fulfillment of orders (BOPIS, BOFIS, ROPIS) imported into the POS from other channels.

## Operations

### POST Create BOFIS order.

`POST /merchant/v1/sa/fulfillment/orders/bofis`

Operation ID: `createBofisOrder`. Tags: Fulfillment Order API.

Create a BOFIS order in the POS system and allocate inventory for store fulfillment.

#### Request body

Media type: `application/json`. Schema: `FulfillmentOrder`.

#### Responses

*   **default** Default response.
    
    Media type: `application/json`. Schema: `SpiPSResponse`.
    

### POST Create BOPIS order.

`POST /merchant/v1/sa/fulfillment/orders/bopis`

Operation ID: `createBopisOrder`. Tags: Fulfillment Order API.

Create a BOPIS order in the POS system and allocate inventory for store fulfillment.

#### Request body

Media type: `application/json`. Schema: `FulfillmentOrder`.

#### Responses

*   **default** Default response.
    
    Media type: `application/json`. Schema: `SpiPSResponse`.
    

### POST Cancel BOPIS Items.

`POST /merchant/v1/sa/fulfillment/orders/{bopisOrderId}/stores/{storeId}/bopis/cancel`

Operation ID: `cancelBopisItems`. Tags: Fulfillment Order API.

Cancels BOPIS items for a specific order and store.

#### Parameters

*   `bopisOrderId` (path, string, required)
*   `storeId` (path, string, required)

#### Request body

Media type: `application/json`. Schema: `ExternalBopisCancellationRequest`.

#### Responses

*   **default** default response
    
    Media type: `application/json`. Schema: `FulfillmentEvent`.
    

### POST Create ROPIS order.

`POST /merchant/v1/sa/fulfillment/orders/ropis`

Operation ID: `createRopisOrder`. Tags: Fulfillment Order API.

Create a ROPIS order in the POS system and allocate inventory for store fulfillment.

#### Request body

Media type: `application/json`. Schema: `FulfillmentOrder`.

#### Responses

*   **default** Default response.
    
    Media type: `application/json`. Schema: `SpiPSResponse`.
    

## Schemas

### FulfillmentOrder

*   `orderId` (_string_, required) Order ID. In the case of ROPIS, the orderID serves as the uspendedCartId as POS generates a brand new orderId for the ROPIS order during checkout.
*   `orderType` (_string_, required) Order Type. BOPIS = STORE\_PICKUP, BOFIS = STORE\_FULFILLMENT,ROPIS = ONLINE\_RESERVE.  
    Allowed values: `STORE_PICKUP`, `STORE_FULFILLMENT`, `LAYAWAY`, `MIXED_MODE`, `ONLINE`, `ONLINE_RESERVE`.
*   `orderSource` (_string_, required) OrderSource must be WEB for BOPIS, BOFIS and ROPIS orders.  
    Allowed values: `DEFAULT`, `IN_STORE`, `POPUP_STORE`, `WEB`, `APP`, `OUTLET_STORE`, `ONLINE`, `POS_EA`.
*   `storeId` (_string_, required) StoreId which is going to fulfill the order.
*   `status` (_string_, required) Store fulfillment status. Possible values include: 1. PACK: BOPIS, BOFIS OR ROPIS item is packed by store associate. 2. DELIVERED: BOPIS item is picked up by the customer or pickup person. 3. CANCELED: BOPIS or BOFIS item is canceled by store associate. 4. SHIPPED: BOFIS item is shipped by store associate. 5. READY: When importing a fulfillment order into POS, it must have a 'READY' status.  
    Allowed values: `PACK`, `DELIVERED`, `CANCELED`, `SHIPPED`, `READY`.
*   `orderDate` (_integer (int64)_, required) Date when order was placed. Represented as number of milliseconds since epoch.
*   `totalAmount` (_number_, required) Order total.
*   `taxSubTotal` (_number_, nullable) Total tax amount for this order. Excludes any product price or shipping cost. Includes only the sum of taxes. Mandatory: If taxes are applicable, refer to valueAddedTax for VAT.
*   `valueAddedTax` (_number_, nullable) Value added tax amount for this order. Mandatory: If VAT is applicable, refer to taxSubTotal for taxes.
*   `taxableAmount` (_number_, nullable) Taxable amount.
*   `orderSubTotal` (_number_, required) Order total excluding discounts, shipping costs and taxes but inclusive of VAT.
*   `installationId` (_string_)
*   `shipmentList` (_array of ShipmentDetail_) List of shipments. Each shipment has shipping details for a BOFIS order. The shipping details consist of shipping address, shipping method, expected delivery date, and products corresponding to the shipment. **Note:** This field should be provided if the CMS property `Allow multiple shipments per cart/order` is enabled. This CMS setting can be found at: - **CMS** > **Store Management** > **Store Setting** > **Store fulfillment** > **Omni settings If this** flag is disabled, the shipping details should instead be provided in the following attributes: - `shippingMethodId` - `shippingCarrier` - `shippingCost` - `shippingAddress` - `deliveryDate` - `deliveryTimeSlot`.
*   `tenders` (_array of OrderPaymentDetail_, nullable) Representation of list of payments for this order. Required for BOPIS and BOFIS. Not applicable for ROPIS.
*   `customerProfile` (_CustomerProfile_)
*   `pickUpDetail` (_PickupDetail_)
*   `shippingAddress` (_Address_)
*   `shippingMethodId` (_string_, nullable) Shipping method ID. Refer to shipmentList for more details on when to provide shippingMethodId.
*   `shippingCarrier` (_string_) Shipping carrier code. Refer to shipmentList for more details on when to provide shippingCarrier.  
    Example: `UPS`.
*   `shippingCost` (_number_) Shipping cost. Refer to shipmentList for more details on when to provide shippingCost.
*   `deliveryDate` (_integer (int64)_) Delivery date in epoch.
*   `deliveryTimeSlot` (_string_) Expected delivery time slot. Refer to shipmentList for more details on when to provide deliveryTimeSlot.
*   `expectedShippingDate` (_integer (int64)_) Expected shipping date in epoch. Used for SLA calculation in BOFIS orders.
*   `lastPickupDate` (_string_) Last pickup date in ISO\_LOCAL\_DATE format (yyyy-MM-dd). Specifies the deadline for BOPIS order pickup, used for display purposes and automated cancellation logic.  
    Example: `2026-08-20`.
*   `productList` (_array of FulfillmentProduct_, required) List of products in the order.

### SpiPSResponse

*   `errorMessage` (_string_, nullable) Error message shown to the user.  
    Example: `Invalid request. Please check the request and try again.`.
*   `errorCode` (_string_, nullable) Error code shown to the user.  
    Example: `INTERNAL_ERROR`.
*   `error` (_boolean_)

### ExternalBopisCancellationRequest

Request to cancel BOPIS items.

*   `productList` (_array of CancelItem_, required) List of products to cancel.
*   `orderId` (_string_, required) Order ID.
*   `storeId` (_string_, required) Store ID.

### FulfillmentEvent

*   `orderId` (_string_, required) Order Id.
*   `orderType` (_string_, required) Order type. It can be either: 1. Store Fulfillment: order is fulfilled by a store. 2. Store Pickup: order is available for pickup at a store.  
    Allowed values: `STORE_PICKUP`, `STORE_FULFILLMENT`, `LAYAWAY`, `MIXED_MODE`, `ONLINE`, `ONLINE_RESERVE`.
*   `productList` (_array of FulfillmentProduct_, required) Item list.
*   `status` (_string_, required) Store Fulfillment Status. 1. PACK: BOPIS, BOFIS, or ROPIS item is packed by store associate. 2. DELIVERED: BOPIS item is picked up by the customer or pickup person. 3. CANCELED: BOPIS or BOFIS item is canceled by store associate. 4. SHIPPED: BOFIS item is shipped by store associate. 5. READY: When importing a fulfillment order into POS, it must have a 'READY' status.  
    Allowed values: `PACK`, `DELIVERED`, `CANCELED`, `SHIPPED`, `READY`.
*   `storeId` (_string_, required) Store ID from where the item(s) are picked or fulfilled.
*   `deliveryGroupList` (_array of ShipmentDetail_, nullable) The shipping details of the items for store fulfillment order. Each delivery group has shipping address and corresponding shipping method. Each delivery item from productList is associated with its delivery group using productList\[\].deliveryGroupId. Note: It is available only if the CMS Property - 'Allow multiple shipments per cart/order' is enabled. This is a CMS setting and can be found in **CMS** > **Store Management** > **Store Setting** > **Store** fulfillment > Omni settings. If the property is disabled, refer to shipment.
*   `shipment` (_ShipmentDetail_)
*   `pickupDetail` (_PickupDetail_)
*   `note` (_string_) Note provided by associate during pack, pick, or shipment.

### ShipmentDetail

Shipping details applicable for store fulfillment order. If CMS flag 'Allow multiple shipments per cart/order' is enabled, the shipment will be populated. Refer to deliveryGroupList for more details on this CMS flag.

*   `shipmentId` (_string_, required) Shipment ID. Unique number.
*   `trackingNumber` (_string_, required) Shipment tracking number entered by store associate during fulfillment from the store.
*   `shippingMethodId` (_string_, required) Shipping method ID used during placing order. Mandatory.
*   `shippingName` (_string_) Shipping name. Optional.  
    Example: `Express shipping`.
*   `shippingDescription` (_string_) Shipping description. Optional.  
    Example: `Express shipping arrives in 2-3 business days`.
*   `shippingCarrier` (_string_, required) Shipping carrier code. Mandatory.  
    Example: `UPS`.
*   `shippingServiceLevel` (_string_) Shipping service level. Optional.  
    Example: `3 Business Days`.
*   `price` (_number_, required) Shipping Cost. Mandatory.
*   `deliveryDate` (_integer (int64)_) Delivery date in epoch.
*   `deliveryTimeSlot` (_string_, required) Expected delivery time slot.
*   `items` (_array of DeliveryItem_) List of items in this shipment. This can be a subset of the product list provided at the order level.
*   `shippingAddress` (_Address_, required)
*   `expectedShippingDate` (_integer (int64)_) Expected shipping date in epoch. Used for SLA calculation in BOFIS orders.

### OrderPaymentDetail

Deprecated. Use 'tenders' instead.

*   `transactionId` (_string_, required) The unique identifier for a transaction that completes the order. - This is particularly helpful in cases where a payment is made in multiple transactions, such as in the case of a deposit. - In POS, the transaction ID corresponds to the sale transaction when you place an order. - However, if you import an order from an external system, the transaction ID should correspond to the order in the external system and can be the same as the Order ID.  
    Maximum length: 128.
*   `paymentId` (_string_, required) The unique identifier for a payment/tender. As the order can have multiple payments, each payment will have a unique payment ID.  
    Maximum length: 128.
*   `paymentMethod` (_string_, required) Payment method. Required for BOPIS and BOFIS. Not applicable for ROPIS.  
    Allowed values: `Cash`, `CreditCard`, `GiftCard`, `PLCC`, `Check`, `ACH`, `Miscellaneous`, `ApplePay`, `AndroidPay`, `Finance`, `RewardCard`, `PayPal`, `StoreCredit`, `CreditCard_Visa`, `CreditCard_MasterCard`, `CreditCard_Amex`, `CreditCard_Discover`, `eGiftCard`, `WeChatPay`, `AliPay`, `PayByLink`, `RemotePayByLink`, `Installments`, `Reward`, `GooglePay`, `Affirm`, `Afterpay`.
*   `paymentStatus` (_string_, required) Payment status. Possible values are: - `UNPROCESSED` is used internally by cloud services as a transient state. - `DISCARDED` is used when cash tender is part of a multi-tender payment and is deleted by swiping right. - `ABORTED` is used when we internally remove a tender from the tender list and add a new tender (e.g., for gift cards).  
    Allowed values: `UNPROCESSED`, `APPROVED`, `PENDING`, `DECLINED`, `CANCELED`, `REVERTED`, `REVERSAL_FAILURE`, `UNKNOWN`, `NOT_FOUND`, `NOT_APPLICABLE`, `ABORTED`, `DISCARDED`, `FAILED`, `UNVERIFIED`, `EXPIRED`, `SAF_DECLINED`, `SAF_UNKNOWN`.
*   `paymentDevice` (_string_, required) Payment device. If the payment is made in an external system, set the payment device to External.  
    Allowed values: `Adyen`, `PayPal`, `VerifonePSDK`, `Square`, `CheckReader`, `NoReader`, `External`, `StoredCard`, `Stripe`, `Elavon`, `Aurus`.
*   `cardNumber` (_string_, nullable) Card number. For CreditCard or GiftCard, the card number is mandatory, including the last 4 digits.  
    Maximum length: 128.
*   `cardBin` (_string_, nullable) Card BIN (Bank Identification Number) - first 6 or 8 digits of the card number.
*   `cardType` (_string_, nullable) Card type, for example, Visa, Mastercard, Amex, or Discover. Required for CreditCard.  
    Maximum length: 128.
*   `amountAuthorized` (_number_, required) Amount paid using this tender.
*   `authorizationToken` (_string_, nullable) Payment authorization token. Mandatory for credit cards and gift cards through Adyen.  
    Maximum length: 128.
*   `authorizationDate` (_string (date-time)_, nullable) Payment authorization timestamp.
*   `captureToken` (_string_, nullable) Payment capture token. Mandatory if the credit card capture is enabled.  
    Maximum length: 128.
*   `captureDate` (_string (date-time)_, nullable) Payment capture timestamp.
*   `firstName` (_string_, nullable) First name to use for billing using this tender. Applicable for credit cards.  
    Maximum length: 64.
*   `lastName` (_string_) Last name to use for billing using this tender. Applicable for credit cards.  
    Maximum length: 64.
*   `addressLine1` (_string_) Address line 1 to use for billing using this tender. Applicable for credit cards.  
    Maximum length: 256.
*   `addressLine2` (_string_) Address line 2 to use for billing using this tender. Applicable for credit cards.  
    Maximum length: 256.
*   `city` (_string_) City to use for billing using this tender. Applicable for credit cards.  
    Maximum length: 64.
*   `state` (_string_) State to use for billing using this tender. Applicable for credit cards.  
    Maximum length: 32.
*   `postalCode` (_string_) Postal code to use for billing using this tender. Applicable for credit cards.  
    Maximum length: 16.
*   `country` (_string_) Country code to use for billing using this tender. Applicable for credit cards. for credit cards.  
    Maximum length: 32.
*   `requestId` (_string_, nullable) Payment request identification issued by the payment gateway/terminal. Typically used for referenced refunds that are performed automatically by the POS without the customer presenting the card during a refund. In the case of Adyen payments, this field maps to `pspReference`. Required for credit cards.  
    Maximum length: 256.
*   `alternateRequestId` (_string_, nullable) When a payment terminal is in store and forward mode, it generates a temporary payment ID, which is provided in the alternate payment request ID attribute. For example, the Adyen terminal generates a temporary ID called a "tender reference" whenever it goes into store and forward mode. This tender reference is then populated in the alternate payment request ID attribute.  
    Maximum length: 50.
*   `refundRequestId` (_string_, nullable) Refund payment request ID issued by the payment gateway/terminal. Required for refund on credit cards.  
    Maximum length: 50.
*   `refundDate` (_string (date-time)_, nullable) Refund Date.
*   `copiedFromOrderId` (_string_, nullable) When an item is exchanged, a new order is created for the replacement item, and the original order is updated to a returned or exchanged status. Additionally, the tender value of the replacement item's cost is carried forward to the new order. This attribute provides the original order ID if the tender is carried over to the new order during the exchange.  
    Maximum length: 128.
*   `totalRefundedAmount` (_number_, nullable) The amount refunded for this tender. Not applicable, if no refund issued yet.
*   `totalAmountCarriedOverForExchange` (_number_, nullable) When an item is exchanged, a new order is created for the replacement item. The original order is updated to a returned or exchanged status. Additionally, the tender value of the replacement item's cost is carried over to the new order. This carried over amount is provided in this attribute. It is mandatory if the order is exchanged and the tender is carried over to the new order.
*   `receiptLines` (_array of PaymentReceiptLine_) Receipt lines. For information to be shown on receipt. Required for credit card payments using Adyen.
*   `paymentSequenceNumber` (_integer (int64)_, required) Payment sequence indicating the order of payment. For example, if a customer pays with cash first and the remaining amount with a credit card, the cash tender should have a paymentSequenceNumber of 1, and the credit card tender should have a paymentSequenceNumber of 2.
*   `paymentDeviceId` (_string_, nullable) Unique identifier like serial number for payment reader. Used in case of client/app side card encryption by readers like Verifone.  
    Maximum length: 32.
*   `routingNumber` (_string_, nullable) Bank routing number. Applicable when payment method is 'Check'.  
    Maximum length: 32.
*   `accountNumber` (_string_, nullable) Account number. Used for payment through banking system like 'Check' and 'Finance'.  
    Maximum length: 32.
*   `checkNumber` (_string_, nullable) Check number. Used for payment through checks.  
    Maximum length: 50.
*   `personalIdType` (_string_, nullable) Personal identification type. Applicable for Check and Finance.  
    Allowed values: `DriversLicense`, `StateID`, `MilitaryID`, `Passport`, `StudentID`, `PermanentResidentID`, `TribalID`, `BusinessPhone`.
*   `personalIdIssuedBy` (_string_, nullable) Issues of the personal identification. Applicable for Check and Finance.  
    Maximum length: 32.
*   `personalIdNumber` (_string_, nullable) Personal identification number. Applicable for Check and Finance.  
    Maximum length: 32.
*   `personalIdExpiryDate` (_string (date-time)_, nullable) Personal identification expiry date. Applicable for Check and Finance.
*   `cardToken` (_string_) This field contains the tokenized value for payments made via Credit Card, Pay By Link, or Remote Pay By Link. Tokenization is only supported for Adyen and must be configured in the CMS (**CMS** > **Integration** > **Payment** Gateways > Adyen > Payment Tokenization Events).
*   `cardExpirationMonth` (_integer (int32)_, nullable) Card expiry month. Applicable for credit card.
*   `cardExpirationYear` (_integer (int32)_, nullable) Card expiry year. Applicable for credit card.
*   `checkType` (_string_, nullable) Type of the check - Personal or Business.  
    Allowed values: `Personal`, `Business`.
*   `manualAuthorizationCode` (_string_, nullable) Manual authorization code for a tender. Normally, it is received after calling a call center agent of a payment processor. For example: call for authorization code after check denial or referral, or manual authorization code for a credit card when offline.  
    Maximum length: 50.
*   `cashDrawerUrl` (_string_, nullable) Represents custom URL using which cash drawer in the network can be accessed. Required for cash payment with cash drawer having URL\_VIA\_QR\_CODE mode.  
    Maximum length: 256.
*   `roundingAmount` (_number_, nullable) Rounding amount for the payment. Applicable for cash tender in regions where rounding is applicable.
*   `refundFeeAmount` (_number_, nullable) Refund fee like restocking fee. Applicable when order is returned and refund fee is configured.
*   `authStatus` (_string_, nullable) Auth status of credit card payment.  
    Allowed values: `PRE_AUTH`, `AUTH`, `SALE`, `VOID`, `VOID_FAILED`.
*   `tip` (_number_, nullable) Tip amount. Applicable when tipping is enabled.
*   `captureStatus` (_string_, nullable) Capture status of authorized amount.  
    Allowed values: `CAPTURED`, `CAPTURE_FAILED`, `NON_CAPTURED`, `PARTIALLY_CAPTURED`, `VOID`, `VOID_FAILED`.
*   `financeOrderNo` (_string_, nullable) Refers to finance approval/order/confirmation number in external system.  
    Maximum length: 32.
*   `financeInstruction` (_string_, nullable) Refers to finance processing related result or instruction long text from external system.  
    Maximum length: 4096.
*   `primaryAccountHolder` (_string_, nullable) Primary owner on the account, used for Finance tender.  
    Maximum length: 128.
*   `fundingSource` (_string_, nullable) Funding source, for example, PREPAID, DEBIT, or CREDIT. Applicable for credit cards.  
    Allowed values: `CHARGED`, `CREDIT`, `DEBIT`, `PREPAID`, `DEFFERED_DEBIT`, `PREPAID_RELOADABLE`, `PREPAID_NONRELOADABLE`, `STORE_VALUE`, `EBT`, `ALTERNATE_TYPE`, `CHECK`, `MOBILE`, `CASH`.
*   `captureAmount` (_number_, nullable) Amount captured for credit card. Applicable, if capture flow is enabled.
*   `termsAndConditions` (_string_, nullable) Terms and conditions. Used for finance tender.  
    Maximum length: 4096.
*   `tenderBalance` (_number_, nullable) Balance amount remaining in the gift card tender.
*   `tenderedAmount` (_number_, nullable) The cash amount tendered for this transaction.
*   `changeBackAmount` (_number_, nullable) The remaining change amount in case of cash tender.
*   `cardAlias` (_string_, nullable) Card alias provided in the payment response. A non-PII field for merchants to associate a card or card holder with historical transactions.
*   `paymentEntryMode` (_string_, nullable) Indicates how the payment was captured, as provided by the app (for example, VERIFIED\_CARD\_ON\_FILE). The verification is performed on the app side. Used for reporting and audit purposes.
*   `paymentMethodString` (_string_)
*   `authorizationDateMillis` (_integer (int64)_, write-only)
*   `captureDateMillis` (_integer (int64)_, write-only)
*   `effecitivePaidAmount` (_number_)

### CustomerProfile

Profile for the customer.

*   `customerId` (_string_, required) Customer ID.
*   `email` (_string_, required) Customer Email ID.
*   `firstName` (_string_, required) Customer first name.
*   `lastName` (_string_, required) Customer last name.
*   `phoneMobile` (_string_, nullable) Customer's Phone#.

### PickupDetail

Pickup information for store pickup order.

*   `storeId` (_string_) Store Id.
*   `firstName` (_string_) First name of pickup person.
*   `lastName` (_string_) Last name of pickup person.
*   `email` (_string_, nullable) Email of pickup person.
*   `phone` (_string_, nullable) Phone of pickup person.
*   `pickupDate` (_integer (int64)_, nullable) Customer pickup date & time. Milliseconds since epoch.

### Address

Address **Billing Address:** It contains first and last name of billing person. It is applicable if order is associated with signed-in customer or if an order requires billing address. Note: If item level shipping method or item level shipping address is enabled, use the shippingAddress from deliveryGroups. For more details, see:.

*   `salutation` (_string_, nullable) Salutation.
*   `firstName` (_string_) Customer first name saved for address.  
    Maximum length: 64.
*   `secondName` (_string_, nullable) Customer second name saved for address.  
    Maximum length: 64.
*   `lastName` (_string_, nullable) Customer last name saved for address.  
    Maximum length: 64.
*   `suffix` (_string_, nullable) Suffix.
*   `addressLine1` (_string_, required) Address Line 1.  
    Maximum length: 256.
*   `addressLine2` (_string_, nullable) Address Line 2.  
    Maximum length: 256.
*   `city` (_string_, required) City.  
    Maximum length: 64.
*   `state` (_string_, required) State.  
    Maximum length: 32.
*   `postalCode` (_string_, required) Postal Code.  
    Maximum length: 16.
*   `countryCode` (_string_, nullable) Country Code.  
    Maximum length: 32.
*   `phone` (_string_, nullable) Phone.  
    Maximum length: 24.
*   `storeId` (_string_, nullable) Store ID if it is store address.
*   `emailAddress` (_string_, nullable) Customer Email Address.
*   `country` (_string_, nullable) Country.
*   `defaultBilling` (_boolean_)
*   `defaultShipping` (_boolean_)

### FulfillmentProduct

Item list.

*   `productId` (_string_, required) Product Id.  
    Example: `N0345123`.
*   `orderItemId` (_string (The value should be numeric in string format)_, required) Item sequence/system generated item ID assigned to this line item. Must be unique within this order.  
    Example: `It can have values like 1, 2, 3, etc... which represents line item number within the order.`.
*   `itemStatus` (_string_, required) Store fulfillment status. Possible values are: 1. **PACK**: The BOPIS, BOFIS, or ROPIS item is packed by a store associate. 2. **DELIVERED**: The BOPIS item is picked up by the customer or a designated pickup person. 3. **CANCELED**: The BOPIS or BOFIS item is canceled by a store associate. 4. **SHIPPED**: The BOFIS item is shipped by a store associate. 5. **READY**: When importing a fulfillment order into POS, it must have a **READY** status.  
    Allowed values: `PACK`, `DELIVERED`, `CANCELED`, `SHIPPED`, `READY`. Example: `PACK`.
*   `name` (_string_, required) Item name.  
    Example: `White Shirt`.
*   `quantity` (_integer (int32)_, required) Item quantity. This represents the original quantity. If the store setting `treatEachItemInCartAsSeparateLineItem` is enabled in CMS, then the quantity should be 1 per line item. This setting can be found in: **CMS** > **Store Management** > **Store Settings** > **OMS** > **Advanced**.  
    Example: `1`.
*   `price` (_number_, required) Item price.  
    Example: `12.05`.
*   `total` (_number_, required) Item total after discount and taxes.  
    Example: `14`.
*   `adjustedQuantity` (_integer (int32)_, required, read-only) Packed quantity for a PACK event, picked-up quantity for a DELIVERED event, and shipped quantity for a SHIPPED event.

### CancelItem

Item to be canceled in an order.

*   `productId` (_string_, required) Product ID.  
    Example: `PROD-123`.
*   `orderItemId` (_string_, required) Order Item ID.  
    Example: `1`.
*   `quantity` (_integer (int32)_, required) Quantity to cancel.  
    Example: `2`.
*   `reasons` (_array of Reason_) List of reasons for cancellation.

### DeliveryItem

List of items in this shipment. This can be a subset of the product list provided at the order level.

*   `productId` (_string_, required) Product ID.
*   `quantity` (_integer (int32)_, required) Number of items.
*   `orderItemId` (_string_) Item sequence/system generated item ID assigned to this line item. Must be unique within this order.  
    Example: `It can have values like 1, 2, 3, etc... which represents line item number within the order.`.

### PaymentReceiptLine

Receipt lines. For information to be shown on receipt. Mandatory for CreditCard payment using Adyen.

*   `key` (_string_, required) Key of the line item.  
    Example: `Total`.
*   `value` (_string_, required) Value of the line item.  
    Example: `34.5699`.
*   `display` (_string_, required) Display value of the line item.  
    Example: `34.57`.

### Reason

Reason for returning the item.

*   `reasonCodeType` (_string_, required) Type for reason codes. It can be one of TRANSACTION\_DISCOUNT, PRICE\_OVERRIDE, RETURNS, BANK\_DEPOSIT, TILL\_RECONCILIATION, TILL\_CASH\_OUT.  
    Allowed values: `TRANSACTION_DISCOUNT`, `PRICE_OVERRIDE`, `RETURNS`, `BANK_DEPOSIT_VARIANCE`, `TILL_RECONCILIATION_VARIANCE`, `TILL_CASH_OUT`, `PRICE_CORRECTION`, `RETURN_PRICE_CORRECTION`, `EXCLUDE_ITEM_FROM_CYCLE_COUNT`, `INVENTORY_ADJUSTMENT`, `SAFE_FLOAT_UPDATE`, `TILL_FLOAT_UPDATE`, `TILL_CASH_IN`, `TILL_NO_SALE`, `VOID_CART`, `EXPENSE_UPDATE`, `MISC_EXPENSE1_UPDATE`, `MISC_EXPENSE2_UPDATE`, `INVENTORY_ITEM_RECEIVE_MISMATCH`, `OFFLINE_GHOST_TILL`, `DELETE_ITEM`, `CORP_CANCELLATION`, `FULFILLMENT_CANCELLATIONS`. Maximum length: 64.
*   `reasonCode` (_string_, required) Reason code.  
    Maximum length: 64.
*   `reasonText` (_string_, nullable) Reason text.  
    Maximum length: 256.