Get Partner Transactions
Retrieve a paginated list of partner sales and refunds from your store, in one currency.
Both types are returned unless type is set. Newest first. Narrow the list with the optional filters below. All filters combine with AND.
Request
GET /partner-transactions
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
currency | string | Yes | — | Lowercase ISO-4217 code (e.g. usd). Must be a currency the store sells in. See Currency. |
page | integer | No | 1 | Page number for pagination. |
per_page | integer | No | 25 | Items per page (min: 1, max: 100). The default is 25, not 10. |
sort | string | No | -created_at | Sort field: created_at, amount, commission_percent, commission_amount, partner_name, or customer_email. Prefix with - for descending. |
partner | string | No | — | Partner UUID. Unknown, archived, or the store referrer returns 404, not an empty list. A malformed value returns 400. When omitted, archived partners' rows are included with ref set to null — see Overview. |
product | string | No | — | Product UUID. A malformed value returns 400. |
query | string | No | — | Customer search. An email address matches customer_email exactly. Anything else is a partial match on customer_name. |
type | string | No | — | sale or refund. Omit to return both. An unknown value returns 400. |
created_from | string | No | — | Only rows recorded on or after this date (inclusive), YYYY-MM-DD. For a refund, that is the refund time. No date window when omitted. |
created_to | string | No | — | Only rows recorded on or before this date (inclusive), YYYY-MM-DD. No date window when omitted. |
The currency parameter is required. A missing, malformed, or unsupported currency returns 400 (see Bad Request). The other filters are optional, but a non-empty yet unparseable value — an unknown type, a malformed date, a non-UUID partner or product, an out-of-range per_page, or an unknown sort field — also returns 400. The query search term is free text and is always accepted.
Ordering: Rows default to created_at descending (newest first) unless sort is supplied.
Counting matches: every response includes the filtered total in pagination.total. To get only a count, request per_page=1 with your filters and read pagination.total.
Example Request
curl -X GET "https://cart.easy.tools/api/v1/partner-transactions?currency=usd&partner=7c2e9a14-3b6f-4d81-9e25-0c8a1f4b6d30" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Response
Success Response (200)
Returns a paginated list. The sale and its refund are two items. Amounts are minor units (e.g. cents): 1999 is 19.99 USD, the 250g package price. Commission on the sale is 300. The refund commission is -299. Get Partner stats for this partner show amount 0 and commission_amount 1.
{
"items": [
{
"id": "b9d3e7f1-2a84-4c56-8f10-5e7a2b9c1d44",
"type": "refund",
"amount": -1999,
"currency": "usd",
"commission_percent": 15,
"commission_amount": -299,
"created_at": "2026-05-28T09:00:00+00:00",
"partner_id": "7c2e9a14-3b6f-4d81-9e25-0c8a1f4b6d30",
"partner_name": "Ada",
"ref": "ada",
"customer_id": "c4a8e1f2-7b30-4d96-8a15-6e2f9c0d3b71",
"customer_email": "buyer@example.com",
"customer_name": "Jane Doe",
"product_id": "0632bef5-c308-42cd-9cba-89a7a4f722bb",
"product_name": "Premium Coffee Beans",
"variant_id": "d91c65aa-b221-4aa4-b626-cf0d8a198749",
"variant_name": "250g Package",
"order_id": "9f3c2a71-8e54-4b16-a0d7-1c5e8b2f4a90",
"transaction_id": "2a6d8c14-5f73-4e90-b1a8-7d3c0e9f2b45"
},
{
"id": "e4f1a8c2-6d30-4b97-a1e5-2c8f0d3b7a91",
"type": "sale",
"amount": 1999,
"currency": "usd",
"commission_percent": 15,
"commission_amount": 300,
"created_at": "2026-05-27T10:15:30+00:00",
"partner_id": "7c2e9a14-3b6f-4d81-9e25-0c8a1f4b6d30",
"partner_name": "Ada",
"ref": "ada",
"customer_id": "c4a8e1f2-7b30-4d96-8a15-6e2f9c0d3b71",
"customer_email": "buyer@example.com",
"customer_name": "Jane Doe",
"product_id": "0632bef5-c308-42cd-9cba-89a7a4f722bb",
"product_name": "Premium Coffee Beans",
"variant_id": "d91c65aa-b221-4aa4-b626-cf0d8a198749",
"variant_name": "250g Package",
"order_id": "9f3c2a71-8e54-4b16-a0d7-1c5e8b2f4a90",
"transaction_id": "2a6d8c14-5f73-4e90-b1a8-7d3c0e9f2b45"
}
],
"pagination": {
"current_page": 1,
"total_pages": 1,
"per_page": 25,
"total": 2
}
}
Response Fields
See the Partner Transaction object.
Pagination Object
| Field | Type | Description |
|---|---|---|
current_page | integer | Current page number. |
total_pages | integer | Total number of pages. |
per_page | integer | Effective page size (echoes the per_page request parameter; defaults to 25). |
total | integer | Total number of rows matching the applied filters, across all pages. |
Error Responses
Bad Request (400)
Missing currency, a code that is not three letters, or a currency the store does not sell:
{
"message": "A valid currency query parameter is required"
}
An unknown type, sort, date, or UUID uses the filter shape:
{
"message": "Invalid value for 'type': 'nope'"
}
Not Found Error (404)
partner is unknown, archived, or the store referrer.
{
"message": "Partner with ID 7c2e9a14-3b6f-4d81-9e25-0c8a1f4b6d30 not found"
}
Unauthorized Error (401)
{
"message": "Unauthenticated."
}
Forbidden Error (403)
Returned when your API key has not been granted access to the requested store.
{
"message": "You do not have API access to the requested store."
}
Rate Limit Error (429 Too Many Requests)
Returned when you exceed the rate limit. The Retry-After response header gives the number of seconds to wait.
{
"message": "Too many requests. Please retry after 60 seconds."
}