TF Fiscal
Documentación

Consulta de registro

Consultas al registro oficial brasileño por número de contribuyente: consulta de CNPJ y consulta de CPF con fecha de nacimiento, modelo de errores, protección de datos y lista de comprobación de integración.

Visión general

Consulte datos registrales oficiales brasileños por número de identificación del contribuyente:

CapacidadEndpointQué devuelve
Consulta de CNPJGET /openapi/v3/consultas/cnpj/{cnpj}Datos registrales de la empresa para un número de 14 dígitos: razón social, nombre comercial, situación registral, naturaleza jurídica, CNAE, dirección registrada, contactos, capital social
Consulta de CPFGET /openapi/v3/consultas/cpf/{cpf}/{nascimento}Datos registrales de la persona física para un número de 11 dígitos más la fecha de nacimiento: nombre, situación registral, fecha de nacimiento

Ambos endpoints son GET: el cuerpo firmado es la cadena vacía y todas las variables de ruta (CNPJ / CPF / fecha de nacimiento) forman parte de la ruta firmada, vea Autenticación. Las respuestas son objetos simples (sin sobre de la plataforma); los errores de negocio son un objeto simple {code, message}.

Por qué el CPF requiere fecha de nacimiento

La fuente upstream valida CPF y fecha de nacimiento como un par (semántica de la Receita Federal); el CPF por sí solo no devuelve nada. Un par que no coincide y un CPF inexistente devuelven el mismo código de error.

Requisitos previos (una sola vez)

  1. Credencial de la aplicación: solicite una aplicación y reciba el app_secret. Se muestra una sola vez; guárdelo de forma segura.
  2. Suscripción a la API: la plataforma concede a su aplicación acceso a los endpoints que necesite (la clave de scope es la ruta del endpoint).

Endpoints

EndpointFinalidad
GET /openapi/v3/consultas/cnpj/{cnpj}Datos registrales de la empresa por CNPJ
GET /openapi/v3/consultas/cpf/{cpf}/{nascimento}Datos registrales de la persona física por CPF y fecha de nacimiento, con las franjas de edad de la LGPD

Modelo de errores

Dos formas de error

Los errores de negocio, de solicitud y de la fuente upstream (HTTP 400 / 422 / 428 / 451 / 503) se devuelven como objeto simple:

json
{ "code": 10016003, "message": "CPF not found" }
CampoTipoDescripción
codeintegerCódigo de error de la plataforma
messagestringExplicación legible, localizada al idioma de la solicitud

Los errores de la capa de autenticación (HTTP 401 / 403 / 429) los produce el gateway de la plataforma antes de que la solicitud llegue a la API, y usan el sobre de la plataforma:

json
{ "success": false, "errorType": 1, "code": 10009005, "message": "API not subscribed, please subscribe before calling" }
CampoTipoDescripción
successbooleanfalse en todo error
errorTypeinteger1 error de API, 2 rechazo de la SEFAZ, 3 fallo del sistema, 4 fallo de validación de campos
codeintegerCódigo de error de la plataforma
messagestringExplicación legible, localizada

Nota: su gestor de errores debe aceptar ambas formas. Una regla robusta: interprete el cuerpo como JSON, lea code de cualquiera de las formas y trate success=false o HTTP >= 400 como fallo.

Códigos de error de negocio

