Pular para o conteúdo principal

Notas fiscais de serviço (NFS-e)

nfe.serviceInvoices é o recurso canônico de emissão da plataforma. Ele fala com o host api.nfe.io no caminho /v1 e cobre todo o ciclo de vida da nota: emissão (síncrona ou assíncrona), consulta, listagem, cancelamento, envio por e-mail e download de PDF/XML.

Métodos

MétodoDescriçãoRetorno
create(companyId, data)Emite a NFS-e.CreateInvoiceResponse (união discriminada)
createAndWait(companyId, data, options?)Emite e faz polling até um estado terminal.ServiceInvoiceData
list(companyId, options?)Lista paginada (page-style) com filtros de data.ServiceInvoiceListResponse ({ serviceInvoices, page })
retrieve(companyId, invoiceId)Consulta uma NFS-e por id.ServiceInvoiceData
retrieveByExternalId(companyId, externalId)Consulta por id externo (idempotência/reconciliação).ServiceInvoiceData
cancel(companyId, invoiceId)Cancela (assíncrono).CancelInvoiceResponse (união discriminada)
cancelAndWait(companyId, invoiceId, options?)Cancela e faz polling até concluir.ServiceInvoiceData
sendEmail(companyId, invoiceId)Reenvia a nota por e-mail ao tomador.{ sent, message }
downloadPdf(companyId, invoiceId?)PDF da nota; sem invoiceId, baixa o ZIP da empresa.Buffer
downloadXml(companyId, invoiceId?)XML da nota; sem invoiceId, baixa o ZIP da empresa.Buffer

As opções de list são pageIndex, pageCount, issuedBegin, issuedEnd, createdBegin, createdEnd e hasTotals.

Validação fail-fast

Os métodos validam companyId/invoiceId antes de qualquer chamada HTTP. Ids vazios ou em branco lançam ValidationError sem tráfego de rede.

Emitir uma NFS-e e tratar o retorno discriminado

create devolve { status: 'async' } (HTTP 202, enfileirada) ou { status: 'immediate' } (HTTP 201, já materializada). Distinga pela tag status — o TypeScript estreita o tipo em cada ramo.

const result = await nfe.serviceInvoices.create('55df4dc6b6cd9007e4f13ee8', {
cityServiceCode: '2690',
description: 'Manutenção e suporte técnico',
servicesAmount: 100.0,
borrower: { federalTaxNumber: 191, name: 'Banco do Brasil SA' },
});

if (result.status === 'async') {
result.response.invoiceId; // id para reconsultar enquanto processa
result.response.location; // caminho do header Location
} else {
result.invoice; // ServiceInvoiceData já emitida
}

Acompanhar até um estado terminal (polling)

createAndWait combina create + polling (backoff exponencial) e devolve a nota já em estado terminal, lançando InvoiceProcessingError em IssueFailed.

const invoice = await nfe.serviceInvoices.createAndWait(companyId, data, {
timeout: 120000, // padrão: 2 min
initialDelay: 1000,
onPoll: (attempt, flowStatus) => console.log(attempt, flowStatus),
});

invoice.flowStatus; // 'Issued'

Veja Emissão assíncrona e polling para os estados de FlowStatus e as opções de polling.

Baixar PDF e XML (bytes binários)

import { writeFileSync } from 'node:fs';

const pdf = await nfe.serviceInvoices.downloadPdf(companyId, invoiceId);
writeFileSync('nota.pdf', pdf);

// ZIP de todas as notas da empresa (sem invoiceId):
const zip = await nfe.serviceInvoices.downloadXml(companyId);
writeFileSync('notas-xml.zip', zip);

Cancelar e reenviar por e-mail

O cancelamento é assíncrono (HTTP 202 + Location). Use cancelAndWait para bloquear até o cancelamento concluir.

const settled = await nfe.serviceInvoices.cancelAndWait(companyId, invoiceId);
settled.flowStatus; // 'Cancelled'

// Sem bloquear — trate a união discriminada:
const c = await nfe.serviceInvoices.cancel(companyId, invoiceId);
if (c.status === 'async') console.log('cancelando:', c.response.invoiceId);

await nfe.serviceInvoices.sendEmail(companyId, invoiceId);

Próximos passos

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.