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

Realizar constatación de comprobantes de ARCA en Base44

Validá comprobantes usando Afip SDK API


Realizar constatación de comprobantes de ARCA en Base44

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

Realizar constatación de comprobantes de ARCA via API

Realizar constatación de comprobantes de ARCA via API

Con pocas líneas de código

En este tutorial vamos a pedirle a Base44 que genere una app para constatar comprobantes de ARCA usando el web service wscdc y Afip SDK API.

Requisitos previos

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

  • Obtener un access_token de Afip SDK
  • Tener un proyecto en Base44
  • Los datos del comprobante a constatar: CUIT emisor, punto de venta, tipo, número, fecha, importe y CAE/CAI
  • Configurar el token como variable privada o secret

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.

Crear el proyecto en Base44

Base44 puede generar la interfaz visual y la lógica de backend a partir de un prompt. Para conectarte con ARCA, pedile explícitamente que el access_token quede en una función server-side o endpoint privado. En Base44, creá un nuevo proyecto.

Prompt listo para pegar en Base44

Pegá este prompt:

Quiero crear una app para constatar comprobantes de ARCA usando Afip SDK API.

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

Stack:
- App web generada en Base44
- Función server-side, Edge Function o endpoint backend privado
- Frontend para cargar datos y ver resultados

Objetivo:
- Validar si un comprobante fue autorizado por ARCA.
- Usar el web service `wscdc`.
- Ejecutar el método `ComprobanteConstatar`.
- Mostrar el resultado de la constatación en pantalla.

Reglas importantes:
- No llames a Afip SDK API desde componentes frontend.
- No expongas el access token en el navegador.
- Usá una función server-side, Edge Function o endpoint backend privado.
- 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: "Constatar comprobante de ARCA".
- Formulario con:
  - Modo de comprobante, default CAE.
  - CUIT emisor, default 20409378472.
  - Punto de venta, default 1.
  - Tipo de comprobante, default 11.
  - Número de comprobante, default 3850.
  - Fecha de comprobante, default 20250225.
  - Importe total, default 100.
  - Código de autorización, default 75082223003046.
  - Tipo de documento receptor, default 80.
  - Número de documento receptor, default 33693450239.
- Botón "Constatar comprobante".
- Resultado con estado Aprobado/Rechazado, fecha de proceso y detalle devuelto por ARCA.

Backend:
Crear un endpoint privado `/api/comprobantes/constatar`.

El endpoint debe hacer todo este flujo:

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

Guardar de la respuesta:
- token
- sign

2. Constatar el comprobante:
POST https://app.afipsdk.com/api/v1/afip/requests
Headers:
Authorization: Bearer ${AFIP_SDK_ACCESS_TOKEN}
Content-Type: application/json
Body:
{
  "environment": "dev",
  "method": "ComprobanteConstatar",
  "wsid": "wscdc",
  "params": {
    "Auth": {
      "Token": token,
      "Sign": sign,
      "Cuit": "20409378472"
    },
    "CmpReq": {
      "CbteModo": cbteModo,
      "CuitEmisor": cuitEmisor,
      "PtoVta": puntoDeVenta,
      "CbteTipo": tipoDeComprobante,
      "CbteNro": numeroDeComprobante,
      "CbteFch": fechaDeComprobante,
      "ImpTotal": importeTotal,
      "CodAutorizacion": codigoDeAutorizacion,
      "DocTipoReceptor": docTipoReceptor,
      "DocNroReceptor": docNroReceptor
    }
  }
}

3. Leer `ComprobanteConstatarResult` y devolver al frontend:
{
  "success": true,
  "result": Resultado,
  "processDate": FchProceso,
  "voucher": CmpResp,
  "raw": respuestaCompleta
}

Manejo de errores:
- Si falta `AFIP_SDK_ACCESS_TOKEN`, mostrar "Falta configurar el access_token de Afip SDK".
- Si ARCA devuelve `Resultado: R`, mostrar que el comprobante fue rechazado y enseñar el detalle devuelto.
- Si ARCA devuelve un error, mostrar el mensaje recibido.
- 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

Después de generar la app, configurá AFIP_SDK_ACCESS_TOKEN en los secrets o variables privadas del proyecto de Base44. No pegues el token en un campo visible de la pantalla ni dentro de un componente React. El token solo debe vivir en el backend.

Probar la constatación

Con los valores iniciales, Base44 debería enviar la solicitud a wscdc y mostrar el resultado de la constatación.

Al finalizar, la pantalla debe mostrar:

  • Resultado de ARCA
  • Fecha de proceso
  • Datos del comprobante constatado

Problemas comunes

Recordá que en ambiente de desarrollo solo podés constatar comprobantes emitidos en ese mismo entorno. Consultá la documentación del web service WSCDC para ver la lista completa de campos y valores permitidos. Lo único que queda es pasar a modo producción para poder realizar constatación de comprobantes reales.


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.