Integração com o seu ERP

Documentação da API aberta · versão de 7 de outubro de 2026.

O Nextributo confere a NF-e e a NFC-e a partir do XML. Qualquer ERP, emissor ou sistema interno pode se ligar a ele de três jeitos, do mais simples ao mais integrado. Todos usam uma chave de API da sua conta.

JeitoPara quemO que exige
Agente de pastaEmissor local que grava o XML autorizado numa pastaNada no ERP: um programa lê a pasta e envia o que é novo
APIERP ou integrador com equipe técnicaDuas chamadas HTTP: enviar o XML e, se quiser, validar antes de emitir
WebhookQuem quer o resultado de volta no ERPUma URL que recebe o resumo assinado de cada conferência

Prefere que a gente faça? A equipe do Nextributo implanta a integração com o seu ERP, sob consulta.

Falar no WhatsApp · Omie e SAP Business One já têm integração nativa, sem código.

1. Chave de API

Em Configuração → Integrações → API para qualquer ERP, o administrador da conta cria uma chave (ntk_…). Ela aparece uma única vez; guarde-a no cofre do ERP. Toda chamada leva a chave no cabeçalho:

Authorization: Bearer ntk_...

Endereço base: https://app.nextributo.com.br/api/v1. A chave vale só para a sua conta e pode ser revogada a qualquer momento, com registro na trilha de acesso.

2. Enviar notas

POST /documents — multipart, campo files (um ou vários arquivos). Aceita XML de NF-e e NFC-e, eventos da SEFAZ (cancelamento, carta de correção) e ZIP com XMLs. PDF/DANFE não entra: ele não traz todos os dados que a conferência precisa.

curl -X POST "https://app.nextributo.com.br/api/v1/documents?source=api" \
  -H "Authorization: Bearer ntk_..." \
  -F "files=@nota.xml" -F "files=@lote.zip"

Resposta 202: um resumo do envio. Nota repetida (mesma chave de acesso ou mesmo arquivo) não entra duas vezes.

{"job_id": "…", "accepted": 12, "duplicates": 1, "rejected": 0,
 "details": [{"filename": "nota.xml", "status": "accepted"}, …]}

Opcional: o cabeçalho Idempotency-Key faz um reenvio idêntico voltar a mesma resposta. GET /jobs/{job_id} acompanha o andamento do lote.

Limites: XML até 10 MB; ZIP até 200 MB por envio.

3. Validar antes de emitir

POST /validate/operation — multipart, campo file com o XML montado pelo emissor, antes de mandar à SEFAZ. A resposta volta em segundos e não grava nada.

curl -X POST "https://app.nextributo.com.br/api/v1/validate/operation" \
  -H "Authorization: Bearer ntk_..." \
  -F "file=@nota-montada.xml"
{"status": "FAIL", "overall_status": "ERRO", "blocking": false,
 "summary": {"errors": 1, "alerts": 0, "potential_amount": "2.34", …},
 "findings": [{"severity": "CRITICAL", "result": "FAIL", "tax": "CBS", "item_line": 1,
               "title": "Base de cálculo IBS/CBS divergente", "message": "…", "action": "…"}]}
statusO que o emissor faz
PASSSegue para a autorização.
REVIEW_REQUIREDSegue, mas marca para o fiscal olhar (a nota entra como Alerta).
FAILSegura a nota e mostra os achados ao operador.
ENGINE_ERRORFonte oficial indisponível: segue e deixa a conferência para depois. O Nextributo nunca estima.

Cada achado traz o item, o imposto, o que foi encontrado, o que era esperado e o que fazer, em português. O campo code é um identificador estável do tipo de achado, útil para automatizar o tratamento no ERP.

4. Consultar resultados

GET /documents lista as notas com filtros (status, direction=saida|entrada, de, ate, model, q, page, page_size). GET /documents/{id} traz a nota; GET /documents/{id}/findings, os achados da conferência atual; GET /documents/{id}/danfe, o DANFE em PDF.

5. Webhook de resultado

Em Configuração → Integrações → Webhook de resultado, informe a URL do seu sistema e um segredo. Ao concluir cada conferência, o Nextributo faz um POST com o resumo e assina o corpo com HMAC-SHA256 no cabeçalho X-NexTributo-Signature: sha256=<hex>. Três tentativas; falhas aparecem na trilha de acesso. O corpo nunca leva o XML, dados do destinatário nem descrições de itens.

{"event": "analysis.completed",
 "document": {"access_key": "4226…", "number": "10918", "overall_status": "ATENCAO",
              "current_status": "ATENCAO", "findings_count": 1,
              "first_finding": "Item 1: …", "url": "https://app.nextributo.com.br/documentos/…"},
 "findings": [{"severity": "MEDIUM", "result": "REVIEW_REQUIRED", "tax": "CBS", "item_line": 1, "title": "…"}]}

Validação do segredo (Python):

import hashlib, hmac
esperado = "sha256=" + hmac.new(SEGREDO.encode(), corpo_bruto, hashlib.sha256).hexdigest()
ok = hmac.compare_digest(esperado, cabecalho_signature)

6. Agente de pasta

Para quem emite em sistema local: um programa pequeno (só Python padrão) lê a pasta onde o emissor salva o XML autorizado, envia o que é novo e lembra o que já mandou. Roda como tarefa agendada do Windows a cada 5 minutos; não apaga nem move nada. A equipe do Nextributo entrega o agente e o roteiro de instalação.

7. O que sai e o que não sai

Início · Termos de uso · Privacidade