API Facturación AFIP

Integra la facturación electrónica AFIP fácil y rápido con nuestra API. ¡Confiable desde 2015! Elegida por todos los desarrolladores.

Nuestra API de facturación electrónica AFIP te permite integrar la facturación electrónica AFIP directamente en tu plataforma, eliminando la necesidad de lidiar con los complejos webservices de AFIP. TusFacturasAPP es la solución SaaS ideal para tu negocio.

¿Cómo empiezo?

Te sugerimos revisar la guia de ¿Cómo empiezo? para poder crear una cuenta gratuita y obtener las claves necesarias para enviar los requests.

Integra fácilmente la facturación electrónica en tu software con la API de TusFacturasAPP

Características clave:

  • ✅ Conexión rápida y segura para emitir facturas electrónicos AFIP válidos. Conocé como podesintegrar la facturación electrónica en tu software con la API de TusFacturasAPP.

  • ✅ Procesa facturas, notas de crédito, recibos y más desde tu sistema.

  • ✅ Documentación detallada y ejemplos de código para una integración sencilla

  • ✅ Cumple con todas las regulaciones fiscales vigentes en Argentina y se mantiene actualizada con las últimas normativas, dado que estamos respaldados por un estudio contable-impositivo.

Nuestras opciones de API para facturación electrónica AFIP:

  • Emisión individual o por lotes: Selecciona la modalidad que mejor se adapte a tu volumen de facturación.

  • Procesamiento instantáneo o asincrónico: Obtene respuestas inmediatas o gestiona tu flujo de trabajo con colas de procesamiento. Te recomendamos utilizar siempre que sea posible, los métodos de facturación asincrónicos, ya que los instantáneos dependen de cómo funcionen los servicios de AFIP en el momento de la emisión.

📌 ¿Qué comprobantes podes facturar con la API para AFIP?

Nuestro servicio API de facturación electrónica AFIP te permite enviar a facturar comprobantes de tipo A,B,C,E, M y comprobantes de tipo "Factura de crédito MiPyme", ya sean facturas, notas de crédito, notas de débito y hasta facturas-recibos.

¿No sabes qué tipo de comprobante debes emitir? Consulta desde aquí

🧐 ¿Tenés alguna duda del servicio? checkea las FAQs, y si no encontrás lo que buscabas, contactanos por los canales de atención que tenemos disponibles.

Comencemos con la estructura genérica de un comprobante

Llamamos "comprobante" a todo documento ya sea factura, nota de crédito, nota de débito, pedido, presupuesto y remito tanto de ventas como de compras.

POST https://www.tusfacturas.app/app/api/v2/facturacion/metodo-elegido

Estructura del JSON a enviar

Charset: UTF-8

Request: Body

JSON de ejemplo

A continuación te mostramos un ejemplo de JSON generico completo con todas las posibles opciones, para generar un comprobante. Los bloques de información requeridos pueden variar según el tipo de comprobante que emitas.

Consulta la página de ejemplos de cada tipo de comprobante para obtener más información.

