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()
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()
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()
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()
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()
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()
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()
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, yrecover(), 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.