See all services → Shopify Plus Partner
API Developer

Query Shopify Payments fee details with the Admin API

Admin API 2026-10 adds a feeDetails query that returns individual Shopify Payments fees with settlement amounts, tax, and the order transaction each fee was charged on.

Executive summary

What changed

The GraphQL Admin API now exposes feeDetails, a connection of FeeDetails nodes. Each node carries the fee name and amount, the flatRate and variableRate components that produce that amount, the taxAmount applied, the settlementAmount with the settlementCurrencyRate used to convert it, the associated orderTransaction where one exists, and createdAt plus processedAt timestamps.

The change is purely additive. No existing field changes shape or meaning, and no existing app needs modification. A shop with no recorded fees returns an empty connection rather than an error, so the query is safe to call unconditionally. Access requires the read_billing scope and API version 2026-10 or later.

Why it matters

Fee reconciliation is one of the quieter sources of month-end friction on Shopify Plus. Teams working from payout-level totals get a single blended figure with no way to attribute a variance to a specific order, so a discrepancy of a few hundred dollars turns into a manual hunt through payout reports.

Reading fees per transaction removes that guesswork. Because each FeeDetails node links back to its orderTransaction, you can attribute cost to the order that generated it and post a fee line at the same grain your finance team already works in. The split between flatRate and variableRate matters for cross-border businesses, where conversion and card-type surcharges sit inside what otherwise looks like one processing fee. settlementAmount and settlementCurrencyRate let you tie the Shopify figure to what actually reached the bank, which is where most reconciliation breaks surface.

Role-specific impact

Use-case example

Real-world scenario

A Plus merchant selling into the United States and the European Union closes each month with a payout-to-bank variance of roughly 0.4 percent of processed volume. The finance team has written it off as a rounding artefact for two years. After moving their middleware to 2026-10 and pulling feeDetails alongside each order transaction, they find the variance concentrated in cross-border card fees carrying a variableRate component their flat-fee model never accounted for. The model gets corrected once, and the monthly manual adjustment, previously about three hours of analyst time, disappears.

Implementation checklist

  1. Confirm your app or middleware is pinned to GraphQL Admin API version 2026-10 or later.
  2. Verify the read_billing access scope is granted, and request it if it is not.
  3. Query feeDetails and select only the fields your ledger consumes, starting with feeName, amount, taxAmount, settlementAmount, and orderTransaction.
  4. Treat an empty connection as a valid result, not a failure state.
  5. Backfill a single closed month first and reconcile it against the payout report before trusting the pipeline.
  6. Map each fee type to a general ledger account with your finance team, and document the mapping in your ERP integration runbook.

FAQ

Q: Does this break our existing Shopify Payments reporting?

A: No. The change is additive and alters no existing field. Apps on earlier API versions, and apps that do not read Shopify Payments fees, are unaffected.

Q: Do we still need payout-level data if we have feeDetails?

A: Yes. Payout records remain the authoritative view of what Shopify deposited. feeDetails explains the composition of those deposits, so the two are complementary rather than interchangeable.

Resources

feeDetails query reference

Need guidance? Talk to Makro.