La Nota de débito A aumenta el importe de una Factura A ya emitida: una diferencia de precio, un gasto que no se facturó o intereses por mora. Lleva el motivo en reason y, en associated_invoices, el comprobante que ajusta. Las reglas son las de la Factura A: receptor responsable inscripto o monotributista con CUIT, e IVA discriminado en amounts.vat y vat_items.
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 Nota de débito A
Una Nota de débito A de $605 por una diferencia de precio sobre la Factura A número 482 del punto de venta 1, la del ejemplo:
const response = await fetch('https://app.afipsdk.com/api/v1/invoices', {
method: 'POST',
headers: {
'Authorization': 'Bearer <ACCESS_TOKEN>',
'Content-Type': 'application/json',
'Idempotency-Key': 'ajuste-0002'
},
body: JSON.stringify({
issuer_cuit: '20111111112',
invoice_type: 2, // Nota de débito A
concept: 1, // 1 productos, 2 servicios, 3 productos y servicios
reason: 'Diferencia de precio no facturada', // Obligatorio en las notas
associated_invoices: [ // El comprobante que ajusta
{ invoice_type: 1, sales_point: 1, number: 482, date: '2026-10-14' }
],
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'
},
amounts: {
net: 500,
vat: 105,
total: 605
},
vat_items: [ // Una entrada por alícuota; 5 = 21%
{ id: 5, base: 500, amount: 105 }
],
items: [ // Detalle impreso: precios netos y vat_rate por línea
{ description: 'Diferencia de precio, Notebook 14', quantity: 1, unit_price: 500, subtotal: 500, vat_rate: 21 }
],
sale_condition: 'Cuenta corriente'
})
});
const invoice = await response.json();
reasonyassociated_invoicesson obligatorios. Si la nota ajusta un período y no un comprobante puntual, vaassociated_perioden lugar deassociated_invoices.- Los importes son los del ajuste, no los del comprobante original, y el receptor es el mismo.
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": "ajuste-0002",
"status": "approved",
"invoice_type": 2,
"sales_point": 1,
"number": 12,
"invoice_date": "2026-10-14",
"total_amount": 605,
"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.
Intereses por mora
Los intereses son un servicio, así que van con concept 2, el período que cubren y el vencimiento del pago:
{
"concept": 2,
"reason": "Intereses por pago fuera de término",
"service_dates": { "from": "2026-10-14", "to": "2026-11-13", "due": "2026-11-20" },
"items": [
{ "description": "Intereses por pago fuera de término", "quantity": 1, "unit_price": 500, "subtotal": 500, "vat_rate": 21 }
]
}
Varios comprobantes asociados
Una nota puede ajustar más de un comprobante, con una entrada en associated_invoices por cada uno:
{
"associated_invoices": [
{ "invoice_type": 1, "sales_point": 1, "number": 482, "date": "2026-10-14" },
{ "invoice_type": 1, "sales_point": 1, "number": 479, "date": "2026-10-10" }
]
}
Período asociado
Cuando la nota ajusta un período y no un comprobante puntual, por ejemplo un ajuste de precios sobre las ventas del mes, va associated_period en lugar de associated_invoices:
{
"reason": "Ajuste de precios de octubre",
"associated_period": { "from": "2026-10-01", "to": "2026-10-31" }
}