Shopify POS configuration (cash sales)

Hello,

We're currently successfully utilising the Shopify NetSuite integration app for web orders, and are looking at Shopify POS although want to test a few scenarios in our sandbox to tick some boxes with the finance team.

Options that we want to enable:
• General > Sync POS exchanges as separate sales orders or cash sales
• Order > POS > Sync “Buy in-store, ship to customer” orders as sales orders.

Currently when testing with either the "Shopify order to NetSuite order (cash sale or sales order)" [which is a prereq for the exchange setting above] or "Shopify order to NetSuite sales order (add)" the cash sales are being imported as "Not Deposited" to NetSuite. The "Shopify order to NetSuite cash sales (add)" has the ability to map to the account (id) / account (name) although the other flows don't. There is the "Order > Order > NetSuite account to credit cash sales" setting, although if accepting multiple payment types (cards / cash) we will need to map these to the correct accounts within NetSuite.

As we want to allow Customers to "Buy in-store, ship to customer" (as sales orders). Products fulfilled in store (cash sales), we notice that the deposit workflow fails – we have previously been advised by Celigo support to filter out POS orders from the deposit flow (record.device_id is empty). If the flow is filtering out POS records, will the Despoit not be created for these "Buy in-store, ship to customer" orders?

How have others successfully configured cash sales for POS while maintaining sales orders for web orders?

Thanks.

I have tried entering account manually (not from the selectable fields) and have got it appearing in the output, although it is still coming through as undeposited.

Could this be because it is setFieldText instead of setFieldValue? Is there a way to force setFieldValue?


r.setFieldValue("custbodyorder_type", 23);
r.setFieldValue("custbody_order_channel", 3);
r.setFieldValue("location", 273);
r.setFieldValue("custbody_csegint_projects", 76);
r.setFieldText("account", "1856");
r.setFieldValue("custbody_celigo_shopify_store", 501);
r.setFieldValue("shippingcost", 0);
r.setFieldValue("externalid", "SHPF-26199752779-5965621821515");

@khaisarahamad - I have seen a post where you were helping another user. Any ideas?

Hi Matt,
I would try 'Account (Internal)' as the NetSuite field mapping selection, and then ensure you have the "1856" value enclosed in double quotes so that it is a hardcoded value. You'll see a circled H appear on the NetSuite field mapping to indicate a hard-coded value.

However, if you have a Payment Methods mapped in your settings, NetSuite might be overriding your Account selection in the flow mapping. You should be able to see if there is a line for "r.setFieldValue("paymentmethod") is being used in the request data.
If neither of these are the culprit, you could always create a mapping and lookup for Payment Method directly in the individual flow mappings based on the gateway.

For the buy in-store, ship to customer question, you may be accurate in saying that the Deposits will not make it to NetSuite based on the device_id criteria in the deposit (Add) flow. I'd leave the criteria off for now and you will have errors for any true Cash Sales, which might give you a better idea of what criteria could work together. Perhaps a combination of Device ID and 'shippingAddressPresentOnOrder'.

Hi @P_Blo ,

Thanks. I appreciate the response.

This is my issue. Account (InternalId) doesn't exist in the dropdown list in either of the "Shopify order to NetSuite order (cash sale or sales order)" or "Shopify order to NetSuite sales order (add)"

Hi @meckens. Try adding "account.internalid" and set the NetSuite Account internal id as hardcoded value or an expression as needed. This should work.

1 Like

@SureshGarshakurthi :raising_hands: Amazing. Thank you!

2 Likes

A different take. I don't use Cash Sales on POS. They don't support multiple payment methods. I use Orders and then enable the Shopify > NetSuite fulfillment flow. Then all your Shopify transactions follow the same Order > Deposit > Fulfillment > Invoice flow.

The caveat is timing issues with the fulfillment flow. So, I setup a helper flow that uses the Celigo Error Management API to retry any failed fulfillments. Works well and you get multiple payment method support for POS.

1 Like

+1 to Dave's response. I have implemented Shopify POS for a retailer that grew from 3 to 70+ retail stores. The benefit of not using Cash Sales is huge because retail can utilize multiple payment methods (i.e. taking a $50 visa and $25 mastercard) which creates 2 customer deposits.

Additionally if you eventually utilize those locations at fulfillment centers, the item fulfillment flow works great. Cash Sale will work if you plan to have a fairly simple retail operations workflow.

Thanks @davidgollom & @ryanlee

Currently we're testing both methods at the moment, to see what works best for the business.

Pros of cash sale:

  • Less moving parts.
  • 1 line vs 4 lines per transaction.

I have read of multiple tenders being a concern, although looking at historical data we only see multiple tenders when giftcards are utilised (cash/giftcard or shopify_payment/giftcard). Giftcards payments are configured to come through as a line item and "discounts" the value redeemed. Have we oversimplified this and there is something what we missed?

@meckens I do not think you oversimplified. As a matter of fact, it is a great way of doing it as long as retail operations keep it that simple.

My previous statement is more for scalability. If you get the chance to set it up so the business can grow with the technology, the customer deposits are the way to go. I did not mention it earlier but partial returns and refunds can be a pain.

I spent so much time at a previous retailer rolling back custom scripts and workflows because they outgrew the cash sales. Just something to think about but you will know the business best.

Happy to provide any additional insights!

1 Like