Pular para o conteúdo

Guias

Emitindo uma NFe

Como emitir sua primeira NFe em 5 minutos.

Este guia vai te ajudar a emitir a sua primeira Nota Fiscal (NF-e, modelo 55) usando a nossa API.

Para se comunicar com a API, você precisa de duas credenciais — veja os detalhes em Autenticação:

  1. Faça login no Painel do Desenvolvedor e copie sua Chave de Acesso (nfe_access_...), em “Suas Chaves de Acesso” — ela identifica a sua conta e vai em todo request, no header X-Access-Key.
  2. Cadastre uma empresa — é lá que fica o certificado digital e a configuração fiscal (UF, ambiente).
  3. Gere uma chave de API para essa empresa. Ela começa com nfe_test_... (homologação) ou nfe_live_... (produção), e vai no header Authorization: Bearer.
Janela do terminal
npm install @tenzanlabs/nfe-node-sdk

O corpo de emit é o documento fiscal em si — os nomes de campo são os mesmos em todas as linguagens e na REST API (nada de camelCase traduzido pelo SDK). O campo mod ("55") indica que é uma NF-e.

import { NFeClient } from '@tenzanlabs/nfe-node-sdk';
const client = new NFeClient('nfe_access_SUA_CHAVE_DE_ACESSO_AQUI', 'nfe_test_SUA_CHAVE_AQUI');
async function run() {
try {
const resposta = await client.emit({
mod: '55',
natureza_operacao: 'Venda de Mercadoria',
data_emissao: new Date().toISOString(),
tipo_documento: '1',
local_destino: '1',
finalidade_emissao: '1',
consumidor_final: '1',
presenca_comprador: '1',
modalidade_frete: '9',
veiculo_placa: '',
agropecuario_tipo_guia: '',
cnpj_emitente: '12345678000199',
inscricao_estadual_emitente: '123456789',
nome_destinatario: 'João da Silva',
cpf_destinatario: '11122233344',
itens: [
{
codigo_produto: '123',
descricao: 'Caneta Azul',
codigo_ncm: '96081000',
cfop: '5102',
unidade_comercial: 'UN',
quantidade_comercial: 10,
valor_unitario_comercial: 2.5,
icms_origem: '0',
icms_situacao_tributaria: '102',
pis_situacao_tributaria: '07',
cofins_situacao_tributaria: '07',
},
],
});
console.log('Sucesso! invoiceId:', resposta.invoiceId);
} catch (error) {
console.error('Erro:', error.message);
}
}
run();

emit é assíncrono — a resposta acima (202) só confirma que o documento entrou na fila, com { message, invoiceId, accessKey }. Para saber se ele foi autorizado, consulte o invoiceId (veja Consultar documento) até o status deixar de ser PENDENTE.

Próximo passo: cancelamento, correção e demais operações.