Skip to content

Returns Management

The modular design of Jumpmind Commerce allows the Returns Management Engine to run stand-alone or together with the full pos product. Our returns solution provides an out-of-the-box fraud prevention measure that gives you the control to determine how often and how many identified or unidentified returns your customers can make. Additionally, the returns engine has the ability to look up a customer’s purchase history, payment token, loyalty account, etc. so that their returns can be completed without a physical receipt in hand.

An integration with Appriss is also fully supported. This would allow your returns management to be controlled via Appriss.

Concepts

Return Types

Identified (Receipted) returns are ones driven off a historical transaction. Commerce allows a simple scan of a receipt, or search of customer history, to pinpoint and select what is being returned. Within this, the user can then scan the item, which will then allow for the return to be completed.

Unidentified (or Non-Receipted) returns are ones without a physical receipt or any successful search to tie to an original sales transaction. These returns typically result in a store credit refund as opposed to cash.

Reason Codes

Reason codes allow a user to classify a return which will help dictate that item's Disposition code

Disposition Codes

Disposition codes are what allows a store to know how to handle an item (re-stock, dispose, etc.), after a return is complete.

Taxes

With all return transactions, the system would properly process the taxes returned be based on the location of the original transaction and apply any new tax, at the proper rate, if any additional items are sold as part of the transaction.

The Returns Screen

Item Description
1 Customer making return.
2 Receipt from the original transaction where item(s) can be selected for return.
3 Item selected for return with details of original purchase date and reason for return.
4 The amount of sales tax for the returned item calculated from the location of the original transaction.
5 The total amount of the transaction being returned.

Return Process

Configuration

Configuration for returns starts with setting up one or more return policies. A return policy is a set of parameters and rules a retailer establishes to govern how customers return merchandise and what tenders they can receive for that returned merchandise. Multiple return policies can be configured to handle different scenarios. For example, the retailer might have the following return policies:

  • Identified (Receipted) returns for non-loyalty members
  • Identified (Receipted) returns for loyalty members
  • Identified (Receipted) returns for employees
  • Unidentified (Non-Receipted) returns for non-loyalty members
  • Unidentified (Non-Receipted) returns for loyalty members
  • Unidentified (Non-Receipted) returns for employees

Each of the above return policies may have different parameters that can be set differently for each policy, such as return tender types allowed (original sale tender, merchandise credit, gift card, etc.), purchase timeframe (i.e. if purchased within the last 30 days or 60 days, etc.). Configuration by return policy is completed via the ReturnPolicyModel / sls_rtn_policy table. The following configurations are available:

ReturnPolicyModel (sls_rtn_policy)

Attribute Description
returnPolicyId A unique identifier for the return policy
returnPolicyName The name for the return policy
description The description for the return policy
requiresAdditionalInfo A flag (1 or 0) denoting whether the policy requires capturing additional customer information
exchangeAllowed A flag (1 or 0) denoting whether the policy allows even exchanges
sameTenderTypeAllowed A flag (1 or 0) denoting whether the policy allows for the original tender type to be used for tendering the return
differentTenderTypeAllowed A flag (1 or 0) denoting whether the policy allows for different tender types thatn the original for tendering the return
merchCreditAllowed A flag (1 or 0) denoting whether the policy allows for merch credit for tendering the return
permissionId The required permission that the cashier must have in order to fullfil the return of an item. From USR_PERMISSION.PERMISSION_ID
rcptRtnTransCountLimit The number of receipted return transactions allowed for a given customer during the transHistRefInDays period
nonRcptRtnTransCountLimit The number of non-receipted return transactions allowed for a given customer during the transHistRefInDays period
rcptRtnItemCountLimit The number of receipted return items allowed for a given customer during the transHistRefInDays period
nonRcptRtnItemCountLimit The number of non-receipted return items allowed for a given customer during the transHistRefInDays period
RcptRtnRatioLimit A ratio applied to receipted returns calculations that will override receipted returns limits. I.E. If .50, then if the customer sales history during transHistRefInDays has greater than 50% of items not returned, then the customer will continue to be allowed to return, regardless of the number of transactions or items returned
nonRcptRtnRatioLimit A ratio applied to non-receipted returns calculations that will override receipted returns limits. I.E. If .50, then if the customer sales history during transHistRefInDays has greater than 50% of items not returned, then the customer will continue to be allowed to return, regardless of the number of transactions or items returned
transHistRefInDays The number of days to look at customer history in order to determine returns rules and limits
overrideAllowed A flag (1 or 0) that denotes whether this return policy is overridable by a manger level

