Solved

!! POS Exchange workflow V2 Issues for API

in8sync
Shopify Partner
15 1 4

Hello Shopify,
@Agil

 

Recently Shopify Pushed out NEW v2 POS Workflow, changing from Exchanges Creating NEW order for the exchange with exchange Credit to Performing on the Same order. 

API wise this Produced no API information about the FULL Exchange and Partners Integrating the Orders to External Systems for ERPs Like NetSuite, does not know how to handle correctly connecting all the Items and components of the exchange now. 

 

This Caused Huge issues for us, cause we integration 100s of clients orders and returns into NetSuite ERP and we require coherent API JSON data to validate how to handle creating the same thing in the other System.

 

We did open support case and Shopify Temporarily did allow our customers to open cases and revert back to the OLD Exchange-Credit Workflow. while this is being reviewed.

 

The Following is things we notice as issue, and what is needed one way or another to make sure the API data has coherent information together about the new Workflow to handle properly for export.

 

Things we noticed,

  • The REFUND ID for the Exchange ONLY showing the Items Returned/Removed But not giving ANYTHING about it being an exchange and not Listing the Exchange Items in a new array under the Refund ID to know the Items removed & items given in exchange.
  • The Status RETURNED seen not even in the Orders.json at all
  • No Exchange value anywhere in the JSON of the order
  • No API documentation on the Exchange data for JSON endpoints
  • Basically nothing about the exchange except the Refund ID with the Items Removed

Currently we only get this and nothing elsekeaton 

in8sync_0-1666900155925.png

 

Things API developers and Partners NEED

  • API Documentation outlining the JSON endpoints and data around what is confirm for this
  • Some type of notice of changes BEFORE released again to allow Partners to be able to have enough time to code the new API changes to other systems that we have currently integrated with orders.
  • Returned Status in JSON
    • e.g.: order.exchange_status: "returned"
  • A single Refund ID Array for the exchange having the following
    • Value that says it is exchange for the Refund ID
      • e.g.: refunds.refund_type: "exchange"
    • refunds.refund_line_items
    • refunds.exchange_line_items
    • If Part of Refund ID for exchange is Refunded part of money back to customer, The transaction array for Refund ID listing this
  • In the Main order.line_items array, for the items added or removed as part of exchange.
    Reason for this, so if export of JSON data is done, it is possible per the all line_items, know what is original order to create VS what part of the order to create Refund/exchange with, so not put the Exchange Item on the Original external order and only on the Return Auth orders. Giving Clearer definition to before and after exchange.
    • value to the Line Items Returned, that they are returned
    • value to the Exchange Items, that they were part of exchange
Accepted Solution (1)

ShopifyDevSup
Shopify Staff
1412 231 484

This is an accepted solution.

Hello all, I just wanted to reach out again in case other folks also come across this thread. I am able to clarify that we can confirm that there is currently private functionality that was made available in February of this year that may help with the above use-case. However, at the moment it is only available to select ERP integration partners and we are unable to provide any further information about whether/when it will be released publicly at this time.

In the meantime, we'd recommend reaching out to your ERP providers directly for further information like @Daelan_Wood and @Graham78 mentioned above. Hope this helps.

Al | Shopify Developer Support

Developer Support @ Shopify
- Was this reply helpful? Click Like to let us know!
- Was your question answered? Mark it as an Accepted Solution
- To learn more visit Shopify.dev or the Shopify Web Design and Development Blog

View solution in original post

Replies 12 (12)

in8sync
Shopify Partner
15 1 4

Another BIG issue is when a SINGLE Exchange also has customer Refunded money it reports in two separate Refund IDs. When it should all be contained in 1 Refund ID for the Single Exchange including the transactions refunded.

 

1 Exchange with Refund of 10 dollars

in8sync_0-1667331890954.png

 

but two refund ids 1 for Refund transaction and 1 for Line Items

in8sync_1-1667331921858.png

 

 