JSON
{
   "usertoken":"xxxxxx",
   "apikey":"xxxx",
   "apitoken":"xxxxxx",
   "cliente":{
      "documento_tipo":"DNI",
      "documento_nro":"1292963535",
      "razon_social":"Pirulo",
      "email":"test@test.com",
      "domicilio":"Av Sta Fe 123",
      "provincia":"2",
      "envia_por_mail":"S",
      "condicion_pago":"214",
      "condicion_pago_otra":"Cobrado en ventanilla",
      "condicion_iva":"CF",
      "reclama_deuda": "S",
      "reclama_deuda_dias": 5,
      "reclama_deuda_repite_dias": 10,       
      "rg5329":"N"
   },
   "comprobante":{
      "fecha":"28\/07\/2015",
      "tipo":"NOTA DE DEBITO B",
      "moneda":"DOL",
      "idioma":"1",
      "cotizacion":"15.20",
      "operacion":"V",
      "punto_venta":"2",
      "numero":"6",
      "periodo_facturado_desde":"27\/07\/2015",
      "periodo_facturado_hasta":"30\/07\/2015",
      "vencimiento":"30\/08\/2015",
      "rubro":"Servicios web",
      "external_reference":"ABC123",
      "tags":[
         "etiqueta1",
         "etiqueta2"
      ],
      "rubro_grupo_contable":"servicios",
      "abono":"S",
      "abono_frecuencia":"2",
      "abono_hasta":"10/2019",
      "abono_actualiza_precios":"N",
      "detalle":[
         {
            "cantidad":"1",
            "afecta_stock":"N",
            "bonificacion_porcentaje":"0",
            "producto":{
               "descripcion":"PAPAS",
               "unidad_bulto":"10",
               "lista_precios":"MI LISTA DE PRECIOS",
               "codigo":"",
               "precio_unitario_sin_iva":"100.45",
               "alicuota":"21",
               "impuestos_internos_alicuota":0,
               "unidad_medida":"7",
               "actualiza_precio":"S",
               "rg5329":"N"
            },
            "leyenda":"blanca, cepillada"
         },
         {
            "cantidad":"1.5",
            "bonificacion_porcentaje":"0",
            "afecta_stock":"N",
            "producto":{
               "descripcion":"HUEVOS",
               "unidad_bulto":"30",
               "lista_precios":"MAPPLETS",
               "codigo":"MPH",
               "precio_unitario_sin_iva":"50",
               "alicuota":"10.5",
               "impuestos_internos_alicuota":0,
               "unidad_medida":"7",
               "actualiza_precio":"N",
               "rg5329":"N"
            },
            "leyenda":""
         },
         {
            "cantidad":"2",
            "bonificacion_porcentaje":"0",
            "afecta_stock":"S",
            "producto":{
               "descripcion":"ZANAHORIA",
               "unidad_bulto":"50",
               "lista_precios":"MI LISTA DE PRECIOS",
               "codigo":"ZNH1",
               "precio_unitario_sin_iva":"200",
               "alicuota":"21",
               "impuestos_internos_alicuota":0,
               "unidad_medida":"7",
               "actualiza_precio":"S",
               "rg5329":"N"
            },
            "leyenda":""
         }
      ],
      "rg_especiales":{
         "regimen":"Factura de Cr\u00e9dito Electr\u00f3nica MiPyMEs (FCE)",
         "datos":[
            {
               "id":2101,
               "valor":"0170215820000005295250"
            },
            {
               "id":23,
               "valor":"HANDYWAY CARGO S.A"
            },
            {
               "id":27,
               "valor":"SCA"
            }
         ]
      },
      "comprobantes_asociados":[
         {
            "tipo_comprobante":"FACTURA C",
            "punto_venta":"3",
            "numero":"00000349",
            "comprobante_fecha":"03/03/2022",
            "cuit":27285051466
         }
      ],
      "comprobantes_asociados_periodo":{
         "fecha_desde":"20/11/2020",
         "fecha_hasta":"20/12/2020"
      },
      "pagos":{
         "formas_pago":[
            {
               "descripcion":"VISA DB",
               "importe":0.6
            },
            {
               "descripcion":"MercadoPago",
               "importe":50
            }
         ],
         "total":50.6
      },
      "tributos":[
         {
            "tipo":6,
            "regimen":1,
            "base_imponible":1000,
            "alicuota":10,
            "total":100
         }
      ],
      "exentos":"0",
      "impuestos_internos":"0",
      "impuestos_internos_base":"0",
      "impuestos_internos_alicuota":"0",
      "bonificacion":"120",
      "leyenda_gral":"Segun Orden de compra III1333",
      "comentario":"Factura correspondiente al servicio XX",
      "total":"573.22"
   }
}

Información de ejemplo, solo para visualizar su estructura.

Ejemplos de comprobantes según su tipo / letra

¿Qué te retorna la llamada a la API?

Sea cual sea la modalidad que utilices para facturar y por cada comprobante que emitas, obtendrás la siguiente respuesta, con todos los datos que necesitas para almacenar en tu sistema.

