ARCA autoriza la Factura E (19) y las notas E (20 y 21) por WSFEX, nunca por
WSFE. No hay un método aparte: issue() recibe una factura de exportación
cuando el input trae export, y issueCreditNote() o issueDebitNote()
emiten notas E cuando for apunta a un comprobante 19, 20 o 21.
La clase no depende de la condición del emisor, así que el input no lleva
issuer. El receptor está en el exterior: en lugar de una condición de IVA
lleva un país de destino, un nombre, un domicilio y su identificación.
Servicios
to necesita taxId, countryTaxId o los dos. countryTaxId es la CUIT que
ARCA asigna al país del receptor, de arca.wsfex.getCountryTaxIds().
En servicios, paymentDate es obligatoria y no puede ser anterior a la fecha
del comprobante. La fecha de una exportación de servicios no puede pasar del
mes en curso.
Bienes
incoterms es obligatorio. Omití permits mientras la mercadería no tenga
permiso de embarque: ARCA registra que todavía no existe. Cuando lo tiene,
cada permiso va con su país de destino.
Para emitir bienes el contribuyente tiene que estar inscripto como exportador.
Si no lo está, ARCA rechaza con el código 1668.
Ítems
Cada ítem lleva description, unit y amount, el total de la línea en
centavos. Salvo con las unidades 0, 97 y 99, también lleva quantity y
unitPrice, y amount tiene que ser quantity por unitPrice menos
discount. La unidad 99 es una bonificación, con amount negativo, y la 97
una seña. No hay IVA: el total de la factura es la suma de los ítems.
Moneda y cotización
Para cualquier moneda que no sea ARS, exchangeRate es obligatorio y ARCA lo
compara con su propia cotización. Tomalo de WSFEX en el momento de emitir:
En servicios la cotización tiene que ser la del día hábil anterior. Si la usás
de otra fuente, por ejemplo la del BCRA, ARCA rechaza con el código 2053. En
homologación esa consulta devuelve una cotización de prueba, así que esa regla
solo se puede verificar en producción.
paidInForeignCurrency: true informa que el receptor paga en la misma moneda
extranjera de la factura. Solo vale para facturas, nunca para notas.
Notas E
El SDK consulta el original y toma de ahí el tipo de exportación, el receptor,
el destino, la moneda, la cotización y el idioma. all: true acredita todas
las líneas del original. Una nota de crédito puede apuntar a una factura o a
una nota de débito E, y una nota de débito a una factura E. En servicios la
nota mantiene la cotización del original.
Comprobantes duplicados
Con idempotencyKey y un store, la emisión usa el Id de requerimiento de
WSFEX: el SDK lo reserva junto con el número y, si la respuesta se pierde,
reenvía el mismo Id. ARCA contesta el comprobante que ya autorizó en lugar de
emitir otro. El Id es único por CUIT, así que el SDK lee el Id y el número
y emite bajo un mismo lock por CUIT. Un Id reservado no se vuelve a usar,
aunque su pedido nunca haya llegado a ARCA.
recover() también resuelve una reserva de exportación: consulta el número
reservado y reconoce el comprobante por su Id y por todos los campos
fiscales que ARCA devuelve, sin reenviarlo. Si otro
pedido tomó ese número, el resultado es conflict y hace falta una clave
nueva.
El resultado tiene los mismos kind que en una factura nacional:
authorized, rejected, indeterminate y conflict. voucher.requestId es
el Id con el que ARCA guardó el comprobante.
Errores de configuración
Estos códigos llegan como errores o rechazos, no como algo que el SDK
configure:
arca.wsfex.getSalesPoints() lista solo los puntos de venta de exportación.
Consultas
lookup() y lastAuthorized() usan WSFEX cuando el tipo es 19, 20 o 21.
Si voucherType es un number cualquiera, lookup() puede devolver un
resumen de exportación: se distingue por voucherClass: "E". Lo mismo pasa con
issueCreditNote() e issueDebitNote() cuando for.voucherType es un
number cualquiera: el resultado puede ser de exportación y se distingue con
"service" in resultado. Con un tipo literal, como voucherType: 6 o
voucherType: 19, el tipo del resultado ya es el que corresponde.
arca.wsfex expone las tablas de referencia: países, CUIT de países, monedas,
Incoterms, unidades, idiomas, actividades, puntos de venta y cotizaciones. Last modified on October 3, 2026