in8sync
Shopify Partner
15 1 4

ALSO,

 

When Payments are Part of the exchange, how to differentiate them from the original Order Payments.

 

Had a New Exchange Workflow Paid with Card and Gift Card, but No Direct separate Payment array for the Payments Taken as part of the exchange VS the Original Order.

 

Causing transfer of Data to apply Gift Card to original order instead of where it would have been applied

Daelan_Wood
Shopify Partner
34 0 11

Has there been any movement on this? We are dealing with a similar issue in that there is still no way to identify orders that have had a POS exchange using the API.

in8sync
Shopify Partner
15 1 4

Hi Daelan,

I got this from Partner Support

 

 

I have heard back from our API team in regards to your community forum post.

 

To start, we have extensive docs which outline every endpoint in great detail and often includes examples, and we announce all of our breaking changes to API calls 12 months in advance so that Partners can prepare for the change with as little friction as possible. We even email Partners letting them know of changes that will effect their apps, and it's included in the Partner dashboard.

 

In regards to the new POS Exchange, you may be referring to this. To further assist with this we recommend reading over this resource: Refund resource as to why you cannot see everything within the order.

 

If you want Refund info you need to use the Refund resource, if you are looking for transaction data you need to use the Transaction resource. The Order resource has references to these (in the form of IDs) and it just takes an API call to get the info.

 

You will also notice that each of those docs I linked here are under the Orders API; they are meant to be used in conjunction with each other as necessary. An "exchange" doesn't mean anything to an order. It's a Refund on an Order, with any price discrepancies settled with a Transaction. Whether or not a product is returned and restocked is part of the Refund (as shown in the screenshot you shared). The line item is removed from the Order and added to the Refund.

 

Additionally, a difference in price paid by the buyer or merchant and how that's handled is in the Transaction. An Order doesn't need to know how or why money was exchanged, just that it's paid for. The Transaction can be queried if more information is needed.

Take care,
Jane (she/her) | Shopify Partner Support Specialist

in8sync
Shopify Partner
15 1 4

@Daelan_Wood 

 

Looks like the Refund endpoint Still has ZERO Information to tell what what items that were added were part of the Exchange (Refund) to accurately be able to handle the Specifics when it comes to needing to know what items were original to create a original record outside of Shopify and which items to list on the Refund RMA on another connected record outside NetSuite. You can Open Chat with Partner Support and Reference Case 34288309 for the issue

ShopifyDevSup
Shopify Staff
1412 231 484

Hey @in8sync - thanks for reaching out. At the moment, refunds are considered as separate from "exchanges". Shopify doesn't have an explicit "exchange" component. That said, we do allow merchants to edit orders to add/remove line items in an order to facilitate an exchange. When a paid-for line item is removed from an order, it creates a refund, which is what the data in the refund resource represents. Only the returned line items in an order shows up as a "refund", as mentioned in the documentation you shared. 

When a new item is added to an existing order, Shopify considers this as an "order edit", rather than as part of the refund. A workaround that you may want to consider is setting up a subscription to the refunds/created and orders/edited webhooks. These webhooks trigger when a refund goes through and when an order is edited. The orders/edited webhook will include information about which line items have been removed and which ones have been added. You could compare the data present in the refunds/created webhook against the data in the orders/edited webhook for the same order. 

Then, you can confirm what items have been added/removed. We're also happy to pass along your feedback to our product team, as it's understandable how it would be more beneficial to have all of this information in one resource/response payload. We can't guarantee a response, but will pass this along as soon as we can. 

 

That said, if you've built your app using App Bridge and are using its POS functionality, our suggestion would be to reach out directly to our product team by creating an issue in the Shopify App Bridge repo on GitHub here if you haven't already.

 

Hope this helps - let us know if we can clarify anything further on our end.

Developer Support @ Shopify
- Was this reply helpful? Click Like to let us know!
- Was your question answered? Mark it as an Accepted Solution
- To learn more visit Shopify.dev or the Shopify Web Design and Development Blog

