Skip to main content
ARCA no anula comprobantes. Una corrección es una nota de crédito, y todos los modos de issueCreditNote() escriben un documento fiscal real que queda en los registros de ARCA. Una nota de crédito nombra el comprobante que corrige, o el período que ajusta. issueDebitNote() emite notas de débito con el mismo contrato.

Nota parcial

Lo habitual es la nota parcial: una devolución o una corrección de precio que acredita las líneas que elegís en vez de la factura entera. Este bloque es examples/nota-de-credito-parcial.ts:

Nota total

all: true acredita el original completo: espeja sus importes y sus alícuotas de IVA línea por línea. Este bloque es examples/nota-de-credito-total.ts:
El modo es explícito y obligatorio. Un input sin items ni all: true, o con los dos, se rechaza antes de cualquier I/O. Así, un campo olvidado nunca puede acreditar la factura entera.

Qué sale del original y qué aportás vos

Del original el SDK toma la clase y por lo tanto el tipo de nota (1 → 3, 6 → 8, 11 → 13), el tipo, el número y la condición de IVA del receptor, la moneda y el tipo de cambio, el concepto y, para los conceptos 2 y 3, las fechas de servicio, con el vencimiento elevado a la fecha de la nota. La aplicación aporta for, el modo (items o amounts, con un total opcional, o all: true) y, como mucho, el salesPoint de la nota, que por defecto es el del original, y date, que por defecto es hoy en Buenos Aires. Una nota vinculada no tiene campos issuer, to ni currency. Solo las notas por período los llevan, porque no hay original de donde tomarlos. La forma de los ítems sigue la clase del original. Una nota de clase C acepta ítems { amount }. Las notas de clase A y B aceptan ítems { gross | net, vat } con las mismas alícuotas y la misma conciliación que issue(). La clase es evidencia del original, así que una forma que la contradice se rechaza después de la única consulta del original y antes de cualquier escritura. En lugar de items podés pasar amounts, el mismo desglose fiscal revisado que acepta issue(): { net, vat, exempt?, untaxed?, vatRates? } en centavos, con un total opcional. Es el modo para una nota parcial cuya composición ya calculó tu aplicación. El SDK no recalcula el IVA. items y amounts son excluyentes, y ninguno de los dos se combina con all: true.

Tributos en las notas

Una nota total espeja los tributos del original tal como los devuelve la consulta. Una nota parcial no prorratea nada: si la nota lleva tributos, los pasás vos en taxes, con las mismas filas { id, description?, base, rate, amount } en centavos que usa issue(). El SDK nunca adivina qué percepción corresponde ni en qué proporción.

Límites

La nota no puede superar el total del original. El SDK no lleva la cuenta de notas anteriores contra un original. Evitar que varias notas sumen más que la factura es tarea de la aplicación. El original puede ser una factura o una nota de débito autorizada de las familias ordinaria (1, 2, 6, 7, 11, 12), A con leyenda (51, 52) o FCE (201, 202, 206, 207, 211, 212), incluidos los originales con tributos. for identifica el original con { salesPoint, voucherType, number } y nada más: alcanza con esas tres coordenadas del comprobante anterior. Los saldos acumulados, el stock, la contabilidad, la condición de agente de retención o percepción y qué percepción corresponde en cada caso siguen siendo de la aplicación. Los campos opcionales propios de la nota los aportás vos: no se copian del original. Una nota a otro receptor o en otra moneda es un documento distinto. Para armarla con campos que issueCreditNote() no deriva, usá los métodos directos de ARCA. Para emitir una nota con detalle de ítems, mirá WSMTXCA.

Notas de débito

issueDebitNote({ for, items | amounts }) emite una nota de débito contra los mismos originales. No admite all: true: una nota de débito agrega al saldo, así que sus líneas son siempre explícitas.

Notas por período

Con associatedPeriod: { from, to } la nota ajusta un período en vez de un comprobante. En ese modo no hay for y no hay original que consultar, así que la nota lleva los mismos datos de negocio que una factura: issuer, to, items o amounts, moneda y demás.

Notas FCE

Una nota FCE necesita un original FCE. fce: { annulment, reference? } informa la anulación de forma explícita: all: true no la elige por vos. El CUIT del emisor y la fecha del original viajan en la asociación, no en campos sueltos.

Vista previa de notas

previewCreditNote() y previewDebitNote() derivan lo que enviaría la emisión. A diferencia de preview(), que no hace ninguna I/O, estas consultan el original: una lectura, sin escritura y sin reservar número. La respuesta de una nota vinculada incluye ese comprobante como original, un VoucherSummary normalizado y sin la respuesta cruda. Una nota por período no tiene original, así que tampoco necesita esa consulta ni devuelve esa propiedad.

Evitar duplicados y probar en producción

idempotencyKey e include funcionan igual que en issue(). Dale a la nota su propia clave estable, por ejemplo nc:${devolucion.id}. Una repetición con clave consulta solo la nota reservada e informa amounts a partir del request guardado, así que en ese camino computedTotal es igual a sentTotal y vatAdjustment es 0. Una prueba de humo en producción es una factura de ARS 1 seguida de una nota total. Los dos documentos son reales y quedan en los registros de ARCA. La nota es una operación aparte. Si falla, la factura queda pendiente. Hacé coincidir issuer con tu condición fiscal real.
Last modified on September 10, 2026