Skip to content

ralcorta/arcasdk

🚀 Arca SDK

TypeScript

npm GitHub Repo stars GitHub code size in bytes GitHub npm


arcasdk

Arca SDK

SDK para consumir y usar los Web Services de ARCA (ex AFIP)
Ver documentacion completa

Inspirado en afip.js
Reportar un bug


Invitame un café en cafecito.app


⚠️ AVISO DE MIGRACIÓN

Este proyecto ha evolucionado de afip.ts a Arca SDK.

El repositorio ha sido renombrado y el paquete ahora se publica como @arcasdk/core.

¿Cómo seguir usando la versión anterior? El código original de afip.ts se encuentra preservado en la rama afip.ts y el paquete sigue disponible en npm como afip.ts.

Todo el desarrollo futuro continuará en la rama main bajo el nuevo nombre.

Paquetes

Paquete Descripción
@arcasdk/core SDK para Web Services de ARCA: facturación electrónica, padrones, FCE npm
@arcasdk/pdf Generador de PDFs para comprobantes electrónicos (A, B, C, E, M) npm

Instalación

# Core (Web Services)
npm i @arcasdk/core

# PDF (generador de comprobantes)
npm i @arcasdk/pdf

Uso rápido

Facturación electrónica

import { Arca } from "@arcasdk/core";

const arca: Arca = new Arca({
  key: "private_key_content",
  cert: "crt_content",
  cuit: 20111111112,
});

const date = new Date(Date.now() - new Date().getTimezoneOffset() * 60000).toISOString().split("T")[0];

const payload = {
  CantReg: 1, // Cantidad de comprobantes a registrar
  PtoVta: 1, // Punto de venta
  CbteTipo: 6, // Tipo de comprobante (ver tipos disponibles)
  Concepto: 1, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios
  DocTipo: 99, // Tipo de documento del comprador (99 consumidor final, ver tipos disponibles)
  DocNro: 0, // Número de documento del comprador (0 consumidor final)
  CbteDesde: 1, // Número de comprobante o numero del primer comprobante en caso de ser mas de uno
  CbteHasta: 1, // Número de comprobante o numero del último comprobante en caso de ser mas de uno
  CbteFch: date.replace(/-/g, ""), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo
  ImpTotal: 121, // Importe total del comprobante
  ImpTotConc: 0, // Importe neto no gravado
  ImpNeto: 100, // Importe neto gravado
  ImpOpEx: 0, // Importe exento de IVA
  ImpIVA: 21, //Importe total de IVA
  ImpTrib: 0, //Importe total de tributos
  MonId: "PES", //Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos)
  MonCotiz: 1, // Cotización de la moneda usada (1 para pesos argentinos)
  CondicionIVAReceptorId: 1, // Condición de IVA del receptor
  Iva: [
    // (Opcional) Alícuotas asociadas al comprobante
    {
      Id: 5, // Id del tipo de IVA (5 para 21%)(ver tipos disponibles)
      BaseImp: 100, // Base imponible
      Importe: 21, // Importe
    },
  ],
};

const invoice = await arca.electronicBillingService.createInvoice(payload);

Generar PDF

import { InvoicePdfGenerator } from "@arcasdk/pdf";

const generator = new InvoicePdfGenerator();
const pdfBuffer = await generator.generate(invoiceData);

Ver la documentación de @arcasdk/pdf para más detalles.

Características

  • 100% TypeScript
  • Soporte Serverless — manejo aislado de tokens de autenticación
  • Múltiples engines SOAP (Node.js, Universal, custom)

Requisitos

Certificados emitidos por ARCA para homologación o producción:

Para más documentación, ir al sitio oficial.

Desarrollo y Contribuciones

Contribuciones

Nos encantaría que contribuyas a mejorar arcasdk. Para una guía completa de desarrollo, ver CONTRIBUTING.md que incluye:

Licencia

Este proyecto esta bajo la licencia MIT - Ver LICENSE para mas detalles.

Este software y sus desarrolladores no tienen ninguna relación con la ARCA/AFIP.