Paginate Reconciliation Results
Handle cursor-based pagination on all reconciliation endpoints.
# First page
curl "https://api.catalystpay.com/api/v1/reconciliation/transactions/?start_date=2025-01-01&page_size=100" \
-H "Authorization: Bearer rk_your_api_key"
# Next page (use the full "next" URL from the response)
curl "https://api.catalystpay.com/api/v1/reconciliation/transactions/?cursor=cD0yMDI1LTAzLTMx&start_date=2025-01-01&page_size=100" \
-H "Authorization: Bearer rk_your_api_key"
import requests
headers = {"Authorization": "Bearer rk_your_api_key"}
url = "https://api.catalystpay.com/api/v1/reconciliation/transactions/"
params = {"start_date": "2025-01-01", "end_date": "2025-03-31", "page_size": 1000}
all_results = []
while url:
response = requests.get(url, headers=headers, params=params)
data = response.json()
all_results.extend(data["results"])
url = data.get("next")
params = None # next URL includes all params
print(f"Fetched {len(all_results)} transactions")
const headers = { 'Authorization': 'Bearer rk_your_api_key' };
let url = 'https://api.catalystpay.com/api/v1/reconciliation/transactions/?start_date=2025-01-01&end_date=2025-03-31&page_size=1000';
const allResults = [];
while (url) {
const response = await fetch(url, { headers });
const data = await response.json();
allResults.push(...data.results);
url = data.next; // Full URL or null
}
console.log(`Fetched ${allResults.length} transactions`);
Response structure:
{
"next": "https://api.catalystpay.com/api/v1/reconciliation/transactions/?cursor=cD0yMDI1LTAz&start_date=2025-01-01",
"previous": null,
"results": [ ... ]
}
The next field is a full URL with the cursor and original query params baked in -- just follow it directly. Set page_size from 1 to 1000 (default 100) to control batch size. The same pattern works for /chargebacks/ and /subscriptions/.