Daelan_Wood
Shopify Partner
34 0 11

@ShopifyDevSup I'm wondering how you would suggest handling instances where an exchange is processed on the POS and the new item being purchased is worth more than the item being returned so an additional payment is required? This new payment is not recorded anywhere in any of the data associated with the order. There is only a Transaction response if there is a refund payment processed. If additional payment is taken as a part of the response this amount just disappears into the ether.

 

Also, you mentioned this in your previous message "When a new item is added to an existing order, Shopify considers this as an "order edit", rather than as part of the refund. " ok, if the new item is part of an order edit, then why isn't there some way to identify in the data that this order has been edited? If you are just looking at the raw data, there would be no way to know that both of the line items (The original that was refunded and the new one that was added during the exchange) weren't actually there as a part of the original order. 

 

You guys seem to think that the fact that it is an exchange isn't important, but this clearly isn't true. It's important for accounting, it's important for tax remittance it's important for record keeping and product analytics. it's VERY important. 

 

The suggestion to run both the 'order edit' and the 'refund' webhooks and then compare the 2 is kind of insane. And not just because neither of these endpoints even has the necessary data that we are looking for.

 

You guys would save so much time and energy if you hired some people who haves worked for an actual retail/e-commerce company to run these things by before you make these sorts of changes to the API. Your responses show that you really have no idea what an actual business needs in order to run effectively.

 

Ok, i'm done ranting.

 

 

 

 

 

 

ShopifyDevSup
Shopify Staff
1412 231 484

We really appreciate your feedback, and we'll let our product teams know these use-cases.

 

Please be sure to also submit a feature request directly here to the team, and add the POS label. 

Developer Support @ Shopify
- Was this reply helpful? Click Like to let us know!
- Was your question answered? Mark it as an Accepted Solution
- To learn more visit Shopify.dev or the Shopify Web Design and Development Blog

Graham78
Shopify Partner
7 0 1

Just wondering if there is any update on this? I Have spoken to multiple ERP providers, including Brightpearl, Netsuite and Acumatica (Shopify Partners). They are all aware of this issue and that the changes Shopify made to the Exchange Process have caused these. My understanding is that Shopify is working with some of the partner systems on an intermediate and longer term fix. Are you able to provide an update on this?

 

I'm not a particularly technical person, but to me is seems like there is a simple solution, allow users to create a new order, which includes the return (and refund) of an item. Rather than update an existing sale. Its basic functionality in other POS systems. Once a order is closed it can't be changed/edited in any ERP and Accounting software. Which makes complete sense. I get the feeling Shopify implemented this change without consulting anyone else.

Daelan_Wood
Shopify Partner
34 0 11

I have received confirmation from Shopify that there is a private API endpoint that fixes these issues. They are rolling it out to integration partners quietly but suggested that I have our vendor (A2X/Xero) reach out to them directly to request access.

 

They gave me no information as to whether or not this API endpoint would be released publicly.

Graham78
Shopify Partner
7 0 1

That's very interesting. Thank you for the heads up. I will contact our ERP provider directly.

ShopifyDevSup
Shopify Staff
1412 231 484

This is an accepted solution.

Hello all, I just wanted to reach out again in case other folks also come across this thread. I am able to clarify that we can confirm that there is currently private functionality that was made available in February of this year that may help with the above use-case. However, at the moment it is only available to select ERP integration partners and we are unable to provide any further information about whether/when it will be released publicly at this time.

In the meantime, we'd recommend reaching out to your ERP providers directly for further information like @Daelan_Wood and @Graham78 mentioned above. Hope this helps.

Al | Shopify Developer Support

Developer Support @ Shopify
- Was this reply helpful? Click Like to let us know!
- Was your question answered? Mark it as an Accepted Solution
- To learn more visit Shopify.dev or the Shopify Web Design and Development Blog