3 Transactions

This chapter describes the formats for Post POSLog Transaction requests. This chapter also covers the formats and elements of a POS Log that Customer Engagement will recognize and process. The following requests are supported:

Overview

This section provides an overview of transaction.

Generic Transaction Properties

This feature provides the ability to store miscellaneous data with each retail transaction in Customer Engagement. This miscellaneous data must be in the form of properties, which are basically a code-value pair. Multiple properties may be associated with a single retail transaction; though, each property code must be unique.

Using these properties, a POS can attach any kind of additional data that Customer Engagement does not normally store to a retail transaction. For example: a POS needs to save the method that was used to look up a customer’s loyalty card (keyed or swiped). The POS could include in the POS Log a transaction property called loyalty_card_method and a value of either keyed or swiped.

Note:

Customer Engagement does not check the case of the property or value. Because some databases are case-sensitive and would throw an error if different cases are used, that is, SWIPED vs. swiped), take care when inputting the property and value.

Example

The following example shows the format of transaction properties:

. . .  <!--  All items including Non Merch Item discounted 10%  -->
  <Transaction CancelFlag="false" TrainingModeFlag="false" 
   OfflineFlag="false">
    <RetailStoreID><STORE_ID></RetailStoreID>
    <WorkstationID><WORKSTATION_ID></WorkstationID>
    <TillID><TILL_ID></TillID>
    <SequenceNumber>99999999</SequenceNumber>
    <BusinessDayDate>2008-03-01</BusinessDayDate>
    <BeginDateTime>2008-03-01T17:33:35</BeginDateTime>
    <EndDateTime>2008-03-01T17:38:53</EndDateTime>
    <OriginalBusinessDate>2008-03-01T17:33:35</OriginalBusinessDate>
    <OperatorID><OPERATOR_ID></OperatorID>
    <PosTransactionProperties>
      <PosTransactionPropertyCode>loyalty_card_method
      </PosTransactionPropertyCode>
      <PosTransactionPropertyValue>SWIPED
      </PosTransactionPropertyValue>
    </PosTransactionProperties>
    <PosTransaThe following example shows the format of transaction properties:ctionProperties>
      <PosTransactionPropertyCode>qty_muffler_bearings
      </PosTransactionPropertyCode>
      <PosTransactionPropertyValue><VALUE></PosTransactionPropertyValue>
    </PosTransactionProperties>
    <RetailTransaction Version="2.1" TypeCode="TRANSACTION" 
     TransactionStatus="DELIVERED">
      <LineItem VoidFlag="false">
        <SequenceNumber>1</SequenceNumber>
        <BeginDateTime>2008-03-01T17:38:53</BeginDateTime>
        <EndDateTime>2008-03-01T17:38:53</EndDateTime>
        <Sale ItemType="Stock">
        . . .

Retail Transaction ID

Note:

The lengths of the Location ID, Register ID, and Sequence Number are configurable at the time of installation. Contact your Project Manager for more information.

The retail-transaction-id is an 11-46 digit number that consists of the following:

  • 1-12 digit Location ID (leading zeroes added if necessary)

  • 1-8 digit Register ID (leading zeroes added if necessary)

  • 8 digit Business Date (YYYYMMDD)

  • 1-18 digit Transaction Sequence Number (leading zeroes added if necessary)

Item Identification

When a transaction is posted, it is important to be able to access all pertinent information about an item for the purpose of loyalty points, rewards, promotional responses, and customer purchase history. To make it easier to find this information, the client can send either the ItemID or the ScanID in the <ItemID> tag in the request.

The application will first search assuming the <ItemID> is the Item ID. If the item is not found, the application searches again assuming the <ItemID> is the Scan ID. If the item is still not found, the application records the line item data provided and updates customer & promotion histories. Loyalty points may or may not be calculated depending upon how the loyalty program item rules were defined.

Line Item Filters

Customer Engagement provides you with the means of ignoring certain types of Line Items when processing POS logs. The types of Line Items that are ignored are set up when Customer Engagement is implemented and are configurable by organization.

Filtered Line Items are skipped and not recorded in Customer Engagement for any customer histories, loyalty or promotion calculations.

There are three line item filters available in Customer Engagement:

  • Transaction Line ItemType Removal List - Provides the ability to filter out certain types of line items.

  • Line Item Action Type Removal List - Provides the ability to filter out certain line items, based on the Action attribute.

  • Line Item Attribute Type Removal List - Provides the ability to filter out certain line items, based on the ItemType attribute.

Refer to the Customer Engagement Implementation Guide, or contact your Project Manager for more information on Line Item filter configuration.

Fields

The elements in the table below are the elements/attributes that may be used in a Post POSLog Transaction request, or in a POS Log. These are the XML elements that Customer Engagement will recognize and process. The sample requests and POS Logs show the placement of these elements/attributes. Not all of these elements/attributes have to be used in any one request or POS Log.

Some POS systems will have additional XML elements that are used and will appear in a POS Log. Customer Engagement will ignore these POS specific elements.

XML Tag Comments

<Transaction CancelFlag=" "

CancelFlag: True = Canceled at POS, otherwise False.

Action=" ">

Action: PostTransaction, PointRecovery

<SequenceNumber>

Sequential number for transaction assigned by POS.

<BusinessDayDate>

Business day/date of transaction. May or may not agree with beginning/ending date.

<BeginDateTime>

Beginning date/time of transaction.

<EndDateTime>

Ending date/time of transaction.

<OriginalBusinessDate>

Business day/date used in loyalty point calculations.

<CurrencyCode>

Currency used in transaction. Should correspond to codes in dtv_currency_typcode database table.

<OperatorID>

POS operator.

<RetailStoreID>

Retail location where transaction took place.

<WorkstationID>

Workstation/register/POS where transaction is recorded.

<RetailTransaction TypeCode=""

TypeCode: Type of transaction (for example, Transaction, Summary, or NonResettableAmounts).

TransactionStatus="">

TransactionStatus: Status of the transaction. can be anything (e.g. InProcess, Subtotal, Suspended, SuspendedRetrieved, SuspendedDeleted, Totaled, TransactionVoided, PostVoided, Delivered, Waste, Projection, Failed, Unknown).

<TransactionLink ReasonCode=" ">

Used for voids or returns. All four are required.

ReasonCode: Action performed (e.g. Return or Void).

<RetailStoreID>

Retail location where original transaction took place.

<WorkStationID>

POS station where original transaction was processed.

<SequenceNumber>

POS-generated transaction sequence number of original transaction.

<BusinessDayDate>

Day/date of original transaction.

<Total

Total for transaction.

TotalType="">

TotalType: Type of total - TransactionGrandAmount, TransactionNetAmount, or TransactionTaxAmount.

<Customer>

Contains customer information

<CustomerID>

-OR-

<AccountNumber>

Customer Engagement Customer ID. Interchangeable with <AccountNumber>.

Customer Engagement Customer ID. Interchangeable with <CustomerID>.

<AlternateKey TypeCode="">

TypeCode: The type of alternate key (for example, EMAIL, PHONE, TWCUSTID, etc.) These values must be in the cst_alt_key_typcode database table.

