Documentacao da API
API REST para emissao de NF-e e NFC-e. Comunicacao direta com a SEFAZ, assinatura digital e DANFE automatico.
Base URL: https://api.axiom-nfe.com
Autenticacao
A API usa HTTP Basic Auth. Envie sua API key como username e deixe a senha vazia.
Authorization: Basic {base64(api_key + ':')}
Exemplo com curl:
curl -u "nfe_SuaApiKeyAqui:" https://api.axiom-nfe.com/nfe/emitir
Para uso interno (produtos Axioma), use o header X-Axiom-Internal.
Respostas de erro
Erros retornam JSON com campo error e opcionalmente details.
{
"error": "Validation failed",
"details": ["CNPJ is required", "UF is required"]
}
| Status | Significado |
|---|---|
| 400 | Dados invalidos ou faltando |
| 401 | API key invalida ou ausente |
| 403 | Sem permissao para este recurso |
| 404 | Recurso nao encontrado |
| 422 | SEFAZ rejeitou o documento |
| 429 | Rate limit excedido |
| 502 | Erro de comunicacao com a SEFAZ |
Rate Limiting
Headers retornados em toda resposta:
X-RateLimit-Limit: 60 X-RateLimit-Remaining: 57 X-RateLimit-Reset: 1709751234
| Plano | Limite |
|---|---|
| Sandbox | 10 req/min |
| Basico | 60 req/min |
| Plus | 120 req/min |
| Premium | 300 req/min |
| Enterprise | 1.000 req/min |
Cadastrar empresa
Cadastra uma empresa (CNPJ) para emissao de documentos.
Body
| Campo | Tipo | Descricao |
|---|---|---|
| cnpj * | string | CNPJ (14 digitos) |
| razaoSocial * | string | Razao social |
| nomeFantasia | string | Nome fantasia |
| ie * | string | Inscricao estadual |
| crt * | number | 1=Simples, 2=SN Excesso, 3=Normal |
| endereco * | object | { xLgr, nro, xBairro, cMun, xMun, uf, cep } |
| ambiente | string | "homologacao" (default) ou "producao" |
curl -X POST -u "nfe_key:" \
-H "Content-Type: application/json" \
-d '{
"cnpj": "12345678000195",
"razaoSocial": "Empresa Teste Ltda",
"ie": "1234567890",
"crt": 1,
"endereco": {
"xLgr": "Rua Teste",
"nro": "100",
"xBairro": "Centro",
"cMun": "4314902",
"xMun": "Porto Alegre",
"uf": "RS",
"cep": "90000000"
}
}' \
https://api.axiom-nfe.com/empresas
Listar empresas
Lista todas as empresas do cliente.
Upload de certificado A1
Envia o certificado digital (PFX) e a senha.
Body
| Campo | Tipo | Descricao |
|---|---|---|
| pfx * | string | Arquivo PFX em base64 |
| senha * | string | Senha do certificado |
Emitir NF-e
Emite uma NF-e (modelo 55). Processamento assincrono: envia o lote e consulta o retorno.
Headers
| Header | Valor |
|---|---|
| X-Empresa-Id * | ID da empresa cadastrada |
Body
| Campo | Tipo | Descricao |
|---|---|---|
| dest * | object | Destinatario: { CNPJ ou CPF, xNome, endereco } |
| produtos * | array | Lista de produtos (xProd, NCM, CFOP, qCom, vUnCom, impostos) |
| pagamento * | array | Formas de pagamento: [{ tPag, vPag }] |
| ide | object | Sobreescrever campos de identificacao (serie, natOp, etc) |
| frete | object | Dados de transporte/frete |
| infAdic | object | Informacoes adicionais { infCpl, infAdFisco } |
Resposta (200 - Autorizado)
{
"message": "NF-e authorized",
"chaveAcesso": "35260212345678000195550010000000011234567890",
"protocolo": {
"nProt": "135260000001234",
"dhRecbto": "2026-02-15T10:30:00-03:00",
"cStat": "100",
"xMotivo": "Autorizado o uso da NF-e"
},
"status": "authorized"
}
Resposta (202 - Processando)
{
"message": "NF-e sent to SEFAZ, still processing",
"chaveAcesso": "35260212345678000195550010000000011234567890",
"nRec": "351000012345678",
"status": "processing"
}
Consultar NF-e
Consulta os detalhes de uma NF-e pela chave de acesso (44 digitos).
Listar NF-e
Lista NF-e da empresa. Filtros: status, limit (max 200).
Emitir NFC-e
Emite uma NFC-e (modelo 65). Processamento sincrono (PDV). Requer CSC configurado.
Mesmo body que /nfe/emitir. Destinatario opcional para NFC-e abaixo de R$ 200.
Configurar CSC (NFC-e)
Configura o Codigo de Seguranca do Contribuinte para NFC-e.
Body
| Campo | Tipo | Descricao |
|---|---|---|
| CSC * | string | Codigo de Seguranca do Contribuinte |
| idCSC * | string | Identificador do CSC (1 ou 2) |
| serie | number | Serie da NFC-e (default: 1) |
Cancelamento
Cancela uma NF-e/NFC-e autorizada (ate 24h apos autorizacao).
Body
| Campo | Tipo | Descricao |
|---|---|---|
| chaveAcesso * | string | Chave de acesso (44 digitos) |
| justificativa * | string | Motivo (minimo 15 caracteres) |
Carta de correcao (CC-e)
Envia carta de correcao para uma NF-e. Maximo 20 por nota. Nao aplicavel a NFC-e.
Body
| Campo | Tipo | Descricao |
|---|---|---|
| chaveAcesso * | string | Chave de acesso (44 digitos) |
| correcao * | string | Texto da correcao (minimo 15 caracteres) |
Manifestacao do destinatario
Registra manifestacao sobre uma NF-e recebida.
Body
| Campo | Tipo | Descricao |
|---|---|---|
| chaveAcesso * | string | Chave de acesso |
| tpEvento * | string | 210200=Confirmacao, 210210=Ciencia, 210220=Desconhecimento, 210240=Nao realizada |
| justificativa | string | Obrigatorio para 210240 (min 15 chars) |
Inutilizacao de numeracao
Inutiliza uma faixa de numeracao (numeros que foram pulados).
Body
| Campo | Tipo | Descricao |
|---|---|---|
| ano * | number | Ano (ex: 2026) |
| serie * | number | Serie |
| nNFIni * | number | Numero inicial |
| nNFFin * | number | Numero final |
| justificativa * | string | Motivo (min 15 chars) |
| modelo | number | 55 (default) ou 65 |
Download DANFE (PDF)
Retorna o PDF do DANFE (NF-e: A4, NFC-e: 80mm termico). Inline por padrao.
Para download: /danfe/:chaveAcesso/download
Download XML autorizado
Retorna o XML autorizado (nfeProc) para download.
Webhooks
Registre URLs para receber callbacks em tempo real sobre eventos dos seus documentos.
Registra um webhook.
Body
| Campo | Tipo | Descricao |
|---|---|---|
| url * | string | URL que recebera os callbacks (HTTPS recomendado) |
| events | array | Eventos para ouvir (todos por padrao) |
| secret | string | Secret para assinatura HMAC-SHA256 |
Eventos disponiveis
| Evento | Descricao |
|---|---|
| nfe.authorized | NF-e autorizada pela SEFAZ |
| nfe.rejected | NF-e rejeitada/denegada |
| nfce.authorized | NFC-e autorizada |
| nfce.rejected | NFC-e rejeitada |
| evento.cancelamento | Cancelamento aprovado |
| evento.carta_correcao | CC-e aprovada |
Payload do webhook
{
"event": "nfe.authorized",
"data": {
"chaveAcesso": "35260212345678000195550010000000011234567890",
"modelo": 55,
"nProt": "135260000001234"
},
"timestamp": "2026-02-15T10:30:00.000Z"
}
Verificacao de assinatura
Se voce configurou um secret, cada callback inclui o header X-Axiom-Signature:
// Verificar a assinatura
const crypto = require('crypto');
const timestamp = req.headers['x-axiom-timestamp'];
const body = JSON.stringify(req.body);
const expected = crypto
.createHmac('sha256', SEU_SECRET)
.update(`${timestamp}.${body}`)
.digest('hex');
const valid = req.headers['x-axiom-signature'] === `sha256=${expected}`;
Status da SEFAZ
Verifica se a SEFAZ da UF da empresa esta online.