Transactions
A single endpoint returns the app's Partner-API payout ledger as a paginated object: "list" — GET /api/v1/apps/:app/transactions. Each row is one transaction with a stable id for MERGE / dedup, its own ISO currency, a full processed_at timestamp, and the gross / net / shopify_fee split.
Transactions
The app's Partner-API transaction ledger — the payout rows behind the revenue metric. Each row has a stable id, its own ISO currency, and a full processed_at timestamp (not just a day), plus the gross / net / shopify_fee split per row. Optional type and date-range filters; date filters apply to processed_at. Test transactions are excluded by default.
Path parameter
- Name
app- Type
- string
- Description
The team app's ULID.
Query parameters
- Name
type- Type
- string
- Description
Filter by Partner transaction type:
APP_SUBSCRIPTION_SALE,APP_USAGE_SALE,APP_ONE_TIME_SALE,APP_SALE_ADJUSTMENT,APP_SALE_CREDIT,REFERRAL_TRANSACTION,APP_REFUND.
- Name
include_test- Type
- boolean
- Description
Include Shopify test transactions. Default
false.
- Name
start_date- Type
- string
- Description
YYYY-MM-DD. Filters onprocessed_at(inclusive).
- Name
end_date- Type
- string
- Description
YYYY-MM-DD. Must be greater than or equal tostart_date.
- Name
sort- Type
- string
- Description
Sort column:
processed_at(default),created_at,gross_amount,net_amount.
- Name
order- Type
- string
- Description
ascordesc(defaultdesc).
- Name
page- Type
- integer
- Description
Page to return. Default
1.
- Name
per_page- Type
- integer
- Description
Rows per page. Default
50, maximum100.
Request
curl -G https://ranksyapp.com/api/v1/apps/01JN4HKQX0000000000000000/transactions \
-H "Authorization: Bearer rk_live_..." \
-d type=APP_SUBSCRIPTION_SALE \
-d start_date=2026-05-01 \
-d end_date=2026-05-31
Response
{
"object": "list",
"url": "/api/v1/apps/01JN4HKQX0000000000000000/transactions",
"page": 1,
"per_page": 50,
"total_count": 318,
"has_more": true,
"metadata": {
"summary": { "total_transactions": 318 },
"filters": {
"type": "APP_SUBSCRIPTION_SALE",
"include_test": false,
"start_date": "2026-05-01",
"end_date": "2026-05-31",
"sort": "processed_at",
"order": "desc"
}
},
"data": [
{
"id": "9912034",
"type": "APP_SUBSCRIPTION_SALE",
"type_label": "Subscription sale",
"shop": "acme-store.myshopify.com",
"amount": 19.0,
"gross_amount": 19.0,
"net_amount": 15.2,
"shopify_fee": 3.8,
"currency": "USD",
"processed_at": "2026-05-01T00:00:00+00:00",
"created_at": "2026-05-01T04:12:00+00:00"
}
]
}
Transactions are the rows behind the aggregate revenue series in the revenue metrics.
Response shape
The standard object: "list" envelope. This list is not date-windowed in the series sense, so there is no coverage block, and currency sits on each row (per-transaction payout currency) rather than on the envelope.
- Name
object- Type
- string
- Description
Always
"list".
- Name
url- Type
- string
- Description
The endpoint path.
- Name
page- Type
- integer
- Description
Current page number.
- Name
per_page- Type
- integer
- Description
Rows per page.
- Name
total_count- Type
- integer
- Description
Total transactions across all pages, after filters.
- Name
has_more- Type
- boolean
- Description
Whether further pages exist.
- Name
metadata- Type
- object
- Description
Carries
summary.total_transactions(the filtered total) and the echoedfilters.
- Name
data- Type
- array
- Description
The transaction rows for this page.
Transaction row
- Name
id- Type
- string
- Description
Stable Partner-API transaction id. Use it to MERGE / dedup downstream.
- Name
type- Type
- string
- Description
Partner transaction type, e.g.
APP_SUBSCRIPTION_SALE.
- Name
type_label- Type
- string
- Description
Human-readable label for
type, e.g.Subscription sale.
- Name
shop- Type
- string
- Description
The paying store's
myshopify.comdomain.
- Name
amount- Type
- number
- Description
Alias of
gross_amount, incurrency.
- Name
gross_amount- Type
- number
- Description
Gross amount before Shopify's fee, in
currency.
- Name
net_amount- Type
- number
- Description
Amount after Shopify's fee, in
currency.
- Name
shopify_fee- Type
- number
- Description
Shopify's fee for this transaction, in
currency.
- Name
currency- Type
- string
- Description
ISO code for this transaction's payout currency (can differ per row).
- Name
processed_at- Type
- string
- Description
ISO timestamp when the transaction processed.
- Name
created_at- Type
- string
- Description
ISO timestamp when the row was created.
Pagination
Walk the result set with page and per_page (default 50, maximum 100), and check has_more / total_count to know when to stop. total_count and metadata.summary are computed after your filters, so paging never changes them within a single filtered query.
Errors
Beyond the universal 401 / 403 / 422 / 429 (see Errors), this endpoint returns:
409— the app's Shopify Partner integration isn't usable:partner_integration_not_connected,partner_integration_unauthorized(reconnect in Ranksy), orpartner_integration_pending(first sync still running — retry shortly).
A bad query parameter (unknown type, malformed date, out-of-range per_page) surfaces as a 422.