Resolución N° 5.616/2024. Más información

Obtener información de un DNI en Replit

Usando el padrón alcance 13 de ARCA


Obtener información de un DNI en Replit

Si todavía no viste cómo funciona esta consulta mediante la API, te recomiendo leer el artículo introductorio:

Obtener información de un DNI via API

Obtener información de un DNI via API

Usando el padrón alcance 13 de ARCA

En este tutorial vamos a pedirle a Replit que genere una app para consultar información asociada a un DNI usando el web service de padrón alcance 13 (ws_sr_padron_a13) a través de Afip SDK API.

Requisitos previos

Para poder seguir esta guía, primero necesitarás:

Para usar los web services de ARCA se requiere un certificado digital. Con Afip SDK podés integrarte en modo desarrollo usando el CUIT 20409378472 sin obtener un certificado propio. Cuando quieras usar tu CUIT, podés seguir la guía para usar tu propio certificado para desarrollo.

Configurar el proyecto en Replit

Creá un nuevo Repl de Node.js. Antes de pedirle a Replit Agent que genere la app, agregá estos secrets desde Tools > Secrets:

  • AFIP_SDK_ACCESS_TOKEN: tu access_token de Afip SDK
  • AFIP_TAX_ID: 20409378472
  • AFIP_ENVIRONMENT: dev

Prompt listo para pegar en Replit

Abrí Replit Agent y pegá este prompt:

Quiero crear una app para obtener información de un DNI usando Afip SDK API.

Necesito que generes toda la implementación lista para usar.

Stack:
- Node.js
- Express
- Frontend simple con HTML, CSS y JavaScript
- Backend Express para llamar a Afip SDK API

Crear estos archivos:
- `package.json`
- `server.js`
- `public/index.html`
- `public/styles.css`
- `public/app.js`

Objetivo:
- Consultar el CUIT asociado a un DNI.
- Usar el web service `ws_sr_padron_a13`.
- Consultar los datos de la persona con el CUIT obtenido.
- Mostrar la información en pantalla.

Reglas importantes:
- No llames a Afip SDK API desde componentes frontend.
- No expongas el access token en el navegador.
- Usá `process.env.AFIP_SDK_ACCESS_TOKEN` solo en el backend Express.
- Usá ambiente de desarrollo: `dev`.
- Usá CUIT de desarrollo: `20409378472`.

Variables privadas que debo configurar:
- AFIP_SDK_ACCESS_TOKEN: mi access_token de Afip SDK.
- AFIP_TAX_ID: 20409378472.
- AFIP_ENVIRONMENT: dev.

Pantalla:
- Título: "Consultar información de un DNI".
- Campo DNI, default 30111222.
- Botón "Consultar DNI".
- Estado de carga.
- Resultado con CUIT encontrado y datos principales de la persona.
- Mensaje de error claro si no se encuentra información.

Backend:
Crear un endpoint privado `/api/personas/dni`.

El endpoint debe hacer todo este flujo:

1. Obtener autorización:
POST https://app.afipsdk.com/api/v1/afip/auth
Headers:
Authorization: Bearer ${process.env.AFIP_SDK_ACCESS_TOKEN}
Content-Type: application/json
Body:
{
  "environment": "dev",
  "tax_id": "20409378472",
  "wsid": "ws_sr_padron_a13"
}

Guardar de la respuesta:
- token
- sign

2. Obtener el CUIT a partir del DNI:
POST https://app.afipsdk.com/api/v1/afip/requests
Headers:
Authorization: Bearer ${process.env.AFIP_SDK_ACCESS_TOKEN}
Content-Type: application/json
Body:
{
  "environment": "dev",
  "method": "getIdPersonaListByDocumento",
  "wsid": "ws_sr_padron_a13",
  "params": {
    "token": token,
    "sign": sign,
    "cuitRepresentada": "20409378472",
    "documento": dni
  }
}

Tomar el primer CUIT devuelto en `idPersonaListReturn.idPersona`.

3. Obtener la información usando ese CUIT:
POST https://app.afipsdk.com/api/v1/afip/requests
Headers:
Authorization: Bearer ${process.env.AFIP_SDK_ACCESS_TOKEN}
Content-Type: application/json
Body:
{
  "environment": "dev",
  "method": "getPersona",
  "wsid": "ws_sr_padron_a13",
  "params": {
    "token": token,
    "sign": sign,
    "cuitRepresentada": "20409378472",
    "idPersona": cuitEncontrado
  }
}

4. Devolver al frontend:
{
  "success": true,
  "dni": dni,
  "taxId": cuitEncontrado,
  "person": respuestaDeGetPersona
}

Manejo de errores:
- Si falta `AFIP_SDK_ACCESS_TOKEN`, mostrar "Falta configurar el access_token de Afip SDK".
- Si no se encuentra CUIT para el DNI, mostrar "No se encontró una persona asociada a ese DNI".
- Si ARCA devuelve "No existe persona con ese ID", mostrar ese mensaje de forma clara.
- Loguear detalles en consola del servidor, pero no mostrar secrets.

Agregá estados de carga, éxito y error. Dejá la app lista para probar con los valores iniciales en ambiente `dev`.

Configurar el token

Si Replit Agent no tomó los secrets al primer intento, abrí Tools > Secrets y confirmá que AFIP_SDK_ACCESS_TOKEN exista. El token no debe aparecer en public/index.html, public/app.js ni en ningún archivo que se ejecute en el navegador.

Probar la consulta

Con el DNI inicial, Replit debería consultar primero el CUIT asociado y después mostrar los datos disponibles en padrón alcance 13.

Al finalizar, la pantalla debe mostrar:

  • DNI consultado
  • CUIT encontrado
  • Datos principales de la persona

Problemas comunes

Si recibís una respuesta vacía o el error “No existe persona con ese ID”, te recomiendo este artículo:

No existe persona con ese Id

No existe persona con ese Id

Pasos para resolver este error

También podés revisar la guía oficial del servicio: Padrón alcance 13. Lo único que queda es pasar a modo producción para consultar información real con tus propias credenciales.


Ante cualquier duda o pregunta, podés resolverla rápidamente en la Comunidad Afip SDK.

Conéctate a ARCA hoy mismo

Evitá la complejidad de ARCA. Con Afip SDK integrás tu sistema en minutos y te enfocás en hacer crecer tu negocio.