When does a transaction of kind "CHANGE" get created

Hi,

I’m working with a POS setup and am writing an order exporter. The documentation for orders shows that there is a transaction with the kind “CHANGE“ that is recorded for:

The money returned to the customer when they’ve paid too much during a cash transaction.

However, I am unable to get a “CHANGE” transaction to be recorded when doing tests with the POS app. I have created a cart, marked it as payed with cash and selected a “cash received“ value greater than the order value. This results in an order and the POS app saying x change should be given. In the POS app I can see both a sale and a change transaction. However, when fetching via graphQL, order only has a single transaction recorded for the exact value of the order, not for the cash amount received and a change transaction for the change given.

Under what circumstances do “CHANGE“ transactions get generated? Or are they just not visible via graphQL? I need to test this so my exporter can deal with this kind of transaction without me guessing the contents.

Cheers

Luke

Hi Luke,

From looking into this, it seems that “CHANGE” transactions are not exposed via the Admin GraphQL API, even though they are visible in the POS app UI. The API only records the transaction for the actual order value, not for the cash received or the change given.

This is a known limitation: the “CHANGE” transaction is a POS-side artifact for cash drawer reconciliation and isn’t persisted as a separate transaction in the Shopify order’s transaction list that would be accessible using the Admin API. Only the sale (for the order total) would be recorded as a transaction.

If you need to handle cash change for reporting, you’ll need to calculate it externally, as the API doesn’t provide this information.

Hey Liam,

Thanks for getting back to me, super helpful. Just a quick follow up, is this something I missed in the documentation and if so, would you link me to it please?

Cheers

Luke

@Liam-Shopify any update on this one ^?