Se a sua software house atende construtoras, imobiliárias, administradoras de condomínio, empresas de engenharia ou prestadores que faturam para órgãos públicos, a transição para os novos grupos da Reforma Tributária (IBS e CBS) na NFS-e Nacional reserva duas rejeições normativas que estão tirando o sono de muita equipe de engenharia: o Erro E0903 e o Erro E0932.
Para piorar o cenário, quem tentou validar o grupo <IBSCBS><imovel> apenas contra o schema XSD original da Nota Técnica 004 (nt004) descobriu da pior forma que o ambiente de Produção Restrita do SNNFSE (nt009) e os provedores municipais que implementam variantes próprias do padrão nacional — como o ISSNet Nacional (NotaControl) em Goiânia/GO, Aparecida de Goiânia/GO e Brasília/DF — exigem árvores XML completamente diferentes para o mesmo endereço de imóvel.
Para eliminar os erros E0903 e E0932 na NFS-e Nacional, o seu emissor precisa validar a condicionalidade estrita entre o Indicador de Operação (cIndOp), os 11 códigos de obra de construção civil e o grupo <imovel>, além de adaptar a serialização XSD do imóvel para cada motor autorizador (nt004, nt009 com <gUnidImob> ou notacontrol).
Na release v0.56.64 da Notaas, nós implementamos o resolvedor normativo completo para essas regras e o adaptador polimórfico para os três leiautes XSD. Vou abrir aqui a tabela de decisão exata e os exemplos de payload JSON para você blindar o seu ERP.
Na Reforma Tributária, validar apenas se o JSON tem CEP e logradouro não basta: o mesmo imóvel gera três estruturas de XML diferentes dependendo se a nota vai para a SEFIN Produção, SEFIN Sandbox NT-009 ou ISSNet Nacional.
O que significa o Erro E0932 (<imovel> vs. <obra>) e quando cada grupo é obrigatório
O Erro E0932 ocorre quando há um conflito entre o Código de Indicador de Operação (cIndOp) da Reforma Tributária, o Código de Tributação Nacional (cTribNac) e a presença (ou ausência) do grupo <IBSCBS><imovel> dentro da DPS.
Muita gente confunde o grupo <servico><obra> (que já existia na DPS tradicional para construção civil) com o novo grupo <IBSCBS><imovel> introduzido pelas notas técnicas da Reforma Tributária. A regra normativa divide as operações em dois blocos mutuamente exclusivos:
- Quando
<IBSCBS><imovel>é OBRIGATÓRIO: Sempre que ocIndOppertencer ao conjunto de operações sobre bens imóveis{020101, 020201, 020301}(como administração, intermediação, corretagem, locação ou cessão de uso de imóveis), EXCETO quando o serviço for um dos 11 códigos exatos de obra de construção civil:070201,070202,070401,070501,070502,070601,070602,070701,070801,071701e071901.
- Quando
<IBSCBS><imovel>é PROIBIDO (Vedado):- Sempre que
cIndOpnão estiver em{020101, 020201, 020301}; OU - Sempre que
cTribNacfor um dos 11 códigos de obra de construção civil listados acima (pois nesses 11 códigos os dados do local da obra já vão exclusivamente em<servico><obra>).
- Sempre que
Se o seu sistema copiar automaticamente os dados de <servico><obra> para dentro de <IBSCBS><imovel> numa nota de empreitada (070201), a SEFIN devolverá o Erro E0932. E se deixar de enviar <IBSCBS><imovel> numa intermediação imobiliária (cIndOp = 020201), tomará o mesmo Erro E0932 pelo motivo inverso.
O pesadelo dos 3 leiautes XSD para <IBSCBS><imovel>
Se você já leu nosso artigo anterior sobre a diferença entre TCEnderObraEvento e TCEndereco no schema da DPS, sabe que os schemas XSD da NFS-e Nacional têm sutilezas importantes. Com a chegada da revisão NT-009 (1.01-nt009-20261020) e a adoção do padrão nacional por provedores como o NotaControl (ISSNet), o grupo <imovel> dentro de <IBSCBS> passou a ter três formatos XSD incompatíveis entre si:
⚡ Os 3 Leiautes XSD de
<IBSCBS><imovel>no Brasil hoje:
- 1. Leiaute
nt004(SNNFSE Produção atual e motores DPS v1.01 padrão):<imovel><inscImobFisc>?(<cCIB>|<end><CEP><xLgr><nro><xCpl>?<xBairro></end>)</imovel>.- 2. Leiaute
nt009(SNNFSE Produção Restrita / Sandbox NT-009): Exige o código IBGE do município (<cMun>) e encapsula os dados dentro de<gUnidImob>:<imovel><cMun><gUnidImob><inscImobFisc>?(<cCIB>|<end>...</end>)</gUnidImob></imovel>.- 3. Leiaute
notacontrol(ISSNet Nacional — Goiânia/GO, Aparecida de Goiânia/GO e Brasília/DF): Não aceita<cCIB>e exige o tipo complexo<end><endNac><cMun><CEP></endNac><xLgr><nro><xBairro></end>.
Veja a diferença lado a lado no XML gerado para o mesmíssimo imóvel:
<!-- 1. Leiaute nt004 (SNNFSE Produção) -->
<imovel>
<inscImobFisc>12345678</inscImobFisc>
<end>
<CEP>74805100</CEP>
<xLgr>Avenida Jamel Cecilio</xLgr>
<nro>2500</nro>
<xBairro>Jardim Goias</xBairro>
</end>
</imovel>
<!-- 2. Leiaute nt009 (SNNFSE Produção Restrita NT-009) -->
<imovel>
<cMun>5208707</cMun>
<gUnidImob>
<inscImobFisc>12345678</inscImobFisc>
<end>
<CEP>74805100</CEP>
<xLgr>Avenida Jamel Cecilio</xLgr>
<nro>2500</nro>
<xBairro>Jardim Goias</xBairro>
</end>
</gUnidImob>
</imovel>
<!-- 3. Leiaute notacontrol (ISSNet Nacional - Goiânia/GO e Brasília/DF) -->
<imovel>
<inscImobFisc>12345678</inscImobFisc>
<end>
<endNac>
<cMun>5208707</cMun>
<CEP>74805100</CEP>
</endNac>
<xLgr>Avenida Jamel Cecilio</xLgr>
<nro>2500</nro>
<xBairro>Jardim Goias</xBairro>
</end>
</imovel>
Além da estrutura do XML, o código IBGE do município onde o imóvel está localizado (cMun) impacta diretamente a Regra 2 do Anexo VIII da Receita Federal para determinação do local de incidência do IBS/CBS. Na Notaas, você envia apenas um objeto JSON limpo em valores.ibscbs.imovel e a nossa engine seleciona automaticamente o leiaute XSD (nt004, nt009 ou notacontrol) de acordo com o município emissor e o ambiente da nota.
O que causa o Erro E0903 (<tpOper> e <gRefNFSe>)
Já o Erro E0903 está ligado ao campo Tipo de Operação (<tpOper>, valores de "1" a "5") e ao grupo de Chaves de NFS-e Referenciadas (<gRefNFSe>):
- Quando
tipoOperacao(<tpOper>) é OBRIGATÓRIO:- Sempre que a nota envolver um Ente Governamental (
tipoEnteGovernamental/<tpEnteGov>informado); OU - Quando o código de serviço
cTribNacpertencer exatamente ao conjunto{100501, 100502, 150901, 171201, 250501}. Fora dessas duas hipóteses, enviar<tpOper>é proibido e dispara rejeição.
- Sempre que a nota envolver um Ente Governamental (
- Quando
chavesNfseReferenciadas(<gRefNFSe>) é OBRIGATÓRIO:- Exclusivamente quando
tipoOperacao(tpOper) for igual a"2"ou"3"(exigindo de 1 a 99 chaves de NFS-e de 50 posições). SetpOperfor"1","4"ou"5", o grupo<gRefNFSe>não pode ser enviado.
- Exclusivamente quando
Exemplo prático: Emitindo NFS-e com imovel, tipoOperacao e refNFSe na API da Notaas
Para integrar no seu ERP sem precisar decorar exceções de XSD ou manter três builders XML paralelos, veja como fica a chamada POST /api/v1/emitir na API de NFS-e com IBS/CBS da Notaas:
{
"externalId": "adm-imovel-2026-991",
"ambiente": 1,
"tomador": {
"cpfCnpj": "11222333000181",
"razaoSocial": " Horizonte Incorporações SPE Ltda",
"endereco": {
"cep": "74805100",
"logradouro": "Avenida Jamel Cecílio",
"numero": "2500",
"bairro": "Jardim Goiás",
"codigoMunicipio": "5208707",
"uf": "GO"
}
},
"servico": {
"codigoTributacaoNacional": "100501",
"discriminacao": "Intermediação e corretagem na locação de unidade comercial",
"valorServicos": 4500.00
},
"valores": {
"ibscbs": {
"codigoIndicadorOperacao": "020201",
"codigoClassificacaoTributaria": "000001",
"tipoOperacao": "2",
"chavesNfseReferenciadas": [
"52087072211222333000181000000000012610000000012345"
],
"imovel": {
"inscricaoImobiliaria": "44556677",
"codigoMunicipio": "5208707",
"cep": "74805100",
"logradouro": "Avenida Jamel Cecílio",
"numero": "2500",
"complemento": "Sala 1402",
"bairro": "Jardim Goiás"
}
}
}
}
Se houver qualquer inconsistência — por exemplo, informar tipoOperacao: "2" sem chavesNfseReferenciadas, ou esquecer o bloco imovel num cIndOp: "020201" — nossa API faz a validação prévia (fail-fast) com códigos semânticos claros (IBSCBS_IMOVEL_REQUIRED, IBSCBS_TP_OPER_REQUIRED, IBSCBS_REF_NFSE_REQUIRED) antes mesmo de enfileirar a nota para a prefeitura.
Para entender também como tratar valores de taxas condominiais ou despesas pagas em nome do cliente, confira nosso artigo técnico sobre Reembolso, Repasse e Ressarcimento (gReeRepRes) na NFS-e Nacional.
Homologue a Reforma Tributária em múltiplos CNPJs sem custo
Você pode validar todas as regras de IBS/CBS e os novos blocos de imóveis da Reforma Tributária agora mesmo:
- Plano Free (R$ 0/mês): 20 notas fiscais gratuitas por mês em Produção (1 CNPJ) + até 5 projetos simultâneos em Homologação via Org API para testar múltiplos cenários tributários.
- Plano Dev (R$ 99/mês): 500 notas/mês + até 3 CNPJs em Produção.
- Plano SaaS Pro (R$ 249/mês): 2.000 notas/mês + CNPJs ilimitados em Produção e Homologação.
👉 Criar Conta Gratuita na Notaas · Acessar Documentação Técnica