<AlternateID>

Unique number/code for the specific type of alternate key.

<CustomerAccount>

<CardNumber>

Card Number. Can be a Loyalty, Award, or Tender Card Number. Interchangeable with <LoyaltyAccountID>.

<LoyaltyAccount TypeCode="">

"LOYALTY"

<LoyaltyAccountID>

Card Number. Can be a Loyalty, Award, or Tender Card Number. Interchangeable with <CardNumber>.

<LineItem

Represents an element of a transaction. This can be sale, tax, tender, and so on.

VoidFlag="">

VoidFlag: True/False - Indicates line item was voided at POS.

<SequenceNumber>

Sequential number for line item assigned by POS.

<BeginDateTime>

Beginning Date/Time for this particular line item.

<EndDateTime>

Ending Date/Time for this particular line item.

<RetailPriceModifier VoidFlag="">

VoidFlag: True/False - Indicates whether price modification was voided at POS.

<SequenceNumber>

Sequence number of price modifier. Assigned by POS.

<Amount

Amount of price modification.

Action="">

Action: Subtract, Add, or Replace.

<PromotionID>

Code for promotion driving price modification.

<ReasonCode>

Reason for price modification.

<Coupon>

Item-specific coupon.

<ScanCode>

Scan Code of the coupon.

<Tax>

<TaxableAmount>

Amount of transaction that is taxable.

<Amount>

Amount of tax.

<TaxExemption>

<CustomerExemptionID>

Tax exemption ID

<ExemptTaxAmount>

Amount of tax that is tax exempt.

<TaxOverride>

<NewTaxPercent>

Override tax percent.

<NewTaxAmount>

Override tax amount.

<ReasonCode>

Reason for tax override.

<Tender

Payment or change/refund (negative amount) to customer.

TenderType="cash">

Type of tender = cash

<TenderID>

Identifies Tender Type (for example, USD_CURRENCY).

<Amount>

Amount of payment.

<Tender

Payment or refund (negative amount) to customer.

TenderType="Credit Card">

Type of tender = Credit Card

<TenderID>

Identifies Tender Type (for example, MASTERCARD)

<Amount>

Amount of payment

<Authorization>

<AuthorizationCode>

Code from credit card processor authorizing charge.

<AdjudicationCode>

Adjudication Code.

<CreditDebit>

<PrimaryAccountNumber>

The credit/debit card number.

<Tender

Payment or refund (negative amount) to customer.

TenderType="Check">

Type of tender = Check

<TenderID>

Identifies TenderType (that is, CHECK)

<Amount>

Amount applied to the tender.

<Check>

<AccountNumber>

Checking account number.

<Tender

Payment or refund (negative amount) to customer.

TenderType="Coupon">

Type of tender = Coupon

<TenderID>

Identifies Tender Type (that is, COUPON)

<Amount>

Amount applied to the tender.

<Coupon>

<ScanCode>

Scan Code of the coupon.

<Tender

TenderType="GiftCertificate">

<TenderID>

Identifies Tender Type (that is, GIFT_CERTIFICATE)

<Amount>

Amount applied to the tender.

<Voucher>

<FaceValueAmount>

Original value.

<SerialNumber>

Serial number if any.

<ExpirationDate>

Expiration date of gift certificate.

<UnspentAmount>

Amount still remaining on the gift certificate.

<Tender

Payment or refund (negative amount) to customer.

TenderType="Giftcard">

Type of tender = Giftcard

<TenderID>

Identifies Tender Type (that is, GIFT_CARD)

<Amount>

The amount to be subtracted from the gift card.

<GiftCard>

<CardNumber>

Number of gift card.

<DateSold>

Date the gift card was sold.

<Authorization>

<AuthorizationCode>

Authorization Code.

<AdjudicationCode>

Adjudication Code.

<Sale

-or-

Sale transaction

<CustomerOrderForPickup

-or-

Customer order for pickup transaction.

<PreviousLayaway

-or-

Previous layaway transaction.

<CustomerOrderForDelivery

-or-

Customer order for delivery transaction.

<SaleForDelivery

-or-

Sale for delivery transaction.

<PreviousCustomerOrder

Previous customer order transaction.

All of the transaction types above have the following attributes and elements:

ItemType =""

ItemType: Type of item being sold. Can be anything (for example, Stock or Fee). If ItemType is not Stock, the nonPhysicalItemFlag is set to true. This may affect Loyalty Points awarded.

Action=" ">

Action: Completed or canceled.

<ItemID>

Identification number/code of item being sold.

<UnitCostPrice>

Amount each item cost the retail location.

<RegularSalesUnitPrice>

Regular price.

<ActualSalesUnitPrice>

Regular price minus price modification (if any).

<ExtendedAmount>

ActualSalesUnitPrice * Quantity

<Quantity>

Number of items being sold.

<PercentageOfItem>

Used for commissions.

<AssociateID>

Associate receiving commission.

<Percentage>

Percentage of total that is the commission.

<RetailPriceModifier VoidFlag="">

VoidFlag: True/False - Indicates whether price modification was voided at POS.

<SequenceNumber>

Sequence number of price modifier. Assigned by POS.

<Amount

Amount of price modification.

Action="">

Action: Add, Subtract, Replace.

<PromotionID>

Code for promotion driving price modification.

<ReasonCode>

Reason for price modification.

<Coupon>

Item-specific coupon.

<ScanCode>

Scan Code of the coupon.

<Return ItemType=""

ItemType: Type of item being returned. Can be anything (for example, Stock or Fee).

Action=" ">

Action: Completed or canceled.

<ItemID>

ID number/code of the item/object.

<UnitCostPrice>

Amount each item cost the retail location.

<RegularSalesUnitPrice>

Regular price

<ActualSalesUnitPrice>

Regular price minus price modification (if any). Negative number for returns.

<ExtendedAmount>

ActualSalesUnitPrice * Quantity

<Quantity>

Number of items being purchased.

<PercentageOfItem>

Used for commissions.

<AssociateID>

Associate receiving commission.

<Percentage>

Percentage of total that is the commission.

<Reason>

The reason the item was returned.

<RetailPriceModifier VoidFlag="">

VoidFlag: True/False - Indicates price modification was voided at POS.

<SequenceNumber>

Sequence number of price modifier. Assigned by POS.

<Amount

The amount of the price modification.

Action="">

Action: Add, Subtract, or Replace.

<PromotionID>

ID of promotion driving price modification.

<ReasonCode>

Reason for price modification.

<Coupon>

Item-specific coupon.

<ScanCode>

Scan Code of the coupon.

<Reason>

Return reason code for Unverified Returns.

<ReturnType>

Type of return: VERIFIED or UNVERIFIED.

<TransactionLink ReasonCode=" ">

Refers to the original transaction. ReasonCode: Return.

<RetailStoreID>

Retail location where original transaction took place.

<WorkstationID>

POS station where original transaction was processed.

<SequenceNumber>

POS-generated transaction sequence number of original transaction.

<BusinessDayDate>

Day/date of original transaction.

Post POSLog Transaction

