---
schema_version: "1"
id: 8df4d24a18076b3cbe045d2025767b047addb0fa36594b67dfc874d59e261315
title: Transaction SPI
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/transaction-spi.md
canonical_url: https://developer.salesforce.com/docs/commerce/retail-cloud/references/transaction-spi
source_site: developer.salesforce.com
content_type: documentation
content_hash: 41b93d4cb0507a450c46c7b47390f9d0e7a6b0c708dbcf69174b20912fc8c3af
products:
  - Point of Sale for Developers
  - Salesforce APIs
---
Transaction SPI

# Transaction SPI

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

Sample SPIs that demonstrate how to implement SPI endpoints in the merchant's system. These endpoints are based on lean payload and must be configured in the POS system. These endpoints are the best alternative to the 'Order SPI' as they are based on lean payload.

**Prerequisite:** Make sure that CMS is configured to support the lean input model by setting the property `enableTransactionExport` to `true` in the CMS configuration.

**CMS Configuration:** **CMS** > **Store Management** > **Store Settings** > **Advanced** > **Enable Transaction Export**

**Version:** 2.3.4

## Tags

### Transaction SPI

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

Sample SPIs that demonstrate how to implement SPI endpoints in the merchant's system. These endpoints are based on lean payload and must be configured in the POS system. These endpoints are the best alternative to the 'Order SPI' as they are based on lean payload.

**Prerequisite:** Make sure that CMS is configured to support the lean input model by setting the property `enableTransactionExport` to `true` in the CMS configuration.

**CMS Configuration:** **CMS** > **Store Management** > **Store Settings** > **Advanced** > **Enable Transaction Export**

## Operations

### POST Export transaction.

`POST /merchant/spi/sample/endpoint/sa/orders/transaction/to/export/sale/order/to/external/system`

Operation ID: `exportTransaction`. Tags: Transaction SPI.

Export the POS sale transaction to an external endpoint. This specification provides details for the external endpoint to consume the POS sale transaction. **Prerequisite:** Make sure to configure CMS setting mentioned below: **CMS** > **Store Management** > **Integration** > **Custom API Connectors** > **Create**. Make sure to create the endpoint in CMS with the following details:

