La Factura A la emite un responsable inscripto a otro responsable inscripto o a un monotributista. Discrimina el IVA: los importes van netos, el IVA aparte en amounts.vat con el detalle por alícuota en vat_items, y el receptor va siempre identificado con CUIT.
Necesitás un emisor responsable inscripto y verificado, y un webhook para recibir el resultado. El detalle de cada campo está en la referencia de comprobantes.
Emitir una Factura A
Una Factura A de $12.100 por un producto de $10.000 más IVA 21%, a cuenta corriente:
const response = await fetch('https://app.afipsdk.com/api/v1/invoices', {
method: 'POST',
headers: {
'Authorization': 'Bearer <ACCESS_TOKEN>',
'Content-Type': 'application/json',
'Idempotency-Key': 'venta-0002'
},
body: JSON.stringify({
issuer_cuit: '20111111112',
invoice_type: 1, // Factura A
concept: 1, // 1 productos, 2 servicios, 3 productos y servicios
receiver: {
doc_type: 80, // 80 CUIT: los comprobantes A exigen CUIT
doc_number: '30715000004',
vat_condition: 1, // 1 responsable inscripto; o 6, 13 y 16, monotributistas
name: 'Comercio del Centro S.R.L.',
address: 'Av. Corrientes 1234, CABA',
email: '[email protected]' // Opcional: le llega el PDF al aprobarse
},
amounts: {
net: 10000,
vat: 2100,
total: 12100
},
vat_items: [ // Una entrada por alícuota; 5 = 21%
{ id: 5, base: 10000, amount: 2100 }
],
items: [ // Detalle impreso: precios netos y vat_rate por línea
{ description: 'Notebook 14', quantity: 1, unit_price: 10000, subtotal: 10000, vat_rate: 21 }
],
sale_condition: 'Cuenta corriente'
})
});
const invoice = await response.json();
- El receptor tiene que ser responsable inscripto (
vat_condition1) o monotributista (6, 13 o 16), identificado con CUIT. A un consumidor final, exento, no alcanzado o no categorizado le corresponde una Factura B. vat_itemslleva una entrada por alícuota: la suma debaseesamounts.nety la suma deamountesamounts.vat.itemses el detalle impreso en el comprobante, con precios netos y la alícuota de cada línea envat_rate.
Respuesta
Factura SDK responde 202 con el comprobante en queued y lo autoriza en segundo plano. Cuando ARCA lo aprueba, tu webhook recibe el evento invoice.approved con el comprobante: el número asignado, el CAE y la URL pública del PDF.
{
"event_id": "evt_9f1e2d3c4b5a69788a9b0c1d2e3f4a5b",
"type": "invoice.approved",
"created": "2026-10-14T14:05:04.000Z",
"data": {
"id": "7c1d9e4b-2f3a-4b8c-9d0e-1a2b3c4d5e6f",
"idempotency_key": "venta-0002",
"status": "approved",
"invoice_type": 1,
"sales_point": 1,
"number": 482,
"invoice_date": "2026-10-14",
"total_amount": 12100,
"currency": "PES",
"cae": "76412345678901",
"cae_expiration": "2026-10-24",
"pdf_url": "https://app.afipsdk.com/api/v1/invoices/7c1d9e4b-2f3a-4b8c-9d0e-1a2b3c4d5e6f/pdf?token=kX3v9Qw2LmN8pR5tY7uZ1aB4cD6eF8gH0jK2lM4nO6p",
"...": "el comprobante completo, como lo devuelve GET /v1/invoices/:id"
}
}
Si ARCA lo rechaza, llega invoice.rejected con los motivos en errors. Con sync: true en el cuerpo, el comprobante vuelve ya decidido en la misma respuesta y no hay webhook. El detalle está en respuesta y estados.
Variantes
Los ejemplos muestran solo lo que cambia respecto de la solicitud de arriba.
Servicios
Con concept 2 (o 3, productos y servicios) van las fechas del servicio y el vencimiento del pago:
{
"concept": 2,
"service_dates": { "from": "2026-10-01", "to": "2026-10-31", "due": "2026-11-10" }
}
Varias alícuotas de IVA
Una entrada en vat_items por alícuota, y cada ítem con la suya. Acá $6.000 al 21% y $4.000 al 10,5%:
{
"amounts": { "net": 10000, "vat": 1680, "total": 11680 },
"vat_items": [
{ "id": 5, "base": 6000, "amount": 1260 },
{ "id": 4, "base": 4000, "amount": 420 }
],
"items": [
{ "description": "Producto al 21%", "quantity": 1, "unit_price": 6000, "subtotal": 6000, "vat_rate": 21 },
{ "description": "Producto al 10,5%", "quantity": 1, "unit_price": 4000, "subtotal": 4000, "vat_rate": 10.5 }
]
}
Con percepciones
Los tributos que no son IVA, como una percepción de ingresos brutos, van en tribute_items con su total en amounts.tributes:
{
"amounts": { "net": 10000, "vat": 2100, "tributes": 300, "total": 12400 },
"tribute_items": [
{ "id": 7, "description": "Percepción IIBB Buenos Aires", "base": 10000, "rate": 3, "amount": 300 }
]
}
En dólares
Moneda DOL con la cotización del día. Todos los importes van en dólares:
{
"currency": "DOL",
"exchange_rate": 1450.5,
"amounts": { "net": 100, "vat": 21, "total": 121 },
"vat_items": [{ "id": 5, "base": 100, "amount": 21 }],
"items": [
{ "description": "Notebook 14", "quantity": 1, "unit_price": 100, "subtotal": 100, "vat_rate": 21 }
]
}