Skip to content

ralcorta/afip.ts

Repository files navigation

🚀 Afip SDK

TypeScript

npm GitHub Repo stars GitHub code size in bytes GitHub npm


afip.ts

Afip Ts

SDK para consumir y usar los Web Services de AFIP
Ver documentacion completa

Inspirado en afip.js
Reportar un bug


Invitame un café en cafecito.app

Guia

Instalación

NPM
npm i afip.ts --save
Yarn
yarn add afip.ts

Uso de la SDK

Requisitos previos

Se debe tener los certificados emitidos por AFIP, ya sean para los servidores de homologacion (test) o produccion, para poder pasarselos como parametro al paquete y que este haga uso de ellos para comunicarse con los web services.

Ejemplo basico

Ejemplo de como generar factura electronica:

import { Afip } from "afip.ts";

const afip: Afip = new Afip({
  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: parseInt(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)
  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 afip.electronicBillingService.createInvoice(payload);

Ejemplo de otros endpoints:

const points = await afip.electronicBillingService.getSalesPoints();

Caracteristicas

Toda configuracion del package es pasada por el constructor de la clase Afip la cual recibe Context.

Caracteristicas:

  • Escrito enteramente con Typescript
  • Soporte para Serverless. El package permite manejar los token de autenticacion de manera aislada.

Para mas documentacion, ir al sitio oficial.

Desarrollo y contribuciones

Contribuciones

Si encontras un bug o desaes sugerir algo, revisa de que no haya issues con el mismo tema, y de ser asi puedes generar uno aqui.

Desarrollo

Seria genial si puedes ayudarnos mejorando afip.ts. ¿Como hacer?

  1. Clonar.

  2. npm install.

  3. Rompela escribiendo tu codigo.

  4. Correr los test: npm test.

  5. Cear un Pull Request.

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 AFIP.