Endpoints
Todos os endpoints são prefixados com https://platform.notaas.com.br/api/v1 e requerem o header x-api-key.
Emissão NFS-e
/emitir🔑 x-api-keyEnfileira uma NFS-e para emissão assíncrona. Retorna 202 com invoiceId para polling.
Estrutura Geral (Body JSON)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| tomador | object | não | Dados do tomador do serviço. Opcional para emissões B2C / consumidor final (Tomador Não Identificado) em 43 das 45 engines (exceto barueri e atendenet). Quando omitido ou enviado como {}, o bloco do tomador (<toma> / <Tomador> / <TomadorServico>) é omitido do XML. |
| tomador.cnpj | string | não | CNPJ do tomador (14 posições: numérico tradicional \d{14} ou alfanumérico [0-9A-Z]{12}\d{2} conforme IN RFB nº 2.229/2024 e NT-009 SNNFSE, com ou sem máscara SS.SSS.SSS/SSSS-DD). Suportado no Ambiente Nacional (snnfse); provedores municipais legados cujos XSDs exigem \d{14} retornam HTTP 400 (CNPJ_ALFANUMERICO_NAO_SUPORTADO). Exclusivo entre cnpj, cpf, nif e motivoAusenciaNif. |
| tomador.cpf | string | não | CPF do tomador (11 dígitos, sem formatação). Exclusivo entre cnpj, cpf, nif e motivoAusenciaNif. |
| tomador.nif | string | não | NIF (Número de Identificação Fiscal, 1 a 40 caracteres) do tomador estrangeiro. Suportado nas 9 engines DPS Nacional (snnfse, pronim_snnfse, el_nacional, issnet_nacional, tiplan, infisc, coplan, betha, tbw) e nas 5 engines municipais com <NifTomador> / NIF posicional (el, dbseller, gissonline, campogrande, barueri). |
| tomador.motivoAusenciaNif | number (0 | 1 | 2) | não | Motivo para ausência do NIF em tomador estrangeiro sem NIF (exclusivo das 9 engines DPS Nacional): 0 = Não informado na nota de origem; 1 = Dispensado do NIF; 2 = Não exigência do NIF. |
| tomador.nome | string | não | Nome ou razão social do tomador (alias aceito: tomador.razaoSocial). Obrigatório quando o tomador é identificado (com cnpj, cpf, nif ou motivoAusenciaNif). Se enviado sem documento fiscal, retorna HTTP 400 (Tomador parcial inválido). |
| tomador.email | string | não | E-mail do tomador para envio da nota (exige tomador identificado). |
| tomador.telefone | string | não | Telefone do tomador — apenas dígitos (exige tomador identificado). |
| tomador.endereco.logradouro | string | não | Logradouro do tomador (exige tomador identificado). |
| tomador.endereco.numero | string | não | Número do endereço. |
| tomador.endereco.complemento | string | não | Complemento do endereço. |
| tomador.endereco.bairro | string | não | Bairro do tomador. |
| tomador.endereco.cidade | string | não | Nome da cidade do tomador (ex: "Londrina"). Resolvido para código IBGE automaticamente. |
| tomador.endereco.uf | string | não | Sigla do estado (ex: "PR"). Use "EX" para o exterior. |
| tomador.endereco.cep | string | não | CEP do tomador (apenas dígitos). |
| tomador.endereco.pais | string | não | Sigla ISO2 do país do tomador (ex: "US"). Padrão: "BR". Se diferente de "BR", ativa o fluxo de tomador estrangeiro. |
| servico.descricao | string | sim | Descrição detalhada do serviço prestado. |
| servico.codigo | string | não | cTribNac LC 116/2003 — 6 dígitos numéricos (ex: "010700"). Opcional: usa o padrão do projeto se omitido. |
| servico.codigoServico | string | não | Código de serviço municipal (SP: 4-5 dígitos, ex: "07498"). Opcional se omitido. |
| servico.localPrestacao | string | não | Código IBGE 7 dígitos do local onde o serviço foi prestado (ex: "3205200"). Em prestação transfronteiriça (modo 1), informe o município onde foi executado e defina o país de destino em valores.exportacao.paisResultado. A Notaas resolve o município de incidência legal (cLocIncid) automaticamente conforme a LC 116/2003. |
| servico.nbs | string | não | Código NBS — Nomenclatura Brasileira de Serviços (9 dígitos numéricos). Obrigatório em municípios com engine TBW/SIL e Betha. Nas engines São Paulo (sp_prefeitura Layout v2), DBSeller, GINFES, GISSOnline e Betha, define o enquadramento IBS/CBS junto com valores.ibscbs (ou é resolvido automaticamente pelo Anexo VIII quando unívoco). |
| servico.ncm | string | não | Código NCM — Nomenclatura Comum do Mercosul (8 dígitos numéricos, ex: "49019900"). Opcional; utilizado no Layout v2 de São Paulo (tag <NCM>) para operações com bens móveis (locação/cessão). Alias: codigoNcm. |
| servico.codigoTributacaoMunicipal | string | não | Código de tributação municipal (desdobro) — 3 dígitos numéricos (ex: "001"). Opcional. |
| servico.caepf | string | null | não | CAEPF (Cadastro de Atividade Econômica da Pessoa Física — 14 dígitos numéricos ou máscara XXX.XXX.XXX/XXX-XX) do prestador PF para a tag <CAEPF> da DPS Nacional (SNNFSE). Opcional e exclusivo para projetos com CPF (11 dígitos); rejeitado com HTTP 400 em projetos CNPJ. Se omitido, herda o caepf cadastrado no projeto; envie null ou "" para suprimir o <CAEPF> pontualmente na nota. Aliases aceitos: prestador.caepf, caepf. |
| valores.total | number | sim | Valor bruto do serviço em reais (ex: 1500.00). |
| valores.descontoIncondicionado | number | não | Desconto incondicionado em R$ (ex: 150.00). Deduz da base de cálculo do ISS e do valor líquido. Utilizado também em Curitiba (Portaria SMF nº 43/2025) para dedução de repasses de agências de turismo (09.02) e publicidade (17.06). Aliases: vDescIncond, desconto. |
| valores.descontoCondicionado | number | não | Desconto condicionado em R$ (ex: 50.00). Condicionado a evento futuro (ex: pontualidade no pagamento); não altera a base do ISS nem o valor líquido padrão. Alias: vDescCond. |
| valores.aliquotaIss | number | sim | Alíquota ISS em % (ex: 2.0 para 2%). Informar 0 para imunidade ou exportação. |
| valores.issRetido | boolean | não | ISSQN retido pelo tomador de serviço (true = tpRetISSQN 2 / retido pelo tomador; false = tpRetISSQN 1 / não retido). Padrão: false. |
| valores.tribISSQN | number | não | Forma de tributação do ISSQN: 1-Tributável, 2-Imunidade, 3-Exportação, 4-Não Incidência. Opcional: para exportação de serviços, é derivado automaticamente como 3 quando o grupo valores.exportacao for informado. |
| valores.tipoImunidade | number | não | Tipo de Imunidade do ISSQN (obrigatório somente quando valores.tribISSQN = 2): 0-Imunidade geral (tipo não informado na nota de origem), 1-Patrimônio/renda/serviços recíprocos (CF88 Art. 150 VI a), 2-Templos de qualquer culto (CF88 Art. 150 VI b), 3-Partidos políticos, sindicatos, instituições de educação e assistência social sem fins lucrativos (CF88 Art. 150 VI c), 4-Livros, jornais, periódicos e papel de impressão (CF88 Art. 150 VI d), 5-Fonogramas e videofonogramas musicais brasileiros (CF88 Art. 150 VI e). Alias técnico: valores.tpImunidade. |
| competencia | string | não | Competência no formato YYYY-MM (padrão: mês atual). |
| referencia | string | não | Identificador externo opcional (seu sistema). |
Dados Complementares (opcional)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| servico.informacoesComplementares | string | não | Informações adicionais/complementares impressas no corpo do DANFSe (limite de 2000 caracteres). |
| servico.pedidoCompra | string | não | Número do pedido de compra (PO) associado ao serviço. |
| servico.documentoReferencia | string | não | Contrato ou nota fiscal de referência. |
Exportação de Serviços (opcional)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| valores.exportacao | object | não | Grupo de dados adicionais de comércio exterior. Obrigatório quando servico.localPrestacao for uma sigla de país. |
| valores.exportacao.modoPrestacao | number | não | Modo de prestação: 1-Transfronteiriço, 2-Consumo no Brasil, 3-Presença Comercial no Exterior, 4-Movimento Temporário. |
| valores.exportacao.vinculoPartes | number | não | Vínculo entre partes: 0-Sem vínculo, 1-Controlada, 2-Controladora, 3-Coligada, 4-Matriz, 5-Filial, 6-Outro. |
| valores.exportacao.codigoMoeda | string | não | Código de 3 dígitos da moeda na tabela BACEN (ex: "220" para USD, "978" para EUR). |
| valores.exportacao.valorServicoMoeda | number | não | Valor do serviço expresso na moeda estrangeira. |
| valores.exportacao.fomentoPrestador | string | não | Código de fomento do prestador (padrão: "01" para nenhum). |
| valores.exportacao.fomentoTomador | string | não | Código de fomento do tomador (padrão: "01" para nenhum). |
| valores.exportacao.movimentacaoTemporariaBens | number | não | Movimentação temporária de bens: 1-Não, 2-Declaração Importação, 3-Declaração Exportação. |
| valores.exportacao.compartilharMdic | boolean | não | Enviar dados da NFS-e para a SECEX/MDIC. |
| valores.exportacao.paisResultado | string | sim | Sigla ISO2 do país onde se produz o resultado do serviço. Obrigatório em notas de exportação. |
Dados de Obra (opcional)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| servico.obra | object | não | Informações sobre a obra de construção civil associada ao serviço. |
| servico.obra.inscricaoImobiliaria | string | não | Inscrição imobiliária municipal da obra (IPTU/Inscrição Cadastral). |
| servico.obra.codigoObra | string | não | Número do cadastro CNO (Cadastro Nacional de Obras) ou CEI. |
| servico.obra.codigoCib | string | não | Código do Cadastro Imobiliário Brasileiro (CIB) da obra. |
| servico.obra.art | string | não | Anotação de Responsabilidade Técnica (ART) da obra (obrigatório para motores ABRASF). |
| servico.obra.endereco | object | não | Endereço específico da execução da obra (estrutura igual ao endereço do tomador). |
Deduções e Reduções de Base de Cálculo (opcional)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| valores.deducoes | object | não | Deduções/reduções da base de cálculo do ISS (convertido automaticamente para <vDedRed> ou <vAjusteBC> conforme a Nota Técnica SE/CGNFS-e nº 009 v1.01). Exclusivo do padrão nacional (SNNFSE, Pronim-SNNFSE e ISSNet Nacional) — nas demais engines a API responde HTTP 400. Informe exatamente UM dos três modos abaixo (percentual, valor ou documentos). |
| ↳ percentual | number | não | Modo 1 — percentual padrão de dedução sobre o valor do serviço (pDR / pAjusteBCISSQN). De 0 a 100, até 2 casas decimais (ex: 30 ou 12.50). |
| ↳ valor | number | não | Modo 2 — valor monetário direto a deduzir, em R$ (vDR / vAjusteBCISSQN). Até 2 casas decimais; não pode superar valores.total. |
| ↳ documentos | array | não | Modo 3 — documentos comprobatórios da dedução (docDedRed / docAjusteBC). De 1 a 1000 itens; o total deduzido é a soma de valorDeducao. |
| ↳ chaveNFSe | chaveNFe | nfseMunicipal | nfNfs | numeroDocFiscal | numeroDocNaoFiscal | string | object | sim | Identificador do documento — informe exatamente UM. chaveNFSe: 50 posições (no SNNFSE com leiaute NT-009 aceita TSChaveNFSe alfanumérica [0-9]{6}[0-9A-Z]{14}[0-9]{30}; no leiaute NT-004 exige [0-9]{50}); chaveNFe: 44 posições (numérica ou com CNPJ alfanumérico nas posições 7 a 20 no SNNFSE); nfseMunicipal: { codigoMunicipio (IBGE 7 díg.), numero (15 díg.), codigoVerificacao (1–9 caract.) }; nfNfs: { numero (7 díg.), modelo (15 díg.), serie (1–15 caract.) }; numeroDocFiscal / numeroDocNaoFiscal: 1–255 caracteres (use numeroDocNaoFiscal para recibo ou contrato de parceria). |
| ↳ tipo | number | sim | Tipo da dedução (tpDedRed): 1, 2, 3, 4, 5, 6, 7, 8, 9 ou 99. Veja a tabela de tipos abaixo (no leiaute SNNFSE NT-009 v1.01, apenas os tipos 2, 5, 6, 7, 8, 9 e 99 são aceitos para dedução de ISSQN). |
| ↳ descricaoOutrasDeducoes | string | não | Descrição da dedução (1–150 caracteres). Obrigatória quando tipo=99; proibida nos demais tipos. |
| ↳ dataEmissao | string | sim | Data de emissão do documento, YYYY-MM-DD. Não pode ser futura. |
| ↳ valorDedutivel | number | sim | Valor total dedutível/redutível do documento (R$ — vDedutivelRedutivel / vTotDoc). |
| ↳ valorDeducao | number | sim | Valor efetivamente deduzido nesta NFS-e (R$ — vDeducaoReducao / vAjusteAplic). Deve ser ≤ valorDedutivel. |
| ↳ fornecedor | object | não | Fornecedor/parceiro do documento (opcional). Informe exatamente UM identificador entre cnpj (14 posições: numérico ou alfanumérico [0-9A-Z]{12}\d{2} no SNNFSE), cpf (11 dígitos), nif ou cNaoNIF (0, 1 ou 2). |
| ↳ cnpj | cpf | string | não | CNPJ (14 posições, numérico ou alfanumérico no SNNFSE) ou CPF (11 dígitos) do fornecedor/profissional parceiro. |
| ↳ nome | string | sim | Nome ou razão social do fornecedor/parceiro (1–300 caracteres). Obrigatório quando fornecedor é informado. |
| ↳ inscricaoMunicipal | string | não | Inscrição municipal do fornecedor (opcional). |
Tipos de dedução (tipo / tpDedRed)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| 1 | tipo | não | Alimentação e bebidas/frigobar (leiaute pré-NT-009; descontinuado no XSD NT-009 v1.01 do SNNFSE) |
| 2 | tipo | não | Materiais |
| 3 | tipo | não | Produção externa (leiaute pré-NT-009; descontinuado no XSD NT-009 v1.01 do SNNFSE) |
| 4 | tipo | não | Reembolso de despesas (leiaute pré-NT-009; descontinuado para ISSQN no XSD NT-009 v1.01 do SNNFSE) |
| 5 | tipo | não | Repasse consorciado |
| 6 | tipo | não | Repasse plano de saúde |
| 7 | tipo | não | Serviços |
| 8 | tipo | não | Subempreitada de mão de obra |
| 9 | tipo | não | Profissional parceiro — Salão Parceiro (Lei 13.352/2016). Use para a parcela do valor repassada ao profissional parceiro (cabeleireiro, barbeiro, manicure, esteticista etc.). Informe o fornecedor com CPF/CNPJ e nome do parceiro. |
| 99 | tipo | não | Outras deduções de ISSQN — exige descricaoOutrasDeducoes. |
🧮 Cálculo do ISS com deduções
- Base de cálculo =
valores.total(vServ) − deduções (vDedRed / vAjusteBC). No modo percentual:total × percentual / 100; no modo documentos: soma devalorDeducao. - O ISS estimado e o ISS retido do valor líquido usam essa base. Deduções não são desconto: o valor do serviço (
vServ) enviado no DPS continua sendo o valor total. - A base de cálculo oficial é apurada pela SEFIN/ADN a partir do DPS; a plataforma envia automaticamente
<vDedRed>ou<vAjusteBC>conforme a vigência da NT-009 v1.01 em cada ambiente. - Sem
valores.deducoes, o comportamento é idêntico ao anterior.
Descontos Incondicionados e Condicionados (opcional)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| valores.descontoIncondicionado | number | não | Valor do desconto incondicionado em R$. Reduz diretamente a base de cálculo do ISS e o valor líquido da nota fiscal. Homologado para DPS Nacional (SNNFSE, Pronim-SNNFSE, ISSNet Nacional, Betha). Aliases: vDescIncond, desconto. |
| valores.descontoCondicionado | number | não | Valor do desconto condicionado em R$. Não altera a base de cálculo do ISS nem o valor líquido (exige evento futuro, como pontualidade de pagamento). Homologado para DPS Nacional. Alias: vDescCond. |
🏛️ Caso Curitiba/PR — Portaria SMF nº 43/2025 (Agências de Turismo e Publicidade)
- Em Curitiba (IBGE 4106902), os prestadores de serviços de intermediação turística (subitem 09.02) e publicidade/propaganda (subitem 17.06) devem informar os valores repassados a terceiros/veículos diretamente em
valores.descontoIncondicionado(ouvDescIncond). - O Emissor Nacional (SNNFSE) abaterá automaticamente essa quantia da base de cálculo do ISS, garantindo que o imposto municipal recaia estritamente sobre a receita de intermediação / remuneração própria da agência.
- Nas informações complementares (
servico.informacoesComplementares), a agência pode especificar a discriminação detalhada dos repasses conforme praxe fiscal.
Tributação Federal e Retenções (opcional)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| valores.totaisTributosAproximados | object | não | Totais aproximados de tributos por esfera — Lei 12.741/2012 (Transparência Fiscal). Envie percentuais OU valores em R$, nunca ambos. Exclusivo para SNNFSE. |
| ↳ percentualTributacaoFederal | number | não | Opção A (percentual): tributos federais aproximados em %. |
| ↳ percentualTributacaoEstadual | number | não | Opção A (percentual): tributos estaduais aproximados em %. |
| ↳ percentualTributacaoMunicipal | number | não | Opção A (percentual): tributos municipais (ISS) aproximados em %. |
| ↳ valorTributacaoFederal | number | não | Opção B (valor R$): tributos federais em reais. |
| ↳ valorTributacaoEstadual | number | não | Opção B (valor R$): tributos estaduais em reais. |
| ↳ valorTributacaoMunicipal | number | não | Opção B (valor R$): tributos municipais (ISS) em reais. |
| valores.destacarTributosAproximados | boolean | não | Opcional. false declara a opção de NÃO destacar o valor aproximado dos tributos (Decreto Federal 8.264/2014 → <indTotTrib>0</indTotTrib>). Suportado em GISSOnline via endpoint individual /api/v1/emitir (Guarulhos, Suzano, Santo André e demais; emissão em lote não é suportada pelo sistema GISS); para MEI é aceito como no-op (o DPS SNNFSE já declara indTotTrib=0). Não pode ser combinado com totaisTributosAproximados. Nos demais motores/regimes retorna 400. Não habilita percentuais/valores aproximados no GISS nem altera a semântica de totaisTributosAproximados. |
| valores.pisCofins | object | não | Configuração/override de PIS/COFINS de apuração própria (<piscofins>) e tipo de retenção por nota. |
| ↳ cst | string | não | CST PIS/COFINS (2 dígitos). Ex: "01", "07". |
| ↳ baseCalculo | number | não | Base de cálculo em R$. Padrão: total do serviço. |
| ↳ aliquotaPis | number | não | Alíquota de PIS de apuração própria em % (ex: 0.65 ou 1.65). |
| ↳ aliquotaCofins | number | não | Alíquota de COFINS de apuração própria em % (ex: 3.00 ou 7.60). |
| ↳ valorPis | number | não | Valor do débito de apuração própria do PIS em R$ (<vPis>). Atenção: deduz a base de cálculo (vBC) do IBS/CBS. Não preencha com PIS retido na fonte. |
| ↳ valorCofins | number | não | Valor do débito de apuração própria da COFINS em R$ (<vCofins>). Atenção: deduz a base de cálculo (vBC) do IBS/CBS. Não preencha com COFINS retida na fonte. |
| ↳ tipoRetencao | number | não | Tipo de retenção PIS/COFINS/CSLL (NT-007: 0=Não Retidos, 3=PIS/COFINS/CSLL Retidos, 4=PIS/COFINS Retidos, 5=PIS Retido, 6=COFINS Retido, 7=COFINS/CSLL Retidos, 8=CSLL Retida, 9=PIS/CSLL Retidos). |
| valores.retencaoIrrf | number | não | Valor de retenção IRRF na fonte em R$ (<vRetIRRF>). Aliases: retencaoIr, ir. |
| valores.retencaoCp | number | não | Valor de retenção Contribuição Previdenciária (INSS) na fonte em R$ (<vRetCP>). Aliases: retencaoInss, inss. |
| valores.retencaoCsll | number | não | Valor de retenção CSLL na fonte em R$ (<vRetCSLL>). Alias: csll. Na DPS Nacional (NT-007), quando retencaoPis/retencaoCofins são informados, o motor consolida automaticamente PIS + COFINS + CSLL em <vRetCSLL>. |
| valores.retencaoPis | number | não | Valor de retenção PIS na fonte em R$. Alias: pis. Na DPS Nacional consolida em <vRetCSLL> sem afetar <vPis> próprio nem a base do IBS/CBS; em motores municipais preenche <ValorPIS>. |
| valores.retencaoCofins | number | não | Valor de retenção COFINS na fonte em R$. Alias: cofins. Na DPS Nacional consolida em <vRetCSLL> sem afetar <vCofins> próprio nem a base do IBS/CBS; em motores municipais preenche <ValorCOFINS>. |
| valores.tipoRetencaoPisCofins | number | não | Tipo de retenção PIS/COFINS/CSLL (0 a 9 — NT-007). Alias: tpRetPisCofins. Se omitido, é derivado automaticamente das retenções informadas (ex: 3 quando há PIS+COFINS+CSLL). |
| valores.regimeApuracaoSimplesNacional | number (1 | 2 | 3) | não | Regime de apuração dos tributos no Simples Nacional para ME/EPP e Excesso de Sublimite: 1 = Tributos federais e municipal pelo SN (ISS incluído no DAS — padrão); 2 = Tributos federais pelo SN e ISSQN por fora do SN conforme legislação municipal do tributo (destaca alíquota municipal e valor do ISSQN Apurado na NFS-e e no DANFSe); 3 = Tributos federais e municipal por fora do SN. Se omitido, herda a configuração cadastrada no projeto (projects.reg_ap_trib_sn). Aliases: valores.regimeApuracao, valores.regimeApuracaoIss, valores.regApTribSN. |
| valores.regimeEspecialTributacao | number (0 | 1 | 2 | 3 | 4 | 5 | 6 | 9) | não | Regime Especial de Tributação (tag <regEspTrib> da DPS Nacional v1.01 — TSRegEspTrib): 0 = Nenhum (padrão); 1 = Ato Cooperado (Cooperativa); 2 = Estimativa; 3 = Microempresa Municipal; 4 = Notário ou Registrador; 5 = Profissional Autônomo; 6 = Sociedade de Profissionais (ISS fixo anual/mensal por profissional, ex: clínicas médicas e escritórios); 9 = Outros. Se omitido, herda a configuração cadastrada no projeto (projects.reg_esp_trib). Aliases: valores.regEspTrib, servico.regimeEspecialTributacao, regEspTrib. |
Atividades de Eventos (opcional)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| servico.evento | object | não | Informações do evento associado à prestação de serviços (item 12 da LC 116). |
| servico.evento.nome | string | sim | Nome ou descrição do evento (ex: "Show de Música Ao Vivo"). Alias: xNome. |
| servico.evento.dataInicio | string | sim | Data de início do evento no formato YYYY-MM-DD. Alias: dtIni. |
| servico.evento.dataFim | string | sim | Data de término do evento no formato YYYY-MM-DD. Alias: dtFim. |
| servico.evento.id | string | não | Identificador único do evento (opcional). Alias: idAtvEvt. |
| servico.evento.endereco | object | não | Endereço de realização do evento (cep, logradouro, numero, complemento, bairro, cidade + uf ou pais no exterior). Obrigatório quando servico.evento é informado no Layout v2 de São Paulo (<atvEvento><end>). Alias: end. |
Reforma Tributária — IBS / CBS (opcional)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| valores.ibscbs | object | não | Grupo IBS/CBS (LC 214/2025). Também aceito como servico.ibscbs. Precedência campo a campo: valores.ibscbs > servico.ibscbs > Configurações do Projeto no Dashboard (seção "Reforma Tributária (IBS / CBS)") > resolução automática pela tabela oficial do Anexo VIII da Receita Federal. |
| ↳ classificacaoTributaria | string | não | Classificação tributária (cClassTrib) — 6 dígitos. Ex: "000001" (tributação integral), "200046" (operações com bens imóveis). Alias técnico: cClassTrib. |
| ↳ indicadorOperacao | string | não | Indicador da operação (cIndOp) — 6 dígitos. Ex: "100301" (domicílio do adquirente), "020301" (local do imóvel). Aliases técnicos: cIndOp, indOp. |
| ↳ cst | string | não | CST IBS/CBS — 3 dígitos. Ex: "000" (tributação integral), "200" (redução), "410" (imunidade). Alias: cstIbscbs. |
| ↳ nbs | string | não | Código NBS — 9 dígitos (ex: "110012100"). Também aceito em servico.nbs. Alias: codigoNbs. |
| ↳ consumidorFinal | boolean | não | Indica consumidor final (uso/consumo pessoal). Aceita true/false ou "0"/"1". Alias técnico: indFinal. Padrão: false. |
| ↳ destinatarioPrincipal | string | não | Indica se o destinatário do serviço é diferente do tomador (indDest): "0" (tomador é o destinatário — padrão) ou "1" (destinatário distinto informado em destinatario). |
| ↳ destinatario | object | não | Identificação do destinatário do serviço quando distinto do tomador (destinatarioPrincipal = "1"). Reaproveita a mesma estrutura amigável de tomador: { cnpj | cpf | nif | naoNif, nome, email?, telefone?, endereco?: { logradouro, numero, complemento?, bairro, cep, cidade + uf ou codigoMunicipio, pais? } }. Alias técnico: dest. |
| ↳ tipoOperacao | string | number | não | Tipo de operação (tpOper — Regra E0903): 1 – Fornecimento com pagamento posterior; 2 – Recebimento do pagamento com fornecimento já realizado; 3 – Fornecimento com pagamento já realizado; 4 – Recebimento do pagamento com fornecimento posterior; 5 – Fornecimento e recebimento concomitantes. Obrigatório em compras governamentais (tipoEnteGovernamental informado) ou quando servico.codigo pertencer aos subitens 100501, 100502, 150901, 171201 ou 250501; vedado nos demais casos. Alias técnico: tpOper. |
| ↳ chavesNfseReferenciadas | string[] | não | Lista de 1 a 99 chaves de acesso de NFS-e referenciadas (50 posições — grupo <gRefNFSe><refNFSe>: no SNNFSE NT-009 aceita [0-9]{6}[0-9A-Z]{14}[0-9]{30}; no leiaute NT-004 exige [0-9]{50}; na NotaControl aceita [0-9]{9}[A-EGHJ-NPRSTV-Z0-9]{12}[0-9]{29}). Obrigatório quando tipoOperacao = 2 ou 3; vedado quando tipoOperacao = 1, 4, 5 ou omitido. Aliases: nfseReferenciadas, refNFSe. |
| ↳ tipoEnteGovernamental | string | number | não | Esfera governamental (tpEnteGov) para compras públicas: 1 – Federal; 2 – Estadual; 3 – Distrital; 4 – Municipal; 9 – Outros (exclusivo ABRASF/GISS; não aceito no SNNFSE nem em SP v2). Aliases: enteGovernamental, tpEnteGov. |
| ↳ percentualRedutor | number | não | Percentual de redução de alíquota em compra governamental (pRedutor — 0 a 99.99). Aliases: redutorCompraGovernamental, pRedutor. |
| ↳ tributacaoRegular | object | não | Tributação regular alternativa (<gTribRegular>): { cst (3 dígitos, alias cstReg/CSTReg), classificacaoTributaria (6 dígitos, alias cClassTribReg/cClassTrib) }. Alias técnico: gTribRegular. |
| ↳ reembolsoRepasse | array | object | não | Documentos de reembolso, repasse e ressarcimento (<gReeRepRes>). Aceita lista de 1 a 100 itens (ou { documentos: [...] }) reaproveitando o padrão de valores.deducoes.documentos: { chaveNFSe | chaveNFe | chaveCTe | dfeNacional | documentoFiscalOutro | documentoOutro (ou numeroDocNaoFiscal + descricaoDocumento), fornecedor?: { cnpj | cpf | nif | naoNif, nome }, dataEmissao (YYYY-MM-DD), dataCompetencia? (YYYY-MM-DD, padrão = dataEmissao), tipo ("01"|"02"|"03"|"04"|"99" ou 1|2|3|4|99), descricaoTipo? (obrigatório quando tipo=99), valor (R$) }. Aliases: documentosReembolso, gReeRepRes, reeRepRes. |
| ↳ imovel | object | não | Identificação do imóvel/obra objeto da operação (grupo <IBSCBS><imovel> na DPS Nacional ou <imovelobra> em São Paulo v2, que também unifica automaticamente servico.obra). Obrigatório quando indicadorOperacao for "020101", "020201" ou "020301". Exige exclusivamente UMA opção entre cib (ou codigoCib), codigoObra (em SP v2) OU endereco. |
| ↳ inscricaoImobiliariaFiscal | string | não | Inscrição imobiliária fiscal (IPTU / matrícula fiscal — 1 a 30 caracteres). Opcional. Aliases: inscricaoImobiliaria, inscImobFisc. |
| ↳ codigoMunicipio | string | não | Código IBGE de 7 dígitos do município onde se situa o imóvel (ex: "5208707"). Tem precedência sobre cidade + uf. Quando omitido, pode ser resolvido automaticamente enviando cidade + uf em imovel.endereco ou no próprio objeto imovel (em conjunto com cib ou endereco — não substitui a exigência de cib ou endereco). Obrigatório em municípios ISSNet Nacional (Goiânia/GO, Aparecida de Goiânia/GO, Brasília/DF) e no leiaute SNNFSE NT-009. Alias técnico: cMun. |
| ↳ cidade / uf | string | não | Aliases amigáveis no topo de imovel (ex: cidade: "Goiânia", uf: "GO") para resolver automaticamente codigoMunicipio (7 dígitos IBGE) quando codigoMunicipio não for informado, especialmente útil quando o imóvel é identificado por cib no leiaute NT-009. Devem ser informados juntos e sempre acompanhados de cib ou endereco. |
| ↳ cib | string | não | Código no Cadastro Imobiliário Brasileiro (CIB — exatos 8 caracteres). Alternativo a endereco (XOR). Suportado no SNNFSE, engines DPS Nacional e São Paulo v2; não suportado no ISSNet Nacional (que exige endereco completo). Aliases: codigoCib, cCIB. |
| ↳ endereco | object | não | Endereço do imóvel (alternativo a cib — obrigatório no ISSNet Nacional): logradouro, numero, complemento (opcional), bairro, cep (8 dígitos no Brasil; código postal no exterior), codigoMunicipio (7 dígitos IBGE) ou cidade + uf (2 letras, ex: "GO"). Para imóvel no exterior, informe pais (ISO2 de 2 letras, ex: "US", "PT"), cep, cidade e uf (estado/província). Alias técnico: end. |
🏙️ São Paulo (Prefeitura — Layout v1 vs Layout v2 IBS/CBS)
- Em São Paulo (IBGE 3550308), a transição do Layout v1 para o Layout v2 (IBS/CBS — Manual v3.3.5) é 100% automática pela data de competência: a partir de
2026-10para Regime Normal e2027-01para Simples Nacional (MEI continua emitindo via SNNFSE). - Para testar ou antecipar voluntariamente o Layout v2 antes de outubro/2026, basta enviar o bloco
valores.ibscbsno payload da emissão (ou definirNFSE_SP_SCHEMA_VERSION=2/NFSE_RTC_FORCE_ENABLED=1no ambiente). Semvalores.ibscbsem competências anteriores a2026-10, a plataforma mantém o Layout v1 sem qualquer alteração para os clientes atuais. - No Layout v2 de São Paulo, a prefeitura retorna a Chave da Nota Nacional de 50 dígitos (
<ChaveNotaNacional>), exposta automaticamente no campochNFSedo status e do webhook.
Coerência IBS/CBS: a combinação NBS + indicadorOperacao + classificacaoTributaria deve formar uma tupla válida do Anexo VIII da Receita Federal. Se o item da LC 116 tiver mais de um enquadramento possível (ex: 17.12 — administração de imóveis × gestão de negócios) e nem o payload nem o projeto definirem o enquadramento, a API responde HTTP 400 com a lista das combinações válidas — a plataforma nunca "chuta" uma classificação fiscal. Para emitir sem alterar o payload, configure os valores padrão em Dashboard → Configurações → Reforma Tributária (IBS / CBS).
{
"tomador": {
"nome": "Empresa Tomadora Ltda",
"cnpj": "12345678000195",
"email": "[email protected]",
"endereco": {
"logradouro": "Rua das Flores",
"numero": "100",
"bairro": "Centro",
"cidade": "Londrina",
"uf": "PR",
"cep": "86010010"
}
},
"servico": {
"descricao": "Desenvolvimento de software personalizado",
"codigo": "010302"
},
"valores": {
"total": 5000.00,
"aliquotaIss": 2.0,
"issRetido": false
},
"competencia": "2026-06",
"referencia": "OS-2026-001"
}{
"queued": true,
"invoiceId": "inv_abc123",
"referencia": "NFSE-ALFA-2026-001",
"status": "queued",
"pollUrl": "/api/v1/invoices/inv_abc123/status"
}🔤 CNPJ Alfanumérico (IN RFB nº 2.229/2024 & Nota Técnica SE/CGNFS-e nº 009)
- Formato Oficial (
SS.SSS.SSS/SSSS-DD): aceita 14 posições no formato[0-9A-Z]{12}\d{2}(8 caracteres alfanuméricos na raiz + 4 na ordem do estabelecimento + 2 dígitos verificadores estritamente numéricos calculados via Módulo 11 com conversãoASCII - 48). Pode ser enviado com ou sem máscara e em maiúsculas ou minúsculas (normalizado automaticamente para 14 caracteres maiúsculos sem pontuação). - Suporte Completo no Ambiente Nacional (
snnfse): habilitado em todos os papéis da DPS Nacional — prestador (project.cnpjeId="DPS..."de 45 posições),tomador.cnpj,intermediario.cnpj,valores.ibscbs.destinatario.cnpj,fornecedor.cnpjem deduções e reembolso/repasse, chaves de 44 posições alfanuméricas (chaveNFe/chaveCTe), cancelamento (<CNPJAutor>no eventoe101101) e impressão formatada no DANFSe. - Guardrail Fail-Closed em Provedores Municipais Legados (
CNPJ_ALFANUMERICO_NAO_SUPORTADO): sistemas municipais próprios cujos schemas XSD ainda restringem o tipotsCnpj/TCnpja 14 dígitos numéricos (\d{14}— incluindo motores ABRASF,sp_prefeitura,ginfes,barueri,atendenet,equiplano,coplan,tiplan,el_nacional,betha,fiorilli,issnet_nacional,infiscetbw) bloqueiam preventivamente CNPJ alfanumérico com HTTP 400 na entrada da API (eNonRetryableErrornos workers), evitando falhas de schema no webservice municipal.
🛒 Tomador Não Identificado (Consumidor Final / B2C) & Tomador no Exterior
- Emissão B2C sem tomador: omita o objeto
tomador(ou envie"tomador": {}) para emitir NFS-e a consumidor final não identificado. Suportado em 43 das 45 engines — todas excetobarueri(que exige tomador identificado comcpf,cnpjoutomador.nifexplícito) eatendenet(que exige tomador identificado comcpfoucnpjbrasileiro). - Proibição de tomador parcial (Fail-Closed HTTP 400): enviar apenas
tomador.nome,tomador.email,tomador.telefoneoutomador.enderecosem um documento fiscal (cpf,cnpj,nifoumotivoAusenciaNif), ou enviar documento semnome/razaoSocial, retorna HTTP 400. - Operações que exigem tomador identificado (HTTP 400 se omitido):1. Retenção de ISSQN (
valores.issRetido: true);
2. Exportação de serviços (valores.tribISSQN: 3ou grupovalores.exportacao);
3. Cessão de mão de obra tributável (servico.codigo: "170501"— regraRN_170501_TOMADOR_OBRIGATORIO);
4. Sistemas municipaisbarueri(posicional PMB004 V4.4) eatendenet(IPM SOAP/REST). - Suporte a Tomador Estrangeiro por Engine:• DPS Nacional (
nifoumotivoAusenciaNif: 0 | 1 | 2):snnfse,pronim_snnfse,el_nacional,issnet_nacional,tiplan,infisc,coplan,bethaetbw.
• ABRASF / Posicional com NIF (exigetomador.nifexplícito; não possuimotivoAusenciaNif):el,dbseller,gissonline,campograndeebarueri.
• Demais 31 engines municipais: quando o tomador é identificado, o XSD municipal exigecpfoucnpjbrasileiro (rejeita tomador estrangeiro sem CPF/CNPJ com HTTP 400).
👤 Prestador Pessoa Física (CPF e CAEPF) — NFS-e Nacional (SNNFSE)
- Identificação automática na DPS: quando o projeto é cadastrado com CPF (11 dígitos) e certificado e-CPF A1, o motor gera automaticamente
tpInscr = 1com CPF preenchido com zeros à esquerda para 14 posições noIdda DPS (DPS...1000<CPF>...) e emite<prest><CPF>...</CPF></prest>. - CAEPF opcional (
TSCAEPF): o CAEPF de 14 dígitos pode ser configurado uma única vez no projeto (Org API) ou enviado/sobrescrito por nota emservico.caepf(aliases:prestador.caepf,caepf). Para omitir pontualmente o CAEPF do projeto em uma emissão específica, envieservico.caepf: null. - DANFSe e Cancelamento: quando presente no XML, o CAEPF é impresso formatado (
XXX.XXX.XXX/XXX-XX) no quadro do Prestador do DANFSe; no cancelamento (POST /cancelar), o eventoe101101utiliza automaticamente<CPFAutor>.
💰 Tributação Federal e Retenções na Fonte (PIS/COFINS/CSLL/IRRF/INSS — NT-007)
- Retenção na Fonte vs. Débito de Apuração Própria: informe retenções na fonte nos campos de
valores(retencaoIrrf/ir,retencaoPis/pis,retencaoCofins/cofins,retencaoCsll/csll,retencaoCp/inss). Na DPS Nacional (NT-007), o motor consolida automaticamentepis + cofins + csllem<vRetCSLL>com<tpRetPisCofins>derivado (3..9), reduzindo ovLiqsem preencher<vPis>/<vCofins>próprios e sem reduzir a base de cálculo (vBC) do IBS/CBS. - Quando usar
valores.pisCofins: se não houver débito próprio na nota, omitavalorPisevalorCofins(ex.:"pisCofins": { "cst": "01", "baseCalculo": 18000, "tipoRetencao": 3 }ou apenas envieir,pis,cofinsecsllna raiz devalores). PreenchapisCofins.valorPis/valorCofinsexclusivamente quando desejar destacar débito de apuração própria do prestador. - Prioridade de valores: API request (override) → Configuração do projeto (Settings) → Derivado do regime.
🏛️ Regras Fiscais de Incidência do ISSQN & Retenção (LC 116/2003)
- Resolução Automática do Município de Incidência: Você não precisa calcular ou informar a cidade de incidência do imposto. A plataforma Notaas determina a incidência legal automaticamente pelo código de tributação nacional (
cTribNac) e Anexo I da NFS-e — cobrindo a regra geral do prestador (277 subitens) e as exceções no local da prestação (58 subitens). - Local da Prestação (
servico.localPrestacao): Informe o código IBGE apenas quando o serviço for executado fisicamente em outro município. O motor Notaas faz a correta separação entre a localização física e o município credor do tributo. - Retenção pelo Tomador (
valores.issRetido): InformeissRetido: truequando o imposto for recolhido pelo tomador de serviço (tpRetISSQN = 2). A retenção é mantida de forma independente do município credor. Operações imunes, isentas ou de exportação não admitem retenção.
/cancelar🔑 x-api-keySolicita o cancelamento assíncrono de uma NFS-e já emitida (status issued). No Padrão Nacional (SNNFSE), o Pedido de Registro de Evento (e101101) identifica automaticamente o autor com <CNPJAutor> (14 posições — numérico \d{14} ou alfanumérico [0-9A-Z]{12}\d{2}) ou <CPFAutor> (11 dígitos) conforme o documento do projeto.
Body (JSON)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| invoiceId | string | sim | ID da nota a cancelar |
| motivo | string | não | Justificativa do cancelamento (15 a 255 chars). Opcional. Aliases aceitos: justificativa, xMotivo. |
| codigoMotivo | number | não | Código do motivo do cancelamento (opcional. Padrão Nacional SNNFSE: 1=Erro na emissão [padrão], 2=Serviço não prestado, 9=Outros. ISSNet Nacional Goiânia: padrão 2. ABRASF: 1 a 5 [padrão 1]. Tiplan: 1, 2, 3, 9). Aliases aceitos: cMotivo. |
{
"invoiceId": "inv_alfa001",
"codigoMotivo": 1,
"motivo": "Erro no preenchimento dos dados do serviço na emissão original"
}Status & Polling
/invoices/{id}/status🔑 x-api-keyRetorna o status atual de uma NFS-e individual. Inclui o campo referencia informado na emissão para conciliação automática com sua fatura interna.
Resposta
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| invoiceId | string | não | ID único da nota gerado pela Notaas |
| referencia | string | não | Identificador externo enviado pelo seu sistema no POST /emitir (presente quando informado) |
| status | string | não | queued | processing | issued | error | cancelled |
| chNFSe | string | não | Chave/código de verificação da NFS-e (disponível quando status=issued) |
| numeroNfe | string | não | Número da NFS-e (disponível quando status=issued) |
| emittedAt | string (ISO 8601) | não | Timestamp de emissão (disponível quando status=issued) |
| ambiente | string | não | "producao" ou "homologacao" (disponível quando status=issued) |
| pdfUrl | string (URL) | não | URL pública CDN do PDF (disponível quando documentsCached=true). Acesso direto, sem autenticação. |
| xmlUrl | string (URL) | não | URL pública CDN do XML (disponível quando documentsCached=true). Acesso direto, sem autenticação. |
| documentsCached | boolean | não | true quando XML e PDF foram armazenados no CDN. URLs disponíveis em pdfUrl e xmlUrl. |
| cancelOutcome | string | não | "pending_analysis" | "rejected" | "approved" (presente quando houve tentativa de cancelamento em nota issued ou quando status=cancelled) |
| cod_rejeicao / errorCode | string | não | Código do erro ou da situação do cancelamento (disponível quando status=error ou em tentativa de cancelamento pendente/recusada) |
| msg_rejeicao / errorMessage | string | não | Mensagem detalhada do erro ou da análise fiscal de cancelamento |
| rejection_errors / errors | array | não | Array detalhado de mensagens da prefeitura/SEFAZ [{Codigo, Descricao, Complemento}] |
| cancelRequestedAt | string (ISO 8601) | não | Data/hora do pedido de cancelamento (quando houve solicitação de cancelamento registrada) |
| cancelDecisionAt | string (ISO 8601) | não | Data/hora do deferimento (e105104) ou indeferimento (e105105) do cancelamento, quando aplicável |
| cancelledAt | string (ISO 8601) | não | Timestamp do cancelamento (disponível quando status=cancelled) |
| cancelXmlUrl | string (URL) | não | URL pública CDN do XML de cancelamento (disponível quando status=cancelled e documentsCached=true) |
{
"invoiceId": "inv_abc123",
"referencia": "OS-2026-001",
"status": "issued",
"chNFSe": "35260100000000000000000000000000000000000000",
"numeroNfe": "1234",
"emittedAt": "2026-10-07T11:00:00.000Z",
"ambiente": "producao",
"documentsCached": true,
"pdfUrl": "https://documents.notaas.com.br/pdf/inv_abc123.pdf",
"xmlUrl": "https://documents.notaas.com.br/xml/inv_abc123.xml"
}Documentos da NFS-e
/invoices/{id}/xml🔑 x-api-keyRetorna o XML da NFS-e. Sem parâmetros, retorna o XML de emissão. Com ?type=cancel, retorna o XML de cancelamento.
Query Parameters
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| type | string | não | Tipo de XML: "emission" (default) ou "cancel". O tipo "cancel" retorna o XML de cancelamento — disponível apenas para notas com status cancelled. |
Comportamento
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| Cache R2 (302) | redirect | não | Quando cacheado no CDN, redireciona para URL pública (cache immutable). |
| Fallback (200) | application/xml | não | Quando não cacheado, retorna o XML do banco com Content-Type application/xml. |
Erros
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| 409 | Conflict | não | Invoice ainda não emitida (status ≠ issued ou cancelled) |
| 409 | Conflict | não | ?type=cancel: nota não está cancelada |
| 404 | Not Found | não | XML não disponível para esta nota |
/invoices/{id}/pdf🔑 x-api-keyRetorna o PDF (DANFSE) da NFS-e. Se cacheado no R2, redireciona (302) para a URL pública CDN. Caso contrário, busca ao vivo no portal municipal.
Comportamento
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| Cache R2 (302) | redirect | não | Quando documentsCached=true, redireciona para URL pública CDN (cache immutable). |
| SNNFSE federal | 200 PDF | não | Geração local do DANFSe v2.0 a partir do XML da nota (substitui o ADN Federal descontinuado). |
| Pronim (Cidade360) | 200 PDF | não | Fallback: consulta portal Cidade360 e retorna PDF inline. |
| São Paulo (SP) | 302 redirect | não | Fallback: redireciona para o portal da Prefeitura SP. |
| WebISS | 200 PDF / 302 | não | Fallback: GET no portal WebISS (público ou mTLS). |
Erros
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| 409 | Conflict | não | Invoice ainda não emitida (status ≠ issued) |
| 422 | Unprocessable | não | Dados insuficientes: certificado A1 ausente, chave de acesso inválida |
| 501 | Not Implemented | não | Sistema municipal não suporta download de PDF (DSF, Centi) |
| 502 | Bad Gateway | não | Portal externo retornou erro |
Lote (Batch)
/emitir/batch🔑 x-api-keyEmite múltiplas NFS-e de forma assíncrona. Retorna batchId para acompanhamento.
Body (JSON)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| items | array | sim | Array de objetos com o mesmo formato do POST /emitir |
/invoices/batch/{batchId}/status🔑 x-api-keyRetorna o progresso de um lote: total, processados, emitidos, erros.
Resposta
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| batchId | string | não | ID do lote |
| status | string | não | processing | completed | partial | failed |
| total | number | não | Total de itens no lote |
| processed | number | não | Itens já processados |
| issued | number | não | Itens emitidos com sucesso |
| errors | number | não | Itens com erro |
| items[].invoiceId | string | não | ID da invoice |
| items[].status | string | não | Status individual do item |
| items[].pdfUrl | string (URL) | não | URL para download do PDF (disponível quando status=issued) |
| items[].chNFSe | string | não | Chave/código de verificação (disponível quando status=issued) |
| items[].errorCode | string | não | Código do erro (disponível quando status=error) |
Endpoints de Webhook
/webhooks/endpoints🔑 x-api-keyCadastra um novo endpoint de webhook para a organização/projeto.
Body (JSON)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| url | string | sim | URL HTTPS que receberá o POST |
| events | string[] | sim | Ex: ["nfse.issued", "nfse.error", "nfse.cancelled", "nfse.documents_ready", "batch.completed"] |
| secret | string | não | Secret para assinatura HMAC-SHA256 via X-Notaas-Signature (opcional) |
/webhooks/endpoints🔑 x-api-keyLista todos os endpoints de webhook configurados.
/webhooks/endpoints/{id}🔑 x-api-keyAtualiza URL, eventos, status ativo/inativo ou secret de um endpoint. Envie secret: null ou secret: '' para remover a assinatura.
/webhooks/endpoints/{id}🔑 x-api-keyRemove um endpoint de webhook.
/webhooks/endpoints/{id}/test🔑 x-api-keyEnvia um payload de teste para validar a configuração do endpoint.
/webhooks/deliveries🔑 x-api-keyLista o histórico de entregas de webhook com status e tentativas.
Eventos Suportados
Eventos
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| nfse.issued | event | não | NFS-e emitida com sucesso. Payload inclui número da nota e código de verificação. |
| nfse.error | event | não | Falha na emissão. Payload inclui código e mensagem de erro. |
| nfse.cancelled | event | não | NFS-e cancelada com sucesso. Payload inclui invoiceId, numeroNfse e cancelledAt. |
| nfse.documents_ready | event | não | Documentos cacheados no CDN. Payload inclui xmlUrl, pdfUrl, cancelXmlUrl (para notas canceladas) e documentStatus. |
| batch.completed | event | não | Todos os itens de um lote foram processados. |
⚠️ nfse.documents_ready — comportamento de entrega
Este evento pode ser disparado até 2 vezes para a mesma invoice:
- 1ª chamada:
documentStatus: "partial"— XML pronto, PDF pode estar indisponível (pdfUrl: null) - 2ª chamada (até 10 min depois):
documentStatus: "complete"— XML e PDF prontos. Se o retry esgotar sem sucesso, nenhum webhook adicional é enviado.
Use o campo documentStatus para determinar se todos os documentos estão disponíveis.
Para notas canceladas, o payload inclui o campo adicional cancelXmlUrl com a URL do XML de cancelamento. cancelXmlUrl é null para notas emitidas.
Em engines que não emitem PDF (ex.: dsf, centi), o evento chega uma única vez com pdfUrl: null e documentStatus: "complete".
ℹ️ Compatibilidade de Webhook
Campos adicionais podem ser incluídos nos payloads de webhook sem aviso prévio. Seu código deve ignorar campos desconhecidos para manter compatibilidade futura (Postel's Law).