1.  Under **API Config**:
    *   **API Key:** `TRANSACTION`
    *   **API Endpoint:** Provide the external endpoint to get the order, for example: [https://sample/external/to/export/sale/order/to/external/system](https://sample/external/to/export/sale/order/to/external/system)
2.  Under **JSON Config**:
    *   **Integration Type:** `HTTP_POST`
    *   **JSON Headers:** Provide the header for the API. Headers can be Content-Type, Authorization attributes like clientId/password, for example: {"Content-Type":"application/json","client\_id":"myClientId","client\_secret":"myClientSecret"}
    *   The endpoint with OAuth authorization is supported. For more details, refer to documentation. **Use Case:** The endpoint is used to post the recent transaction to external system or OMS.

#### Request body

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

#### Responses

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

### GET Retrieve BORIS transaction.

`GET /merchant/spi/sample/endpoint/sa/orders/transaction/to/get/boris/order/from/external/system/{orderId}`

Operation ID: `getBorisOrder_1`. Tags: Transaction SPI.

Retrieve a specifically BORIS order from merchant's system in the form of lean payload. Make sure orderId is provided as a path parameter. Merchants must implement this endpoint per this specification and then configure it in CMS under **CMS** > **Store Management** > **Integration** > **Custom API Connectors** > **Create**. Make sure to create the endpoint in CMS with the following details:

1.  Under **API Config**:
    *   **API Key:** `BORIS_GET_TRANSACTION_DETAIL`
    *   **API Endpoint:** Provide the external endpoint to get the order, for example: [https://sample/external/endpoint/to/get/order/from/external/system/456709](https://sample/external/endpoint/to/get/order/from/external/system/456709)
2.  Under **JSON Config**:
    *   **Integration Type:** `HTTP_GET`
    *   **JSON Headers:** Provide the header for the API. Headers can be Content-Type, Authorization attributes like clientId/password, for example: {"Content-Type":"application/json","client\_id":"myClientId","client\_secret":"myClientSecret"} **Use Case:** To fetch the order from an external system during BORIS flow for merchants that use POS.

****Note:**** For a BORIS order, if the customer initiates the return with an external or alternate receipt ID, this SPI is expected to return the POS Order ID in the field 'borisOrderId'. Either a full Order object is expected or just 'borisOrderId' in the response.

#### Parameters

*   `orderId` (path, string, required)

#### Responses

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

### GET Retrieve transaction.

`GET /merchant/spi/sample/endpoint/sa/orders/transaction/{orderId}`

Operation ID: `getOrder_2`. Tags: Transaction SPI.

Retrieve order from merchant's system using lean payload. Merchants must implement this endpoint per this specification and then configure it in CMS under **CMS** > **Store Management** > **Integration** > **Custom API Connectors** > **Create**. Make sure to create the endpoint in CMS with the following details:

1.  Under **API Config**:
    *   **API Key:** `GET_TRANSACTION_DETAIL`
    *   **API Endpoint:** Provide the external endpoint to get the order, for example: [https://sample/external/endpoint/to/get/order/from/external/system/456709](https://sample/external/endpoint/to/get/order/from/external/system/456709)
2.  Under **JSON Config**:
    *   **Integration Type:** `HTTP_GET`
    *   **JSON Headers:** Provide the header for the API. Headers can be Content-Type, Authorization attributes like clientId/password, for example: {"Content-Type":"application/json","client\_id":"myClientId","client\_secret":"myClientSecret"} **Use Case:** To fetch the order from merchant's system during return flow if merchant's system is master of record.

#### Parameters

*   `orderId` (path, string, required)

#### Responses

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

## Schemas

### ExternalTransaction

*   `transactionId` (_string_, required) Transaction Id.
*   `transactionType` (_string_, required) Transaction type.  
    Allowed values: `SALE`, `RETURN`, `EXCHANGE`, `EDIT`, `EDIT_SALE`, `EDIT_REFUND`.
*   `orderId` (_string_, required) Order ID corresponding to the transaction.
*   `externalOrderId` (_string_, nullable) External reference ID if the transaction is captured externally and has a different identifier than orderId.  
    Maximum length: 128.
*   `storeAttribution` (_ExternalStoreAttribution_, required)
*   `tenderList` (_array of ExternalTender_, required) Payment method used towards the sale transaction.
*   `refundTenderList` (_array of ExternalRefundTender_, nullable) Payment method used towards the return transaction.
*   `productList` (_array of ExternalProduct_, required) Products.
*   `returnProductList` (_array of ExternalReturnProduct_, nullable) Returned products.
*   `profile` (_ExternalCustomerProfile_)
*   `deliveryGroupList` (_array of ExternalDeliveryGroup_) In the event that the transaction comprises any delivery item, a list of delivery groups is required. Each delivery item is associated with a delivery group via a deliveryGroupId link.
*   `pickUpDetailList` (_array of ExternalPickUpDetail_, nullable) Pickup details.
*   `billingAddress` (_ExternalAddress_)
*   `lastDateToReturn` (_integer (int64)_, nullable) The last date by which the item(s) from the transaction can be returned. If not provided, the item can be returned without any time limitation. The date is in milliseconds since epoch.  
    Example: `1653078974310`.
*   `saleSummary` (_ExternalTransactionSummary_, required)
*   `orderSource` (_string_, required) Channel of the transaction.  
    Allowed values: `DEFAULT`, `IN_STORE`, `POPUP_STORE`, `WEB`, `APP`, `OUTLET_STORE`, `ONLINE`, `POS_EA`.
*   `orderType` (_string_, nullable) Order type. It is needed if the order is fulfilled by store. For example, BOPIS, BOFIS.  
    Allowed values: `STORE_PICKUP`, `STORE_FULFILLMENT`, `LAYAWAY`, `MIXED_MODE`, `ONLINE`, `ONLINE_RESERVE`.
*   `status` (_string_, required)
    
    Below is the list of statuses for in-store purchases and BORIS. The statuses are applicable for both the order and its items. The significance of each status is described in detail below.  
    The eligibility of an item for returns is determined by its current status and the status of the order. Moreover, the **returnsEligibility** attribute at the item level (productList) can also be used to regulate the return eligibility of an item.  
    To learn more about returns eligibility, please refer to the table below and productList.returnsEligibility  
      
    
    | Order Status | Display Name in Order History Filter | Significance for Order | Significance for Item | Return Eligibility |
    | --- | --- | --- | --- | --- |
    | COMPLETED | Completed | Successful sale transaction. | Item sold successfully. | Both the order and item are eligible for return. |
    | RETURNED | Returned | Successful return or exchange of all items with refund to customer. | Successful return of an item - whole quantity and is not eligible for return. | Both the order and item are not eligible for return. |
    | PARTIALLY\_REFUNDED | Partially Returned | Successful return or exchange of partial items with refund to customer. | Successful return of an item - partial quantity | Further returns are allowed on order as well as on item. |
    | EXCHANGED | Exchanged | Successful transaction that exchanges all items with no refund to customer | Successful exchanges of an item - whole quantity | Both the order and item are not eligible for return. |
    | PARTIALLY\_EXCHANGED | Partially Exchanged | Successful transaction that exchanges partial items with no refund to customer | Successful exchanges of an item - partial quantity | Further returns are allowed on order as well as on item. |
    | FAILED | Failed | Failed sale transaction. | Not applicable | Both the order and item are not eligible for return. |
    | PENDING | Pending | Sale transaction awaiting payment confirmation. For example, Remote Pay By Link | Not applicable | Both the order and item are not eligible for return. |
    
      
    Allowed values: `COMPLETED`, `FAILED`, `RETURNED`, `PARTIALLY_REFUNDED`, `PENDING`, `CANCELLED_WITH_REFUND`, `EXCHANGED`, `PARTIALLY_EXCHANGED`, `CANCELED`.
*   `noteList` (_array of ExternalNote_, nullable) Notes for the transaction.
*   `originalOrderId` (_string_) An exchange involves both returning items from the original sale and purchasing new items, resulting in a new sale. The original order ID will provide the order ID for the original sale for the exchanges.
*   `orderFulfillmentType` (_string_, nullable) Order Fulfillment Type, It is indicate of fulfillment type of order level Eg. IN\_STORE, ONLINE or MIXED\_CART.  
    Allowed values: `IN_STORE`, `ONLINE`, `MIXED_CART`.
*   `taxExemptionList` (_array of ExternalTaxExemption_, nullable) Applied tax exemptions.
*   `tariff` (_number_, nullable) The tariff amount at the time of sale. This value is retrieved from **CMS** > **Store Settings** > **Tariffs** and is included only when the tariff configuration is available in CMS.
*   `tariffRate` (_number_, nullable) The tariff rate at the time of sale. This value is retrieved from **CMS** > **Store Settings** > **Tariffs and** is included only when the tariff configuration is available in CMS.

### HttpResponse

*   `statusLine` (_StatusLine_)
*   `statusCode` (_integer (int32)_, write-only)
*   `reasonPhrase` (_string_, write-only)
*   `entity` (_HttpEntity_)
*   `locale` (_object_)
    *   `language` (_string_)
    *   `script` (_string_)
    *   `country` (_string_)
    *   `variant` (_string_)
    *   `unicodeLocaleAttributes` (_array of string_)  
        Unique items.
    *   `unicodeLocaleKeys` (_array of string_)  
        Unique items.
    *   `displayLanguage` (_string_)
    *   `displayScript` (_string_)
    *   `displayCountry` (_string_)
    *   `displayVariant` (_string_)
    *   `displayName` (_string_)
    *   `extensionKeys` (_array of string_)  
        Unique items.
    *   `iso3Language` (_string_)
    *   `iso3Country` (_string_)
*   `protocolVersion` (_ProtocolVersion_)
*   `allHeaders` (_array of Header_)
*   `headers` (_array of Header_, write-only)
*   `header` (_Header_)
*   `params` (_HttpParams_)

### ExternalStoreAttribution

Store details.

*   `storeAssociateId` (_string_, required) Store associate ID who is ringing the transaction.
*   `storeId` (_string_, required) Store ID.  
    Maximum length: 128.
*   `storeRegisterId` (_string_, required) Store register ID where the transaction is performed.  
    Maximum length: 128.
*   `eventTimeStamp` (_integer (int64)_, required) Transaction timestamp in epoch millis.
*   `storeAssociateRole` (_string_, required) Store Associate's Role.
*   `secondsFromGMT` (_integer (int64)_, required) Time offset of the register's timezone from UTC in seconds.
*   `tillSessionId` (_string_, required) Till session ID.
*   `tillId` (_string_, required) Till ID.
*   `installationId` (_string_, nullable) Device identifier which was used to place the order. It is mandatory for transactions performed in the store. For external transactions, it will be defaulted to 'EXTERNAL' if it is not provided.  
    Maximum length: 128.
*   `registerMode` (_string_, required) The mode of the register operation.  
    Allowed values: `ONLINE`, `OFFLINE`. Default: `ONLINE`.

### ExternalTender

Payment method used towards the sale transaction.

*   `transactionId` (_string_, required) It is a 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 will  
    correspond 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 OrderID.  
      
    Maximum length: 128.
*   `paymentId` (_string_, required) Unique identifier for a payment/tender. As the order can have multiple payments, each payment has a unique payment ID.
*   `paymentMethod` (_string_, required) Identifies the payment method.  
    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. UNPROCESSED is used internally by cloud services as a transient state. DISCARDED is used when cash tender is in multi-tender and deleted by swiping right. ABORTED is used where we internally remove tender from our tender list and add a new tender, for example, gift card.  
    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) Identifies the payment device through which the payment is made. If payment data is manually entered, this field should be set to NoReader. If payment is made in an external system, payment device should be set to External.  
    Allowed values: `Adyen`, `PayPal`, `VerifonePSDK`, `Square`, `CheckReader`, `NoReader`, `External`, `StoredCard`, `Stripe`, `Elavon`, `Aurus`.
*   `cardNumber` (_string_) Card number. Could be either partial (last 4 digits) or complete card number (in case of manual credit card data entry). Mandatory for CreditCard, GiftCard.  
    Maximum length: 128.
*   `cardType` (_string_) 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_) Payment authorization token.  
    Maximum length: 128.
*   `authorizationDate` (_integer (int64)_) Payment authorization timestamp in EPOCH millis.
*   `captureToken` (_string_) Payment capture token.  
    Maximum length: 128.
*   `captureDate` (_integer (int64)_) Payment capture timestamp in EPOCH millis.
*   `firstName` (_string_) First name to use for billing using this tender.  
    Maximum length: 64.
*   `lastName` (_string_) Last name to use for billing using this tender.  
    Maximum length: 64.
*   `addressLine1` (_string_) Address line 1 to use for billing using this tender.  
    Maximum length: 256.
*   `addressLine2` (_string_) Address line 2 to use for billing using this tender.  
    Maximum length: 256.
*   `city` (_string_) City to use for billing using this tender.  
    Maximum length: 64.
*   `state` (_string_) State to use for billing using this tender.  
    Maximum length: 32.
*   `postalCode` (_string_) Postal code to use for billing using this tender.
*   `country` (_string_) Country code to use for billing using this tender.  
    Maximum length: 16.
*   `requestId` (_string_, nullable) Payment request identification issued by the payment gateway/terminal.  
    This field is 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.  
    It is mandatory 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 instance, the Adyen terminal generates a temporary ID  
    called a 'tender reference' whenever it goes into a store and forward mode.  
    This tender reference is then populated in the alternate payment request ID attribute.  
    Maximum length: 50.
*   `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/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) Total Refunded Amount if any which is already paid back due to returns + exchanges. Not applicable, if no refund issued yet.  
    Default: `0`.
*   `totalAmountCarriedOverForExchange` (_number_, nullable) When an item is exchanged, a new order is created for the replacement item,  
    and the original order is updated to a returned/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 tender is carried over to new order.  
    Default: `0`.
*   `receiptLines` (_array of PaymentReceiptLine_) Receipt lines. For information to be shown on receipt. Mandatory for CreditCard payment using Adyen.
*   `paymentSequenceNumber` (_integer (int32)_, required) Payment sequence indicating the order of payment. For example, if customer pays partially with cash first and remaining with credit card, then cash tender should have paymentSequenceNumber as 1 and credit card tender should have paymentSequenceNumber as 2.
*   `paymentDeviceId` (_string_) 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_) Bank routing number.  
    Maximum length: 32.
*   `accountNumber` (_string_) Account number. Used for payment through banking system.  
    Maximum length: 32.
*   `checkNumber` (_string_) Check number. Used for payment through checks.  
    Maximum length: 50.
*   `cardToken` (_string_) This is the tokenized value for payments made via Credit Card, Pay By Link, or Remote Pay By Link. Please note that tokenization is only supported for Adyen and must be configured in the CMS (**CMS** > **Integration** > **Payment Gateways** > **Adyen** > **Payment Tokenization Events**).  
    Maximum length: 128.
*   `personalIdType` (_string_, nullable) Personal identification type. Applicable for Check and Finance.  
    Allowed values: `DriversLicense`, `StateID`, `MilitaryID`, `Passport`, `StudentID`, `PermanentResidentID`, `TribalID`, `BusinessPhone`.
*   `personalIdIssuedBy` (_string_) Authority that issued the personal identification. Applicable for Check and Finance.  
    Maximum length: 32.
*   `personalIdNumber` (_string_) Personal identification number. Applicable for Check and Finance.  
    Maximum length: 32.
*   `personalIdExpiryDate` (_integer (int64)_) Personal identification expiry date represented as milliseconds since epoch. Typically expiry date is end of the day and milliseconds since epoch should reflect it accordingly. Applicable for Check and Finance.
*   `cardExpirationMonth` (_integer (int32)_) Card expiry month. Applicable for credit card.
*   `cardExpirationYear` (_integer (int32)_) Card expiry year. Applicable for credit card.
*   `externalPaymentSystemId` (_string_) External payment system identifier in case of External tender.  
    Maximum length: 32.
*   `externalPaymentReferenceId` (_string_) External payment reference identifier in case of External tender.  
    Maximum length: 32.
*   `checkType` (_string_) 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.  
    Eg. Call for auth code after check denial/ referral,  
    manual auth code for credit card when offline.  
    Maximum length: 50.
*   `cashDrawerUrl` (_string_, nullable) Represents custom URL using which cash drawer in the network can be accessed. Mandatory 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_) 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_) Capture status of authorized amount.  
    Allowed values: `CAPTURED`, `CAPTURE_FAILED`, `NON_CAPTURED`, `PARTIALLY_CAPTURED`, `VOID`, `VOID_FAILED`.
*   `financeOrderNo` (_string_) Refers to Finance approval/order/confirmation no. in external system.  
    Maximum length: 32.
*   `financeInstruction` (_string_) Refers to Finance processing related result/instruction long text from external system.  
    Maximum length: 4096.
*   `primaryAccountHolder` (_string_) Primary owner on the account.  
    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`.
*   `paymentLink` (_string_) Payment Link.  
    Maximum length: 128.
*   `paymentLinkExpiryDate` (_integer (int64)_) Payment link expiry timestamp in EPOCH millis.
*   `captureAmount` (_number_, nullable) Amount captured for credit card. Applicable, if capture flow is enabled.
*   `requestTokenExpireDate` (_integer (int64)_) Request token expire date in EPOCH millis.
*   `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_) The remaining change amount in case of cash tender.
*   `cardAlias` (_string_, nullable) Card alias provided in the payment response by gateway. In adyen - a value that uniquely represents the shopper's card number (PAN).
*   `cardBin` (_string_, nullable) Card BIN (Bank Identification Number) - first 6 or 8 digits of the card number.

### ExternalRefundTender

Payment method used towards the return transaction.

*   `transactionId` (_string_, required) It is a 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 will  
    correspond 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 OrderID.  
      
    Maximum length: 128.
*   `originalTransactionId` (_string_, required) Transaction identifier as part of which this payment was initiated originally and now being refunded.
*   `originalPaymentId` (_string_, required) Payment Identifier as part of which this payment was initiated originally and now being refunded.
*   `paymentMethod` (_string_, required) Identifies the payment method.  
    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`.
*   `cardNumber` (_string_) Card number. Could be either partial (last 4 digits) or complete card number (in case of manual credit card data entry). Mandatory for CreditCard, GiftCard.  
    Maximum length: 128.
*   `cardType` (_string_) Card type, for example, Visa, Mastercard, Amex, or Discover. Required for CreditCard.  
    Maximum length: 128.
*   `cardBin` (_string_, nullable) Card BIN (Bank Identification Number) - first 6 or 8 digits of the card number.
*   `refundRequestId` (_string_, required) Refund ID issued by the payment gateway. Mandatory for refund on credit card.
*   `refundedAmount` (_number_, required) Amount refunded.
*   `cardExpirationMonth` (_integer (int32)_) Card expiry month.
*   `cardExpirationYear` (_integer (int32)_) Card expiry year.
*   `cashDrawerUrl` (_string_) Represents custom URL using which cash drawer in the network can be accessed. Mandatory for cash payment with cash drawer having URL\_VIA\_QR\_CODE mode.  
    Maximum length: 256.
*   `cardAlias` (_string_, nullable) Card alias associated with Refund Tender. In adyen - a value that uniquely represents the shopper's card number (PAN).

### ExternalProduct

Products.

*   `productId` (_string_, required) Product ID. Unique identifier of an item. All the variations of an item will have distinct product ID, hence it is equivalent to SKU.
*   `variantGroupId` (_string_, required) Variant Group ID. All the variants of an item are grouped together under the same variant ID.
*   `name` (_string_, required) Name of the item.
*   `price` (_number_, required) Price of the item.
*   `quantity` (_integer (int32)_, required) Item's Quantity.
*   `orderItemId` (_string_, required) Item sequence/System generated item ID assigned to this line item. Must be unique within this order and should have numerical value in string.  
    Example: `It can have values like 1, 2, 3, etc... which represents line item number within the order.`.
*   `imageURL` (_string_, required) Image URL of the item.
*   `subTotal` (_number_, required) Item's total excluding discounts, shipping costs and taxes but inclusive of VAT.
*   `discount` (_number_) Total discount amount applied on the item, including all discount types (manual price override, transaction discount, coupon, rewards, and auto promotions). Required if any discounts are applied.
*   `total` (_number_, required) Item's total — final amount charged for this item, inclusive of tax/VAT and discounts.
*   `size` (_string_, required) Item's size.  
    Example: `39-42 or M or 38 etc...`.
*   `color` (_string_, required) Item's color.  
    Example: `Light Grey or Black etc...`.
*   `itemStatus` (_string_, required)
    
    Below is the list of statuses for in-store purchases and BORIS. The statuses are applicable for both the order and its items. The significance of each status is described in detail below.  
    The eligibility of an item for returns is determined by its current status and the status of the order. Moreover, the **returnsEligibility** attribute at the item level (productList) can also be used to regulate the return eligibility of an item.  
    To learn more about returns eligibility, please refer to the table below and productList.returnsEligibility  
      
    
    | Order Status | Display Name in Order History Filter | Significance for Order | Significance for Item | Return Eligibility |
    | --- | --- | --- | --- | --- |
    | COMPLETED | Completed | Successful sale transaction. | Item sold successfully. | Both the order and item are eligible for return. |
    | RETURNED | Returned | Successful return or exchange of all items with refund to customer. | Successful return of an item - whole quantity and is not eligible for return. | Both the order and item are not eligible for return. |
    | PARTIALLY\_REFUNDED | Partially Returned | Successful return or exchange of partial items with refund to customer. | Successful return of an item - partial quantity | Further returns are allowed on order as well as on item. |
    | EXCHANGED | Exchanged | Successful transaction that exchanges all items with no refund to customer | Successful exchanges of an item - whole quantity | Both the order and item are not eligible for return. |
    | PARTIALLY\_EXCHANGED | Partially Exchanged | Successful transaction that exchanges partial items with no refund to customer | Successful exchanges of an item - partial quantity | Further returns are allowed on order as well as on item. |
    | FAILED | Failed | Failed sale transaction. | Not applicable | Both the order and item are not eligible for return. |
    | PENDING | Pending | Sale transaction awaiting payment confirmation. For example, Remote Pay By Link | Not applicable | Both the order and item are not eligible for return. |
    
      
    Allowed values: `COMPLETED`, `FAILED`, `RETURNED`, `PARTIALLY_REFUNDED`, `PENDING`, `CANCELLED_WITH_REFUND`, `EXCHANGED`, `PARTIALLY_EXCHANGED`, `CANCELED`. Default: `COMPLETED`.
*   `gtin` (_string_, required) Item's GTIN.
*   `fulfillmentType` (_string_, required) Item's fulfillment type. It can be either IN\_STORE (in-store purchase) or ONLINE (delivery item).  
    Allowed values: `IN_STORE`, `ONLINE`, `MIXED_CART`.
*   `fulfillmentSubType` (_string_, required)
    
    1.  DEFAULT: Either item will be available from the current store for  
         cash & carry or for delivery to shipping address from a warehouse.  
          Fulfillment Type:IN\_STORE, Fulfillment Sub Type: DEFAULT : Cash & carry item  
        2\. TRY\_AT\_STORE: An item will be made available in the selected store for the trial.  The taxes and promotion will not be applied on the try at store items.  
        3\. PICKUP\_LATER: An item will be made available for pickup from the selected store.  The fulfillment will be done the current store itself, or another store.  
        4\. SHIP\_TO\_HOME: An item will be delivered to provided shipping address.  The fulfillment will be done by the current store itself,  or another store or a warehouse.  
        5\. SHIP\_TO\_STORE: An item will be delivered to a store from where it can be picked up. 6. PICKUP\_NEARBY: An item will be made available for pickup in near by store.  
        \----------------------------------------------------------------------------------  
        
    
    | Fulfillment Type | Fulfillment SubType | Item |
    | --- | --- | --- |
    | IN\_STORE | DEFAULT | Cash & carry |
    | ONLINE | DEFAULT | Ship to home from warehouse |
    | ONLINE | TRY\_AT\_STORE | Ship to store from warehouse to try out |
    | IN\_STORE | PICKUP\_LATER | Pickup from current store |
    | IN\_STORE | SHIP\_TO\_HOME | Ship to home from store |
    | IN\_STORE | SHIP\_TO\_STORE | Ship to a store from another store for pickup |
    | ONLINE | SHIP\_TO\_STORE | Ship to store from warehouse for pickup (buy online ship to store) |
    | IN\_STORE | PICKUP\_NEARBY | Pickup from another store |
    
    .
    
      
    Allowed values: `DEFAULT`, `TRY_AT_STORE`, `PICKUP_LATER`, `SHIP_TO_HOME`, `SHIP_TO_STORE`, `PICKUP_NEARBY`.
*   `salesAssociateAttributionList` (_array of ExternalStoreAssociateAttribution_) Sales associate attribution. If unspecified, then attribute the whole sale transaction to the logged-in associate.
*   `epc` (_string_, nullable) Electronic product code. Mandatory for items having epc/RFID.
*   `masterProductId` (_string_, nullable) Outfit Identification that groups together a set of items from a cart.  
    Commonly used in case product customizations like DYO (i.e. Customization Identification) or Alteration etc...Mandatory for alteration or DYO items.
*   `subProducts` (_array of ExternalProduct_, nullable) The other items from the cart related to the current item. Commonly used in case of customizations like Alteration as well as for add-on products. Mandatory for alteration or add-on items.
*   `productClass` (_string_, required) Product class of the item.
*   `serialNumber` (_string_) Serial number of the item (if applicable).
*   `productCondition` (_string_) Product condition.  
    Allowed values: `NEW`, `USED`, `REFURBISHED`. Default: `NEW`.
*   `reasons` (_array of Reason_, nullable) List of reasons pertaining to the actions performed on the item. For example, reason for price override applied on the item or reason for returning the item.
*   `dateTimeSlot` (_DateTimeSlot_)
*   `priceCorrection` (_ExternalProductPriceCorrection_)
*   `deliveryGroupId` (_string_) Delivery group ID. It is an identifier to the shipping details of the item. It links the item to one of the delivery groups available under transaction. It is applicable for delivery items.  
    Maximum length: 32.
*   `formAttributes` (_array of ProductFormAttribute_, nullable) New form data to be set on the product.
*   `pickupDetailId` (_string_) Link to pickup person detail corresponding to the product.  
    Points to the corresponding pickup details  
    from pickupDetailList in the transaction.  
      
    Maximum length: 128.
*   `productTax` (_ExternalProductTax_)
*   `priceAdjustmentList` (_array of ExternalPriceAdjustment_, nullable) Price adjustments applied on the item.  
    It includes all the price adjustments like transaction discount, price override etc...  
    Mandatory if any type of price adjustments is applied.
*   `returnsEligibility` (_string_, nullable) Returns eligibility of the item.  
    Allowed values: `ELIGIBLE_FOR_RETURNS`, `EXPIRED_RETURNS`, `CANNOT_BE_RETURNED`, `ELIGIBLE_FOR_CANCELS`, `INELIGIBILITY_FOR_RETURN_CROSS_CHANNEL`. Default: `ELIGIBLE_FOR_RETURNS`.
*   `returnsEligibilityText` (_string_) Returns eligibility information for the product, describing why it's ineligible for return. For example, BOFIS items that haven't shipped can't be returned. In that case, this field says 'Item not shipped yet' (applies when BOFIS orders are sent to PS Queue, that is, STH from CS enabled in Omni V2 settings). When an item can't be returned, this field says 'Cannot be returned'.  
    Maximum length: 128.
*   `pickupStoreId` (_string_, nullable) Pickup store ID.
*   `fulfillmentStoreId` (_string_, nullable) Fulfillment store ID.
*   `totalAdditionalCharge` (_number_, nullable) Total additional charges.
*   `tlogCustomProductAttributes` (_string_, nullable) Custom attributes.
*   `externalId` (_string_, nullable) External ID of the product.  
    Maximum length: 128.
*   `productBundleId` (_string_, nullable) If the product is part of outfit or a product bundle, then provide the id which groups together all the items from the bundle.
*   `noteList` (_array of ExternalNote_, nullable) Note associated with the product.
*   `customAttributeList` (_array of ProductFormAttribute_, read-only) Custom attributes related to the product.  
    All these attributes will be available at item level that are  
    configured in Store Setting: spiCustomProductAttributes.
    
    _Example_
    
    ```
    [
      {
        "key": "color",
        "value": "red"
      }
    ]
    ```
    
*   `registryId` (_string_, nullable) The unique ID of the registry. This is required when the item being purchased or returned is a gift registry item.
*   `requiredDeposit` (_number_) Required deposit for the product if deposit configuration is enabled for the store.
*   `paidDeposit` (_number_) Paid deposit for the product if deposit configuration is enabled for the store.

### ExternalReturnProduct

Returned products.

*   `productId` (_string_, required) Product ID. Unique identifier of an item. All the variations of an item will have distinct product ID, hence it is equivalent to SKU.
*   `variantGroupId` (_string_, required) Variant Group ID. All the variants of an item are grouped together under the same variant ID.
*   `name` (_string_, required) Name of the item.
*   `price` (_number_, required) Price of the item.
*   `quantity` (_integer (int32)_, required) Item's Quantity.
*   `orderItemId` (_string_, required) Item sequence/System generated item ID assigned to this line item. Must be unique within this order and should have numerical value in string.  
    Example: `It can have values like 1, 2, 3, etc... which represents line item number within the order.`.
*   `imageURL` (_string_, required) Image URL of the item.
*   `subTotal` (_number_, required) Item's total excluding discounts, shipping costs and taxes but inclusive of VAT.
*   `discount` (_number_) Total discount amount applied on the item, including all discount types (manual price override, transaction discount, coupon, rewards, and auto promotions). Required if any discounts are applied.
*   `total` (_number_, required) Item's total — final amount charged for this item, inclusive of tax/VAT and discounts.
*   `size` (_string_, required) Item's size.  
    Example: `39-42 or M or 38 etc...`.
*   `color` (_string_, required) Item's color.  
    Example: `Light Grey or Black etc...`.
*   `itemStatus` (_string_, required)
    
    Below is the list of statuses for in-store purchases and BORIS. The statuses are applicable for both the order and its items. The significance of each status is described in detail below.  
    The eligibility of an item for returns is determined by its current status and the status of the order. Moreover, the **returnsEligibility** attribute at the item level (productList) can also be used to regulate the return eligibility of an item.  
    To learn more about returns eligibility, please refer to the table below and productList.returnsEligibility  
      
    
    | Order Status | Display Name in Order History Filter | Significance for Order | Significance for Item | Return Eligibility |
    | --- | --- | --- | --- | --- |
    | COMPLETED | Completed | Successful sale transaction. | Item sold successfully. | Both the order and item are eligible for return. |
    | RETURNED | Returned | Successful return or exchange of all items with refund to customer. | Successful return of an item - whole quantity and is not eligible for return. | Both the order and item are not eligible for return. |
    | PARTIALLY\_REFUNDED | Partially Returned | Successful return or exchange of partial items with refund to customer. | Successful return of an item - partial quantity | Further returns are allowed on order as well as on item. |
    | EXCHANGED | Exchanged | Successful transaction that exchanges all items with no refund to customer | Successful exchanges of an item - whole quantity | Both the order and item are not eligible for return. |
    | PARTIALLY\_EXCHANGED | Partially Exchanged | Successful transaction that exchanges partial items with no refund to customer | Successful exchanges of an item - partial quantity | Further returns are allowed on order as well as on item. |
    | FAILED | Failed | Failed sale transaction. | Not applicable | Both the order and item are not eligible for return. |
    | PENDING | Pending | Sale transaction awaiting payment confirmation. For example, Remote Pay By Link | Not applicable | Both the order and item are not eligible for return. |
    
      
    Allowed values: `COMPLETED`, `FAILED`, `RETURNED`, `PARTIALLY_REFUNDED`, `PENDING`, `CANCELLED_WITH_REFUND`, `EXCHANGED`, `PARTIALLY_EXCHANGED`, `CANCELED`. Default: `COMPLETED`.
*   `gtin` (_string_, required) Item's GTIN.
*   `fulfillmentType` (_string_, required) Item's fulfillment type. It can be either IN\_STORE (in-store purchase) or ONLINE (delivery item).  
    Allowed values: `IN_STORE`, `ONLINE`, `MIXED_CART`.
*   `fulfillmentSubType` (_string_, required)
    
    1.  DEFAULT: Either item will be available from the current store for  
         cash & carry or for delivery to shipping address from a warehouse.  
          Fulfillment Type:IN\_STORE, Fulfillment Sub Type: DEFAULT : Cash & carry item  
        2\. TRY\_AT\_STORE: An item will be made available in the selected store for the trial.  The taxes and promotion will not be applied on the try at store items.  
        3\. PICKUP\_LATER: An item will be made available for pickup from the selected store.  The fulfillment will be done the current store itself, or another store.  
        4\. SHIP\_TO\_HOME: An item will be delivered to provided shipping address.  The fulfillment will be done by the current store itself,  or another store or a warehouse.  
        5\. SHIP\_TO\_STORE: An item will be delivered to a store from where it can be picked up. 6. PICKUP\_NEARBY: An item will be made available for pickup in near by store.  
        \----------------------------------------------------------------------------------  
        
    
    | Fulfillment Type | Fulfillment SubType | Item |
    | --- | --- | --- |
    | IN\_STORE | DEFAULT | Cash & carry |
    | ONLINE | DEFAULT | Ship to home from warehouse |
    | ONLINE | TRY\_AT\_STORE | Ship to store from warehouse to try out |
    | IN\_STORE | PICKUP\_LATER | Pickup from current store |
    | IN\_STORE | SHIP\_TO\_HOME | Ship to home from store |
    | IN\_STORE | SHIP\_TO\_STORE | Ship to a store from another store for pickup |
    | ONLINE | SHIP\_TO\_STORE | Ship to store from warehouse for pickup (buy online ship to store) |
    | IN\_STORE | PICKUP\_NEARBY | Pickup from another store |
    
    .
    
      
    Allowed values: `DEFAULT`, `TRY_AT_STORE`, `PICKUP_LATER`, `SHIP_TO_HOME`, `SHIP_TO_STORE`, `PICKUP_NEARBY`.
*   `salesAssociateAttributionList` (_array of ExternalStoreAssociateAttribution_) Sales associate attribution. If unspecified, then attribute the whole sale transaction to the logged-in associate.
*   `epc` (_string_, nullable) Electronic product code. Mandatory for items having epc/RFID.
*   `masterProductId` (_string_, nullable) Outfit Identification that groups together a set of items from a cart.  
    Commonly used in case product customizations like DYO (i.e. Customization Identification) or Alteration etc...Mandatory for alteration or DYO items.
*   `subProducts` (_array of ExternalProduct_, nullable) The other items from the cart related to the current item. Commonly used in case of customizations like Alteration as well as for add-on products. Mandatory for alteration or add-on items.
*   `productClass` (_string_, required) Product class of the item.
*   `serialNumber` (_string_) Serial number of the item (if applicable).
*   `productCondition` (_string_) Product condition.  
    Allowed values: `NEW`, `USED`, `REFURBISHED`. Default: `NEW`.
*   `reasons` (_array of Reason_, nullable) List of reasons pertaining to the actions performed on the item. For example, reason for price override applied on the item or reason for returning the item.
*   `dateTimeSlot` (_DateTimeSlot_)
*   `priceCorrection` (_ExternalProductPriceCorrection_)
*   `deliveryGroupId` (_string_) Delivery group ID. It is an identifier to the shipping details of the item. It links the item to one of the delivery groups available under transaction. It is applicable for delivery items.  
    Maximum length: 32.
*   `formAttributes` (_array of ProductFormAttribute_, nullable) New form data to be set on the product.
*   `pickupDetailId` (_string_) Link to pickup person detail corresponding to the product.  
    Points to the corresponding pickup details  
    from pickupDetailList in the transaction.  
      
    Maximum length: 128.
*   `productTax` (_ExternalProductTax_)
*   `priceAdjustmentList` (_array of ExternalPriceAdjustment_, nullable) Price adjustments applied on the item.  
    It includes all the price adjustments like transaction discount, price override etc...  
    Mandatory if any type of price adjustments is applied.
*   `returnsEligibility` (_string_, nullable) Returns eligibility of the item.  
    Allowed values: `ELIGIBLE_FOR_RETURNS`, `EXPIRED_RETURNS`, `CANNOT_BE_RETURNED`, `ELIGIBLE_FOR_CANCELS`, `INELIGIBILITY_FOR_RETURN_CROSS_CHANNEL`. Default: `ELIGIBLE_FOR_RETURNS`.
*   `returnsEligibilityText` (_string_) Returns eligibility information for the product, describing why it's ineligible for return. For example, BOFIS items that haven't shipped can't be returned. In that case, this field says 'Item not shipped yet' (applies when BOFIS orders are sent to PS Queue, that is, STH from CS enabled in Omni V2 settings). When an item can't be returned, this field says 'Cannot be returned'.  
    Maximum length: 128.
*   `pickupStoreId` (_string_, nullable) Pickup store ID.
*   `fulfillmentStoreId` (_string_, nullable) Fulfillment store ID.
*   `totalAdditionalCharge` (_number_, nullable) Total additional charges.
*   `tlogCustomProductAttributes` (_string_, nullable) Custom attributes.
*   `externalId` (_string_, nullable) External ID of the product.  
    Maximum length: 128.
*   `productBundleId` (_string_, nullable) If the product is part of outfit or a product bundle, then provide the id which groups together all the items from the bundle.
*   `noteList` (_array of ExternalNote_, nullable) Note associated with the product.
*   `customAttributeList` (_array of ProductFormAttribute_, read-only) Custom attributes related to the product.  
    All these attributes will be available at item level that are  
    configured in Store Setting: spiCustomProductAttributes.
    
    _Example_
    
    ```
    [
      {
        "key": "color",
        "value": "red"
      }
    ]
    ```
    
*   `registryId` (_string_, nullable) The unique ID of the registry. This is required when the item being purchased or returned is a gift registry item.
*   `requiredDeposit` (_number_) Required deposit for the product if deposit configuration is enabled for the store.
*   `paidDeposit` (_number_) Paid deposit for the product if deposit configuration is enabled for the store.
*   `exchangedForOrderId` (_string_, nullable) Applicable for exchange of the item. A separate order will be generated for the new item when an exchange occurs. The order ID corresponding to the new item related to the exchange will be provided here.  
    Maximum length: 128.
*   `exchangedForProductId` (_string_, nullable) Applicable for exchange of the item. A separate order will be generated for the new item when an exchange occurs. Please provide the order ID for the new item related to the exchange.  
    Maximum length: 128.

### ExternalCustomerProfile

Customer profile. It is mandatory for customer logged-in during the transaction. It is optional for guest customer.

*   `customerId` (_string_, nullable) Customer ID. Optional for guest customer. Mandatory for logged-in customer.  
    Maximum length: 128.
*   `alternateCustomerId` (_string_, nullable) Alternate Customer ID.  
    Maximum length: 128.
*   `email` (_string_, nullable) Customer Email ID.  
    Optional for guest customer. Mandatory for logged-in customer.
*   `salutation` (_string_, nullable) Salutation.
*   `firstName` (_string_, nullable) Customer first name  
    Optional for guest customer. Mandatory for logged-in customer.
*   `secondName` (_string_, nullable) Customer second name.
*   `lastName` (_string_, nullable) Customer last name  
    Optional for guest customer. Mandatory for logged-in customer.
*   `suffix` (_string_, nullable) Suffix.
*   `phoneHome` (_string_, nullable) Phone Home.
*   `phoneMobile` (_string_, nullable) Phone Mobile. This is the primary phone number for the customer.
*   `phoneBusiness` (_string_, nullable) Phone Business.
*   `fax` (_string_, nullable) Fax.
*   `loyaltyId` (_string_, nullable) Loyalty Id of the customer.

### ExternalDeliveryGroup

In the event that the transaction comprises any delivery item, a list of delivery groups is required. Each delivery item is associated with a delivery group via a deliveryGroupId link.

*   `deliveryGroupId` (_string_, required) Delivery group ID.
*   `fulfillmentType` (_string_, required) Fulfillment type.  
    Allowed values: `IN_STORE`, `ONLINE`, `MIXED_CART`.
*   `fulfillmentSubType` (_string_, required)
    
    1.  DEFAULT: Either item will be available from the current store for  
         cash & carry or for delivery to shipping address from a warehouse.  
          Fulfillment Type:IN\_STORE, Fulfillment Sub Type: DEFAULT : Cash & carry item  
        2\. TRY\_AT\_STORE: An item will be made available in the selected store for the trial.  The taxes and promotion will not be applied on the try at store items.  
        3\. PICKUP\_LATER: An item will be made available for pickup from the selected store.  The fulfillment will be done the current store itself, or another store.  
        4\. SHIP\_TO\_HOME: An item will be delivered to provided shipping address.  The fulfillment will be done by the current store itself,  or another store or a warehouse.  
        5\. SHIP\_TO\_STORE: An item will be delivered to a store from where it can be picked up. 6. PICKUP\_NEARBY: An item will be made available for pickup in near by store.  
        \----------------------------------------------------------------------------------  
        
    
    | Fulfillment Type | Fulfillment SubType | Item |
    | --- | --- | --- |
    | IN\_STORE | DEFAULT | Cash & carry |
    | ONLINE | DEFAULT | Ship to home from warehouse |
    | ONLINE | TRY\_AT\_STORE | Ship to store from warehouse to try out |
    | IN\_STORE | PICKUP\_LATER | Pickup from current store |
    | IN\_STORE | SHIP\_TO\_HOME | Ship to home from store |
    | IN\_STORE | SHIP\_TO\_STORE | Ship to a store from another store for pickup |
    | ONLINE | SHIP\_TO\_STORE | Ship to store from warehouse for pickup, i.e., buy online ship to store |
    | IN\_STORE | PICKUP\_NEARBY | Pickup from another store |
    
    .
    
      
    Allowed values: `DEFAULT`, `BOSS`, `BOPIS`, `TRY_AT_STORE`, `PICKUP_LATER`, `SHIP_TO_HOME`, `SHIP_TO_STORE`, `PICKUP_NEARBY`.
*   `shippingMethod` (_ShippingMethod_, required)
*   `shippingAddress` (_ExternalAddress_, required)
*   `dateTimeSlot` (_DateTimeSlot_, required)
*   `fulfillmentAddress` (_ExternalAddress_)
*   `externalDeliveryGroupId` (_string_, nullable) External delivery group id: This ID can be provided when importing an order into POS from an external system. While POS does not use this ID for internal processing, it saves the ID and relays it back to the external system during order posting after any modification.  
    Maximum length: 128.

### ExternalPickUpDetail

Pickup details.

*   `pickupDetailId` (_string_)
*   `storeId` (_string_)
*   `storeAssociateId` (_string_)
*   `firstName` (_string_)
*   `lastName` (_string_)
*   `email` (_string_)
*   `phone` (_string_)

### ExternalAddress

Billing address.

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

### ExternalTransactionSummary

Payload that contains a transaction (Sale or Return) summary.

*   `subTotal` (_number_, required) Total Item price.
*   `discount` (_number_, nullable) Total price override and promo coupons applied. Applicable if any item level price override applied or any promotion (auto or coupon) applied.
*   `transactionDiscountAmount` (_number_, nullable) Total transaction discount. Applicable if any transaction discount is applied.
*   `rewardAmount` (_number_, nullable) Total reward amount. Applicable if any reward coupon is applied.
*   `tax` (_number_, nullable) Total Tax.
*   `taxExemption` (_number_, nullable) Total Tax Exemption.
*   `valueAddedTax` (_number_, nullable) Total Value Added Tax.
*   `shippingCharges` (_number_, nullable) Total shipping charges.
*   `total` (_number_, required) Item total inclusive of all charges like taxes and discounts and exclusive of tip amount.
*   `roundingAmount` (_number_, read-only) The delta amounts because of rounding applied on grand total or refund total of the cart.
*   `paidAmount` (_number_, read-only) The amount paid already towards the ongoing transaction. It is used during deposits,layway and edit order.
*   `amountToBeCharged` (_number_, read-only) Net amount that customer is going to pay as charges or receive as refund. It is derived based on this formula = (Total Sale - Paid amount - Total Refund).
*   `refundFeeAmount` (_number_) Refund fees applied when cancelling items from an order during the edit order flow. Not applicable for sale transactions and not populated in the sale summary.
*   `minTransactionDiscountAmount` (_number_) Used in edit order flow and will be populated only in net summary of the cart. Minimum transaction discount that must be applied to cover for transaction discount already applied on already fulfilled products.
*   `maxTransactionDiscountAmount` (_number_) Used in edit order flow and will be populated only in net summary of the cart. Maximum transaction discount that can be applied.
*   `netSubTotal` (_number_) Net SubTotal- represents Item sub total minus the discounts/price overrides if any.
*   `nonMerchTotal` (_number_, nullable) Total of non merchandising items.
*   `tipTotal` (_number_, nullable) Total Tip.
*   `inStoreTotal` (_number_, nullable) In store total.

### ExternalNote

Notes for the transaction.

*   `cartId` (_string_)
*   `noteId` (_string_)
*   `noteText` (_string_)
*   `transactionId` (_string_)

### ExternalTaxExemption

Applied tax exemptions.

*   `taxExemptCode` (_string_, required) Tax exemption code.  
    Maximum length: 128.
*   `customerName` (_string_, required) Customer name for an individual who has tax exemption applied.  
    Maximum length: 128.
*   `cardNumber` (_string_, required) Customer's tax-exemption card number.  
    Maximum length: 64.
*   `notes` (_string_, nullable) Optional notes for tax exemption entered during checkout on the POS.  
    Maximum length: 128.
*   `taxExemptionRate` (_number_, required) Tax exemption rate.  
    Example: `7.25`.
*   `taxType` (_string_, nullable) Indicates the tax type, such as COUNTRY, CITY, or STATE. The following tax types are specific to the Vertex tax engine: PROVINCE, TERRITORY, APO, BOROUGH, FPO, LOCAL\_IMPROVEMENT\_DISTRICT, PARISH, SPECIAL\_PURPOSE\_DISTRICT, TOWNSHIP, TRADE\_BLOCK, and TRANSIT\_DISTRICT.  
    Allowed values: `CLASS`, `CITY`, `DISTRICT`, `COUNTY`, `STATE`, `COUNTRY`, `ITEM_OVERRIDE`, `STORE_OVERRIDE`, `TRANSACTION_OVERRIDE`, `SPECIAL`, `PROVINCE`, `TERRITORY`, `APO`, `BOROUGH`, `FPO`, `LOCAL_IMPROVEMENT_DISTRICT`, `PARISH`, `SPECIAL_PURPOSE_DISTRICT`, `TOWNSHIP`, `TRADE_BLOCK`, `TRANSIT_DISTRICT`.
*   `taxExemptName` (_string_, nullable) Tax exemption name.  
    Maximum length: 128.

### StatusLine

*   `reasonPhrase` (_string_)
*   `protocolVersion` (_ProtocolVersion_)
*   `statusCode` (_integer (int32)_)

### HttpEntity

*   `repeatable` (_boolean_)
*   `streaming` (_boolean_)
*   `chunked` (_boolean_)
*   `content` (_object_)
*   `contentLength` (_integer (int64)_)
*   `contentType` (_Header_)
*   `contentEncoding` (_Header_)

### ProtocolVersion

*   `protocol` (_string_)
*   `major` (_integer (int32)_)
*   `minor` (_integer (int32)_)

### Header

*   `name` (_string_)
*   `value` (_string_)
*   `elements` (_array of HeaderElement_)

### HttpParams

### 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`.

### ExternalStoreAssociateAttribution

Sales associate attribution. If unspecified, then attribute the whole sale transaction to the logged-in associate.

*   `storeAssociateId` (_string_, required) ID of the associate that completed the sale transaction.
*   `contributionPercentage` (_number_, required) Associate's contribution towards sales.
*   `attributionNote` (_string_) Note related to attribution.
*   `firstName` (_string_, required) Associate's first name.
*   `lastName` (_string_, required) Associate's last name.

### 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.

### DateTimeSlot

Backup delivery date if slots are unavailable. Default can be set via 'deliveryDatePickerWillCall' in Store settings.

*   `slotId` (_string_) Slot ID.  
    Example: `1234`.
*   `slotDate` (_integer (int64)_, required) Delivery date in epoch.
*   `selectedTimeSlot` (_string_, required) Time slot.  
    Example: `09:00 - 12:00`.
*   `dateTimeSlotType` (_string_, nullable) Time slot type.  
    Allowed values: `Delivery`, `Pickup`. Default: `Delivery`.

### ExternalProductPriceCorrection

Price correction applied on the item with information like the approval manager ID and original price. Sale price becomes new corrected price.

*   `originalPrice` (_number_) Original price of the item.
*   `approvingManagerId` (_string_) ID of the manager who approved the price correction request.

### ProductFormAttribute

Details about a product form attribute.

*   `key` (_string_) The identifier of the attribute.  
    Example: `color`.
*   `value` (_string_) The value associated with the key.  
    Example: `blue`.

_Example_

```
[
  {
    "key": "color",
    "value": "red"
  }
]
```

### ExternalProductTax

Tax/Vat details.

*   `totalTax` (_number_, required) Total tax. Required in case of tax countries.
*   `taxExemption` (_number_, nullable) Tax Exemption.
*   `taxRateList` (_array of ProductTaxRate_, nullable) Tax Rates.
*   `vatRateList` (_array of ProductTaxRate_, nullable) VAT Rates.
*   `valueAddedTax` (_number_, nullable) Total VAT. Required in case of VAT countries.
*   `taxableAmount` (_number_, required) Taxable amount.

### ExternalPriceAdjustment

Price adjustments applied on the item.  
It includes all the price adjustments like transaction discount, price override etc...  
Mandatory if any type of price adjustments is applied.

*   `description` (_string_, required) Price adjustment description.
*   `adjustment` (_string_, required) Price adjustment.
*   `id` (_string_) Promotion Id for applied coupon or auto promotion.
*   `price` (_number_, required) Price adjustment amount.
*   `priceAdjustmentType` (_string_, required) Price adjustment type.  
    Allowed values: `PRICE_OVERRIDE`, `PROMOTION`, `FEES`, `REWARDS`, `TRANSACTION_DISCOUNT`.
*   `reason` (_Reason_)
*   `merchantPromotionId` (_string_, nullable) External promotion ID corresponding applied promotion.  
    It is used to identify the promotion in external system and is relevant  
    only if it is configured in CMS  
    Applicable only for promotions.
*   `promoCode` (_string_, nullable) Coupon code corresponding to promotion applied.  
    Not applicable for auto promotions,  
    manual price adjustments like price override & transaction discount.
*   `auto` (_boolean_, nullable) Applied promotion is auto or not.
*   `discountValue` (_number_, nullable) Applicable only for PRICE\_OVERRIDE OR TRANSACTION\_DISCOUNT.It will hold discount value either in percentage or in amount format.
*   `discountType` (_string_, nullable) Discount types 1. Amount: Item price or transaction-total reduced by provided amount, 2. PERCENT: Item price or transaction-total reduced by amount calculated based on provided percentage and item price/transaction-total, 3. FLAT\_PRICE: Item price is reduced to the provided amount. Not applicable to transaction discounts. The discount amount is then calculated by subtracting entered flat\_price from item-price.  
    Allowed values: `AMOUNT`, `PERCENT`, `FLAT_PRICE`.
*   `externalId` (_string_, nullable) This identifier is used when an order is imported from an external system.  
    If an order is placed directly in the POS, this identifier will not be available.  
    The external system provides this identifier, which will then be replayed to that  
    external system during order posting for any subsequent modifications like returns.  
    Maximum length: 128.

### ShippingMethod

Available shipping methods corresponding to this delivery group.

*   `shippingMethodId` (_string_, required) Unique Identifier for the Shipping Method.  
    Maximum length: 45. Example: `001`.
*   `name` (_string_, required) Shipping Method Name.  
    Maximum length: 128. Example: `Standard Shipping`.
*   `description` (_string_, nullable) Shipping Method Description.  
    Maximum length: 128.
*   `carrier` (_string_, nullable) Shipping carrier, for example, UPS, USPS, FedEx, or DHL.  
    Maximum length: 32. Example: `UPS`.
*   `serviceLevel` (_string_, nullable) Service Level Description.  
    E.g. 3-5 Days, 1-Day, Express, Standard, Overnight.  
    Maximum length: 128. Example: `3-5 Days`.
*   `price` (_number_, required) Shipping cost.
*   `priceAdjustments` (_array of PriceAdjustment_, nullable) Price adjustments after applying shipping level promotion. Supported PriceAdjustmentType - PROMOTION only.
*   `priceAfterShippingDiscount` (_number_, nullable) Price after applying shipping discount.
*   `sortOrder` (_integer (int32)_) Display Order.  
    Default: `0`.
*   `taxRates` (_array of ProductTaxRate_, nullable) Tax breakdown for the shipping cost. Applicable for tax countries and if the shipping cost is taxable.
*   `vatRates` (_array of ProductTaxRate_, nullable) VAT breakdown for the shipping cost. Applicable for VAT countries and if the shipping cost is taxable.
*   `shippingTax` (_number_, nullable) Tax amount for the shipping cost. Applicable for tax countries and if the shipping cost is taxable.
*   `shippingValueAddedTax` (_number_, nullable) VAT amount for the shipping cost. Applicable for vat countries and if the shipping cost is taxable.
*   `taxClass` (_string_, deprecated) Refer taxRates or vatRates instead to know the tax class.
*   `taxExemption` (_number_, nullable) Tax exemption amount for the shipping cost. Applicable for tax countries and if the shipping cost is taxable and tax exemption is applied.
*   `deliveryDate` (_integer (int64)_, required) Expected delivery date in epoch in millis.
*   `deliveryTimeSlot` (_string_, required) Expected delivery time slot.  
    Example: `09:00 - 12:00`.
*   `itemLevelCharges` (_array of ItemLevelCharge_, nullable) Item level breakdown for the shipping cost and shipping discount.

### HeaderElement

*   `name` (_string_)
*   `value` (_string_)
*   `parameterCount` (_integer (int32)_)
*   `parameters` (_array of NameValuePair_)

### ProductTaxRate

VAT breakdown for the shipping cost. Applicable for VAT countries and if the shipping cost is taxable.

*   `countryCode` (_string_, required) Country Code.  
    Maximum length: 2. Example: `US`.
*   `state` (_string_, nullable) State. Applicable if the tax rate is specific to state.  
    Maximum length: 128.
*   `postalCode` (_string_, nullable) Postal Code. Applicable if the tax rate is specific to postal code.  
    Maximum length: 10.
*   `taxType` (_string_, required) Indicates the tax type, such as COUNTRY, CITY, or STATE. The following tax types are specific to the Vertex tax engine: PROVINCE, TERRITORY, APO, BOROUGH, FPO, LOCAL\_IMPROVEMENT\_DISTRICT, PARISH, SPECIAL\_PURPOSE\_DISTRICT, TOWNSHIP, TRADE\_BLOCK, and TRANSIT\_DISTRICT.  
    Allowed values: `CLASS`, `CITY`, `DISTRICT`, `COUNTY`, `STATE`, `COUNTRY`, `ITEM_OVERRIDE`, `STORE_OVERRIDE`, `TRANSACTION_OVERRIDE`, `SPECIAL`, `PROVINCE`, `TERRITORY`, `APO`, `BOROUGH`, `FPO`, `LOCAL_IMPROVEMENT_DISTRICT`, `PARISH`, `SPECIAL_PURPOSE_DISTRICT`, `TOWNSHIP`, `TRADE_BLOCK`, `TRANSIT_DISTRICT`.
*   `chargeType` (_string_) Indicates if the charge is for tax or fee - TAX/FEE.  
    Allowed values: `TAX`, `FEE`. Default: `TAX`.
*   `nonRefundable` (_boolean_) Specifies whether the charge (tax or fee) is refundable.  
    Default: `false`.
*   `taxRate` (_number (float)_, required) % tax/vat rate.  
    Example: `7.25`.
*   `taxClass` (_string_, required) The tax engine uses tax classes to apply specific tax rates to different product categories. Each product is linked to a tax class, which determines its applicable tax rate.  
    Example: `Tax Class for Shoes and Clothing - PS0001`.
*   `taxCode` (_string_, required) Unique identifier for a tax rate, unique per item.
*   `taxAmount` (_number_, required) Total tax amount for the item corresponding to the item's tax rate.  
    Example: `7.25`.
*   `perUnitTaxAmount` (_number_, required) Per unit tax amount of the item corresponding to the tax rate.  
    Example: `1.25`.
*   `taxName` (_string_, required) Tax name, for example, Jurisdiction, MTA, BTW Hoog, or BTW Laag.  
    Maximum length: 64.
*   `displayTaxName` (_string_, required) Display tax name, for example, Jurisdiction - 7.25%, BTW Hoog - 21%, or BTW Laag - 9%.
*   `corporateTaxId` (_string_, nullable) Merchant's Tax Identification Number.  
    Example: `HST-74252RT0001`.
*   `printTaxName` (_string_, nullable) Print tax name for receipts. Includes merchant's tax identification number. For example: HST-74252RT0001 - 7.25%.
*   `externalTaxId` (_string_, nullable) Additional Tax Identifier for external systems.
*   `isExempt` (_boolean_, nullable) Indicates if tax is exempted.  
    Default: `false`.
*   `taxDescription` (_string_, nullable) Tax Description text.
*   `jurisdiction` (_string_, nullable) Jurisdiction.  
    Maximum length: 128.
*   `registrationNumber` (_string_, nullable) Registration Number.  
    Maximum length: 128.
*   `externalId` (_string_, nullable) Identifies the current tax record in the external system. This is a record identifier, not a tax identifier. Used when an order is imported from an external system. Orders placed directly through POS don't populate this identifier. The external system provides this identifier and POS replays it during order posting for subsequent modifications such as returns.  
    Maximum length: 128.

### PriceAdjustment

Price adjustments after applying shipping level promotion. Supported PriceAdjustmentType is PROMOTION only.

*   `description` (_string_, nullable) The price adjustment description will display the promotion name for coupon codes and the reason text for transaction discounts and price overrides. While importing an order from an external system, it is optional.  
    Maximum length: 1500.
*   `adjustment` (_string (-XX.XXX or XX.XXX)_) The discount amount for display purposes. It will be negative for sold items and shipping charges and positive for returned items.  
    Example: `-155.5`.
*   `price` (_number (-XX.XXX or XX.XXX)_) The discount amount. It will be negative for sold items and shipping charges and positive for returned items.  
    Example: `-155.5`.
*   `id` (_string_) Price adjustment ID. In case of promotions, it is promotion ID. For price override and transaction discount, it is GUID.
*   `priceAdjustmentType` (_string_) Price adjustment type.  
    Allowed values: `PRICE_OVERRIDE`, `PROMOTION`, `FEES`, `REWARDS`, `TRANSACTION_DISCOUNT`.
*   `auto` (_boolean_, nullable) Specifies whether the promotion is automatically applied or not. Applicable only for promotions.
*   `fulfillmentType` (_string_)  
    Allowed values: `IN_STORE`, `ONLINE`, `MIXED_CART`.
*   `promoCode` (_string_, nullable) Promotion code provided by customer to apply specific promotion. Applicable only for promotions.
*   `merchantPromotionId` (_string_, nullable) External promotion ID corresponding applied promotion.  
    It is used to identify the promotion in external system and is relevant  
    only if it is configured in CMS  
    Applicable only for promotions.
*   `reasons` (_array of Reason_, read-only, nullable) List of reasons pertaining to the price adjustment. Applicable only for PRICE\_OVERRIDE or TRANSACTION\_DISCOUNT.
*   `quantity` (_integer (int32)_, read-only, nullable) Applicable only for Product level Promotion price adjustments.
*   `discountValue` (_number_, nullable) Applicable only for PRICE\_OVERRIDE OR TRANSACTION\_DISCOUNT.It will hold discount value either in percentage or in amount format.
*   `discountType` (_string_, nullable) Discount types 1. Amount: Item price or transaction-total reduced by provided amount, 2. PERCENT: Item price or transaction-total reduced by amount calculated based on provided percentage and item price/transaction-total, 3. FLAT\_PRICE: Item price is reduced to the provided amount. Not applicable to transaction discounts. The discount amount is then calculated by subtracting entered flat\_price from item-price.  
    Allowed values: `AMOUNT`, `PERCENT`, `FLAT_PRICE`.
*   `rewardId` (_string_, nullable) The ID of the loyalty reward discount. Applicable only for loyalty coupons and loyalty discounts.
*   `rewardName` (_string_, nullable) The name of the loyalty reward discount. Applicable only for loyalty coupons and loyalty discounts.
*   `externalId` (_string_, nullable) This identifier is used when an order is imported from an external system. If an order is placed directly in the POS, this identifier will not be available. The external system provides this identifier, which will then be replayed to that external system during order posting for any subsequent modifications like returns.  
    Maximum length: 128.
*   `adjustmentAmount` (_number_)
*   `referenceAdjustmentId` (_string_)
*   `referenceAdjustmentID` (_string_, write-only)
*   `adjustmentType` (_string_)  
    Allowed values: `PRICE_OVERRIDE`, `PROMOTION`, `FEES`, `REWARDS`, `TRANSACTION_DISCOUNT`.
*   `reasonText` (_string_)

### ItemLevelCharge

Item level breakdown for the shipping cost and shipping discount.

*   `orderItemId` (_string_, required) Unique sequence number assigned to cart item that belongs to the order or delivery group.  
    Example: `It can have values like 1, 2, 3, etc...<br> which represents line item number within the order or Delivery Group.`.
*   `itemShippingCharge` (_number_) Item level shipping charge.
*   `itemShippingDiscountAmount` (_number_, nullable) Shipping discount that can be applied on item level shipping price due to promotion or reward.
*   `discountText` (_string_, nullable) Discount text of an applied promotion.  
    Maximum length: 1500.
*   `promotionId` (_string_, nullable) External Merchant promotion ID corresponding applied promotion.

### NameValuePair

*   `name` (_string_)
*   `value` (_string_)