Get detailed transaction info by payout_id

Topic summary

Main topic: How to retrieve detailed transaction information for a specific Shopify Payments payout using the Admin REST API (2023-04), given the limits of different transaction resources.

Context and endpoints:

  • Shopify Payments balance transactions (…/shopify_payments/balance/transactions.json?payout_id=…): Links transactions to a payout_id (identifier of a Shopify Payments payout) but exposes minimal fields.
  • Order transactions (…/orders/{order_id}/transactions.json): Provides richer details (amount, type, currency, gateway, tender type) but no direct payout_id linkage.
  • Nested transaction objects in Orders (…/orders.json): Contains the most detail but isn’t easily queryable by payout.

Key questions:

  • Do these three representations refer to the same underlying transaction event?
  • What is the most efficient way to get full transaction details for a given payout without multiple chained requests—must it involve fetching payouts → balance transactions → related order/transaction data?

Status: Unresolved. A second participant requested an update/solution; no answer or concrete method confirmed yet.

Summarized with AI on December 30. AI used: gpt-5.

What I want to achieve: For a specific payout I want to fetch all transactions associated with it, and then for each transaction I want to display transaction information like amount, type of transaction, currency, payment gateway, if it was card, cash or bank transfer etc. It seems like not all information exists in the endpoint where you can pass in a payoutId.

If I understand correctly there are 3 versions of the transaction resource, and they all differ in what type of information is contained within them:

  1. /admin/api/2023-04/shopify_payments/balance/transactions.json?payout_id=<PAYOUT_ID>

    1. This endpoint contains very little info, but you can fetch all transactions that are associated with a certain payout
  2. /admin/api/2023-04/orders/<ORDER_ID>/transactions.json

    1. How can I associate the transaction here with a payoutId? Do I have to fetch the equivalent transaction from option 1 above in order to the payoutId from that transaction
  3. The nested transaction object you can get when querying the orders endpoint: /admin/api/2023-04/orders.json?status=any

    1. This nested object contains the most information but I can’t easily query it. How would I know which order to fetch if there is no payoutId for me to query by? Would I have to do the same thing as option 2 above where I first fetch the payout and then fetch the transactions by payoutId to to get the entire order for that transaction in order to get at more detailed version of the order? This seems very cumbersome.

So to my questions:

  1. My understanding is that they represent the same event, do they?
  2. How to I fetch the transaction data I need in the most efficient way? Do I really need to make 3 roundtrips?

Did you figure this out? I’m wanting to know how to achieve this as well.