Quick Start
Emita sua primeira NFS-e em 3 passos. A API é assíncrona — você recebe um invoiceId imediatamente e faz polling até a nota ser emitida ou webhooks notificam você automaticamente.
Chamar POST /api/v1/emitir e obter invoiceId
Fazer polling em GET /api/v1/invoices/{id}/status até status = issued
Obter API Key
No Dashboard → API Keys, crie uma nova chave e copie-a. Gere sua API Key em Dashboard → API Keys e use-a nos exemplos abaixo no lugar de ntaas_XXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Emitir NFS-e
Chame POST /api/v1/emitir. A API retorna 202 Accepted com o invoiceId para rastreamento.
curl -X POST https://platform.notaas.com.br/api/v1/emitir \
-H "Content-Type: application/json" \
-H "x-api-key: ntaas_XXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
-d '{
"referencia": "FAT-2026-001",
"tomador": {
"nome": "Empresa Cliente Ltda",
"cnpj": "12345678000190",
"email": "[email protected]"
},
"servico": {
"codigo": "010700",
"descricao": "Desenvolvimento de software sob encomenda"
},
"valores": {
"total": 1500.00,
"aliquotaIss": 2.0
}
}'// Resposta: 202 Accepted
{
"queued": true,
"invoiceId": "inv_abc123",
"referencia": "FAT-2026-001",
"status": "queued",
"pollUrl": "/api/v1/invoices/inv_abc123/status"
}servico.codigo — 6 dígitos numéricos LC 116 (ex: 010700). Opcional: se omitido, usa o código padrão configurado no projeto.
tomador — opcional para emissões a consumidor final (Tomador Não Identificado / B2C) em 43 das 45 engines (exceto barueri e atendenet, ou quando houver ISS retido, exportação ou serviço 170501). Veja todos os detalhes em Endpoints e Cobertura Municipal.
Verificar Status
Faça polling em GET /api/v1/invoices/{id}/status a cada 3–5 segundos. Quando status === "issued" a nota está emitida.
curl https://platform.notaas.com.br/api/v1/invoices/inv_abc123/status \
-H "x-api-key: ntaas_XXXXXXXXXXXXXXXXXXXXXXXXXXXX"// status: queued | processing | issued | error | cancelled
{
"invoiceId": "inv_abc123",
"referencia": "FAT-2026-001",
"status": "issued",
"chNFSe": "4321000001234",
"numeroNfe": "00001",
"emittedAt": "2026-03-12T19:00:00.000Z"
}Dica: prefira Webhooks
Em vez de polling, configure um endpoint webhook para receber eventos nfse.issued e nfse.error automaticamente. Ver Webhooks →