Take Back the Tax: Returned Orders

"Returns are the new normal," says Forrester retail industry analyst Sucharita Kodali, formerly Sucharita Mulpuru. "Most shoppers are frequently returning online purchases, while remaining loyal to brands if they have a positive experience. Retailers who want to remain competitive will find ways to reduce friction in the returns process, whether that's communicating more updates, providing more transparency, or offering free return shipping."

"An online return is a critical moment in the customer journey. Retailers have an opportunity to impress and delight customers, especially high-value segments like millennials and affluent shoppers. These are digital natives who treat returns as a natural part of the buying process and have come to expect convenience and transparent communication," says Amit Sharma, CEO of Narvar. "If retailers can meet these high expectations, they can use returns to improve customer satisfaction, inspire loyalty and fuel new revenue streams."

Historically the most difficult aspect of returns (from a tax perspective) occurs when a retailer refunds the total purchase proceeds to the customer. Typically any sales tax collected at the time of sale is also routinely also refunded to the customer.

  • If the return occurs in the same month as the original sale, its not a big deal because any sales tax collected and subsequently refunded cancels out before sales tax is reported.
  • However, if the return occurs in a subsequent month, the sales tax collected at the time of sale will already have been remitted to the applicable state and local jurisdictions (and now must be recovered from those jurisdictions).

THE GOOD NEWS: TaxCloud handles both patterns automatically—so our TaxCloud retailers don't have to do anything! TaxCloud instantly recognizes the return, and records a sales tax credit for all applicable state and local jurisdictions. If the return occurs in a subsequent month, TaxCloud automatically recognizes the new credits and uses those credits to reduce future tax remittances to applicable jurisdictions.

NOTE: TaxCloud does not prepare or file tax refund requests on behalf of merchants. If a merchant is uncomfortable waiting for such a sales tax credit to be applied, he/she can directly request a tax refund from the applicable state or local jurisdictions. If such a refund request is accepted, the merchant must communicate such to TaxCloud so we can expire any pending credits.

Returned API - Methods of Operation

Our Returned API supports two methods of operation: Easy and Explicit:

  • The Easy mode returns an entire order by simply providing the OrderID of the previously completed order.
  • The Explicit mode allows you to return individual line items, including decimal quantities of line items, by providing the complete array of CartItems from the original order.

Returned API : Easy

The Easy use of our Returned API requires only a single OrderID parameter (in addition to API Credentials). In this mode, that's all there is to it.

Parameters (Easy)

Parameter Required Description Example
apiLoginID Your unique 7 or 8 character API ID XXXXXXX
apiKey Your unique API KEY XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
orderID The immutable Order identifier used by your order management or e-commerce system to idenitify unique orders. order23
returnedDate Effective date of the return CAUTION: See Note 08/27/2019

Let's do this (Easy)

REQUEST (Easy)

HTTPS POST api.taxcloud.net/1.0/TaxCloud/Returned
{
    "apiLoginID": "XXXXXXX",
    "apiKey": "XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "orderID": "order23",
}

RESPONSE (success)

{
  "ResponseType": 3,
  "Messages": []
}

RESPONSE (error)

{
  "ResponseType": 0,
  "Messages": [
    {
      "ResponseType": 0,
      "Message": "This Order ID (order23) has already been returned."
    }
  ]
}

Returned API : Explicit

The Explicit use of our Returned API uses the same endpoint and requires the OrderID parameter as well as a cartItems array (in addition to API Credentials). The only difference between Easy and Explicit is the addition of the cartItems array, which, technically speaking is simply an optional parameter for the Easy version.

IMPORTANT: When performing Explicit (item-level) returns, our Returned API signature is identical to our Lookup API signature.

This means ALL RETURNED CART ITEMS WILL BE PROCESSED AS NEGATIVE QUANTITIES RELATIVE TO THE ORIGINAL LOOKUP CART ITEMS. As such, the only property which should be changed from the original Lookup API is the Qty (Quantity) property.

  • CartItems not being returned should have
    Qty: 0
    Alternatively, CartItems not being returned can be simply omitted.

  • CartItems being returned should have
    Qty: [n]
    Where [n] is a decimal not exceeding the original Qty from Lookup

