A API da Malvo usa dois formatos de paginação. Saber qual endpoint usa qual evita laços infinitos e perda de dados.
GET /v2/transactions é o endpoint atual para transações. A versão antiga, paginada por página (GET /transactions), está depreciada e será removida após 2026-12-31 — mantida apenas por compatibilidade. Use sempre /v2/transactions em integrações novas.

Formato baseado em página

O envelope traz a página atual e o total de resultados:
Parâmetros de consulta: page (base 1, padrão 1) e pageSize. Para os endpoints de transações e investimentos o pageSize é 500 por padrão e 500 no máximo.

Como iterar

Incremente page até alcançar totalPages:
Node

Formato baseado em cursor (/v2/transactions)

GET /v2/transactions retorna um cursor opaco em vez de números de página:
O next já vem com accountId e o cursor after. O cursor codifica date|id da última linha em base64 — trate-o como opaco, não tente parsear. Não há parâmetro pageSize no /v2: o servidor controla o tamanho da página (500 por página).

Como iterar

Continue chamando GET /v2/transactions{next} até next virar null:
Node
A condição de parada é estritamente next === null. Não pare ao ver uma página com menos de 500 itens — o servidor pode entregar páginas parciais e ainda assim trazer um next não nulo.

Sincronização incremental

Para sincronizar apenas o que chegou desde a última leitura, combine o cursor com createdAtFrom (tempo de ingestão). Não combine createdAtFrom com dateFrom na mesma chamada:
Node
O melhor gatilho para essa sincronização são os webhooks transactions/created e transactions/updated, e não polling.

Endpoint depreciado: GET /transactions

A versão antiga retorna o formato baseado em página e aceita page/pageSize (1–500, padrão 500), além de from/to/ids/billId. Está depreciada (remoção após 2026-12-31). Migre para /v2/transactions e itere pelo cursor, uma vez por sincronização, guiado por webhooks.