The purpose of this action is to post the line items from a sales transaction to the database.

Request

Each POS Log transaction must contain the elements that make up the Retail Transaction ID (see Retail Transaction ID), and at least one valid transaction line item.

Note:

Any data element or attribute not included in a request will result in a null value being written to the database.

  • If there is a Tax Override in the line item, the OverrideFlag is set to True.

  • If the line item is a Return, the ReturnFlag is set to True and the LineItemTypeCode is set to Return.

Example

          <Quantity>1</Quantity>
          <PercentageOfItem>
            <AssociateID><ASSOCIATE_ID></AssociateID>
            <Percentage>5</Percentage>
          </PercentageOfItem>
           <!-- Retail price adjustment -->
          <RetailPriceModifier VoidFlag="false">
            <SequenceNumber>1</SequenceNumber>
            <Amount Action="Subtract">24.60</Amount>
            <PromotionID><PROMOTION_ID></PromotionID>
            <ReasonCode>Summer Clearance</ReasonCode>
            <Coupon>
              <ScanCode>123456</ScanCode>
            </Coupon>
            <CardNumber/>
          </RetailPriceModifier>
        </Sale>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Return -->
        <SequenceNumber>3</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Return ItemType="Stock" Action="Completed">
          <ItemID><ITEM_ID></ItemID>
          <UnitCostPrice>32.99</UnitCostPrice>
          <RegularSalesUnitPrice>79.99</RegularSalesUnitPrice>
          <ActualSalesUnitPrice>-72.00</ActualSalesUnitPrice>
          <ExtendedAmount>-72.00</ExtendedAmount>
          <Quantity>1</Quantity>
          <PercentageOfItem>
            <AssociateID><ASSOCIATE_ID></AssociateID>
            <Percentage>5</Percentage>
          </PercentageOfItem>
          <RetailPriceModifier VoidFlag="false">
            <SequenceNumber>1</SequenceNumber>
            <Amount Action="Subtract">-7.99</Amount>
            <PromotionID><PROMOTION_ID></PromotionID>
            <ReasonCode>Summer Clearance</ReasonCode>
            <Coupon>
              <ScanCode><SCAN_CODE></ScanCode>
            </Coupon>
          </RetailPriceModifier>
          <Reason>Return</Reason>
          <ReturnType>VERIFIED</ReturnType>
          <!-- For Unverified Returns-remove TransactionLink Info -->
          <TransactionLink ReasonCode="Return">
            <RetailStoreID><STORE_ID></RetailStoreID>
            <WorkstationID><WORKSTATION_ID></WorkstationID>
            <SequenceNumber>10000001</SequenceNumber>
            <BusinessDayDate>2011-10-09</BusinessDayDate>
          </TransactionLink>
        </Return>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tax Line  -->
        <SequenceNumber>4</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tax TaxType="OH Tax">
          <TaxableAmount>449.39</TaxableAmount>
          <Amount>29.21</Amount>
          <TaxOverride>
            <NewTaxPercent>.065</NewTaxPercent>
            <NewTaxAmount>29.21</NewTaxAmount>
            <ReasonCode>New Tax Rate</ReasonCode>
          </TaxOverride>
          <TaxExemption>
            <CustomerExemptionID><EXEMPTION_ID></CustomerExemptionID>
            <ExemptTaxAmount>0</ExemptTaxAmount>
          </TaxExemption>
        </Tax>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Credit Card -->
        <SequenceNumber>5</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="CreditDebit">
          <TenderID>MASTERCARD</TenderID>
          <Amount>100.00</Amount>
          <Authorization>
            <AuthorizationCode><AUTH_CODE></AuthorizationCode>
            <AdjudicationCode>ManualAuth</AdjudicationCode>
          </Authorization>
          <CreditDebit>
            <PrimaryAccountNumber><ACCOUNT_NUMBER></PrimaryAccountNumber>
          </CreditDebit>
        </Tender>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Gift Card -->
        <SequenceNumber>6</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="GiftCard">
          <TenderID>GIFT_CARD</TenderID>
          <Amount>50.00</Amount>
          <GiftCard>
            <CardNumber><CARD_NUMBER></CardNumber>
            <DateSold>2015-10-10</DateSold>
            <Authorization>
              <AuthorizationCode><AUTH_CODE></AuthorizationCode>
              <AdjudicationCode>ELECTRONICAUTH</AdjudicationCode>
            </Authorization>
          </GiftCard>
        </Tender>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Gift Certificate -->
        <SequenceNumber>7</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="Voucher">
          <TenderID>GIFT_CERTIFICATE</TenderID>
          <Amount>100.00</Amount>
          <Voucher TypeCode="Gift Certificate">
            <FaceValueAmount>150</FaceValueAmount>
            <SerialNumber><SERIAL_NUMBER></SerialNumber>
            <ExpirationDate>2012-09-28</ExpirationDate>
            <UnspentAmount>50.00</UnspentAmount>
          </Voucher>
        </Tender>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Check -->
        <SequenceNumber>8</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="Check">
          <TenderID>CHECK</TenderID>
          <Amount>100.00</Amount>
          <Check>
            <AccountNumber><ACCOUNT_NUMBER></AccountNumber>
          </Check>
        </Tender>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Coupon -->
        <SequenceNumber>9</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="Coupon">
          <TenderID>COUPON</TenderID>
          <Amount>100.00</Amount>
          <Coupon>
            <ScanCode><SCAN_CODE></ScanCode>
          </Coupon>
        </Tender>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Cash -->
        <SequenceNumber>10</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="Cash">
          <TenderID>USD_CURRENCY</TenderID>
          <Amount>30.00</Amount>
        </Tender>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Cash (Change) -->
        <SequenceNumber>11</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="Cash">
          <TenderID>USD_CURRENCY</TenderID>
          <Amount>-1.40</Amount>
        </Tender>
      </LineItem>
      <!-- Total Line -->
      <Total TotalType="TransactionGrandAmount">478.60</Total>
      <Total TotalType="TransactionNetAmount">449.39</Total>
      <Total TotalType="TransactionTaxAmount">29.21</Total>
      <!-- Customer Information Lines -->
      <Customer>
        <!-- Lookup customer by Relate Customer ID -->
        <CustomerID></CustomerID>
        <AccountNumber></AccountNumber>
        <!-- Lookup customer by Customer Alternate Keys -->
        <AlternateKey TypeCode="XSTORE_ID">
          <AlternateID><ALTERNATE_ID></AlternateID>
        </AlternateKey>
      </Customer>
      <CustomerAccount>
        <!-- Lookup customer by Loyalty Card Number -->
        <CardNumber></CardNumber>
        <LoyaltyAccount TypeCode="LOYALTY">
          <LoyaltyAccountID></LoyaltyAccountID>
        </LoyaltyAccount>
      </CustomerAccount>
    </RetailTransaction>
  </Transaction>
</POSLog>

POS Logs

Batch Processing supports posting multiple transactions in one XML file.

Request

Each POS Log transaction must contain the elements that make up the Retail Transaction ID (see Retail Transaction ID), and at least one valid transaction line item.

