Automação

Erros E0903 e E0932 na NFS-e Nacional (IBS/CBS): Como preencher <imovel>, <tpOper> e <gRefNFSe> via API

Entenda como resolver as rejeições E0903 e E0932 da Reforma Tributária (IBS/CBS) na NFS-e Nacional. Diferenças entre os 3 leiautes XSD de <imovel> (nt004, nt009 gUnidImob e ISSNet NotaControl) e regras de tpOper e gRefNFSe.

Fábio Magalhães CostaAtualizado em 26/10/2026
Engenharia de software e validação de schemas XSD para operações com bens imóveis e Reforma Tributária (IBS/CBS) na NFS-e Nacional

Engenharia de software e validação de schemas XSD para operações com bens imóveis e Reforma Tributária (IBS/CBS) na NFS-e Nacional

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:

  1. Quando <IBSCBS><imovel> é OBRIGATÓRIO: Sempre que o cIndOp pertencer 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, 071701 e 071901.
  2. Quando <IBSCBS><imovel> é PROIBIDO (Vedado):
    • Sempre que cIndOp não estiver em {020101, 020201, 020301}; OU
    • Sempre que cTribNac for 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>).

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:
    1. Sempre que a nota envolver um Ente Governamental (tipoEnteGovernamental / <tpEnteGov> informado); OU
    2. Quando o código de serviço cTribNac pertencer exatamente ao conjunto {100501, 100502, 150901, 171201, 250501}. Fora dessas duas hipóteses, enviar <tpOper> é proibido e dispara rejeição.
  • 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). Se tpOper for "1", "4" ou "5", o grupo <gRefNFSe> não pode ser enviado.

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

Notaas — Infraestrutura Fiscal Multi-Tenant para SaaS, ERPs e BPOs

Escale a emissão de NFS-e, NF-e, NFC-e, CT-e e MDF-e para dezenas de CNPJs

Integre a API de Nota Fiscal da Notaas no seu software: provisione clientes via Org API Multi-CNPJ, isole certificados A1 em nuvem, receba webhooks assinados com HMAC e gere DANFSe v2.0 local. Sandbox ilimitado e planos sob medida para operações em escala.

Artigos Relacionados em Automação

Guias Pilares de Integração Fiscal