Return Settings
1. Select a return status to import return authorization into NetSuite
Can configure the Returns flow to support pulling both open and closed status returns from LoopReturns with the multi-select option shown in the below screenshot. By default, we only pull the open status LoopReturns.
Flows affected by the settings:
LoopReturns Return to NetSuite Return Authorization Add
|
LoopReturns Return to NetSuite Return Authorization Add (Batch)
|
2. Group items with same SKU
In case the item with the same SKU appears as multiple lines in LoopReturns, the option will help them to group all of them as a single item and create a single item in NetSuite Return Authorization during import.
LoopReturns Return to NetSuite Return Authorization Add
|
LoopReturns Return to NetSuite Return Authorization Add (Batch)
|
LoopReturns Refund to NetSuite Cash Refund/Credit Memo Add
|
LoopReturns Refund to NetSuite Cash Refund/Credit Memo Add(Retry)
|
3. Cutoff Start Date and Time
LoopReturns Return to NetSuite Return Authorization Add
|
LoopReturns Return to NetSuite Return Authorization Add (Batch)
|
4. Configure to get data from the parent records for mapping
Example: Let’s say, you have the requirement to get the payment method (paymentmethod) for the sales order and shipping method(shipmethod) from the invoice and make it available in the mapping data to be able to map it NetSuite Return Authorization Import or NetSuite Cash Refund/Credit Memo Import.
Step 1: Add the “NetSuite Field Id” and the “Label” with which will that NetSuite field value should be available in the mappings. “Record Type” from which record we need to pull the information from.
Step 2: Enable Parent Record Lookup, select what flows[Returns, Refunds, Both] should have the above data available in the mappings. We selected both so that the data will be available in both returns and refund flows.
Step 3: Now with the above settings on clicking the mappings for the Returns and Refunds flow, you will see a NetSuite – Parent Order Lookup Import mappings.
Step 4: Make sure the mappings forinvoice_id.internalid, salesorder_id.internalid are set up properly in the NetSuite – Parent Order Lookup Import else we cannot get the sales order paymentmethod and invoice shipmethod.If you add any dynamic lookup or hard-coded mappings in NetSuite – Parent Order Lookup Import, then that data will also be available in the mappings of NetSuite Return Authorization Import or NetSuite Cash Refund/Credit Memo Import.
Step 5: If you check the data on the final NetSuite Return Authorization Import or NetSuite Cash Refund/Credit Memo Import, you will find that data“Payment Method”, “Shipping Method”, “test_mapping” available in the “parent_data” node. And can be used for mapping like parent_data.[Payment Method], parent_data.[Shipping Method], parent_data.test_mapping.
LoopReturns Return to NetSuite Return Authorization Add
|
LoopReturns Return to NetSuite Return Authorization Add (Batch)
|
LoopReturns Refund to NetSuite Cash Refund/Credit Memo Add
|
LoopReturns Refund to NetSuite Cash Refund/Credit Memo Add(Retry)
|
LookUp Criteria
If you want to create Return Authorizations from Billing records, make sure to have the following Lookup
- invoiceId.internalid with Invoice Lookup Criteria: Define the lookup to match up with the invoice in Netsuite. In case the client is using the Shopify IA or any Celigo IA to bring in the sales orders, you can use the below formula for the lookup
- [“custbody_celigo_etail_order_id”,”is”,”{{{provider_order_id}}}”],
- Action to take if unique match not found : Use null as default value
- [“custbody_celigo_etail_order_id”,”is”,”{{{provider_order_id}}}”],
- cashSaleId.internalid with Cash Sale Lookup Criteria: Define the lookup to match up with the cash sale in Netsuite. In case the client is using the Shopify IA or any Celigo IA to bring in the sales orders, you can use the below formula for the lookup.
- [“custbody_celigo_etail_order_id”,”is”,”{{{provider_order_id}}}”]
- Action to take if unique match not found : Use null as default value
- [“custbody_celigo_etail_order_id”,”is”,”{{{provider_order_id}}}”]
- salesOrderId.internalid with sales order Lookup Criteria: Define the lookup to match up with the sales order in Netsuite. In case the client is using the Shopify IA or any Celigo IA to bring in the sales orders, you can use the below formula for the lookup
- [“custbody_celigo_etail_order_id”,”is”,”{{{provider_order_id}}}”]
- Action to take if unique match not found : Use null as default value
- [“custbody_celigo_etail_order_id”,”is”,”{{{provider_order_id}}}”]
Configurations
How to configure Store Credits?
We add a line item in the return authorization with a negative giftCard total amount, to track the Store Credits. The preferred NetSuite item type for this is the non-inventory item for sale, the account for the item should be set with the proper account to see the proper GL impact. Return Authorization created has the checkbox(LOOP GIFT CARD) checked to identify it is a Store credit return.
Add the following mappings on the import to configure the giftcards line
“xxxx”
|
giftcardCustom[*].item
|
“1”
|
giftcardCustom[*].quantity
|
“-1”
|
giftcardCustom[*].price
|
-{{gift_card}}
|
giftcardCustom[*].rate
|
“_giftcardline”
|
giftcardCustom[*].custcol_nm_loop_lineid
|
- Replace the “xxxx” in the giftCardCustom[*].item with the correct NetSuite item internal id.
- To disable this, you need to remove the above mappings
How to configure Exchanges?
“xxxx”
|
exchangeCustom[*].item
|
“1”
|
exchangeCustom[*].quantity
|
“-1”
|
exchangeCustom[*].price
|
{{#compare (abs exchange_total) “>” (abs exchange_credit_total) }}-{{exchange_credit_total}}{{else}}-{{exchange_total}}{{/compare}}
|
exchangeCustom[*].rate
|
“_exchangeline”
|
exchangeCustom[*].custcol_nm_loop_lineid
|
- Replace the “xxxx” in the exchangeCustom[*].item with the correct NetSuite item internal id.
- To disable this, you need to remove the above mappings.
How to configure Sales Tax as a separate line item?
“xxxx”
|
lineLevelTax[*].item
|
“1”
|
lineLevelTax[*].quantity
|
“-1”
|
lineLevelTax[*].price
|
{{return_tax_total}}
|
lineLevelTax[*].rate
|
“_taxline”
|
lineLevelTax[*].custcol_nm_loop
|
- Replace the “xxxx” in the lineLevelTax[*].item with the correct NetSuite item internal id.
- To disable this, you need to remove the above mappings.
How to configure Header/Body Level/Tax Percentage Sales Tax?
“true”
|
Use Dynamic Mode
|
“true”
|
Taxable
|
“xxxx”
|
Tax (InternalId)
|
{{#compare return_discount_total ‘>’ ‘0.00’}}{{multiply (divide return_tax_total (subtract return_product_total return_discount_total)) 100}}{{else}}{{multiply (divide return_tax_total return_product_total) 100}}{{/compare}}
|
Tax %
|
How to configure Discount as a separate line item?
Add the following mappings on the import to configure the Discount as a line
“xxxx”
|
lineLevelDiscount[*].item
|
“1”
|
lineLevelDiscount[*].quantity
|
“-1”
|
lineLevelDiscount[*].price
|
-{{return_discount_total}}
|
lineLevelDiscount[*].rate
|
“_discountline”
|
lineLevelDiscount[*].custcol_nm_loop_lineid
|
- Replace the “xxxx” in the lineLevelDiscount[*].item with the correct NetSuite item internal id.
- To disable this, you need to remove the above mappings.
How to configure Header Level Discount?
“XXXX”
|
Discount (InternalId)
|
-{{return_discount_total}}
|
Rate
|
How to configure Discount Based on the sales order?
If the sales order has the header level discount, will set the header level discount on the return authorization, if not will set whateverLine Item Level Discount or Discount as a separate line item that is configured in the setup. You cannot set Line Item Level Discount and Discount as a separate line item at the same time.If the sales order has both header level discount and other types of discounts on the sales order, return authorization will set the header level discount.
“true”
|
setSalesOrderDiscountType
|
{{{provider_order_id}}}
|
salesOrderId
|
|
|
How to configure Discount Based on the cash sale?
“true”
|
setCashSaleDiscountType
|
{{{provider_order_id}}}
|
cashSaleId
|
|
|
How to configure Sales tax with line Item Tax Code?
return_tax_total
|
custbody_nm_total_tax_amount
|
“T”
|
custbody_nm_override_tax_amount
|
“T”
|
custbody_nm_override_line_tax
|
return_tax_total
|
taxamountoverride
|
“true”
|
Use Dynamic Mode
|
line_items[*].tax
|
item[*].custcol_nm_item_tax_amount
|
line_items[*].price
|
item[*].custcol_nm_item_amount
|
- Items : Item (InternalId)
- Items : Quantity
- Items : Price Level (InternalId)
- Items : Rate
- Items : Amount
How to configure Each Line Item Level Discount?
“xxxx”
|
itemLevelDiscount[*].item
|
“1”
|
itemLevelDiscount[*].quantity
|
“-1”
|
itemLevelDiscount[*].price
|
-{{line_items[*].discount}}
|
itemLevelDiscount[*].rate
|
discount_{{line_items[*].line_item_id}}
|
itemLevelDiscount[*].custcol_nm_loop_lineid
|
- Replace the “xxxx” in the itemLevelDiscount[*].item with the correct NetSuite item internal id.
- To disable this, you need to remove the above mappings.
How to configure Handling Fee?
“xxxx”
|
handlingFee[*].item
|
“1”
|
handlingFee[*].quantity
|
“-1”
|
handlingFee[*].price
|
-{{handling_fee}}
|
handlingFee[*].rate
|
“_handlingfeeline”
|
handlingFee[*].custcol_nm_loop_lineid
|
- Replace the “xxxx” in the handlingFee[*].item with the correct NetSuite item internal id.
- To disable this, you need to remove the above mappings
For more information, view our FAQ.