Example

The following example shows the locations of the request elements. All elements in the example request are recognized by Customer Engagement. Some POS systems will have additional elements in their POS Logs; these additional elements will be ignored by Customer Engagement.

The example below shows a single transaction. If you are processing multiple transactions in a batch file, include multiple <Transaction> elements.

<?xml version="1.0" encoding="UTF-8"?>
<POSLog>
  <!-- Valid Action="PostTransaction, PointRecovery" -->
  <Transaction CancelFlag="false" Action="PostTransaction"
      TransactionType="RETAIL_SALE">
    <RetailStoreID><STORE_ID></RetailStoreID>
    <WorkstationID><WORKSTATION_ID></WorkstationID>
    <SequenceNumber>10000000</SequenceNumber>
    <BusinessDayDate>2011-10-10</BusinessDayDate>
    <BeginDateTime>2011-10-10T17:33:35</BeginDateTime>
    <EndDateTime>2011-10-10T17:38:53</EndDateTime>
    <OperatorID>100</OperatorID>
    <CurrencyCode>USD</CurrencyCode>
    <PosTransactionProperties>
      <PosTransactionPropertyCode>Transaction_Originated_From
      </PosTransactionPropertyCode>
      <PosTransactionPropertyValue>WEBSITE
      </PosTransactionPropertyValue>
    </PosTransactionProperties>
    <RetailTransaction Version="2.1" TypeCode="TRANSACTION"
        TransactionStatus="DELIVERED">
      <LineItem VoidFlag="false">
        <SequenceNumber>1</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <!-- Valid Line Items are: <Sale>, <SaleForDelivery>,
             <CustomerOrderForDelivery>, -->
        <!-- <CustomerOrderForPickup>, <PreviousLayaway>,
             <PreviousCustomerOrder> -->
          <ItemID>9999222200010</ItemID>
        <Sale ItemType="Stock" Action="Completed">
          <UnitCostPrice>389.99</UnitCostPrice>
          <RegularSalesUnitPrice>545.99</RegularSalesUnitPrice>
          <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>
          <ExtendedAmount>521.39</ExtendedAmount>
          <Quantity>1</Quantity>
          <PercentageOfItem>
            <AssociateID>101</AssociateID>
            <Percentage>5</Percentage>
          </PercentageOfItem>
           <!-- Retail price adjustment -->
          <RetailPriceModifier VoidFlag="false">
            <SequenceNumber>1</SequenceNumber>
            <Amount Action="Subtract">24.60</Amount>
            <PromotionID>287:61::Coupon</PromotionID>
            <ReasonCode>Summer Clearance</ReasonCode>
            <Coupon>
              <ScanCode><SCAN_CODE></ScanCode>
            </Coupon>
            <CardNumber><CARD_NUMBER></CardNumber>
          </RetailPriceModifier>
        </Sale>
      </LineItem>
      <LineItem VoidFlag="false">
      <LineItem VoidFlag="false">
        <!-- Return -->
        <SequenceNumber>3</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Return ItemType="Stock" Action="Completed">
          <ItemID>9999111112345</ItemID>
          <UnitCostPrice>32.99</UnitCostPrice>
          <RegularSalesUnitPrice>79.99</RegularSalesUnitPrice>
          <ActualSalesUnitPrice>-72.00</ActualSalesUnitPrice>
          <ExtendedAmount>-72.00</ExtendedAmount>
          <Quantity>1</Quantity>
          <PercentageOfItem>
            <AssociateID>105</AssociateID>
            <Percentage>5</Percentage>
          </PercentageOfItem>
          <RetailPriceModifier VoidFlag="false">
            <SequenceNumber>1</SequenceNumber>
            <Amount Action="Subtract">-7.99</Amount>
            <PromotionID><PROMOTION_ID></PromotionID>
            <ReasonCode>Summer Clearance</ReasonCode>
            <Coupon>
              <ScanCode><SCAN_CODE></ScanCode>
            </Coupon>
          </RetailPriceModifier>
          <Reason>Return</Reason>
          <ReturnType>VERIFIED</ReturnType>
          <!-- For Unverified Returns-remove TransactionLink Info -->
          <TransactionLink ReasonCode="Return">
            <RetailStoreID><STORE_ID></RetailStoreID>
            <WorkstationID><WORKSTATION_ID></WorkstationID>
            <SequenceNumber>10000001</SequenceNumber>
            <BusinessDayDate>2011-10-09</BusinessDayDate>
          </TransactionLink>
        </Return>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tax Line  -->
        <SequenceNumber>4</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tax TaxType="OH Tax">
          <TaxableAmount>449.39</TaxableAmount>
          <Amount>29.21</Amount>
          <TaxOverride>
            <NewTaxPercent>.065</NewTaxPercent>
            <NewTaxAmount>29.21</NewTaxAmount>
            <ReasonCode>New Tax Rate</ReasonCode>
          </TaxOverride>
          <TaxExemption>
            <CustomerExemptionID><EXEMPTION_ID></CustomerExemptionID>
            <ExemptTaxAmount>0</ExemptTaxAmount>
          </TaxExemption>
        </Tax>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Credit Card -->
        <SequenceNumber>5</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="CreditDebit">
          <TenderID>MASTERCARD</TenderID>
          <Amount>100.00</Amount>
          <Authorization>
            <AuthorizationCode><AUTH_CODE></AuthorizationCode>
            <AdjudicationCode>ManualAuth</AdjudicationCode>
          </Authorization>
          <CreditDebit>
            <PrimaryAccountNumber><ACCOUNT_NUMBER></PrimaryAccountNumber>
          </CreditDebit>
        </Tender>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Gift Card -->
        <SequenceNumber>6</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="GiftCard">
          <TenderID>GIFT_CARD</TenderID>
          <Amount>50.00</Amount>
          <GiftCard>
            <CardNumber><CARD_NUMBER></CardNumber>
            <DateSold>2015-10-10</DateSold>
            <Authorization>
              <AuthorizationCode><AUTH_CODE></AuthorizationCode>
              <AdjudicationCode>ELECTRONICAUTH</AdjudicationCode>
            </Authorization>
          </GiftCard>
        </Tender>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Gift Certificate -->
        <SequenceNumber>7</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="Voucher">
          <TenderID>GIFT_CERTIFICATE</TenderID>
          <Amount>100.00</Amount>
          <Voucher TypeCode="Gift Certificate">
            <FaceValueAmount>150</FaceValueAmount>
            <SerialNumber><SERIAL_NUMBER></SerialNumber>
            <ExpirationDate>2012-09-28</ExpirationDate>
            <UnspentAmount>50.00</UnspentAmount>
          </Voucher>
        </Tender>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Check -->
        <SequenceNumber>8</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="Check">
          <TenderID>CHECK</TenderID>
          <Amount>100.00</Amount>
          <Check>
            <AccountNumber><ACCOUNT_NUMBER></AccountNumber>
          </Check>
        </Tender>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Coupon -->
        <SequenceNumber>9</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="Coupon">
          <TenderID>COUPON</TenderID>
          <Amount>100.00</Amount>
          <Coupon>
            <ScanCode><SCAN_CODE></ScanCode>
          </Coupon>
        </Tender>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Cash -->
        <SequenceNumber>10</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="Cash">
          <TenderID>USD_CURRENCY</TenderID>
          <Amount>30.00</Amount>
        </Tender>
      </LineItem>
      <LineItem VoidFlag="false">
        <!-- Tender Line - Cash (Change) -->
        <SequenceNumber>11</SequenceNumber>
        <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
        <EndDateTime>2011-10-10T17:38:53</EndDateTime>
        <Tender TenderType="Cash">
          <TenderID>USD_CURRENCY</TenderID>
          <Amount>-1.40</Amount>
        </Tender>
      </LineItem>
      <!-- Total Line -->
      <Total TotalType="TransactionGrandAmount">478.60</Total>
      <Total TotalType="TransactionNetAmount">449.39</Total>
      <Total TotalType="TransactionTaxAmount">29.21</Total>
      <!-- Customer Information Lines -->
      <Customer>
        <!-- Lookup customer by Relate Customer ID -->
        <CustomerID></CustomerID>
        <AccountNumber></AccountNumber>
        <!-- Lookup customer by Customer Alternate Keys -->
        <AlternateKey TypeCode="XSTORE_ID">
          <AlternateID><ALTERNATE_ID></AlternateID>
        </AlternateKey>
      </Customer>
      <CustomerAccount>
        <!-- Lookup customer by Loyalty Card Number -->
        <CardNumber></CardNumber>
        <LoyaltyAccount TypeCode="LOYALTY">
          <LoyaltyAccountID></LoyaltyAccountID>
        </LoyaltyAccount>
      </CustomerAccount>
    </RetailTransaction>  </Transaction>