codeHTTPResponsableSignificadoAcción
10016000400LlamadorFormato de CPF inválido (se requieren 11 dígitos)Compruebe caracteres de formato indebidos o longitud incorrecta
10016001400LlamadorDígitos verificadores del CPF inválidosValide localmente con el algoritmo mod-11 para evitar llamadas inútiles
10016002400LlamadorFecha de nacimiento inválida (se requiere un DDMMYYYY válido)Observe el orden día-mes-año y que la fecha debe existir
10016003400LlamadorCPF no encontradoEl CPF no existe o el CPF y la fecha de nacimiento no coinciden (deliberadamente indistinguibles)
10016004451Tercero (bloqueo legal upstream)LGPD: menor de 16 anos (Lei Felca), el titular es menor de 16 añosDatos legalmente retenidos; no reintente
10016005422Tercero (bloqueo legal upstream)LGPD: menor de idade, el titular tiene entre 16 y 17 añosDatos legalmente retenidos; no reintente
10016006428Tercero (bloqueo legal upstream)LGPD: idade nao verificavel - informe a data de nascimento para completar a verificacao, no se puede verificar la edadLa plataforma ya volvió a verificar una vez con la fecha de nacimiento; no reintente
10016010400LlamadorFormato de CNPJ inválido (se requieren 14 dígitos)Compruebe caracteres de formato indebidos
10016011400LlamadorDígitos verificadores del CNPJ inválidosValide localmente con el algoritmo mod-11
10016012400LlamadorCNPJ no encontradoNo existe ese CNPJ en el registro oficial
10016020503Tercero (upstream no disponible)Fuente de datos upstream temporalmente no disponibleReintente con backoff exponencial (empiece en 1 s, duplique hasta 30 s, añada jitter); si persiste, contacte con la plataforma

Los errores de formato y de dígito verificador se rechazan localmente en la plataforma y nunca llegan a la fuente upstream: no consumen cuota ni se facturan.

Convención de responsabilidad: 10016000 a 10016003 y 10016010 a 10016012 son problemas del llamador; 10016004 a 10016006 son bloqueos legales de terceros; 10016020 es una indisponibilidad de tercero; HTTP 500 + 10001000 es un fallo de la plataforma.

Facturación: 10016003 (no encontrado / fecha de nacimiento que no coincide), 10016004 (menor de 16) y 10016005 (16 a 17 años) se facturan por llamada; 10016006 (edad no verificable), 10016020 (upstream no disponible) y los errores de formato / dígito verificador rechazados localmente no se facturan. Las franjas de edad se detallan en la página Consulta de CPF.

Errores de autenticación y autorización

HTTPcodeSignificadoAcción
40110009000Faltan cabeceras de firma (token / sign / timestamp)Las tres cabeceras son obligatorias
40110009001Timestamp inválido o desfase de reloj superior a ±300 sSincronice el reloj (NTP); genere el timestamp en cada solicitud
40110009002Token inválidoCompruebe el app_secret
40110009003Firma no coincideVea la lista en Solución de problemas
40310009004Aplicación desactivadaContacte con la plataforma
40310009015Aplicación no vigente (pendiente de aprobación o rechazada)Espere la aprobación
40310009014Cuenta del integrador desactivadaContacte con la plataforma
40310009005API no suscritaSolicite la suscripción al endpoint
42910009006Límite de tasa superadoReintente con backoff exponencial (empiece en 1 s, duplique hasta 30 s, añada jitter)

Guía de reintentos: 401 y 403 son errores de configuración; reintentar sin corregir es inútil y puede disparar el límite de tasa. 429 y 503 (10016020) son reintentables con backoff. 422 / 428 / 451 son bloqueos legales; reintentar es inútil. Para 500, contacte con la plataforma con el timestamp y la ruta de la solicitud fallida.

Referencia rápida de estados HTTP

HTTPEscenarioForma del cuerpo
200Consulta realizadaDatos simples
400Parámetro inválido / registro no encontrado{code, message} simple
401Fallo de autenticaciónSobre de la plataforma
403Aplicación desactivada / no vigente / no suscritaSobre de la plataforma
422Titular del CPF de 16 a 17 años (bloqueo legal upstream, 10016005){code, message} simple, sin campos personales
428Edad del CPF no verificable (bloqueo legal upstream, 10016006){code, message} simple, sin campos personales
429Límite de tasa superadoSobre de la plataforma
451Titular del CPF menor de 16 años (bloqueo legal upstream, 10016004){code, message} simple, sin campos personales
500Fallo del lado de la plataforma (10001000){code, message} simple, contacte con la plataforma
503Fuente de datos upstream no disponible (10016020){code, message} simple, reintente con backoff

Protección de datos

