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

Crear Factura Electrónica de ARCA en Base44

Con prompt listo para pegar


Crear Factura Electrónica de ARCA en Base44

Si es tu primera vez conectándote con la facturación electrónica de ARCA, te recomiendo leer esta guía básica sobre su funcionamiento general.

Conectar tu sistema con la facturación electrónica de ARCA

Conectar tu sistema con la facturación electrónica de ARCA

Guía paso a paso

El primer paso para crear una factura electrónica de ARCA es obtener el Código de Autorización Electrónico (CAE).

En este tutorial vamos a pedirle a Base44 que cree una app para emitir una Factura B usando el web service de factura electrónica (wsfe) a través del API de Afip SDK. La idea es que puedas copiar un prompt, pegarlo en Base44 y dejar que la plataforma genere la pantalla, el endpoint privado y la conexión con ARCA.

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, para avanzar más rápido.

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 factura electrónica, lo importante es pedirle 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 web en Base44 para emitir Factura Electrónica de ARCA usando Afip SDK API.

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

Objetivo:
- Crear una pantalla simple para cargar los datos de una Factura B.
- Emitir la factura contra el web service de factura electrónica de ARCA (`wsfe`) usando Afip SDK API.
- Mostrar el CAE, vencimiento del CAE y número de comprobante autorizado.

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.
- La app debe limitarse a emitir el comprobante y mostrar el CAE.
- Usá ambiente de desarrollo: `dev`.
- Usá CUIT de desarrollo: `20409378472`.
- Usá web service: `wsfe`.

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: "Emitir Factura Electrónica de ARCA".
- Formulario con estos campos:
  - Punto de venta, valor inicial 1.
  - Tipo de comprobante, valor inicial 6 para Factura B.
  - Concepto, valor inicial 1 para Productos.
  - Tipo de documento, valor inicial 99 para Consumidor Final.
  - Número de documento, valor inicial 0.
  - Importe neto gravado, valor inicial 100.
  - IVA, valor inicial 21.
  - Condición IVA receptor, valor inicial 5.
- Botón: "Emitir factura".
- Resultado visible:
  - Número de comprobante.
  - CAE.
  - Vencimiento del CAE.
  - Mensaje de error claro si ARCA rechaza la solicitud.

Backend:
Crear un endpoint privado, por ejemplo `/api/emitir-factura-arca`, que reciba los datos del formulario y haga estos pasos:

1. Obtener autorización de ARCA:
POST https://app.afipsdk.com/api/v1/afip/auth
Header:
Authorization: Bearer ${AFIP_SDK_ACCESS_TOKEN}
Body JSON:
{
  "environment": "dev",
  "tax_id": "20409378472",
  "wsid": "wsfe"
}

La respuesta trae `token` y `sign`.

2. Obtener el último comprobante autorizado:
POST https://app.afipsdk.com/api/v1/afip/requests
Header:
Authorization: Bearer ${AFIP_SDK_ACCESS_TOKEN}
Body JSON:
{
  "environment": "dev",
  "method": "FECompUltimoAutorizado",
  "wsid": "wsfe",
  "params": {
    "Auth": {
      "Token": token,
      "Sign": sign,
      "Cuit": "20409378472"
    },
    "PtoVta": puntoDeVenta,
    "CbteTipo": tipoDeComprobante
  }
}

Tomar `FECompUltimoAutorizadoResult.CbteNro` y calcular:
nextVoucherNumber = CbteNro + 1.

3. Crear la factura con `FECAESolicitar`:
POST https://app.afipsdk.com/api/v1/afip/requests
Header:
Authorization: Bearer ${AFIP_SDK_ACCESS_TOKEN}
Body JSON:
{
  "environment": "dev",
  "method": "FECAESolicitar",
  "wsid": "wsfe",
  "params": {
    "Auth": {
      "Token": token,
      "Sign": sign,
      "Cuit": "20409378472"
    },
    "FeCAEReq": {
      "FeCabReq": {
        "CantReg": 1,
        "PtoVta": puntoDeVenta,
        "CbteTipo": tipoDeComprobante
      },
      "FeDetReq": {
        "FECAEDetRequest": {
          "Concepto": concepto,
          "DocTipo": docTipo,
          "DocNro": docNro,
          "CbteDesde": nextVoucherNumber,
          "CbteHasta": nextVoucherNumber,
          "CbteFch": fechaActualEnFormatoYYYYMMDD,
          "ImpTotal": importeNeto + importeIVA,
          "ImpTotConc": 0,
          "ImpNeto": importeNeto,
          "ImpOpEx": 0,
          "ImpIVA": importeIVA,
          "ImpTrib": 0,
          "MonId": "PES",
          "MonCotiz": 1,
          "CondicionIVAReceptorId": condicionIVAReceptorId,
          "Iva": {
            "AlicIva": [
              {
                "Id": 5,
                "BaseImp": importeNeto,
                "Importe": importeIVA
              }
            ]
          }
        }
      }
    }
  }
}

4. Leer la respuesta de `FECAESolicitar`.
Extraer:
- `CAE`
- `CAEFchVto`
- `CbteDesde`

5. Devolver esos datos al frontend.

Manejo de errores:
- Si Afip SDK API devuelve un error, mostrarlo en pantalla con lenguaje claro.
- Si aparece el error 10016, indicar que el sistema debe volver a consultar el último comprobante y reintentar con el próximo número.
- Si aparece el error 10242, indicar que falta o es incorrecta la condición IVA receptor.

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 emisión

Con los valores iniciales del formulario, Base44 debería emitir una Factura B de prueba por $121 en ambiente de desarrollo.

Al finalizar, la pantalla debe mostrar:

  • Número de comprobante
  • CAE
  • Vencimiento del CAE

Ejemplos de otros tipos de comprobantes

Problemas comunes

Si estás teniendo el error (10016) El número o fecha del comprobante no se corresponde con el próximo a autorizar, te recomiendo leer este artículo.

Error (10016) El numero o fecha del comprobante no se corresponde con el proximo a autorizar

Error (10016) El numero o fecha del comprobante no se corresponde con el proximo a autorizar

Pasos para resolver este error

Si estás teniendo el error (10242) El campo Condición IVA receptor es obligatorio. Consultar método FEParamGetCondicionIvaReceptor, te recomiendo leer este artículo.

Error (10242) El campo Condicion IVA receptor no es un valor valido/es obligatorio

Error (10242) El campo Condicion IVA receptor no es un valor valido/es obligatorio

Pasos para resolver este error

Luego, lo único que queda es pasar a modo producción. Podés seguir la guía para pasar a producción con Afip SDK.


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.