</POSLog>

Sales

Refer to "Fields" for descriptions of individual XML elements.

Sale

The <Sale> element in the example shown here is a simple sale with no modifications. The <Sale> element is always contained within a <LineItem> element.

...<LineItem VoidFlag="false">
  <SequenceNumber>1</SequenceNumber>
  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
  <EndDateTime>2011-10-10T17:38:53</EndDateTime>
  <Sale ItemType="Stock" Action="Completed">
    <ItemID>9999222212345</ItemID>
    <UnitCostPrice>389.99</UnitCostPrice>
    <RegularSalesUnitPrice>521.39</RegularSalesUnitPrice>
    <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>
    <ExtendedAmount>521.39</ExtendedAmount>
    <Quantity>1</Quantity>
  </Sale>
</LineItem>
...

Sale with Commission

In the following 5% Sales Commission example, employee 101 gets a 5% sales commission on the sale of item 9999222200010. The commission part of the code is <PercentageOfItem>.

...
<LineItem VoidFlag="false">
  <SequenceNumber>1</SequenceNumber>
  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>
  <EndDateTime>2011-10-10T17:38:53</EndDateTime>
  <Sale ItemType="Stock" Action="Completed">
    <ItemID>9999222212345</ItemID>
    <UnitCostPrice>389.99</UnitCostPrice>
    <RegularSalesUnitPrice>521.39</RegularSalesUnitPrice>
    <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>
    <ExtendedAmount>521.39</ExtendedAmount>
    <Quantity>1</Quantity>
    <PercentageOfItem>
      <AssociateID>101</AssociateID>
      <Percentage>5</Percentage>
    </PercentageOfItem>
  </Sale>
</LineItem>
...

Sale with Discount

The following Sale with Discount example shows a sale with a discount of $24.60 because of a Summer Clearance promotion. The discount is reflected in the <ActualSalesUnitPrice> and the <ExtendedAmount>.

...<LineItem VoidFlag="false">  <SequenceNumber>1</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Sale ItemType="Stock" Action="Completed">    <ItemID>9999222212345</ItemID>    <UnitCostPrice>389.99</UnitCostPrice>    <RegularSalesUnitPrice>545.99</RegularSalesUnitPrice>    <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>    <ExtendedAmount>521.39</ExtendedAmount>    <Quantity>1</Quantity>    <RetailPriceModifier VoidFlag="false">      <SequenceNumber>1</SequenceNumber>      <Amount Action="Subtract">24.60</Amount>      <PromotionID><ID></PromotionID>      <ReasonCode>Summer Clearance</ReasonCode>      <Coupon>        <ScanCode><SCAN_CODE></ScanCode>      </Coupon>    </RetailPriceModifier>  </Sale></LineItem>...

Buy X Get Y Promotion

The following example shows a sale with a Buy X Get Y promotion: buy a necklace at regular price and get a set of earrings at 50% off. Note that there is a <LineItem> element for each item. This is to show that each item is part of the same promotion even though $0.00 is the discount for the necklace. The discount for the earrings is reflected in the <ActualSalesUnitPrice> and the <ExtendedAmount>.

...<LineItem VoidFlag="false">  <SequenceNumber>1</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <!-- Buy Necklace at regular price -->  <Sale ItemType="Stock" Action="Completed">    <ItemID>9999222212345</ItemID>    <UnitCostPrice>389.99</UnitCostPrice>    <RegularSalesUnitPrice>521.39</RegularSalesUnitPrice>    <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>    <ExtendedAmount>521.39</ExtendedAmount>    <Quantity>1</Quantity>    <PercentageOfItem>      <AssociateID>101</AssociateID>      <Percentage>5</Percentage>    </PercentageOfItem>    <RetailPriceModifier VoidFlag="false">      <SequenceNumber>1</SequenceNumber>      <Amount Action="Subtract">0</Amount>      <PromotionID>287:61::Coupon</PromotionID>      <ReasonCode>Summer Clearance</ReasonCode>    </RetailPriceModifier>  </Sale></LineItem><LineItem VoidFlag="false">  <SequenceNumber>2</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <!-- Get Earrings @ 50% off -->  <Sale ItemType="Stock" Action="Completed">    <ItemID>9999222212345</ItemID>    <UnitCostPrice>389.99</UnitCostPrice>    <RegularSalesUnitPrice>521.39</RegularSalesUnitPrice>    <ActualSalesUnitPrice>260.70</ActualSalesUnitPrice>    <ExtendedAmount>260.70</ExtendedAmount>    <Quantity>1</Quantity>    <PercentageOfItem>      <AssociateID>101</AssociateID>      <Percentage>5</Percentage>    </PercentageOfItem>    <RetailPriceModifier VoidFlag="false">      <SequenceNumber>1</SequenceNumber>      <Amount Action="Subtract">260.69</Amount>      <PromotionID><PROMOTION_ID></PromotionID>      <ReasonCode>Summer
Clearance</ReasonCode>    </RetailPriceModifier>  </Sale></LineItem>...

Sale with Price Override

The following example shows a sale with a price override (highlighted) of $425.00 because of a Summer Clearance promotion. The new price is reflected in the <ActualSalesUnitPrice> and the <ExtendedAmount>.

