Documentação / Changelog v1
API REST fiscal

O que mudou no contrato da API, mês a mês.

Toda mudança que altera payload, resposta, rejeição tratada ou regra de validação entra aqui. A versão da API continua sendo /api/v1: o objetivo é evoluir sem quebrar quem já integrou, e avisar quando o comportamento mudar.

Atualizado em .

Como ler este histórico

As entradas descrevem o que mudou para quem consome a API, não o que mudou por dentro da plataforma. Mudanças que apenas acrescentam campos opcionais são compatíveis com integrações existentes; quando uma regra passa a recusar algo que antes passava, a entrada diz isso com todas as letras.

Outubro de 2026

23/10 Empresas
Suporte ao CRT 2 (Simples Nacional com excesso de sublimite)

Novo regime tributário simples_excesso no campo tax_regime da empresa. Emite a tag CRT com valor 2 na NF-e e CT-e, calculando o ICMS via CST normal (como CST 10, 20 e 90) em vez de CSOSN.

Setembro de 2026

24/09 NFS-e
Logo em PNG com transparência voltou a sair no DANFSe

A logomarca em PNG com canal alpha (transparência) não era desenhada no DANFSe: a biblioteca de PDF recusa esse formato e a falha era silenciosa, deixando a faixa vazia. Como PNG exportado por ferramenta de design normalmente tem transparência, a maioria das logos era afetada. Agora o PNG é achatado sobre branco antes de ser enviado ao PDF. As logos que já funcionavam não mudam.

22/09 NFS-e
Teto de série subiu de 999 para 89999

A série de NFS-e (series no draft e no payload) aceitava no máximo 999 — limite copiado da NF-e, sem relação com a NFS-e. O schema nacional (TSSerieDPS) permite até 5 dígitos, de 1 a 89999 (a faixa 90000-99999 é reservada pelo próprio padrão). Corrigido para acompanhar o schema real, permitindo migrar uma empresa que já emite com série de 5 dígitos por outro sistema sem trocar numeração.

19/09 API
GET /me expõe o ambiente do token

O token.environment (homologacao ou producao) agora vem em GET /me. Resolve um risco real: POST /companies sem default_environment explícito herda o ambiente do próprio token usado na chamada — sem esse campo, o integrador só descobria o ambiente herdado depois de a empresa já ter sido criada, de forma permanente.

17/09 NFS-e
Logomarca da empresa no DANFSe

A logomarca cadastrada em POST /companies/{company}/logo (já usada em DANFE, DANFCe e DACTe/DAMDFe) agora também aparece no DANFSe — nos quatro layouts (padrão nacional, ISSNet, Salvador e São Paulo). Sem logo cadastrada, o layout permanece idêntico ao de antes.

14/09 NFS-e
Consulta ao vivo de adesão de município ao emissor nacional

Novo endpoint GET /companies/{company}/nfse/adn-convenio/{city_code}: consulta ao vivo no Ambiente de Dados Nacional se um município (qualquer um, não precisa ser o da empresa) aderiu ao emissor público nacional da NFS-e, autenticando via mTLS com o certificado de uma empresa já cadastrada. Resposta cacheada por 1 hora, compartilhada por município.

11/09 NFS-e
Cancelamento: código de motivo, classificação de erro e status estruturado

Novo campo cancellation_code (1 a 5, conforme o CodigoCancelamento da ABRASF) em POST /nfse/drafts/{id}/cancel. Corrigida a classificação: recusa do cancelamento pelo provedor municipal passava a ser marcada como erro interno nosso; agora usa o código real do provedor. cancellation_status_code, antes sempre vazio numa falha de cancelamento, passou a vir preenchido.

11/09 API
Consulta de cobertura de NFS-e por município, sem cadastrar empresa

Novo endpoint GET /utils/nfse-coverage/{city_code}: responde se um município usa o padrão nacional ou um layout municipal próprio, sem precisar de uma empresa cadastrada. Campo verified distingue município já confirmado por um caso real do comportamento padrão (nacional) ainda não testado individualmente.

11/09 API
Código de erro deixou de vazar nome de classe PHP

