xSolic na NFF: conteúdo JSON e limite de 5.000 caracteres
<xSolic>infSolicNFF › xSolicRevisão editorial em 14 de out. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
xSolic transporta o pedido da Nota Fiscal Fácil (NFF) em formato JSON dentro do grupo infSolicNFF. O conteúdo deve preservar os campos e valores gerados pelo aplicativo da NFF. Apesar do prefixo textual x, não é um espaço para observação livre do operador.
Caminho desta página: /nfeProc/NFe/infNFe/infSolicNFF/xSolic. O prefixo nfeProc identifica a nota processada; a informação estudada pertence ao conteúdo da NF-e, dentro de NFe/infNFe.
Origem do conteúdo e tamanho atual
A NT 2021.002 v1.12 identifica os campos do pedido preenchidos no aplicativo móvel da NFF, em JSON, com tamanho de 2 a 5.000 caracteres. O PL 010f v1.04 reproduz esse intervalo sobre TString. O grupo pai é opcional no XSD, mas xSolic é obrigatório quando ele existe.
O fluxo documentado liga a solicitação a tpEmis=3. Incluir um texto manual ou um JSON de software comum não demonstra origem NFF nem habilita o contribuinte. A origem é a solicitação real do aplicativo; não se deve construir um contrato alternativo apenas para satisfazer o tamanho mínimo. NT p. 8–9.
Exemplo da representação, sem pedido fictício
O objeto vazio abaixo demonstra somente a sintaxe do campo:
<xSolic xmlns="http://www.portalfiscal.inf.br/nfe">{}</xSolic>
Não é uma solicitação fiscal completa, um contrato válido de emissão nem um XML completo da NF-e. O exemplo não inventa nomes de membros ou dados que precisariam vir do aplicativo autorizado.
No conteúdo real, o JSON deve permanecer texto dentro da tag. Se uma cadeia JSON contém &, o XML bruto pode mostrar &; após o leitor XML, o texto recuperado volta a conter &. Escapar uma vez para XML é diferente de acrescentar barras e escapes JSON sem necessidade. Uma transformação duplicada pode alterar o pedido mesmo que o arquivo seja XML bem formado.
Três pontos para comparar integridade
Compare primeiro o pedido original gerado pelo aplicativo. Depois recupere o conteúdo de xSolic com um leitor XML e compare seus campos e valores ao original. Por fim, analise o JSON recuperado e confronte as informações fiscais correspondentes no documento gerado.
Essas comparações detectam perda de caracteres, codificação duplicada, conversão indevida de números para textos e truncamento. O XSD verifica comprimento e tipo textual; não interpreta o contrato do pedido nem prova que os dados fiscais resultantes são corretos. Não basta dizer que “validou XML” para encerrar uma divergência de conteúdo.
Quando o texto passa no XSD mas não resolve a solicitação
Um JSON malformado pode ter tamanho e caracteres aceitos pelo tipo XML. Um objeto vazio pode ser sintaticamente JSON e ainda não conter o pedido obrigatório do fluxo. São sintomas diferentes, com evidências diferentes: erro do parser JSON, membros ausentes no contrato oficial ou divergência entre pedido e documento.
Para textos acima de 5.000 caracteres, investigue a composição verdadeira e os limites do fluxo; não corte ao atingir o máximo descartando campos do pedido. Em implementações antigas, verifique se algum limite menor foi herdado de versões anteriores. Preserve a solicitação original e corrija a transformação comprovada, sem estimar informações fiscais ou manipular um XML já assinado.
Fontes oficiais
- Leiaute NF-e/NFC-e — PL_010f_v1.04: infSolicNFF/xSolic l6489–6500; TString2–5000
- Tipos básicos NF-e/NFC-e — PL_010f_v1.04: TString e restrições textuais.
- NT 2021.002 — Nota Fiscal Fácil — 1.12, janeiro/2025: Pedido NFF, tpEmis=3 e JSON em xSolic: p. 8–9; exceção de QR-Code: p. 15.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/infSolicNFF/xSolic- Namespace
http://www.portalfiscal.inf.br/nfe- Leiaute
- 4.00 · PL_010e_v1.02
- Ocorrências no XSD
- 1–1 no contexto do elemento pai
- Tipo
- inline:TString · TString
- Preenchimento no catálogo
- Condicional
A ocorrência vale dentro da estrutura XML: um campo obrigatório em um grupo opcional não torna esse grupo obrigatório. A aplicação fiscal depende da operação e da versão da regra.
- maxLength
5000- minLength
2- pattern
[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}- whiteSpace
preserve