Parameters
Every list endpoint accepts these two query parameters:Maximum Limit: The
limit parameter is capped at 100. If you request more than 100 items, the API returns 100 items.How it works
- Page 1:
offset=0, limit=100→ Returns records 1-100 - Page 2:
offset=100, limit=100→ Returns records 101-200 - Page 3:
offset=200, limit=100→ Returns records 201-300
Example
Response format
List endpoints return an array of resources:Fetching all records
Continue fetching pages until you receive an empty array or fewer records than requested:Best Practice: When fetching all records, add delays between requests to respect rate limits.
Filtering by updated date
Many list endpoints acceptupdated_after and updated_before query parameters to return only records whose updated_at timestamp falls in a given window. Both parameters accept an ISO 8601 date-time value and behave identically on v1 and v2. Support is per endpoint rather than universal: invoices, bills, customer-payments, and vendor-payments accept both, while some collections (including companies, accounts, customers, and items) accept neither. Check the endpoint’s parameter list in the API reference before relying on them.
Both bounds are inclusive:
A record whose
updated_at matches either bound exactly appears in the response.
Timestamp precision
DualEntry storesupdated_at with microsecond precision, so a bound set to a whole second does not cover the fraction of a second that follows it. An upper bound of updated_before=2026-07-31T23:59:59Z excludes a record updated at 2026-07-31T23:59:59.500000Z, silently dropping activity from the final second of the window.
Use the start of the next period as the upper bound rather than the last second of the current one:
Because the upper bound is inclusive, a next-midnight bound also returns a record updated at exactly
00:00:00.000000 on August 1. The lower bound behaves the same way: passing updated_after equal to a record’s exact updated_at returns that record again. Treat each bound as the start of the next period, resume from the greatest updated_at you have already processed, and deduplicate by record ID.
Fetch one calendar month of changes:
Validation errors
Invalid pagination parameters return a400 Bad Request error:
The date filters reject two further cases with the same status code:
Supply an explicit offset on every date filter value. Both
2026-07-01T00:00:00Z and 2026-07-01T00:00:00-04:00 are accepted, and DualEntry normalizes the value to UTC before comparing it.
Note: Requesting limit > 100 does not return an error. The limit is silently capped at 100.
Example error response:
Next: Learn about Errors →