Em NFS-e, CT-e, MDF-e e NF-e, uma falha não classificada pelo provedor caía num fallback que usava o nome da classe da exceção PHP (ex.: "RuntimeException") como código de erro — formato que não bate com nenhuma convenção (X###/FISCAL-* para o motor, numérico/E#### para o provedor). Agora usa um código fixo por tipo de documento (FISCAL-{NFSE,CTE,MDFE,NFE}-INTERNAL-ERROR).

10/09 NFS-e
Retenção de INSS e CSLL

O payload de NFS-e passou a aceitar amounts.inss_amount e amounts.csll_amount, transportados como passthrough simples (sem apuração própria) — ValorInss/ValorCsll no layout municipal, vRetCP/vRetCSLL no padrão nacional. Antes eram recusados sempre que diferentes de zero.

10/09 NFS-e
Município de incidência, isenção, exportação e suspensão do ISS

Novo campo service.incidence_city_code sobrepõe o município de incidência do ISS por nota (antes sempre o da própria empresa). service.iss_tax_situation ganhou isencao, susp_judicial e susp_administrativa para empresas de layout municipal — as duas últimas exigem o novo campo service.process_number. Corrigido também: os valores de exportação/não incidência/imunidade que já existiam eram validados mas silenciosamente ignorados para empresas de layout municipal.

10/09 NFS-e
Dois campos do tomador documentados

taker.municipal_registration e taker.phone já eram aceitos e transportados, mas não estavam documentados. Corrigido também um bug: os dois eram apagados do documento sempre que taker.address não vinha junto no mesmo payload, mesmo com valor preenchido.

Agosto de 2026

31/08 NFS-e
Retenção estruturada de IRRF (vRetIRRF / ValorIr)

O payload de NFS-e passou a aceitar amounts.ir_amount, gerando a tag vRetIRRF na DPS nacional e ValorIr nos provedores municipais, com dedução automática no valor líquido.

31/08 NFS-e
PIS e COFINS de débito próprio (tribFed/piscofins)

O payload de NFS-e passou a aceitar amounts.pis_amount, amounts.cofins_amount, pis_rate, cofins_rate, pis_cst e pis_cofins_withheld, preenchendo o grupo tribFed/piscofins da DPS nacional com CST, base, alíquotas, valores e tpRetPisCofins=2 (débito próprio). O débito próprio não abate do valor líquido. INSS e CSLL seguem recusados.

29/08 Documentação
Navegação da documentação

Cada seção passou a ter link direto, o índice lateral acompanha a leitura, os blocos de código ganharam realce e botão de copiar, e cada página mostra quando foi atualizada.

28/08 NFS-e
Descontos, deduções e informações complementares

O payload de NFS-e passou a aceitar desconto incondicionado e condicionado, deduções e o bloco de informações complementares.

21/08 NFS-e
Rejeições do provedor Tinus traduzidas

Os códigos do Tinus passaram a chegar traduzidos na resposta, incluindo o E138. O E0039 indica adesão do município ao emissor nacional, não erro do payload.

19/08 NFS-e
Substituição no padrão nacional

Substituição de NFS-e pelo grupo Subst, com chave substituída, código e motivo da substituição.

16/08 Webhooks
Rotação de secret com assinatura dupla

Durante a rotação as entregas passam a ser assinadas com as duas chaves, para o endpoint do integrador não ficar mudo no meio da troca.

16/08 NFS-e
CNC por ambiente

O convênio passou a ser resolvido por ambiente. Com registro no CNC a inscrição municipal é obrigatória (E0116); sem registro, é proibida (E0120).

14/08 NF-e
Grupo card deixou de ser obrigatório na NF-e

O grupo card continua exigido na NFC-e. Na NF-e a ausência virou aviso, não recusa.

13/08 NFS-e
Leiaute próprio de São Paulo

Emissão pelo leiaute municipal de São Paulo, com alocação do próximo RPS livre quando o número não é informado.

10/08 NFS-e
Número autorizado na resposta

A API passou a expor o número da NFS-e autorizada, e não o número do RPS.

08/08 Empresas
CNPJ alfanumérico

O cadastro de empresa passou a aceitar CNPJ alfanumérico.

06/08 API
Rate limit é proteção de infraestrutura

O limite por minuto deixou de funcionar como teto comercial do plano e passou a ser apenas proteção de infraestrutura. A cota do plano continua sendo contada por evento.

Julho de 2026

28/07 NF-e
Tributos especiais no item

IPI de pauta, PIS/COFINS por quantidade, PIS/COFINS por substituição tributária e ST desonerado passaram a ter contrato próprio no item.

28/07 NF-e
Grupo de pagamento completo

Cartão, PIX, boleto e data de pagamento, incluindo a descrição do meio de pagamento 99 (xPag), que faltava no contrato.

28/07 NF-e
ISSQN, exportação e diferimento

ISSQN na NF-e com a separação correta dos totais, exportação com drawback e exportação indireta, e diferimento no ICMS (CST 51) e no IBS/CBS (gDif).

27/07 NF-e
Reforma tributária: IBS e CBS

Tabelas oficiais versionadas com vínculo por vigência, redução de alíquota, tributação regular (gTribRegular), imunidade e não incidência.

27/07 NF-e
ICMS-ST, FCP e DIFAL

ST a recolher e ST retido no regime normal, CSOSN 201, 202, 203, 500 e 900 no Simples Nacional, FCP no item, redução de base, cBenef e partilha do ICMS interestadual (ICMSUFDest).

27/07 NF-e
Rastreabilidade, entrega e frete

Rastreabilidade por lote, grupo de medicamentos, local de entrega, local de retirada, e frete e seguro por item ou rateados pela nota.

27/07 NF-e
Nota complementar, nota de ajuste e ICMS desonerado

Contrato próprio para complementar e ajuste, e ICMS desonerado com a tabela de cBenef que destravou os CST de benefício.

26/07 NF-e
Devolução ao fornecedor

IPI devolvido pelo grupo impostoDevol e referência por item, respeitando a data de cada ambiente.

25/07 NF-e
indIntermed conforme a NT 2020.006

NF-e sem intermediador passou a enviar indIntermed 0.

Antes de julho de 2026

A plataforma esteve em construção antes desse período e o contrato mudava sem aviso público. O histórico começa no ponto em que a v1 passou a ser tratada como compromisso com quem integra.