TF Fiscal
Documentation

Identity lookup

CPF lookup

Official individual registry data for a CPF plus date of birth.

GET/openapi/v3/consultas/cpf/{cpf}/{nascimento}
Requires the token, timestamp and sign signature headers, see Authentication.

Returns individual registry data for an 11-digit personal tax number plus date of birth: name, registration status and date of birth. The upstream source validates CPF and date of birth as a pair; a mismatched pair and a non-existent CPF both return the same code 10016003, deliberately indistinguishable (see Identity lookup).

GET request: the signed body is the empty string and both path variables are part of the signed path. The response is a bare object with no platform envelope.

Path parameters

cpf*
stringCPF
nascimento*
stringDate of birth

* Required field

200
Lookup succeeded; adult holder. Individual registry data.
ni
stringCPF
nome
stringFull name
objectRegistration status
nascimento
stringDate of birth

The upstream source answers by the holder age bracket and the platform passes the upstream status code through unchanged. The message of the blocking tiers is the statutory wording set by the source (Portuguese) and is not translated by the Language header; branch on code.

Billing: 422, 451 and not found / birth date mismatch (400 + 10016003) are billed per call; 428 and upstream outage (503) are not billed. The platform stores nothing for the blocking tiers. Format and check-digit errors are rejected locally and are not billed.

Adult (18 or older): HTTP 200

Name, registration status and date of birth as usual.

json
{ "ni": "40710536828", "nome": "DANILO HIDEO CORREA", "situacao": { "codigo": "0", "descricao": "REGULAR" }, "nascimento": "09011997" }

16 to 17 years old: HTTP 422

Code 10016005, no personal fields at all. Do not retry: age does not change with a retry and every call is billed.

json
{ "code": 10016005, "message": "LGPD: menor de idade" }

Under 16: HTTP 451

Code 10016004, no personal fields at all. Do not retry.

json
{ "code": 10016004, "message": "LGPD: menor de 16 anos (Lei Felca)" }

Age cannot be verified: HTTP 428

Code 10016006, no personal fields at all. The upstream database has no date of birth for the holder; the platform already re-verified once with the date you supplied, within the same call. A persistent 428 means the official source could not verify either; retrying is pointless.

json
{ "code": 10016006, "message": "LGPD: idade nao verificavel - informe a data de nascimento para completar a verificacao" }