Executive summary
- What: GraphQL Admin API version 2026-10 adds a CURRENCY_CONVERSION value to the ShopifyPaymentsTransactionType enum.
- Why: balance movements created by converting funds between currencies now identify themselves instead of having to be inferred.
- Who: merchants selling in multiple currencies, and the finance or integration teams that parse Shopify Payments balance transactions.
What changed
ShopifyPaymentsTransactionType is the enum that labels each row in a Shopify Payments balance transaction feed. It is already long, covering charges, refunds, chargeback holds and their reversals, customs duty, import tax, payouts, and dozens of adjustment variants. As of API version 2026-10 it gains one more value: CURRENCY_CONVERSION.
That is the whole of the change. No field is removed, no existing value is renamed, and nothing in a current integration stops working. What changes is that a class of balance movement which previously had to be deduced now declares itself.
Why it matters
Multi-currency selling produces balance activity that has nothing to do with any single order. When funds move between currency balances, the resulting entry still has to be classified, and integrations consuming balance transactions have generally handled this by pattern matching on amounts or by bucketing anything unrecognised into a catch-all account. Both approaches are fragile, and both tend to fail quietly.
An explicit type removes the inference. Middleware can route CURRENCY_CONVERSION rows to a foreign exchange gain or loss account without a heuristic, and a reconciliation report can separate genuine trading activity from treasury movement. For merchants running several currencies through Shopify Markets, that separation is what makes gross margin by market trustworthy rather than approximate.
There is a defensive point here too. A new enum value is a common cause of runtime failures in strictly typed clients. Code generated from a GraphQL schema and compiled against an exhaustive switch will reject an unknown member, so integrations that do not tolerate unrecognised values should be checked before the version bump, not after.
Role-specific impact
- Marketers: no direct impact. Cleaner separation of conversion activity does improve the reliability of the per-market profitability figures used in budget decisions.
- Developers: confirm your enum handling tolerates unknown values, then add explicit handling for CURRENCY_CONVERSION when you move to 2026-10. Treat exhaustive switches over Shopify enums as a standing liability.
- Store admins: no workflow change. Worth asking your finance team whether conversion entries currently land in a catch-all account, because this is the change that lets them be classified properly.
Use-case example
Real-world scenario
A brand sells in Canadian dollars, United States dollars, and euros, and syncs Shopify Payments balance transactions into its ERP nightly. Roughly 30 entries a month land in an unclassified suspense account because the integration cannot distinguish a currency conversion from an unexplained adjustment, and the controller clears them by hand at each close. Adding explicit handling for CURRENCY_CONVERSION after the upgrade routes those entries straight to the foreign exchange account. That removes about two hours of manual clearing per month and, more usefully, removes the judgement calls that came with it.
Implementation checklist
- Check whether your integration parses ShopifyPaymentsTransactionType, and whether it fails on values it does not recognise.
- Make an unknown enum value a logged warning rather than an exception, if that is not already the behaviour.
- Move to GraphQL Admin API version 2026-10 when convenient, since this change carries no urgency of its own.
- Add explicit handling for CURRENCY_CONVERSION and map it to the correct general ledger account with your finance team.
- Reconcile one closed month after the change and confirm entries that previously landed in suspense are now classified.
FAQ
Q: Is action required before we upgrade?
A: Only defensive action. Integrations that tolerate unrecognised enum values need nothing. Strictly typed clients with exhaustive handling should be reviewed, because that is where a new value surfaces as an error rather than as data.
Q: Does this change what Shopify charges for currency conversion?
A: No. This is a labelling change in the API. Conversion behaviour and its cost are unaffected, and no merchant-facing setting changes.
Resources
ShopifyPaymentsTransactionType enum reference
Need guidance? Talk to Makro.