Pagination
Walk any list endpoint with cursor-based pages.
Every list endpoint returns the Stripe list envelope:
data— up tolimitobjects.has_more— whether more objects exist beyond this page.url— the canonical path of the list.
Cursor parameters
To page forward: request a page, then pass the id of the last object in
data as starting_after, and repeat until has_more is false.
Prefer starting_after everywhere. Backward pagination with
ending_before is not yet supported on some list endpoints — currently the
Refunds and Charges lists — where it returns a 400 invalid_request_error.
Forward pagination with starting_after works on every list endpoint.
Cursors are merchant-scoped: an unknown or cross-merchant cursor returns
invalid_request_error and never leaks another merchant’s rows.
For a complete worked example — including the SDK auto-paging helpers that manage the cursor for you — see the paginate balance transactions cookbook.