Taking this advisory one step further: in any Explicit Returned API call the only property which should change relative to the original Lookup API call is the Qty property. No other property should change. To be clear, under Generally Accepted Accounting Principles ("GAAP"), you cannot change any aspect of a committed/completed order. Rather, our *Returned API* can be used to affect changes (full or partial returns) after an order has been captured, with full GAAP compliant transparency. As further guidance: the ItemPrice property CANNOT be a negative dollar amount—ItemPrice from the original Lookup API cannot be changed because it is part of the original tax calculation.

Example 1:
If your customer returned a pair of shoes (e.g., ItemID: "33764"), but none of the other items from the original order, you would return the CartItem object for ItemID 33764, with a Qty: 1, returning the entire item. All other CartItems should have a Qty: 0, or can simply be omitted from the Returned API call.

EXAMPLE 2:
If your customer service team wanted to issue a 20% discount to a customer for a particular item, the Returned API should be called with the CartItem object for ItemID 33764, with a Qty: 0.2 (returned CartItems are recieved as negative quantities relative to the original quantities).

Parameters (Explicit)

Parameter Required Description Example
apiLoginID Your unique 7 or 8 character API ID XXXXXXX
apiKey Your unique API KEY XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
orderID The immutable Order identifier used by your order management or e-commerce system to idenitify unique orders. order23
cartItems CartItem array of items being returned (items not being returned can be omitted). see example below
returnedDate Effective date of the return CAUTION: See Note 08/27/2019

Let's do this (Explicit)

REQUEST (Explicit)

HTTPS POST api.taxcloud.net/1.0/TaxCloud/Returned

This example effectuates a 20% return/credit for a previously captured/completed order where the original Lookup API for CartItem.Index(0) Qty was 1.

{
    "apiLoginID": "XXXXXXX",
    "apiKey": "XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "orderID": "order23",
    "cartItems":[
      {
        "Index": 0,
        "ItemID": "33764",
        "TIC": 0,
        "Price": 19.95,
        "Qty": 0.2,
      }
    ]
}

RESPONSE (success)

{
  "ResponseType": 3,
  "Messages": []
}

RESPONSE (error)

{
  "ResponseType": 0,
  "Messages": [
    {
      "ResponseType": 0,
      "Message": "This Order ID (order23) has already been returned."
    }
  ]
}

IMPORTANT NOTE REGARDING THE ReturnedDate PARAMETER

PRO TIP: The Returned API allows specification of a ReturnedDate. UNDER MOST CIRCUMSTANCES THIS PARAMETER SHOULD NOT BE USED. Without specifying the ReturnedDate parameter, the Returned API defaults/infers the ReturnedDate based upon the date the API is called. This is the correct behavior, from a tax perspective.

 

For example: If you had accepted and completed an order in February, and the order was returned in April, any sales tax due would have been reported and remitted with the February sales tax return.
  • Without specifying the ReturnedDate parameter, TaxCloud will automatically recognize the sales tax was previously remitted, and create a credit automatically reducing the tax proceeds due for the current period. This is usually the intended and preferred result.
  • However, if you pass the ReturnedDate parameter using the date of the original sale (or any date outside the current period), TaxCloud will recognize this as a change to the previously filed sales tax return, triggering an Amended Sales Tax Return to be generated and filed, including every intervening sales tax return from the period of the original sale to the current period. This will incur Late or Amendment Fees from TaxCloud, as well as filing obligations and charges from your CPA or accountant if TaxCloud is not filing on your behalf (via Automated Compliance). This should be avoided, unless your accountant or tax counsel has advised you to do this.

What's Next?

Nothing. You are now a rockstar in e-commerce sales tax compliance! [drop the mike/mouse as balloons drop from the ceiling]

Now, if you really want to impress your friends and coworkers, you could implement our Exemption Certificates APIs so you can sell to tax exempt entities, including non-profits, government entities, and resellers (purchase for resale or "wholesale" transactions).

  • VerifyAddress
  • Lookup
  • AuthorizedWithCapture
  • Returned
  • Exemption Certificates (Extra Credit)