{
    "error":     "N",
     "errores": [ ""],    
     "rta":      "El comprobante NOTA DE DEBITO B 0002-00000006 (MI CUIT) se ha guardado correctamente",    
     "cae":      "65301278726386 ",
     "requiere_fec":   "NO ",    
     "vencimiento_cae":"07\/08\/2015",    
     "vencimiento_pago":"27\/08\/2015",    
     "comprobante_pdf_url": "https://www.dominio.com/url",
     "comprobante_ticket_url": "https://www.dominio.com/url",
     "afip_qr" : "https://www.afip.gob.ar/fe/qr/?p=eyJ2ZXIiOjEsImZlY2hhIjoiMjAyMC0xMS0xNSIsImN1aXQiOiIyNzI4NTA1MTQ2NiIsInB0b1Z0YSI6IjAwMDAzIiwidGlwb0NtcCI6MTEsIm5yb0NtcCI6IjAwMDAwMjQ5IiwiaW1wb3J0ZSI6IjAwMDAwMDAwMDAwMDEwMCIsIm1vbmVkYSI6IlBFUyIsImN0eiI6IjAwMDAwMDAwMDAwMDEwMDAwMDAiLCJ0aXBvRG9jUmVjIjo5OSwibnJvRG9jUmVjIjoiMCIsInRpcG9Db2RBdXQiOiJFIiwiY29kQXV0IjoiNzA0NjY4OTk1OTcwOTEifQ== "
     "afip_codigo_barras" : "12121212121006000300000000000000201811052 ",
     "envio_x_mail": "S",
     "external_reference":  "ABC123",
     "comprobante_nro": "0000123",
     "comprobante_tipo": "NOTA DE DEBITO B",
     "micrositios": {
			"cliente": "url-del-micrositio",
			"descarga":"url-del-micrositio"
		     },
     "envio_x_mail_direcciones":"direccion1@sudominio.com,direccion2@sudominio.com"
  }  

En caso de detectar error, la variable "error" contendrá una "S" y "errores" una lista con todos los errores encontrados

{
  "error": "S",
  "errores": [
   "El tipo de documento enviado no es valido",
    "Para la condicion de IVA seleccionada no se permite realizar comprobantes de tipo B."
  ],
  "external_reference": "ABC123",
  "error_cod": [],
  "error_details": [
    {
      "code": "TFC-8004",
      "text": "Para la condicion de IVA seleccionada no se permite realizar comprobantes de tipo B."
    }
  ]
}

Datos para tener en cuenta:

PDF

  • La URL del PDF que recibis es temporal, solo sirve para el día que la consultas.

  • Es importante que descargues toda la información junto con el contenido del pdf y lo almacenes en tu plataforma, ya que si si tu cuenta o suscripción no se encuentran vigentes, no podrás volver a obtenerlo. AFIP no genera archivos en PDF, por lo que tampoco podrás obtenerlo desde ahi.

  • Tene en cuenta que a partir del 01-07-2021, todo comprobante A que se emitan a un monotributista deberá llevar la siguiente leyenda: "El crédito fiscal discriminado en el presente comprobante, sólo podrá ser computado a efectos del Régimen de Sostenimiento e Inclusión Fiscal para Pequeños Contribuyentes de la Ley Nº 27.618". Éste valor no debe ser enviado, ya que saldrá automáticamente impreso en los PDF que se generen desde nuestra plataforma.

CAE (Código de Autorización electrónica de AFIP)

  • El CAE es el Código de Autorización Electrónico que otorga AFIP, como confirmación de la creación del comprobante. Es un dato importante para almacenar como respuesta.

  • Los CAE tienen fecha de vencimiento y se devuelve en formato dd/mm/aaaa

  • Por cuestiones de compatibilidad, el número de CAE se envia como texto con un espacio al final, el cual sugerimos eliminar de tu lado.

AFIP CÓDIGO DE BARRAS / QR

  • Por cuestiones de compatibilidad, el texto que se retorna en el campo afip_qr, se envía con un espacio al final, el cual sugerimos eliminar de tu lado.

  • El campo afip_codigo_barras dejará de ser enviado a partir del 01/01/2024

  • Cuando la respuesta es exitosa, podes obtener el texto que se necesita para armar el código QR, en caso que generes el PDF desde tu lado .

NOTAS DE DÉBITO Y CRÉDITO

  • Las notas de débito y crédito requieren que envies obligatoriamente los comprobantes asociados (o su período asociado). Conocé más desde aquí

