Nota fiscal no seu SaaS em um prompt.
API de NF-e e NFS-e feita para quem constrói com IA. Conecte o MCP no Cursor ou Claude Code, cole o prompt e deixe o agente integrar a emissão fiscal pra você.
Prefere escrever na mão? É REST + webhooks, do jeito que você já conhece. Sem lidar com SEFAZ, XML, assinatura de certificado ou schema.
curl -X POST https://app.simplifisca.com.br/api/v1/nfe \
-H "Authorization: Bearer $SIMPLIFISCA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-1042" \
-d '{
"emitente": "11222333000181",
"referencia": "pedido-1042",
"naturezaOperacao": "Venda de mercadoria",
"destinatario": {
"cpfCnpj": "99888777000100",
"nome": "Cliente Exemplo LTDA",
"email": "compras@cliente.com.br",
"indicadorIe": 9,
"endereco": {
"logradouro": "Av. Brasil", "numero": "500", "bairro": "Jardins",
"codigoMunicipio": "3550308", "municipio": "São Paulo",
"uf": "SP", "cep": "01430000"
}
},
"itens": [{
"codigo": "SKU-001", "descricao": "Camiseta básica",
"ncm": "61091000", "cfop": "5102",
"unidade": "UN", "quantidade": 2, "valorUnitario": 59.90,
"impostos": {
"icms": { "origem": 0, "csosn": "102" },
"pis": { "cst": "07" },
"cofins": { "cst": "07" }
}
}],
"pagamentos": [{ "forma": "17", "valor": 119.80 }]
}'
import os
import requests
payload = {
"emitente": "11222333000181",
"referencia": "pedido-1042",
"naturezaOperacao": "Venda de mercadoria",
"destinatario": {
"cpfCnpj": "99888777000100",
"nome": "Cliente Exemplo LTDA",
"email": "compras@cliente.com.br",
"indicadorIe": 9,
"endereco": {
"logradouro": "Av. Brasil", "numero": "500", "bairro": "Jardins",
"codigoMunicipio": "3550308", "municipio": "São Paulo",
"uf": "SP", "cep": "01430000",
},
},
"itens": [{
"codigo": "SKU-001", "descricao": "Camiseta básica",
"ncm": "61091000", "cfop": "5102",
"unidade": "UN", "quantidade": 2, "valorUnitario": 59.90,
"impostos": {
"icms": {"origem": 0, "csosn": "102"},
"pis": {"cst": "07"},
"cofins": {"cst": "07"},
},
}],
"pagamentos": [{"forma": "17", "valor": 119.80}],
}
resp = requests.post(
"https://app.simplifisca.com.br/api/v1/nfe",
json=payload,
headers={
"Authorization": f"Bearer {os.environ['SIMPLIFISCA_API_KEY']}",
"Idempotency-Key": "pedido-1042",
},
)
nfe = resp.json()
print(resp.status_code, nfe["id"], nfe["status"]) # 202 ... processando
const payload = {
emitente: "11222333000181",
referencia: "pedido-1042",
naturezaOperacao: "Venda de mercadoria",
destinatario: {
cpfCnpj: "99888777000100",
nome: "Cliente Exemplo LTDA",
email: "compras@cliente.com.br",
indicadorIe: 9,
endereco: {
logradouro: "Av. Brasil", numero: "500", bairro: "Jardins",
codigoMunicipio: "3550308", municipio: "São Paulo",
uf: "SP", cep: "01430000",
},
},
itens: [{
codigo: "SKU-001", descricao: "Camiseta básica",
ncm: "61091000", cfop: "5102",
unidade: "UN", quantidade: 2, valorUnitario: 59.9,
impostos: {
icms: { origem: 0, csosn: "102" },
pis: { cst: "07" },
cofins: { cst: "07" },
},
}],
pagamentos: [{ forma: "17", valor: 119.8 }],
};
const resp = await fetch("https://app.simplifisca.com.br/api/v1/nfe", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SIMPLIFISCA_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "pedido-1042",
},
body: JSON.stringify(payload),
});
const nfe = await resp.json();
console.log(resp.status, nfe.id, nfe.status); // 202 ... processando
{
"id": "8f3c2a1e-...",
"tipo": "nfe",
"status": "processando",
"ambiente": "homologacao",
"referencia": "pedido-1042",
"emitente": { "id": "...", "cnpj": "11222333000181" },
"numero": null,
"serie": "1",
"chaveAcesso": null,
"protocolo": null,
"valorTotal": "119.80",
"sefaz": { "codigo": null, "mensagem": null },
"criadoEm": "2026-10-09T14:03:11-03:00",
"autorizadoEm": null,
"canceladoEm": null,
"links": { "self": "/api/v1/nfe/8f3c...", "xml": null, "pdf": null }
}
- NF-e modelo 55 Emissão, cancelamento e DANFE
- NFS-e Padrão Nacional DPS, cancelamento e DANFSe
- Webhooks assinados HMAC-SHA256 com retentativas
- Multi-CNPJ Vários emitentes por conta
Feito para agentes de IA
Seu agente lê a doc. Você toma um café.
Cursor, Claude Code, Windsurf, Lovable, Bolt, v0 — escolha a ferramenta. A Simplifisca fala a língua do seu agente: servidor MCP, documentação em llms.txt e um prompt pronto para colar.
claude mcp add --transport http simplifisca https://app.simplifisca.com.br/mcp \
--header "Authorization: Bearer sf_live_SUA_CHAVE"
{
"mcpServers": {
"simplifisca": {
"url": "https://app.simplifisca.com.br/mcp",
"headers": {
"Authorization": "Bearer sf_live_SUA_CHAVE"
}
}
}
}
Endpoint
https://app.simplifisca.com.br/mcp
Transporte Streamable HTTP, autenticado com a mesma chave de API (Authorization: Bearer sf_live_...).
13 ferramentas expostas
- conta
- listar_emitentes
- cadastrar_emitente
- enviar_certificado
- listar_catalogo
- salvar_produto
- salvar_servico
- emitir_nfe
- emitir_nfse
- consultar_documento
- listar_documentos
- cancelar_documento
- exemplo_payload
Dica: comece com o emitente em homologacao — notas de teste não contam no plano.
Seu SaaS emite NFS-e em 3 linhas.
O contador configura o serviço uma vez no painel — código de tributação nacional, NBS, ISS e valor. Depois, o seu código (ou o seu agente) só manda o tomador e o codigo do serviço.
Como funciona o catálogo// pagamento confirmado → nota fiscal emitida
await fetch("https://app.simplifisca.com.br/api/v1/nfse", { method: "POST", headers: { Authorization: `Bearer ${process.env.SIMPLIFISCA_API_KEY}`, "Content-Type": "application/json", "Idempotency-Key": pagamento.id },
body: JSON.stringify({ emitente: "11222333000181", tomador: { cpfCnpj: cliente.cpf, nome: cliente.nome, email: cliente.email },
servico: { codigo: "PLANO-PRO" } }) });
Recursos
A parte chata do fiscal, resolvida.
Você manda JSON. A gente monta o XML, assina com o certificado, conversa com a SEFAZ, tenta de novo quando ela cai e te avisa quando terminar.
Catálogo fiscal Novo
Cadastre produtos (NF-e) e serviços (NFS-e) com a tributação configurada uma vez — pelo seu contador no painel ou via API. A nota passa a precisar só do código; campos enviados no item sobrescrevem o catálogo.
PUT /api/v1/produtos/{codigo} · PUT /api/v1/servicos/{codigo}
// NF-e: tributação vem do catálogo
"itens": [{ "produto": "SKU-001", "quantidade": 2 }]
// NFS-e: descrição, cTribNac, ISS e valor também
"servico": { "codigo": "PLANO-PRO" }
NF-e
Emissão e cancelamento de NF-e modelo 55, DANFE em PDF e XML autorizado prontos para download.
NFS-e Padrão Nacional
Emissão via DPS, cancelamento e DANFSe para municípios aderentes ao Padrão Nacional.
Webhooks assinados
Eventos com assinatura HMAC-SHA256 e retentativas com backoff quando seu endpoint não responde.
Fila assíncrona
Retentativa automática em falhas da SEFAZ, com consulta de duplicidade para nunca emitir a mesma nota duas vezes.
Multi-emitente
Vários CNPJs na mesma conta, cada um com seu certificado A1 armazenado de forma criptografada.
Idempotência
Envie o header Idempotency-Key e repita a chamada sem medo: o documento é o mesmo.
Homologação
Ambiente de testes da SEFAZ ilimitado e fora da cota do plano. Troque para produção com um campo.
Painel
Chaves de API, catálogo fiscal, logs com requestId, entregas de webhook e uso do mês num só lugar.
Como funciona
Três passos até a primeira nota.
-
1
Crie a conta e gere a chave
Cadastre-se grátis e gere sua chave de API em Painel → Chaves de API.
Authorization: Bearer sf_live_...
-
2
Cadastre o emitente
Envie os dados do CNPJ e o certificado digital A1 (.pfx). Ele fica guardado criptografado.
PUT /api/v1/emitentes/{id}/certificado
-
3
Emita e receba o webhook
Chame POST /api/v1/nfe e receba o evento nfe.autorizada com a chave de acesso, XML e PDF.
202 → processando → autorizada
Webhooks
Não fique fazendo polling na SEFAZ.
Quando a nota é autorizada, rejeitada ou cancelada, a gente faz um POST no seu endpoint. Cada entrega é assinada com HMAC-SHA256 e reenviada com backoff se você não responder 2xx.
- Assinatura no header X-Simplifisca-Assinatura com timestamp
- Até 8 retentativas com backoff exponencial
- Eventos de NF-e e NFS-e: autorizada, rejeitada, erro e cancelada
Content-Type: application/json
X-Simplifisca-Assinatura: t=1730000000,v1=<hex>
{
"id": "evt_3b9d1c7a...",
"evento": "nfe.autorizada",
"criadoEm": "2026-10-09T14:03:19-03:00",
"dados": {
"id": "8f3c2a1e-...",
"tipo": "nfe",
"status": "autorizada",
"ambiente": "homologacao",
"referencia": "pedido-1042",
"emitente": { "id": "...", "cnpj": "11222333000181" },
"numero": 1,
"serie": "1",
"chaveAcesso": "35261011222333000181550010000000011000000010",
"protocolo": "135260000000001",
"valorTotal": "119.80",
"sefaz": { "codigo": "100", "mensagem": "Autorizado o uso da NF-e" },
"criadoEm": "2026-10-09T14:03:11-03:00",
"autorizadoEm": "2026-10-09T14:03:18-03:00",
"canceladoEm": null,
"links": {
"self": "/api/v1/nfe/8f3c...",
"xml": "/api/v1/nfe/8f3c.../xml",
"pdf": "/api/v1/nfe/8f3c.../pdf"
}
}
}
Preços
Preço justo, sem letra miúda.
Pague pelas notas em produção. Homologação é por nossa conta.
Start
Para o MVP que acabou de ganhar os primeiros clientes.
R$ 49,90 /mês
- 100 notas/mês em produção
- 3 emitentes (CNPJs)
- Homologação ilimitada
- NF-e + NFS-e
- Webhooks e servidor MCP
- Suporte por e-mail
Pro
Para SaaS em tração emitindo todo dia.
R$ 149,90 /mês
- 1000 notas/mês em produção
- 20 emitentes (CNPJs)
- Homologação ilimitada
- NF-e + NFS-e
- Webhooks e servidor MCP
- Suporte por e-mail
Scale
Para plataformas que emitem em nome de muitos CNPJs.
R$ 449,90 /mês
- 5000 notas/mês em produção
- Emitentes ilimitados
- Homologação ilimitada
- NF-e + NFS-e
- Webhooks e servidor MCP
- Suporte por e-mail
Teste grátis por 7 dias com até 20 notas em produção. Pagamento via PIX.
FAQ
Perguntas frequentes
Comece a emitir hoje.
Crie a conta, gere a chave e mande o prompt para o seu agente. A primeira nota em homologação sai em minutos.
7 dias grátis · homologação ilimitada · sem fidelidade