Exemplo de integração · API Fiscal

Página de demonstração que chama a API real: NF-e, NFC-e, NFS-e, CT-e, CT-e OS, MDF-e, Produtor Rural, fila assíncrona com retentativas, importação de XML (Distribuição DF-e) e status da SEFAZ. Use uma API Key sandbox (fiscal_test_…): ela sempre emite em homologação.

⚠️ Esta página é só um exemplo didático. Em produção, nunca coloque a API Key em JavaScript/HTML público: chame a API a partir do seu servidor. A aba Cliente pronto tem uma classe para copiar e colar (PHP, Node.js e Python).

1. Conexão

Obrigatória só se sua conta tem mais de uma empresa.

Envia o mesmo JSON da aba Emitir para uma fila persistente: a API devolve um solicitacao_id (202) e o worker transmite quando possível, repete em falhas temporárias e consulta antes de reenviar. Receber não é autorizar: só AUTORIZADA ou REJEITADA são o resultado oficial.

Também funciona nos endpoints de emissão: POST /nfe (ou /nfce, /nfse, /cte, /cteos, /mdfe) com o header Prefer: respond-async (marque a opção na aba Emitir). Reprocessar usa o JSON do corpo da aba Emitir como "dados corrigidos" (obrigatório para REJEITADA). Cancelar remove apenas a tarefa ainda não transmitida, não um documento fiscal.

Usa o documento escolhido na aba "Emitir". O histórico de eventos existe para NF-e e NFC-e.

Cancelamento: NF-e/NFC-e /cancelamento; NFS-e, CT-e, CT-e OS e MDF-e /cancelar. A CC-e do CT-e e do CT-e OS usa correcoes (grupo, campo, valor): aqui é enviada como observação do exemplo.

Busca na SEFAZ as NF-e (e CT-e/MDF-e) emitidas contra o CNPJ da sua empresa e guarda o XML. É incremental (por NSU). A SEFAZ exige aguardar 1 hora quando não há documentos novos; a API respeita isso. Resumos (RESUMO) viram XML completo depois da Manifestação do Destinatário.

Baixar por chave e Manifestação do Destinatário (NF-e)

Documentos recebidos

NSUTipoNaturezaEmitenteValorEmissãoChaveXML
Clique em "Listar recebidos".

NF-e, NFC-e, CT-e, CT-e OS e MDF-e usam a consulta oficial de status de serviço da SEFAZ (cStat 107 = em operação). A NFS-e Nacional não publica status oficial: mostramos a conectividade com o Sistema Nacional.

Receptor (PHP) — valide sempre a assinatura

$ts   = $_SERVER['HTTP_X_WEBHOOK_TIMESTAMP'] ?? '';
$sig  = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';
$body = file_get_contents('php://input');
$ok = abs(time() - (int)$ts) <= 300
   && hash_equals('sha256=' . hash_hmac('sha256', $ts . '.' . $body, getenv('WEBHOOK_SECRET')), $sig);
if (!$ok) { http_response_code(401); exit; }
$evento = json_decode($body, true);   // $evento['event'], $evento['data']
http_response_code(200);              // responda 2xx rapidamente; trate repetidos pelo $evento['id']

A configuração automática preenche naturezas, tributação e IBS/CBS a partir do CRT da empresa (é idempotente). Certificado A1, séries e módulos (NFS-e, CT-e, CT-e OS, MDF-e, DF-e) são configurados no painel.

Uma única classe resolve autenticação, empresa, Idempotency-Key, erros e downloads. Copie para o seu servidor e use os atalhos (emitir, solicitar/aguardar (fila assíncrona), preview, calcular, consultar, pdf, cancelar, sincronizarDfe, statusSefaz, verificarWebhook...).


      

Resposta

Aguardando uma chamada…

Código equivalente da última chamada (para o seu servidor)

Faça uma chamada acima para ver o código equivalente.

A chave aparece como SUA_API_KEY. Erros vêm padronizados: success, error.code, error.message e request_id (informe-o ao suporte).