Example return policies might look as follows:

Once the return policy(s) have been configured, matching rules need to be configured that determine how an individual return transaction maps or matches to the return policy(s) configured above. These mapping / matching rules are configured in the ReturnPolicyMatchModel / sls_rtn_policy_match table. The following configurations for mapping / matching are available:

ReturnPolicyMatchModel (sls_rtn_policy_match)

Attribute Description
policyMatchId A unique identifier for the returns policy match rule
policyMatchName A name for the return policy match rule
description A description for the return policy match rule
priority A numerical order (sorted lowest to highest) in which the match rules should be applied to the return policy
returnPolicyId The return policy to use if a match is made
receiptPresent Whether this is an identified return. I.E. the original sale has been identified
numberOfDays If the return is in the number of days window, consider the policy a match
purchaseStartTime If a return should be applied based on purchase time, this field should be populated with the time the purchase was made
purchaseEndTime If a return should be applied based on purchase time, this field should be populated with the time the purchase can no longer be returned
itemGroupId Match on an item group. If the value is * then the policy applies to all item groups
customerGroupId Match on a specific customer group. If the value is * then the policy applies to all customer groups

For the example return policies described above, the following return policy match models would match a transaction to those return policies:

Return Policy Return Policy Match
Identified returns for non-loyalty members receiptPresent=1,priority=20
Identified returns for loyalty members receiptPresent=1,customerGroupId='loyalty',priority=10
Identified returns for employees receiptPresent=1,customerGroupId='employee',priority=10
Unidentified returns for non-loyalty members receiptPresent=0,priority=20
Unidentified returns for loyalty members receiptPresent=0,customerGroupId='loyalty',priority=10
Unidentified returns for employees receiptPresent=1,customerGroupId='employee',priority=10

Once return policy(s) and matching rules have been configured, general tender type rules need to be set up to govern which tenders are available for returns as a whole. Note, this is NOT restricting return tenders by return policy, which is configured in the return policy itself, but instead, a list of available tenders types for return transactions as a whole including the minimum and maximum amounts permitted for each of those return tender types. This configuration is done in the TenderPolicyModel / sls_tender_policy_table

TenderPolicyModel (sls_tender_policy)

Attribute Description
tenderPolicyId A unique string identifier for the tender policy
tenderTypeCode The tender type code for the tender policy
tenderCode Unique code to identify this tender
tenderOperation The operation for the tender policy (e.g. SALE, RETURN, ZERO_BALANCE, or CHANGE_DUE)
minTenderAmount The minimum amount that can be accepted for this tender and operation
maxTenderAmount The maximum amount that can be accepted for this tender and operation
overTenderAllowed Whether or not this tender require supports overpayment from the customer
defaultToAmountDue Whether or not to default the tender amount to the amount due
paymentServiceRequired Whether or not the payment service is required to process this tender
autoFocusEnabled Whether or not the tender amount is auto focused for editing
buttonGroupId The button group id associated with this tender type
buttonId The button id associated with this tender type

Example TenderPolicyModel configuration might look as follows:

Configuration that applies to all policies (yml, ConfigModel)

openpos.sell

Parameter Description Default
displayReasonAndDispositionForReturns Setting that indicates if the reason an item is returned and the disposition of the returned product should be shown true
reasonAndDispositionForReturnsMaxLength Setting that defines max length to truncate display values for reason and disposition of the returned product 20
confirmNonReceiptedWithCustomerLinked Setting that determines if the 'Link Customer or Scan Receipt' dialog will still prompt on starting a non-receipted return even if a customer is already linked false

openpos.pay

Parameter Description Default
preferReferencedReturns If true, then during refunds supported payment providers will attempt to automatically process returns to the original card true
referencedReturns.excludeCardType An array of card types that don't support referenced returns

openpos.tender

Parameter Description Default
hideReturnOptionBelowMinAmount Determines whether return options below minimum tender amount is hidden vs disabled false (disabled)
returnLessThanMinFallback Tender type used to absorb the amount from other tenders where their suggested refund is below the minimum allowed CASH
preferredNonReceiptedRefundTender Tender type of the preferred method to refund non-receipted return value STORE_CREDIT

openpos.returns

Parameter Description Default
crossBorder.allowed
useReturnsCustomer
useCaptureId
promptForAddCustomerOnCheckout
...