Pagination
Page through list endpoints and narrow results with date, status and text filters.
Every list endpoint accepts page (1-based) and page_size, and returns a pagination block
alongside data.
"pagination": {
"page": 1,
"page_size": 20,
"total_records": 7,
"total_pages": 1,
"has_next": false,
"has_previous": false
}
Both values must be positive integers. Default page sizes differ by resource:
Default page_size |
Endpoints |
|---|---|
10 |
Bank accounts, chart of accounts, suppliers, tax rates, ERP transactions |
20 |
Cards, pool accounts, statements, core cards |
12 |
Statements by account |
Walk pages with has_next rather than comparing page to total_pages: it stays correct if records
are written while you paginate.
let page = 1;
const all = [];
while (true) {
const res = await fetch(
`https://api.qashio.com/public/v1/erp/transactions?page=${page}&page_size=100`,
{ headers: { Authorization: `Bearer ${accessToken}` } },
);
const body = await res.json();
all.push(...body.data);
if (!body.pagination.has_next) break;
page += 1;
}
Date filters
*_from / *_to parameters take YYYY-MM-DD and are inclusive.
- On ERP master data and ERP transaction endpoints, both ends of a range must be sent together.
Sending only one returns
400. - On cards and pool accounts, either end may be sent alone.
month, from_month and to_month take YYYY-MM.
Text and identifier filters
On ERP master data and ERP transactions, text filters such as remote_name are case-insensitive
partial matches. Identifier filters: qashio_id, parent_qashio_id, account_id, user_id: are
exact.
Incremental sync
The updated_at_from / updated_at_to window is the right tool for a nightly or hourly sync: pull
only what changed since your last successful run, rather than re-reading the whole collection.
curl -X GET 'https://api.qashio.com/public/v1/erp/suppliers?updated_at_from=2026-07-01&updated_at_to=2026-07-17&page_size=100' \
-H 'Authorization: Bearer <access_token>'
Store the high-water mark after the whole page loop succeeds, not per page, so a mid-run failure replays rather than skips.