REDONDEO DE NÚMEROS / SUMATORIAS / TOTALES

  • Para evitar inconsistencias en la validación de las sumatorias, sugerimos redondear a 2 decimales los valores y aplicar el redondeo con "Round half even". Te dejamos un link para que puedas probar online éste redondeo: https://roundingcalculator.guru/rounding-half-to-even-calculator/

  • TusFacturas.app NO válida la totalidad de los datos enviados como asi tampoco las sumatorias de los ítems que estas enviando para facturar. Es tu responsabilidad corroborar y validar éstos datos antes de enviarlos.

  • AFIP recibe únicamente totales, no el detalle de los items que facturas, ya que para los comprobantes de tipo "A" , "B" , "C" y "M" , Factura de crédito electrónica, TusFacturas.app utiliza el método de facturación mediante webservice AFIP "WSFEv1" ( Factura electrónica sin detalle de productos ).

MICROSITIOS

  • Las URL de los micrositios solo te serán devueltas con datos, si los mismos se encuentran habilitados en tu cuenta. Para configurarlo, ingresá a nuestra plataforma web, menú > mi espacio de trabajo > mis micrositios. Conocé más de los micrositios desde aquí.

EDICIÓN / ELIMINACIÓN DE COMPROBANTES

  • Aquellos comprobantes que hayan impactado en AFIP, no podrán ser eliminados. Sólo pueden ser anulados contablemente, generando una nota de crédito.

  • Ningún comprobante puede ser modificado una vez creado.

Detalle de los campos a enviar dentro del bloque: "Comprobante"

Detalle de los campos del bloque: "Cliente" y "Proveedor"

Para poder generar el comprobante, debes enviar un detalle de todos los datos del cliente según se informa a continuación.

comprobante: {
   .... 
   cliente: {   
      "documento_tipo":       "DNI",
      "documento_nro":        "1292963535",
      "razon_social":         "Pirulo",
      "email":                "test@test.com",
      "domicilio":            "Av Sta Fe 123",
      "provincia":            "2",
      "codigo":               "CLO2",
      "envia_por_mail":       "S",
      "condicion_pago":       "214",
      "condicion_pago_otra":  "Cobrado en ventanilla",
      "condicion_iva":        "CF",
      "reclama_deuda":        "S",
      "reclama_deuda_dias":   5,
      "reclama_deuda_repite_dias": 10,  
      "rg5329":                "N"
   }
}

En caso de enviar una compra, el nombre del bloque debe cambiar a "proveedor" en lugar de "cliente"

comprobante: {
   .... 
   proveedor: {   
      "documento_tipo":       "DNI",
      "documento_nro":        "1292963535",
      "razon_social":         "Pirulo",
      "email":                "test@test.com",
      "domicilio":            "Av Sta Fe 123",
      "provincia":            "2",
      "codigo":               "CLO2",
      "envia_por_mail":       "S",
      "condicion_pago":       "214",
      "condicion_pago_otra":  "Cobrado en ventanilla",
      "condicion_iva":        "CF"
   }
}

Información de los campos a enviar:

Datos a tener en cuenta:

  • Si el cliente ya existe en tu base de clientes de TusFacturasAPP, será actualizado con los nuevos datos, salvo los campos de: tipo de documento, número de documento y condición ante el IVA.

  • Si queres facturar un comprobante a consumidor final, sin especificar su nombre y DNI, debes enviar en el campo tipo y número de documento, lo siguiente:

Nro de documento = "0"

Tipo de documento = "OTRO"

En nombre, indicá lo que tu contador/a te recomiende.

Tené en cuenta, que solo podrás facturar sin indicar el documento del comprador, hasta ciertos montos que AFIP actualiza regularmente. TusFacturasAPP, cuenta con un método que te permite obtener el monto actualizado. Consultá la documentación de los topes de venta a CF

  • Para casos de clientes del exterior, que posean pasaporte, tené en cuenta que AFIP sólo permite el envío de números.

Estructura del bloque: "Detalle de conceptos"

El detalle de conceptos se compone de una lista de cada uno de los productos o servicios que vas a facturar.

