API do Fiscalo
Emita NFS-e Nacional a partir do seu sistema e receba o imposto já calculado, com o porquê de cada número. REST, JSON, chave por conta e webhooks assinados.
1. Autenticação
Crie a chave no app, em Configurações > API e webhooks (dono ou administrador, com a verificação em duas etapas). Ela aparece uma vez só. Envie em todas as chamadas:
curl https://api.fiscalo.com.br/v1/empresas \
-H "Authorization: Bearer fsk_test_SUA_CHAVE"
A chave vale para a conta que a criou; não precisa do cabeçalho de organização. Limite: 300 requisições por minuto por chave. Erros voltam como {"erro": "mensagem"}, com o código HTTP correspondente.
2. Rotas principais
/v1/empresasEmpresas da conta/v1/empresas/{id}/servicosServiços do catálogo (código nacional e NBS)/v1/empresas/{id}/tomadoresClientes (tomadores): listar e cadastrar/v1/empresas/{id}/calcularCalcula o imposto sem criar nota (Simples, ISS, retenções, IBS/CBS)/v1/empresas/{id}/notasCria o rascunho com o cálculo congelado/v1/empresas/{id}/notas/{nota}/emitirAssina e envia a DPS à Sefin Nacional/v1/empresas/{id}/notas/{nota}Situação, número, chave de acesso e cálculo/v1/empresas/{id}/notas/{nota}/pdf · /xmlDANFSe e XML oficial/v1/empresas/{id}/notas/{nota}/cancelarCancelamento (motivo 1, 2 ou 9 e justificativa)/v1/empresas/{id}/notas/{nota}/substituirSubstituição (nota corrigida que cancela a anterior)3. Emitir uma nota
Crie o rascunho (o cálculo é feito e guardado nesse momento) e depois emita:
curl -X POST https://api.fiscalo.com.br/v1/empresas/{id}/notas \
-H "Authorization: Bearer fsk_test_SUA_CHAVE" -H "Content-Type: application/json" \
-d '{"competencia": "2026-11-20", "servicoId": "…", "tomadorId": "…", "valor": "1500.00"}'
curl -X POST https://api.fiscalo.com.br/v1/empresas/{id}/notas/{nota}/emitir \
-H "Authorization: Bearer fsk_test_SUA_CHAVE"
A resposta traz status: AUTORIZADA (com número e chave de acesso), REJEITADA (com os erros da Sefin) ou PENDENTE_CONFIRMACAO, que se resolve sozinho e chega pelo webhook.
4. Webhooks
Cadastre a URL (https) no app. Enviamos nota.autorizada, nota.rejeitada, nota.cancelada e nota.substituida, com novas tentativas por até 2 dias se a sua URL falhar:
POST https://seu-sistema.com.br/fiscalo
Fiscalo-Evento: nota.autorizada
Fiscalo-Assinatura: t=1793900000,v1=5d41402abc4b2a76…
{"id": "evt_123", "tipo": "nota.autorizada", "criado_em": "2026-11-05T16:40:46Z", "tentativa": 1,
"dados": {"id": "…", "empresa_id": "…", "status": "AUTORIZADA", "numero": "128",
"chave_acesso": "3550308…", "competencia": "2026-11-05", "valor": "1500.00"}}
Confira a assinatura antes de confiar no corpo: HMAC-SHA256 de t + "." + corpo com o segredo do webhook (whsec_…), e recuse eventos com mais de 5 minutos.
import { createHmac, timingSafeEqual } from 'node:crypto'
function assinaturaValida(corpo, cabecalho, segredo) {
const [, t, v1] = cabecalho.match(/^t=(\d+),v1=([0-9a-f]{64})$/) ?? []
if (!t || Math.abs(Date.now() / 1000 - Number(t)) > 300) return false
const esperado = createHmac('sha256', segredo).update(`${t}.${corpo}`).digest()
return timingSafeEqual(esperado, Buffer.from(v1, 'hex'))
}
Responda com qualquer código 2xx em até 10 segundos. Use o id do evento para não processar o mesmo aviso duas vezes.
Perguntas frequentes
A API já emite notas válidas?
Ainda não. Enquanto o Fiscalo opera em homologação, as chaves são de teste (fsk_test_) e as notas saem na produção restrita da Sefin, sem validade jurídica. A homologação (sandbox) é grátis.
Quanto custa?
Sandbox grátis. Em produção: Start R$ 129,00 por mês (300 notas), Pro R$ 349,00 (2.000), Scale R$ 899,00 (10.000); acima disso R$ 0,07 por nota.
Preciso guardar o certificado digital do meu cliente?
Não. O certificado A1 é enviado uma vez pelo app e fica num cofre de chaves (não exportável). A API só pede a nota; quem assina é o cofre.
Comece no sandbox, de graça.
Crie a conta, gere a chave e emita a primeira nota de teste hoje.
Criar conta grátis