Skip to content

Instantly share code, notes, and snippets.

@alixaxel
Last active December 11, 2015 11:08
Show Gist options
  • Save alixaxel/4591689 to your computer and use it in GitHub Desktop.
Save alixaxel/4591689 to your computer and use it in GitHub Desktop.
<?php
function isVATIN($vatin)
{
if (preg_match('~^[125689][0-9]{8}$~', $vatin) > 0)
{
$vatin = str_split($vatin);
foreach (array_slice($vatin, 0, -1) as $key => $value)
{
$vatin[$key] *= (9 - $key);
}
if (($checksum = 11 - (array_sum(array_slice($vatin, 0, -1)) % 11)) >= 10)
{
$checksum = 0;
}
return (strcmp($checksum, array_pop($vatin)) === 0);
}
return false;
}
@alixaxel
Copy link
Author

O primeiro dígito (dígito inicial, aquele que está mais à esquerda) do NIF tem os seguintes interpretações:

  • 1 ou 2: pessoa singular;
  • 5: pessoa colectiva;
  • 6: pessoa colectiva pública;
  • 8: empresário em nome individual (deixou de ser utilizado);
  • 9: pessoa colectiva irregular ou número provisório.

O nono e último dígito é o dígito de controlo. É calculado utilizando o algoritmo módulo 11.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment