Lista de serviços (LC 116)

Os subitens da lista de serviços anexa à Lei Complementar 116/2003, os serviços sobre os quais incide o ISS.

  • Matriz de paridade

Validar

Verifica se um valor é um subitem vigente da lista de serviços anexa à Lei Complementar 116/2003.

  • Aceita a forma que a lei imprime ("1.01"), o item com zero à esquerda ("01.01"), os dígitos sem ponto ("0101", "101", os 4 primeiros dígitos de um cTribNac) ou um inteiro não negativo (101). Espaços nas pontas são ignorados.
  • O subitem sempre tem 2 dígitos ("1.1" é inválido). Qualquer sequência de separadores (espaço, ., - ou /) é aceita entre o item e o subitem, então "1-01", "1 01" e "1..01" são válidos; qualquer outro caractere ("1_01", "1,01") é rejeitado. Um número é lido como dígitos sem ponto, então o número fracionário 1.01 é inválido: escreva a forma com ponto como string.
  • Os subitens vetados 3.01, 7.14, 7.15, 13.01 e 17.07 são inválidos. Também são inválidos os títulos de item ("1"), os códigos nacionais de 6 dígitos e o item 99 da lista nacional, que não faz parte da lei.
  • O subitem 11.05, incluído pela LC 183/2021, é válido.
  • cTribNac e cTribMun ficam fora do escopo.
ParâmetroTipoObrigatório
valuestring | numbersim
retornaboolean

Verifica se um valor é um subitem em vigor da lista de serviços anexa à Lei Complementar 116/2003, a lista dos serviços sobre os quais incide o ISS.

  • A lei numera o subitem como o item, um ponto e dois dígitos, de 1.01 a 40.01.
  • Aceita essa forma, o item preenchido com zero ('01.01') ou os dígitos puros ('0101', '101' ou o inteiro 101), que são os quatro primeiros dígitos do código cTribNac da NFS-e nacional, com espaços opcionais nas extremidades.
  • Qualquer sequência de separadores (espaço, ., - ou /) é aceita entre o item e o subitem, como nos outros códigos com máscara de agrupamento impressa (isValidCfop, isValidNbs), então '1-01' e '1 01' também são válidos.
  • Um número só é lido quando é um inteiro seguro não negativo, então o decimal 1.01 é rejeitado: escreva a forma com ponto como string.
  • Os subitens vetados (3.01, 7.14, 7.15, 13.01 e 17.07), os títulos de item, os códigos nacionais de 6 dígitos em que um subitem se desdobra e o item 99 da lista nacional, que não faz parte da lei, não são válidos. Códigos municipais de serviço estão fora do escopo.
import { isValidServiceItem } from '@brazilian-utils/brazilian-utils';

isValidServiceItem('1.01'); // true
isValidServiceItem('01.01'); // true
isValidServiceItem('0101'); // true
isValidServiceItem(101); // true
isValidServiceItem('3.01'); // false (vetado)
isValidServiceItem('99.01'); // false (só da lista nacional, não da lei)
isValidServiceItem(1.01); // false (não é um inteiro seguro não negativo)
Código: brazilian-utils/javascript
Teste com JavaScript isValidServiceItem
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (28) e o resultado em cada biblioteca serviceItem.isValid

Consultar

Consulta um subitem da lista de serviços da LC 116/2003 e retorna o código e a descrição.

  • Mesmas regras de entrada de serviceItem.isValid. Retorna null exatamente quando essa função retorna false.
  • Os separadores de serviceItem.isValid são aceitos entre o item e o subitem ("1-01" dá o código 1.01).
  • O código retornado é a forma que a lei imprime: o item sem zero à esquerda, um ponto e o subitem de 2 dígitos ("1.01", "40.01").
  • A descrição é o texto da lista nacional (ANEXO B da NFS-e). O subitem 17.14 é "Advocacia", sem ponto final, como na planilha oficial.
ParâmetroTipoObrigatório
valuestring | numbersim
retornaServiceItem | null

Consulta um subitem da lista de serviços anexa à Lei Complementar 116/2003 e retorna a sua descrição oficial. O resultado é um registro ServiceItem: { code, description }.

  • Mesmas regras de isValidServiceItem. code é a forma em que a lei o imprime ('1.01'). Retorna null quando o subitem é desconhecido ou o valor não está em uma forma documentada.
import { getServiceItem } from '@brazilian-utils/brazilian-utils';

getServiceItem('1.01'); // { code: '1.01', description: 'Análise e desenvolvimento de sistemas.' }
getServiceItem('0101'); // { code: '1.01', description: 'Análise e desenvolvimento de sistemas.' }
getServiceItem('40.01'); // { code: '40.01', description: 'Obras de arte sob encomenda.' }
getServiceItem('3.01'); // null (vetado)

Fonte: Lei Complementar 116/2003, cuja lista foi alterada pela última vez pela Lei Complementar 183/2021, e a planilha LISTA.SERV.NAC. do ANEXO B do Sistema Nacional NFS-e, a lista em vigor em formato legível por máquina.

Código: brazilian-utils/javascript
Teste com JavaScript getServiceItem
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (33) e o resultado em cada biblioteca serviceItem.get

Fontes oficiais

Veja também NBS, Chave de acesso NFS-e

Atualizado em

Nesta página