Service list (LC 116)

The subitems of the service list annexed to Lei Complementar 116/2003, the services the ISS is levied on.

  • Parity matrix

Validate

Checks whether a value is a subitem in force of the service list annexed to Lei Complementar 116/2003.

  • Accepts the form the law prints ("1.01"), a zero-padded item ("01.01"), the bare digits ("0101", "101", the first 4 digits of a cTribNac) or a non-negative integer (101). Whitespace around the value is ignored.
  • The subitem always has 2 digits ("1.1" is invalid). Any run of separators (space, ., - or /) is accepted between the item and the subitem, so "1-01", "1 01" and "1..01" are valid; any other character ("1_01", "1,01") is rejected. A number is read as bare digits, so the fractional number 1.01 is invalid: write the dotted form as a string.
  • The vetoed subitems 3.01, 7.14, 7.15, 13.01 and 17.07 are invalid. So are item headings ("1"), the 6-digit national codes and item 99 of the national list, which is not part of the law.
  • Subitem 11.05, added by LC 183/2021, is valid.
  • cTribNac and cTribMun are out of scope.
ParameterTypeRequired
valuestring | numberyes
returnsboolean

Check if a value is a subitem in force of the service list annexed to the Lei Complementar 116/2003, the list of the services the ISS is levied on.

  • The law numbers a subitem as the item, a dot and two digits, 1.01 to 40.01.
  • Accepts that form, a zero padded item ('01.01') or the bare digits ('0101', '101' or the integer 101), which are the first four digits of the cTribNac code of the national NFS-e, with optional surrounding whitespace.
  • Any run of separators (space, ., - or /) is accepted between the item and the subitem, as in the other codes with a printed grouping mask (isValidCfop, isValidNbs), so '1-01' and '1 01' are valid too.
  • A number is only read when it is a non-negative safe integer, so the float 1.01 is rejected: write the dotted form as a string.
  • The vetoed subitems (3.01, 7.14, 7.15, 13.01 and 17.07), the item headings, the 6 digit national codes a subitem is split into and item 99 of the national list, which is not part of the law, are not valid. Municipal service codes are out of scope.
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 (vetoed)
isValidServiceItem('99.01'); // false (national list only, not the law)
isValidServiceItem(1.01); // false (not a non-negative safe integer)
Code: brazilian-utils/javascript
Try it with JavaScript isValidServiceItem
The inputs start with the first shared case. Change one to see the new result.

Runs @brazilian-utils/brazilian-utils 2.5.0 in your browser.

Shared test cases (28) and the result in each library serviceItem.isValid

Look up

Looks up a subitem of the LC 116/2003 service list and returns its code and description.

  • Same input rules as serviceItem.isValid. Returns null exactly when that function returns false.
  • The separators of serviceItem.isValid are accepted between the item and the subitem ("1-01" gives code 1.01).
  • The returned code is the form the law prints: the item without a leading zero, a dot and the 2-digit subitem ("1.01", "40.01").
  • The description is the text of the national list (ANEXO B of the NFS-e). Subitem 17.14 is "Advocacia", with no final period, as in the official sheet.
ParameterTypeRequired
valuestring | numberyes
returnsServiceItem | null

Look a subitem of the service list annexed to the Lei Complementar 116/2003 up and get its official description. The result is a ServiceItem record: { code, description }.

  • Same rules as isValidServiceItem. code is the form the law prints ('1.01'). Returns null when the subitem is unknown or the value is not in a documented form.
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 (vetoed)

Source: Lei Complementar 116/2003, whose list was last amended by Lei Complementar 183/2021, and the sheet LISTA.SERV.NAC. of the ANEXO B of the Sistema Nacional NFS-e, the list in force in machine readable form.

Code: brazilian-utils/javascript
Try it with JavaScript getServiceItem
The inputs start with the first shared case. Change one to see the new result.

Runs @brazilian-utils/brazilian-utils 2.5.0 in your browser.

Shared test cases (33) and the result in each library serviceItem.get

Official sources

See also NBS, NFS-e access key

Last updated on

On this page