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: deliberadamente no se distinguen, de lo contrario el endpoint se convertiría en una herramienta para averiguar la fecha de nacimiento de otras personas.

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.