...<LineItem VoidFlag="false">  <SequenceNumber>1</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Sale ItemType="Stock" Action="Completed">    <ItemID>9999222212345</ItemID>    <UnitCostPrice>389.99</UnitCostPrice>    <RegularSalesUnitPrice>545.99</RegularSalesUnitPrice>    <ActualSalesUnitPrice>425.00</ActualSalesUnitPrice>    <ExtendedAmount>425.00</ExtendedAmount>    <Quantity>1</Quantity>    <RetailPriceModifier VoidFlag="false">      <SequenceNumber>1</SequenceNumber>      <Amount Action="Replace">425.00</Amount>      <PromotionID>2<PROMOTION_ID></PromotionID>      <ReasonCode>Summer Clearance</ReasonCode>      <Coupon>        <ScanCode><SCAN_CODE></ScanCode>      </Coupon>    </RetailPriceModifier>  </Sale></LineItem>...

Sale - Non-Physical Item

The following example shows a sale for a non-physical item. The <Sale> element for a non-physical item differs from that of a physical item only in the ItemType attribute.

Note:

The <Description> element (highlighted below) is not recognized by Customer Engagement. It is included in the example for reference.

...<LineItem VoidFlag="false">  <SequenceNumber>1</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Sale ItemType="MISC CHARGE" Action="Completed">    <ItemID>99999</ItemID>    <Description>Delivery Fee</Description>    <UnitCostPrice>0</UnitCostPrice>    <RegularSalesUnitPrice>15</RegularSalesUnitPrice>    <ActualSalesUnitPrice>15</ActualSalesUnitPrice>    <ExtendedAmount>15</ExtendedAmount>    <Quantity>1</Quantity>  </Sale></LineItem>...

Sale for Delivery

A Sale for Delivery is a is a type of special order where the item purchased is not in stock and will be delivered to an address specified by the customer.

Note:

The <Delivery> element (highlighted below) is not recognized by Customer Engagement.

Sale for Delivery

...<LineItem VoidFlag="false">  <SequenceNumber>1</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <SaleForDelivery ItemType="Stock" Action="Completed">    <ItemID>9999222212345</ItemID>    <UnitCostPrice>389.99</UnitCostPrice>    <RegularSalesUnitPrice>521.39</RegularSalesUnitPrice>    <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>    <ExtendedAmount>521.39</ExtendedAmount>    <Quantity>1</Quantity>    <Delivery>      <Name><EXAMPLE_NAME></Name>      <Address>        <AddressLine><EXAMPLE_ADDRESS></AddressLine>        <City>Solon</City>        <State>OH</State>        <PostalCode>44139</PostalCode>        <CountryCode>US</CountryCode>      </Address>      <TelephoneNumber>4405550110</TelephoneNumber>      <TrackingNumber><TRACKING_NUMBER></TrackingNumber>    </Delivery>  </SaleForDelivery></LineItem>...

Customer Order for Delivery

Note:

The <Delivery> element (highlighted below) is not recognized by Customer Engagement. This section is shown for reference purposes.

...<LineItem VoidFlag="false">  <SequenceNumber>1</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <CustomerOrderForDelivery ItemType="Stock" Action="Completed">    <ItemID>9999222212345</ItemID>    <UnitCostPrice>389.99</UnitCostPrice>    <RegularSalesUnitPrice>521.39</RegularSalesUnitPrice>    <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>    <ExtendedAmount>521.39</ExtendedAmount>    <Quantity>1</Quantity>    <Delivery>      <Name>Beverly Example</Name>      <Address>        <AddressLine><ADDRESS EXAMPLE></AddressLine>        <City>Solon</City>        <State>OH</State>        <PostalCode>44139</PostalCode>        <CountryCode>US</CountryCode>      </Address>      <TelephoneNumber>4405550111</TelephoneNumber>      <TrackingNumber><TRACKING_NUMBER></TrackingNumber>    </Delivery>  </CustomerOrderForDelivery></LineItem>...

Previous Customer Order

A Previous Customer Order typically closes a transaction where the customer has already ordered and/or paid for the item and the item is now being picked up or delivered.

Note:

The <From> and <AccountNumber> elements are not recognized by Customer Engagement. They are shown here for reference.

...<LineItem VoidFlag="false">  <SequenceNumber>1</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <PreviousCustomerOrder ItemType="Stock" Action="Completed">    <ItemID>9999222212345</ItemID>    <UnitCostPrice>389.99</UnitCostPrice>    <RegularSalesUnitPrice>521.39</RegularSalesUnitPrice>    <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>    <ExtendedAmount>521.39</ExtendedAmount>    <Quantity>1</Quantity>    <From>99902</From>    <AccountNumber><ACCOUNT_NUMBER></AccountNumber>  </PreviousCustomerOrder></LineItem>...

Customer Order for Pickup

A Customer Order for Pickup would typically occur when a customer purchases an item that is not located at the retail location or the item is out of stock. When the item arrives at the retail location, the customer would then pick the item up and a Previous Customer Order will be processed to close the transaction.

To avoid duplicate sale transactions in Customer Engagement, this sale type can be excluded from Customer Engagement by specifying "CustomerOrderForPickup" in the Transaction Line ItemType Removal List (see Line Item Filters).

Note:

The <From> and <AccountNumber> elements are not recognized by Customer Engagement. They are shown here for reference.

...<LineItem VoidFlag="false">  <SequenceNumber>1</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <CustomerOrderForPickup ItemType="Stock" Action="Completed">    <ItemID>9999222212345</ItemID>    <UnitCostPrice>389.99</UnitCostPrice>    <RegularSalesUnitPrice>521.39</RegularSalesUnitPrice>    <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>    <ExtendedAmount>521.39</ExtendedAmount>    <Quantity>1</Quantity>    <From>99902</From>    <AccountNumber><ACCOUNT_NUMBER></AccountNumber>  </CustomerOrderForPickup></LineItem>...

Previous Layaway

Previous Layaway is used to complete or cancel a layaway.

Complete

The following example shows a layaway completion as indicated by Action="Completed" (highlighted below).

Note:

The <From> and <AccountNumber> elements are not recognized by Customer Engagement. They are shown here for reference.

...<LineItem VoidFlag="false">  <SequenceNumber>1</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <PreviousLayaway ItemType="Stock" Action="Completed">    <ItemID>9999222212345</ItemID>    <UnitCostPrice>389.99</UnitCostPrice>    <RegularSalesUnitPrice>521.39</RegularSalesUnitPrice>    <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>    <ExtendedAmount>521.39</ExtendedAmount>    <Quantity>1</Quantity>    <From><FROM></From>    <AccountNumber><ACCOUNT_NUMBER></AccountNumber>  </PreviousLayaway></LineItem>...

Cancelled

The following example shows a layaway cancellation as indicated by Action="Cancelled" (highlighted below).

Canceled items can be excluded from processing in Customer Engagement via the configuration for Line Item Action Type Removal List (see Line Item Filters).

Note:

The <From> and <AccountNumber> elements are not recognized by Customer Engagement. They are shown here for reference.