El CPF es un dato personal de una persona física y se rige por la LGPD de Brasil (Ley 13.709/2018):

  • La plataforma no persiste los resultados de las consultas de CPF; cada consulta va a la fuente en tiempo real.
  • Los valores completos de CPF nunca entran en los registros de la aplicación; se enmascaran.
  • Las variables de ruta en el registro de llamadas pasan por HMAC antes de almacenarse; no se conserva texto en claro.
  • La fuente upstream retiene legalmente los datos de menores de edad; la plataforma transmite los estados 451 / 422 / 428 sin cambios y no almacena nada. 451 / 422 se facturan por llamada, 428 no; vea Menores de edad y verificación de edad en la página Consulta de CPF.

Se espera que los llamadores observen el mismo principio de necesidad mínima: consulte solo cuando exista una base legal de negocio (como la emisión de facturas) y no conserve datos personales más allá de lo que el negocio requiera.

Localización de las respuestas

El campo message sigue el idioma de la solicitud: la cabecera Language (en / pt / es / zh) tiene prioridad, después Accept-Language (admite pt-BR y valores q). Sin cabecera de idioma, las respuestas usan portugués (pt) por defecto.

Para las decisiones programáticas use siempre el code numérico y valores enumerados como situacao.codigo; nunca compare textos descriptivos. El message de las franjas de bloqueo de la LGPD es el texto legal en portugués y no se traduce.

Lista de comprobación de integración

  1. Obtenga el app_secret y confirme que ambos endpoints están suscritos.
  2. Llame con un CNPJ real: HTTP 200, ni devuelve la entrada, situacaoCadastral.codigo es 2.
  3. Llame con un CPF real + fecha de nacimiento: HTTP 200, nascimento devuelve la entrada.
  4. Caso negativo: CPF correcto con fecha de nacimiento incorrecta devuelve 400 + 10016003 (mismo código que no encontrado).
  5. Caso negativo: CNPJ / CPF con dígitos verificadores incorrectos devuelve 400 + 10016011 / 10016001 (rechazado localmente, no facturado).
  6. Caso negativo: fecha de nacimiento como 1997-01-09 o 31021997 devuelve 400 + 10016002.
  7. Rutas de fallo: llame con un sign incorrecto (401 + 10009003); llame a un endpoint no suscrito (403 + 10009005).
  8. Compatibilidad del parser: asegúrese de que su cliente trata 422 / 428 / 451 / 503 como fallos y lee el cuerpo simple {code, message} (estos estados no se pueden provocar con datos de prueba; solo aparecen en producción con CPF reales de menores).

Solución de problemas

¿La firma nunca coincide (401, 10009003)?

Compruebe, por orden de frecuencia:

  1. Una solicitud GET no concatenó el cuerpo como la cadena vacía "" (se usó un objeto vacío o un texto de relleno);
  2. path sin el prefijo /openapi, o incluyendo la query string;
  3. El segmento de la fecha de nacimiento quedó fuera de la firma del CPF; ambas variables de ruta deben firmarse;
  4. sign enviado en mayúsculas (debe ser hex en minúsculas);
  5. El timestamp usado en la concatenación difiere del de la cabecera (regenerado entre ambos);
  6. Un CNPJ con formato cuya / dividió la ruta.

Recalcule primero los valores fijos del ejemplo de firma en Autenticación; cuando su implementación local coincida, pase a inspeccionar los parámetros de la solicitud real.

¿El CNPJ devuelve 404 o no enruta?

El parámetro CNPJ acepta solo 14 dígitos. La / dentro de 40.673.061/0001-34 se trata como separador de ruta, por lo que la solicitud nunca llega al endpoint.

¿CPF encontrado pero el flujo de negocio parece incorrecto?

Compruebe primero situacao.codigo: cualquier valor distinto de 0 significa que el CPF no está en situación regular (fallecido, suspendido, pendiente de regularización, ...). Los datos son válidos; la decisión de negocio es suya.

¿Desfase de reloj (401, 10009001)?

El reloj de su servidor difiere del nuestro en más de 300 segundos. Use NTP y nunca guarde en caché ni reutilice timestamps entre solicitudes.