Pular para o conteúdo principal

Paginação

As listas devolvem uma página com os itens e o que é preciso para buscar a próxima. Há dois estilos, conforme a API de origem:

MétodoEstiloParâmetrosTamanho da página
service_invoices.listpor índice (OffsetPage)page_index (começa em 1), page_count1 a 50 (padrão 10)
companies.listpor cursor (CursorPage)limit, starting_after, ending_before1 a 50 (padrão 10)

certificates.list, webhooks.list e webhooks.event_types não são paginados: devolvem uma list comum.

Percorrer tudo: auto_paging_iter()​

auto_paging_iter() entrega os itens desta página e das seguintes, buscando cada página só quando precisa:

from nfeio import NfeClient

client = NfeClient()
company_id = "ID_DA_EMPRESA"

page = client.service_invoices.list(company_id, page_count=50, issued_begin="2026-01-01")
for invoice in page.auto_paging_iter():
print(invoice.id, invoice.flow_status, invoice.services_amount)

for company in client.companies.list(limit=50).auto_paging_iter():
print(company.id, company["name"])
  • Iterar a página direto (for x in page) percorre só esta página.
  • Não existe método que carregue todas as páginas na memória de uma vez. Para isso, faça list(page.auto_paging_iter()) consciente do volume.
  • A iteração sempre para numa página vazia e levanta UnexpectedResponseError se a API devolver a mesma página de novo, em vez de entrar em laço infinito.

Página a página​

from nfeio import NfeClient, OffsetPage, ServiceInvoice

client = NfeClient()

page: OffsetPage[ServiceInvoice] | None = client.service_invoices.list(
"ID_DA_EMPRESA", page_count=20
)
while page is not None:
print(f"página {page.page_index}: {len(page)} notas")
for invoice in page.data:
print(invoice.id)
page = page.next_page() # None depois da última
AtributoO que é
dataLista com os itens desta página.
has_moreSe há uma próxima página.
next_page()Busca a próxima página, ou devolve None.
last_responsestatus_code, headers e request_id da resposta.
page_index, page_countSó em OffsetPage.
limitSó em CursorPage.

NFS-e: paginação por índice​

from datetime import date

from nfeio import NfeClient

client = NfeClient()

page = client.service_invoices.list(
"ID_DA_EMPRESA",
page_index=1, # começa em 1
page_count=50, # de 1 a 50
issued_begin=date(2026, 9, 1),
issued_end="2026-09-30", # date, datetime ou "AAAA-MM-DD"
)

Filtros: issued_begin, issued_end, created_begin e created_end. A API não informa o total de itens, então has_more é verdadeiro quando a página veio cheia. No pior caso, isso custa uma requisição a mais que volta vazia. As páginas seguintes mantêm o page_count da primeira.

Empresas: paginação por cursor​

from nfeio import NfeClient

client = NfeClient()

primeira = client.companies.list(limit=25)
ultima_id = primeira.data[-1].id if primeira.data else None

if ultima_id is not None:
seguinte = client.companies.list(limit=25, starting_after=ultima_id)
anterior = client.companies.list(limit=25, ending_before=seguinte.data[0].id)

starting_after e ending_before são excludentes. No cursor, auto_paging_iter() busca as páginas seguintes com limit=50.

No cliente assíncrono​

list é uma corrotina, e auto_paging_iter() vira iteração assíncrona:

import asyncio

from nfeio import AsyncNfeClient


async def main() -> None:
async with AsyncNfeClient() as client:
page = await client.service_invoices.list("ID_DA_EMPRESA", page_count=50)
async for invoice in page.auto_paging_iter():
print(invoice.id)

proxima = await page.next_page()
print(proxima)


asyncio.run(main())

NFE.io

A NFE.io é uma empresa de tecnologia que fornece soluções para automatizar e simplificar a emissão e gestão de notas fiscais eletrônicas. Com suas ferramentas, as empresas podem economizar tempo e reduzir erros, aumentando a eficiência e precisão do processo de emissão de notas fiscais.

Um dos principais cases de sucesso da NFE.io é a implementação da solução na empresa de transporte Rodonaves. Com a automatização da emissão e gestão de notas fiscais eletrônicas, a Rodonaves conseguiu reduzir em até 80% o tempo gasto nesse processo, o que se traduziu em uma significativa melhoria na eficiência operacional. Além disso, a empresa também conseguiu eliminar erros e atrasos na emissão de notas fiscais, o que melhorou a relação com seus clientes e aumentou a confiança dos órgãos fiscais.

Outro exemplo é a implementação da NFE.io na empresa de comércio eletrônico, a Loja Integrada. Com a automatização da emissão de notas fiscais, a Loja Integrada conseguiu aumentar a velocidade de emissão de notas em até 10 vezes, o que permitiu que a empresa atendesse a uma maior quantidade de clientes e, consequentemente, aumentar as suas vendas.

Além desses exemplos, a NFE.io também tem outros cases de sucesso com empresas de setores como indústria, construção, varejo e serviços, mostrando a versatilidade e eficácia da sua solução.

Em resumo, a NFE.io é uma empresa de tecnologia que oferece soluções para automatizar e simplificar a emissão e gestão de notas fiscais eletrônicas, ajudando as empresas a economizar tempo e reduzir erros, melhorando a eficiência e precisão do processo. Com cases de sucesso em diferentes setores, a NFE.io tem se destacado como uma empresa líder em automação fiscal.