...<LineItem VoidFlag="false">  <SequenceNumber>1</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <PreviousLayaway ItemType="Stock" Action="Cancelled">    <ItemID>9999222212345</ItemID>    <UnitCostPrice>389.99</UnitCostPrice>    <RegularSalesUnitPrice>521.39</RegularSalesUnitPrice>    <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>    <ExtendedAmount>521.39</ExtendedAmount>    <Quantity>1</Quantity>    <From>99999</From>    <AccountNumber><ACCOUNT_NUMBER></AccountNumber>  </PreviousLayaway></LineItem>...

Returns

Refer to "Fields" for descriptions of individual XML elements.

Note:

A verified return is one in which the original Retail Transaction ID is known. If the original Retail Transaction ID is not known, the return is unverified.

Verified Return

The following example shows a verified return. The <TransactionLink> element ties the return back to the original transaction

...<LineItem VoidFlag="false">  <SequenceNumber>2</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Return ItemType="Stock" Action="Completed">    <ItemID>9999111112345</ItemID>    <UnitCostPrice>32.99</UnitCostPrice>    <RegularSalesUnitPrice>72.00</RegularSalesUnitPrice>    <ActualSalesUnitPrice>-72.00</ActualSalesUnitPrice>    <ExtendedAmount>-72.00</ExtendedAmount>    <Quantity>1</Quantity>    <Reason>Return</Reason>    <ReturnType>VERIFIED</ReturnType>    <TransactionLink ReasonCode="Return">      <RetailStoreID>99001</RetailStoreID>      <WorkstationID>10</WorkstationID>      <SequenceNumber>10000001</SequenceNumber>      <BusinessDayDate>2011-10-09</BusinessDayDate>    </TransactionLink>  </Return></LineItem>...

Unverified Return

The following example shows an unverified return. Note the absence of the <TransactionLink> element. This return also has a discount that must be returned

...<LineItem VoidFlag="false">  <SequenceNumber>2</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Return ItemType="Stock" Action="Completed">    <ItemID>9999111112345</ItemID>    <UnitCostPrice>32.99</UnitCostPrice>    <RegularSalesUnitPrice>72.00</RegularSalesUnitPrice>    <ActualSalesUnitPrice>-72.00</ActualSalesUnitPrice>    <ExtendedAmount>-72.00</ExtendedAmount>    <Quantity>1</Quantity>    <Reason>Return</Reason>    <ReturnType>UNVERIFIED</ReturnType>  </Return></LineItem>...

Tax

Refer to "Fields" for descriptions of individual XML elements.

Simple Tax

The following example shows a simple <Tax> element.

...<LineItem VoidFlag="false">  <!-- Simple Tax Line  -->  <SequenceNumber>3</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Tax TaxType="OH Tax">    <TaxableAmount>449.39</TaxableAmount>    <Amount>29.21</Amount>  </Tax></LineItem>...

Tax Exemption

The following example shows a tax exemption (that is, the buyer does not have to pay sales tax on the items he/she has purchased).

...<LineItem VoidFlag="false">  <!-- Tax Line with Tax Exemption -->  <SequenceNumber>3</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Tax TaxType="OH Tax">    <TaxableAmount>449.39</TaxableAmount>    <Amount>29.21</Amount>    <TaxExemption>      <CustomerExemptionID><ID></CustomerExemptionID>      <ExemptTaxAmount>100</ExemptTaxAmount>    </TaxExemption>  </Tax></LineItem>...

Tax Override

The following example shows a tax override; the cashier has entered a new tax rate and tax amount.

...<LineItem VoidFlag="false">  <!-- Tax Line  with Tax Override -->  <SequenceNumber>3</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Tax TaxType="OH Tax">    <TaxableAmount>449.39</TaxableAmount>    <Amount>29.21</Amount>    <TaxOverride>      <NewTaxPercent>.065</NewTaxPercent>      <NewTaxAmount>29.21</NewTaxAmount>      <ReasonCode>New Tax Rate</ReasonCode>    </TaxOverride>  </Tax></LineItem>...

Tenders

Refer to "Fields" for descriptions of individual XML elements.

Cash

The following example shows a cash tender using US Dollars.

...<LineItem VoidFlag="false">  <!-- Tender Line - Cash -->  <SequenceNumber>9</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Tender TenderType="Cash">    <TenderID>USD_CURRENCY</TenderID>    <Amount>30.00</Amount>  </Tender></LineItem>...

Cash (Change)

The following example shows the change returned for a cash tender using US Dollars.

...<LineItem VoidFlag="false">  <!-- Tender Line - Cash (Change) -->  <SequenceNumber>10</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Tender TenderType="Cash">    <TenderID>USD_CURRENCY</TenderID>    <Amount>-1.40</Amount>  </Tender></LineItem>...

Credit/Debit Card

The following example shows a credit card tender. It shows the <PrimaryAccountNumber> as a masked number. This number will be encrypted before being saved to the database.

...<LineItem VoidFlag="false">  <!-- Tender Line - Credit Card -->  <SequenceNumber>4</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Tender TenderType="CreditDebit">    <TenderID>MASTERCARD</TenderID>    <Amount>100.00</Amount>    <Authorization>      <AuthorizationCode><AUTH_CODE></AuthorizationCode>      <AdjudicationCode>ManualAuth</AdjudicationCode>    </Authorization>    <CreditDebit>      <PrimaryAccountNumber><ACCOUNT_NUMBER></PrimaryAccountNumber>    </CreditDebit>  </Tender></LineItem>...

Check

The following example shows a check tender.

...<LineItem VoidFlag="false">  <!-- Tender Line - Check -->  <SequenceNumber>7</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Tender TenderType="Check">    <TenderID>CHECK</TenderID>    <Amount>100.00</Amount>    <Check>      <AccountNumber><ACCOUNT_NUMBER></AccountNumber>    </Check>  </Tender></LineItem>...

Gift Card

The following example shows a gift card tender. The <CardNumber> will be encrypted before being saved to the database.

...<LineItem VoidFlag="false">  <!-- Tender Line - Gift Card -->  <SequenceNumber>5</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Tender TenderType="GiftCard">    <TenderID>GIFT_CARD</TenderID>    <Amount>50.00</Amount>    <GiftCard>      <CardNumber><CARD_NUMBER></CardNumber>      <DateSold>2015-10-10</DateSold>      <Authorization>        <AuthorizationCode><AUTH_CODE></AuthorizationCode>        <AdjudicationCode>ELECTRONICAUTH</AdjudicationCode>      </Authorization>    </GiftCard>  </Tender></LineItem>...

Gift Certificate/Voucher

The following example shows a gift certificate or voucher tender.

...<LineItem VoidFlag="false">  <!-- Tender Line - Gift Certificate -->  <SequenceNumber>6</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Tender TenderType="Voucher">    <TenderID>GIFT_CERTIFICATE</TenderID>    <Amount>100.00</Amount>    <Voucher TypeCode="Gift Certificate">      <FaceValueAmount>150</FaceValueAmount>      <SerialNumber><SERIAL_NUMBER></SerialNumber>      <ExpirationDate>2012-09-28</ExpirationDate>      <UnspentAmount>50.00</UnspentAmount>    </Voucher>  </Tender></LineItem>...

Coupon