El máximo de conceptos permitidos por comprobante es de 130.

La estructura de la lista de conceptos a enviar es la siguiente:

JSON
comprobante: {
   .... 
   detalle: [{
	"cantidad": "1.5",
	"afecta_stock": "N",
	"bonificacion_porcentaje": "0",
	"incluir_lista_precios_venta": "N",
	"producto": {
		"descripcion": "HUEVOS",
		"unidad_bulto": "30",
		"lista_precios": "MAPPLETS",
		"codigo": "MPH",
		"precio_unitario_sin_iva": "50",
		"impuestos_internos_alicuota": 0,
		"alicuota": "10.5",
		"unidad_medida": "7",
		"actualiza_precio":"S",
		"rg5329": "S"
	},
	"leyenda": ""
       },
       {
	"cantidad": "3",
	"afecta_stock": "S",
	"bonificacion_porcentaje": "50",
	"incluir_lista_precios_venta": "N",
	"producto": {
		"descripcion": "PALITOS SALADOS",
		"unidad_bulto": "30",
		"lista_precios": "SNACKS",
		"codigo": "PLi",
		"precio_unitario_sin_iva": "50",
		"impuestos_internos_alicuota": 0,
		"alicuota": "10.5",
		"unidad_medida": "7",
		"actualiza_precio":"S",
		"rg5329": "N"
	},
	"leyenda": "En paquetes de 190gr"
       }
      ]
   } 

Los campos que debes enviar en cada concepto de la lista del bloque "detalle" son los siguientes:

Detalle de los campos de cada producto o servicio que envies:

Cada producto o servicio que envies sera almacenado en la lista de precios que se mantiene en nuestra plataforma, ademas de generar el comprobante requerido. A continuación podrás conocer que datos debes enviar:

{
    "descripcion":     "HUEVOS",
    "unidad_bulto":    "30",
    "lista_precios":   "MAPPLETS",
    "codigo":          "MPH",
    "precio_unitario_sin_iva":"50",
    "alicuota":      "10.5",
    "unidad_medida": "7",
    "impuestos_internos_alicuota": 0,
    "actualiza_precio": "N",
    "rg5329": "N"
}

Datos a tener en cuenta:

  • Si el producto ya existía en tu base de productos de nuestra plataforma ( se valida que sea la misma lista de precios, código de producto y/o descripción del mismo), el mismo será actualizado por completo, con los nuevos datos que envíes, solo si indicas que deseas actualizar el precio con el campo "actualiza_precio":"S". En caso de no querer actualizar el producto, si el mismo ya existía, se facturará con el nuevo precio y descripción que envíes, pero mantendrá sus datos anteriores.

  • Si el comprobante que envías a facturar es de tipo C, todos los productos/conceptos que factures no deben llevar IVA y deberás enviar cada concepto con su precio final

  • Si el comprobante que envías, es de tipo A o B, los productos o servicios que envíes a facturar, deben ser enviados siempre SIN IVA, porque el IVA se calcula del lado de nuestra plataforma en base al campo "alicuota" que envías. Conocé más de los tipos de comprobantes, desde aquí

  • En caso que alguno de tus conceptos cuente con un signo porcentual (%) en el nombre (ej: Promo 20% OFF) deberás reemplazarlo por los siguientes caracteres: #&#

  • En caso que alguno de tus conceptos cuente con una nueva línea, en su nombre, o porque deba imprimirse en 2 líneas, deberás generar el salto de línea donde desees, ingresando los caracteres: #@#

  • Cómo calcular el IVA:

    • Si necesitas calcular cuánto vale tu producto sin IVA, te dejamos un cálculo rápido:

      Precio del producto con 21% de IVA = 121

      Para saber el precio sin el 21% de IVA debes hacer: 121 / 1.21 = 100

    • Si quisieras saber cuanto es el precio de tu producto + 21% de IVA, debes hacer el siguiente cálculo:

Precio del producto sin 21% de IVA = 100

Para saber el precio con el 21% de IVA debes hacer: 100 x 1.21 = 121

Detalle de los campos a enviar:

Estructura de "Comprobantes Asociados"

