Pular para o conteúdo principal

Notas fiscais de produto (NF-e)

client.product_invoices cobre o ciclo de vida completo da NF-e (modelo 55) no host api.nfse.io, sob /v2: emissão, listagem por cursor, consulta, cancelamento, carta de correção (CC-e), inutilização e downloads.

A emissão segue o contrato 202 discriminado (assíncrona; conclusão via webhook): create / create_with_state_tax devolvem ProductInvoicePending ou ProductInvoiceIssued. Não há create_and_wait nem create_batch.

Downloads retornam URI, não bytes

Diferente das demais notas, os métodos de download desta classe retornam um Nfe::NfeFileResource com o atributo urinão os bytes do arquivo. Use a uri para baixar o conteúdo separadamente.

Métodos

MétodoDescriçãoRetorno
create(company_id:, data:, idempotency_key: nil, request_options: nil)Emite a NF-e.ProductInvoicePending ou ProductInvoiceIssued
create_with_state_tax(company_id:, state_tax_id:, data:, idempotency_key: nil, request_options: nil)Emite vinculada a uma inscrição estadual.ProductInvoicePending ou ProductInvoiceIssued
list(company_id:, environment:, **options)Lista por cursor; environment obrigatório.Nfe::ListResponse
retrieve(company_id:, invoice_id:)Consulta por id.Nfe::ProductInvoice
cancel(company_id:, invoice_id:, reason: nil)Cancela (assíncrono); reason vai na query.Hash
list_items(company_id:, invoice_id:, limit: nil, starting_after: nil)Lista os itens da nota.Nfe::ListResponse
list_events(company_id:, invoice_id:, limit: nil, starting_after: nil)Lista os eventos fiscais.Nfe::ListResponse
download_pdf(company_id:, invoice_id:, force: nil)DANFE PDF (URI).Nfe::NfeFileResource
download_xml(company_id:, invoice_id:)XML autorizado (URI).Nfe::NfeFileResource
download_rejection_xml(company_id:, invoice_id:)XML de rejeição (URI).Nfe::NfeFileResource
download_epec_xml(company_id:, invoice_id:)XML de contingência EPEC (URI).Nfe::NfeFileResource
send_correction_letter(company_id:, invoice_id:, reason:)Emite CC-e; reason de 15 a 1000 caracteres.Hash
download_correction_letter_pdf(company_id:, invoice_id:)PDF da CC-e (URI).Nfe::NfeFileResource
download_correction_letter_xml(company_id:, invoice_id:)XML da CC-e (URI).Nfe::NfeFileResource
disable(company_id:, invoice_id:, reason: nil)Inutiliza uma nota (assíncrono).Hash
disable_range(company_id:, data:)Inutiliza uma faixa de numeração.Hash

As opções de cursor em list, list_items e list_events são starting_after, ending_before, limit e q.

Emitir uma NF-e

result = client.product_invoices.create(
company_id: "55df4dc6b6cd9007e4f13ee8",
data: {
buyer: { federalTaxNumber: 11111111111111, name: "Cliente Exemplo LTDA" },
items: [
{ code: "001", description: "Produto X", quantity: 1, unitAmount: 99.9 }
]
}
)

if result.pending?
result.invoice_id # acompanhe via retrieve
else
result.resource # Nfe::ProductInvoice
end
Idempotência

Tanto create quanto create_with_state_tax aceitam idempotency_key: (header Idempotency-Key) e request_options: (overrides por chamada). Em retentativas, reutilize a mesma chave para evitar emissão duplicada.

Listar com environment obrigatório

A paginação é por cursor e o parâmetro environment (String "Production" ou "Test") é obrigatório — chamar list sem ele levanta Nfe::InvalidRequestError sem chamada HTTP.

pagina = client.product_invoices.list(
company_id: company_id,
environment: "Production",
limit: 50
)
pagina.each { |nf| puts nf.id }
environment é o ambiente da SEFAZ

Este environment (String) é um parâmetro real de ambiente da SEFAZ, separado da configuração produção/teste da conta (definida em app.nfe.io). O environment: (símbolo) do Nfe::Client está reservado para uso futuro.

Acompanhar até um estado terminal

loop do
nf = client.product_invoices.retrieve(
company_id: company_id,
invoice_id: invoice_id
)
break if Nfe::FlowStatus.terminal?(nf.flow_status)

sleep 2
end

Baixar arquivos (via URI)

arquivo = client.product_invoices.download_pdf(
company_id: company_id,
invoice_id: invoice_id
)
arquivo.uri # URL para baixar o DANFE PDF

Carta de correção (CC-e)

O reason precisa ter entre 15 e 1000 caracteres; fora dessa faixa o SDK levanta Nfe::InvalidRequestError antes de qualquer HTTP.

client.product_invoices.send_correction_letter(
company_id: company_id,
invoice_id: invoice_id,
reason: "Correção do endereço de entrega do destinatário"
)

Inutilizar (disablement)

# Uma nota específica:
client.product_invoices.disable(
company_id: company_id,
invoice_id: invoice_id,
reason: "Numeração não utilizada"
)

# Uma faixa de numeração:
client.product_invoices.disable_range(
company_id: company_id,
data: {
environment: "Production", serie: 1, state: "SP",
beginNumber: 100, lastNumber: 110, reason: "Falha de impressão"
}
)

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.