Transactions
List transactions
Read transaction records from any connected payment platform. Every transaction follows the same unified schema — camelCase fields, monetary amounts as integer minor units.
Endpoint
/v1/transactions List transactions for a business, ordered by timestamp descending (newest first).
Works with both credential types:
an app vlv_ token is already scoped to one business;
a personal vlvk_ key can be pinned to one business or use businessId to select one.
Query parameters
limit optionalstartAfter optionalbusinessId optionalResponse 200
{ "data": [ { "id": "txn_a1b2c3d4", "schemaVersion": "2.1", "profileId": "se-receipt-1", "documentTier": "receipt", "type": "sale", "settled": true, "receiptNumber": "R-2026-004521", "timestamp": "2026-05-12T14:32:15+02:00", "createdAt": "2026-05-12T12:32:18Z", "currency": "SEK", "vendor": { "id": "vendor_abc123", "name": "Kaffekoppen Södermalm", … }, "items": [ { "name": "Cappuccino", "quantity": 2, "unitPrice": 4900, "amount": 9800, "taxRate": 6, "taxCategory": "S", "taxAmount": 555 } ], "tax": { "scheme": "SE_MOMS", "pricesIncludeTax": true, "summary": [ { "rate": 6, "category": "S", "label": "Moms 6%", "taxableAmount": 9245, "taxAmount": 555 } ] }, "totals": { "subtotal": 9800, "discount": 0, "tax": 555, "total": 9800 }, "payment": { "method": "card", "last4": "4242" }, "extensions": { "se": { … } }, "source": { "platform": "izettle", "externalId": "iz_pay_9f8e7d6c", "syncedAt": "2026-05-12T12:32:18Z" } } ], "hasMore": true, "nextCursor": "txn_a1b2c3d4" }
Pagination
Pagination is keyset-based. Each response includes a nextCursor — simply the id of the last transaction in the page —
which you pass as startAfter on the next request.
When hasMore is false (and nextCursor is null),
you've reached the end. There is no offset and no total count.
Next page
GET /v1/transactions?limit=25&startAfter=txn_a1b2c3d4Cursors are plain transaction ids — stable and safe to persist, so a sync job can resume days later from where it stopped.