The following example shows a coupon tender.

...<LineItem VoidFlag="false">  <!-- Tender Line  - Coupon -->  <SequenceNumber>8</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Tender TenderType="Coupon">    <TenderID>COUPON</TenderID>    <Amount>100.00</Amount>    <Coupon>      <ScanCode><SCAN_CODE></ScanCode>    </Coupon>  </Tender></LineItem>...

Customer

Refer to "Fields" for descriptions of individual XML elements.

The <Customer> element provides information to identify the customer so that the transaction details can be attributed to his/her records.

If no customer information is included in the POS Log, Customer Engagement may create a new, anonymous customer and assign the transaction to that customer. Customer Engagement provides configurable rules that determine when anonymous customers are created.

Alternate ID

The following example uses an alternate ID to identify the customer.

...<Customer>  <!-- Lookup customer by Customer Alternate Keys -->  <AlternateKey TypeCode="XSTORE_ID">    <AlternateID><ALTERNATE_ID></AlternateID>  </AlternateKey></Customer>...

Loyalty/Entitlement Card Number

The following examples each use a loyalty or entitlement card number to identify the customer. Customer Engagement will accept either format.

...<CustomerAccount>  <!-- Lookup customer by Loyalty Account -->  <LoyaltyAccount TypeCode="LOYALTY">    <LoyaltyAccountID><ACCOUNT_NUMBER></LoyaltyAccountID>  </LoyaltyAccount></CustomerAccount>......<CustomerAccount>  <!-- Lookup customer by Loyalty Account -->  <CardNumber><CARD_NUMBER></CardNumber></CustomerAccount>...

Customer Engagement Customer ID

The following example each use a Customer Engagement customer ID to identify the customer. Customer Engagement will accept either format.

...<Customer>  <!-- Lookup customer by Relate Customer ID -->  <CustomerID><CUSTOMER_NUMBER></CustomerID></Customer>......<Customer>  <!-- Lookup customer by Relate Customer ID -->  <AccountNumber><ACCOUNT_NUMBER></AccountNumber></Customer>...

Line Item Void

A Line Item Void is when the cashier cancels the sale of an item at the register.

...<LineItem VoidFlag="true">  <SequenceNumber>1</SequenceNumber>  <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>  <EndDateTime>2011-10-10T17:38:53</EndDateTime>  <Sale ItemType="Stock" Action="Completed">    <ItemID>9999222212345</ItemID>    <UnitCostPrice>389.99</UnitCostPrice>    <RegularSalesUnitPrice>521.39</RegularSalesUnitPrice>    <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>    <ExtendedAmount>521.39</ExtendedAmount>    <Quantity>1</Quantity>  </Sale></LineItem>...

Post Void

A Post Void cancels a transaction after the fact. In the following example, the <TransactionLink> element (highlighted below) identifies the transaction to be voided.

...<Transaction CancelFlag="false" TrainingModeFlag="false" OfflineFlag="false">  <RetailStoreID><STORE_ID></RetailStoreID>  <WorkstationID><WORKSTATION_ID></WorkstationID>  <SequenceNumber>10000002</SequenceNumber>  <BusinessDayDate>2011-10-10</BusinessDayDate>  <BeginDateTime>2011-10-10T13:25:20</BeginDateTime>  <EndDateTime>2011-10-10T13:25:22</EndDateTime>  <OperatorID><OPERATOR_ID></OperatorID>  <RetailTransaction Version="2.1" TypeCode="VOID"   TransactionStatus="DELIVERED">    <TransactionLink ReasonCode="Void">      <RetailStoreID><STORE_ID></RetailStoreID>      <WorkstationID><WORKSTATION_ID></WorkstationID>      <SequenceNumber>1234567890</SequenceNumber>      <BusinessDayDate>2011-10-10</BusinessDayDate>    </TransactionLink>  </RetailTransaction></Transaction>...

Canceled Sale

Canceled sales are transactions that have been canceled at the register. The Transaction CancelFlag is set to true for canceled transactions.

The XML attributes that signify a canceled transaction are highlighted in the following example.

Note:

The example below has been truncated to save space. The rest of the transaction would look like a typical transaction.

...  <Transaction CancelFlag="true" Action="PostTransaction"   TransactionType="RETAIL_SALE">    <RetailStoreID><STORE_ID></RetailStoreID>    <WorkstationID><WORKSTATION_ID></WorkstationID>    <SequenceNumber>1234567890</SequenceNumber>    <BusinessDayDate>2011-10-10</BusinessDayDate>    <BeginDateTime>2011-10-10T17:33:35</BeginDateTime>    <EndDateTime>2011-10-10T17:38:53</EndDateTime>    <OperatorID><OPERATOR_ID></OperatorID>    <CurrencyCode>USD</CurrencyCode>    <RetailTransaction Version="2.1" TypeCode="TRANSACTION"     TransactionStatus="DELIVERED">...

Suspended Transactions

If a transaction is suspended at the POS, the transaction is not normally sent to the server.

However, the Transaction Status Exclusion property can be set to prevent canceled transaction information from being processed. Adding Suspended to the Transaction Status Exclusion property prevents the server from processing the request. See the Customer Engagement Implementation Guide for more information about this configuration option.

If the suspended transaction is completed at a later date, the TransactionStatus attribute will be set to Delivered and the server will process the request normally.

Note:

The example below has been truncated to save space. The rest of the transaction would look like a typical transaction.

...<RetailTransaction Version="2.1" TypeCode="TRANSACTION" TransactionStatus="Suspended">  <LineItem VoidFlag="false">    <SequenceNumber>1</SequenceNumber>    <BeginDateTime>2011-10-10T17:38:53</BeginDateTime>    <EndDateTime>2011-10-10T17:38:53</EndDateTime>     <Sale ItemType="Stock" Action="Completed">      <ItemID>9999222212345</ItemID>      <UnitCostPrice>389.99</UnitCostPrice>      <RegularSalesUnitPrice>545.99</RegularSalesUnitPrice>      <ActualSalesUnitPrice>521.39</ActualSalesUnitPrice>      <ExtendedAmount>521.39</ExtendedAmount>      <Quantity>1</Quantity>      <PercentageOfItem>        <AssociateID><ASSOCIATE_ID></AssociateID>        <Percentage>5</Percentage>      </PercentageOfItem>      <RetailPriceModifier VoidFlag="false">        <SequenceNumber>1</SequenceNumber>        <Amount Action="Subtract">24.60</Amount>        <PromotionID><PROMOTION_ID></PromotionID>        <ReasonCode>Summer Clearance</ReasonCode>        <Coupon>          <ScanCode><SCAN_CODE></ScanCode>        </Coupon>      </RetailPriceModifier>    </Sale>  </LineItem></RetailTransaction>...

Batch File Response

A complete copy of the incoming request is placed in the /complete/[Fileset Name]/archived directory.

Each <Transaction> block in the request that was not successfully processed is placed in a file saved in the /complete/[Fileset Name]/failed directory with _failures appended to the original filename.

You may be able to determine the reason for the failure by using the Batch Import Review pages (see Batch Import Review).