@joaopedrogomes/nif-pt
Version:
Validate and get more information from portuguese tax ID numbers
127 lines (81 loc) • 2.67 kB
Markdown
@joaopedrogomes/nif-pt
Validate and get more information from portuguese tax ID numbers
# Understanding the NIF concept
The Portuguese tax system is really complex, so let's check some concepts first:
## What is a NIF?
NIF stands for _Número de Identificação Fiscal_, which translates to Tax ID Number.
## Who can get a NIF?
The **NIF is a unique ID** and can be attributed to individuals or to collective persons like companies, societies, etc., that **need to pay taxes in Portugal**. The number can be attributed to non-resident foreigners as well.
## Types of NIF: NIF and NIPC
There are two types of NIF, and the first two digits of the number define it:
- **Between 10 and 49**: NIF - individuals
- **Betweeen 50 and 99**: NIPC - collective
So, while colloquially the term NIF applies to all tax IDs, legally, the collective tax IDs are referred to as NIPC. The acronym NIPC stands for _Número de Identificação de Pessoa Colectiva_, which translates to Collective Person ID Number.
# Installation
```bash
npm install --save-dev @joaopedrogomes/nif-pt
```
# Usage
You can get all the information in an object with the NIF function (_nif_). However, if you only want to get one of the keys of the object, you can also call the desired function directly: _categorize_, _designate_, or _validate_.
## NIF - nif(value: string)
### Usage
```js
import { nif } from '@joaopedrogomes/nif-pt';
const data = nif('123456789');
```
### Return
```js
{
category: string,
designation: string,
valid: boolean
}
```
| Category : string | Designation : string| Valid : boolean |
|---|---|---|
| pessoa singular | NIF | true |
| pessoa colectiva | NIPC | false |
| administração pública | | |
| pessoa singular não residente | | |
| herança indivisa | | |
| pessoa colectiva não residente | | |
| fundos de investimento | | |
| atribuição oficiosa | | |
| regime excepcional | | |
| condominios e sociedades irregulares | | |
| não residentes | | |
| sociedades civis | | |
## Category only - categorize(value: string)
### Usage
```js
import { categorize } from '@joaopedrogomes/nif-pt';
const data = nif('123456789');
```
### Return
```js
string
```
## Designation only - designate(value: string)
### Usage
```js
import { designate } from '@joaopedrogomes/nif-pt';
const data = nif('123456789');
```
### Return
```js
string
```
## Valid only - validate(value: string)
### Usage
```js
import { validate } from '@joaopedrogomes/nif-pt';
const data = nif('123456789');
```
### Return
```js
boolean
```
# Credits
- [João Pedro Gomes](https://joaopedrogomes.dev)
# License
[MIT](./license)