Los comprobantes asociados son requeridos a la hora de emitir una Nota de crédito o nota de débito. Encontrá la estructura e información de éste bloque desde la sección: Notas de crédito/Notas de débito

Estructura del bloque: "tributos"

Cuando requieras enviar percepciones de IVA o percepciones de Ingresos Brutos (IIBB) deberás enviar dentro del bloque "comprobante", un array con la siguiente estructura:

Ejemplo:

		 
 "tributos": [	
			{
				"tipo" : 7,
				"regimen": 22,
				"base_imponible": 2000,
				"alicuota": 20,
				"total": 400				
			}, 		
			{
				"tipo" : 6,
				"regimen": 3,
				"base_imponible": 1000,
				"alicuota": 3,
				"total": 30
			}, 		
			{
				"tipo" : 6,
				"regimen": 3,
				"base_imponible": 1000,
				"alicuota": 1.5,
				"total": 15	
			},
			{
				"tipo" : 6,
				"regimen": 1,
				"base_imponible": 1000,
				"alicuota": 10,
				"total": 100
			}
		],  

Información de los campos a enviar dentro de cada "tributo":

Estructura de "RG Especiales"

Si la empresa, opera bajo alguna RG particular, se deberá enviar un array con los datos adicionales, según se especifican en la tabla de Datos adicionales para RG Especiales.

Ten en cuenta que solo podrás aplicar a un solo regimen , por cada comprobante que emitas.

JSON
comprobante: {
   .... 
   "rg_especiales":   
  {   "regimen" : "RG 4004-E",
      "datos"  : 
               [{
                   "id"      :    18,
                   "valor"  :    "PRUEBA "
                },
                {
                  "id"      :    19,
                 "valor"  :    "PRUEBA (2) "
                 }]
   } 
 }

Datos a tener en cuenta:

  • TusFacturasAPP no realiza validaciones sobre éstos campos. Todas las validaciones son realizadas por la propia AFIP en caso que corresponda.

  • Si alguno de los items enviados posee un valor vacio, éste item no será procesado.

Información de los campos a enviar en el array de "datos":

Estructura de "pagos"

Si quisieras reflejar junto al envío del comprobante, el pago parcial o total del mismo, debes enviar un bloque, dentro del comprobante, llamado "pagos" con la estructura como se detalla a continuación. Éste bloque es opcional.

Los pagos que informes, se usan solo para la gestión interna de nuestra plataforma y tu cliente no lo verá reflejado en el PDF del comprobante que emitiste, ya que el único objetivo que tiene éste bloque es nutrir la cuenta corriente de tu cliente, con el pago realizado.

Datos a tener en cuenta:

  • NO podrás enviar los siguientes medios de pago: cheques y detalle de retenciones.

  • Se realizará una validación del total que se indique, contra la sumatoria de los medios de pago detallados, previo al guardado del comprobante.

  • El total de los pagos NO debe superar el importe total del comprobante, pero si puede ser inferior, para indicar que el comprobante recibió un pago parcial.

Información de los campos que componen el bloque "pagos"

Información de los campos que componen el array de "formas_pago"

Ejemplo del JSON a enviar.

JSON
comprobante: {
   .... 
   "pagos" : 
   {
	"formas_pago" : [ 
			{"descripcion" : "VISA DB", "importe" : 0.6},
			{"descripcion" : "MercadoPago", "importe" : 50}
			], 
	"total": 50.6
   }, 
 }

Estructura de "tags"

Si quisieras enviar tags para agregar a tus comprobantes, a modo de etiqueta informativa, debes enviar un array con el nombre de cada una de éstas.

Cada tag, debe ser un campo alfanumérico de hasta 255 caracteres y puedes enviar hasta 50 tags por comprobante.

Ejemplo del JSON a enviar.

JSON
comprobante: {
   .... 
   "tags" :  [ "etiqueta1", "etiqueta2"],   
 }

¿Aún te quedan dudas? ¡Contactános!

En caso que requieras asistencia o tengas alguna duda relacionada con tu plan API DEV, envíanos un mensaje a api@tusfacturas.app o contactanos por el chat que tenemos disponible en la web www.tusfacturas.app.

Last updated