Skip to main content
createArcaClient() devuelve el cliente. Sus métodos son la API para emitir: reciben datos de tu negocio y devuelven el resultado fiscal ya normalizado. client.wsfe, client.wsmtxca y client.padron son los módulos técnicos que el cliente usa por debajo. Están en Módulos de transporte, y el Padrón en Consultar contribuyentes.

createArcaClient()

Completa los campos que faltan con las variables ARCA_* y valida la configuración al crear el cliente. Si falta el CUIT, un PEM o el entorno, lanza ArcaConfigurationError antes de cualquier llamada. client.config expone taxId y environment, de solo lectura. Las opciones están en Configuración.

issue()

Deriva la clase, el tipo de comprobante, el IVA y el pedido para ARCA a partir de input, y autoriza el comprobante. Sin idempotencyKey, lee el próximo número, autoriza una vez y hace a lo sumo una consulta si la respuesta queda incierta. Con clave y store, reserva el número antes de escribir, y una repetición consulta la reserva en vez de emitir otra vez. Los errores de input y la falla al leer el próximo número se lanzan antes de autorizar. Todo lo que pasa después vuelve como uno de los cuatro resultados. Los campos de input están en Emitir facturas.

preview()

Sincrónico y sin I/O: no usa el store, WSAA ni SOAP, y no lee el próximo número. Lanza los mismos errores de input que issue() antes de su primera llamada. Devuelve:

issueCreditNote()

for nombra el comprobante autorizado que corregís, o una lista de ellos. La nota acredita las líneas de items, un desglose amounts ya revisado, o el original entero con all: true. Uno de los tres es obligatorio. La clase, el receptor, la moneda, el concepto y las fechas de servicio salen del original. Con associatedPeriod: { from, to } en lugar de for, la nota ajusta un período y lleva su propio input de negocio. Devuelve los mismos resultados que issue().

issueDebitNote()

El mismo contrato que issueCreditNote(), sin all: true: una nota de débito suma a la cuenta, así que sus líneas siempre son explícitas.

previewCreditNote() y previewDebitNote()

A diferencia de preview(), son asincrónicas: consultan cada original una vez, sin escribir y sin reservar número. Devuelven lo mismo que preview() más originals, los comprobantes consultados en el orden del input. Una nota por período no consulta nada y no trae originals. PreviewOptions acepta representedTaxId, service, forceRefresh y abortSignal.

recover()

Consulta la reserva guardada para esa clave, con el servicio y el número que quedaron registrados. Nunca autoriza ni reserva un número nuevo. Si ARCA confirma que el número está vacío, devuelve indeterminate con lookup.kind === "not_found": para emitir, llamá otra vez al método original con la misma clave. Si no hay reserva para esa clave, lanza ArcaInputError con code === "ARCA_INPUT_RESERVATION_NOT_FOUND". RecoveryOptions acepta representedTaxId, forceRefresh, include y abortSignal.

lookup()

Consulta un comprobante autorizado por sus coordenadas, las mismas que recibe for en una nota de crédito. Solo lee: no usa el store ni reserva número. Devuelve null si ARCA no tiene ese comprobante y lanza ante cualquier otro error del proveedor. Con service: "wsmtxca" consulta WSMTXCA. El resultado es un VoucherSummary, el mismo que traen originals y un conflict: importes en centavos, fechas YYYY-MM-DD, y sin la respuesta cruda. Un campo que ARCA omite no aparece.

Opciones de emisión

issue(), issueCreditNote() e issueDebitNote() aceptan IssueOptions como segundo argumento. Todas son opcionales.

Resultados

Los cuatro métodos que emiten, y recover(), devuelven un IssueOutcome. Los resultados fiscales se devuelven, no se lanzan, y kind los distingue: attempted son las coordenadas del intento: salesPoint, voucherType y number. En indeterminate, lookup.kind dice por qué quedó abierto: Qué hacer con cada uno está en Emitir facturas.

IssuedVoucher

voucher, en un resultado autorizado, habla en las unidades del input: fechas YYYY-MM-DD e importes en centavos.

FiscalHeader

header es la misma en preview() y en voucher, tanto en una autorización directa como en una recuperada.

Importes

amounts trae tres enteros en centavos:

QR de un comprobante guardado

voucher.qr ya trae la URL. Para reimprimir un comprobante guardado sin volver a emitir, arcaQrUrl() la arma con los mismos datos, sin I/O:
arcaQrPayload() devuelve el JSON que va codificado en esa URL, y ARCA_QR_URL es la base.
Last modified on September 26, 2026