Si solo querés un ejemplo mínimo funcional para arrancar:
arcli fc -m 300000 --cs --consumidor-finalEso crea una Factura C con:
- monto
- concepto
servicios - receptor consumidor final
- IVA receptor consumidor final
Asume que ya configuraste CUIT, credenciales y punto de venta (arcli config revisar lo verifica). Sin --emitir (y con emitir en false en la config, el valor por defecto) solo muestra la vista previa.
¿Preferís que te pregunte paso a paso? Corré arcli sin argumentos y se abre el modo interactivo. Antes de emitir te muestra el comando equivalente.
Si querés entender más, este orden sirve: Cómo pensar los comprobantes → Parámetros por familia → Cómo funcionan los flags → Ejemplos útiles. Si ya conocés el CLI, las tablas de flags sirven como referencia rápida.
Si querés armar un comando sin perderte, este orden suele funcionar bien:
- elegí el comprobante:
fc,fa,nca,ndb,fcec, etc - definí el monto:
--monto - elegí el concepto:
--cs,--cp,--cspo--concepto - definí la identidad del receptor:
--cuit,--cuil,--dni,--consumidor-final - definí el IVA receptor:
--ir-*,--iro--iva-receptor
Con eso ya tenés la base. Después sumás fechas de servicio, JSON, salida estructurada o asociado solo si ese caso lo necesita.
ARCLI trabaja con dos ideas al mismo tiempo:
- familias, como
facturaonota-credito - letras, como
a,boc
Entonces:
arcli factura cyarcli fcrepresentan el mismo comprobantearcli nota-credito ayarcli ncatambién
Los shortcuts existen para escribir menos. Las familias existen para que el comando sea más explícito o más fácil de descubrir.
En todos los casos, la estructura base se parece bastante:
- importe
- concepto
- identidad del receptor
- IVA del receptor
- punto de venta
- modo de ejecución
Después cambian algunas cosas según la familia:
- las facturas no usan comprobante asociado
- las notas sí lo usan
- las electrónicas mantienen la misma forma general, pero cambian el tipo ARCA
| Comando | Argumentos | Descripción |
|---|---|---|
factura |
<a|b|c|e> |
Emite o previsualiza Factura A, B, C o la de exportación E (WSFEX) |
nota-credito |
<a|b|c> |
Emite o previsualiza Nota de crédito A, B o C |
nota-debito |
<a|b|c> |
Emite o previsualiza Nota de débito A, B o C |
factura-credito-electronica |
<a|b|c> |
Emite o previsualiza Factura de crédito electrónica A, B o C |
nota-credito-electronica |
<a|b|c> |
Emite o previsualiza Nota de crédito electrónica A, B o C |
nota-debito-electronica |
<a|b|c> |
Emite o previsualiza Nota de débito electrónica A, B o C |
recibo |
<c> |
Emite o previsualiza Recibo C (solo letra C) |
| Shortcut | Comando largo |
|---|---|
fa |
factura a |
fb |
factura b |
fc |
factura c |
nca |
nota-credito a |
ncb |
nota-credito b |
ncc |
nota-credito c |
nda |
nota-debito a |
ndb |
nota-debito b |
ndc |
nota-debito c |
fe |
factura e |
fcea |
factura-credito-electronica a |
fceb |
factura-credito-electronica b |
fcec |
factura-credito-electronica c |
ncea |
nota-credito-electronica a |
nceb |
nota-credito-electronica b |
ncec |
nota-credito-electronica c |
ndea |
nota-debito-electronica a |
ndeb |
nota-debito-electronica b |
ndec |
nota-debito-electronica c |
rc |
recibo c |
arcli factura e y arcli fe son la misma Factura de exportación E: la letra E de la familia factura se resuelve por WSFEX, con sus propios flags (ver Factura de exportación).
Antes de ver parámetro por parámetro, hay cuatro reglas que te conviene tener presentes:
- prioridad:
flags > JSON > config > defaults - los flags pisan todo: si algo viene por CLI, manda eso
- hay flags excluyentes: no todo se puede combinar
--jsony--brutocambian la salida, no el sentido del comprobante
Ejemplo simple de prioridad:
- si en config guardaste
puntoVenta = 3 - en
voucher.jsonmandáspuntoVenta = 5 - y en CLI ejecutás
--pv 7
ARCLI usa 7, porque el flag explícito siempre pisa JSON y config.
Hay varias combinaciones de flags que no podés usar juntas (entorno, modo de ejecución, concepto, IVA receptor, identidad del receptor, tipo de asociado). El detalle completo vive en Flags mutuamente excluyentes.
Usalos cuando necesitás controlar el entorno, la salida o el modo de inspección del resultado. Cada comando acepta solo los que usa:
| Comando | Flags globales que acepta |
|---|---|
comprobantes (fa, fc, nca, factura, ...) |
--testing, --produccion, --json, --bruto |
padron, fce-obligado, ultimos, consultar, parametros, estado |
--testing, --produccion, --json |
certificado generar, certificado importar |
--testing, --produccion, --json |
interactivo |
--testing, --produccion |
config (y sus subcomandos), pdf (y sus subcomandos), completado, acceso-directo |
--json |
El entorno y la decisión de emitir son independientes:
- Entorno:
--testingo--produccion; sin flag,config.entorno(testingpor defecto). - Emitir:
--emitiro--previsualizar; sin flag,emitir/previsualizardel JSON de--cargar; si tampoco,config.emitir(falsepor defecto). Si nada pide emitir, en una terminal se muestra la vista previa y se pregunta, nombrando el entorno:¿Emitimos la factura B en PRODUCCIÓN?(Esc cuenta como no, igual que en el modo interactivo, y también en las preguntas del PDF); con--jsono sin terminal no se emite.
Así, --produccion --emitir emite en producción sin preguntar, y también lo hace un comando sin flags si la config tiene entorno produccion y emitir true. Es a propósito, para quien no quiere confirmar cada vez. Para no depender de la config (scripts, agentes), pasá siempre el entorno y --emitir o --previsualizar.
| Flag | Alias | Tipo | Valor por defecto | Descripción |
|---|---|---|---|---|
--testing |
ninguno | boolean |
false |
Fuerza entorno testing en esta ejecución |
--produccion |
ninguno | boolean |
false |
Fuerza entorno produccion en esta ejecución |
--json |
ninguno | boolean |
config.json (false por defecto) |
Devuelve salida estructurada |
--bruto |
ninguno | boolean |
config.bruto (false por defecto) |
Agrega respuesta cruda de ARCA cuando exista |
Si pasás una de estas opciones a un comando que no la usa (por ejemplo arcli padron 20201797064 --bruto), el comando corre igual y en stderr aparece un aviso: Aviso: `--bruto` no aplica a `arcli padron`, se ignora.
Todos los comandos con --json lo resuelven igual: el flag o, si no está, la clave de config json. También los errores de uso (opción desconocida, valor faltante, comando que no existe): con --json o json=true salen como INPUT_VALIDATION_ERROR en el formato de error JSON; sin JSON, en el mismo panel que el resto de los errores, con la sugerencia de ayuda.
Esta sección describe qué existe. Más abajo vas a encontrar qué hace falta en cada familia.
Estos flags controlan si ARCLI previsualiza o emite de verdad.
| Flag | Alias | Tipo | Valor por defecto | Descripción |
|---|---|---|---|---|
--previsualizar |
ninguno | boolean |
lo contrario de emitir, resuelto desde flags, JSON o config |
Muestra la solicitud sin emitir |
--emitir |
ninguno | boolean |
config.emitir (false por defecto) |
Emite realmente en ARCA |
Estos flags definen a quién le emitís y bajo qué condición de IVA.
En la práctica, siempre necesitás:
- una identidad
- una condición de IVA receptor
| Flag | Alias | Tipo | Valor por defecto | Descripción |
|---|---|---|---|---|
--cuit <numero> |
ninguno | string |
ninguno | CUIT del receptor: 11 dígitos, con o sin guiones |
--cuil <numero> |
ninguno | string |
ninguno | CUIL del receptor: 11 dígitos, con o sin guiones |
--dni <numero> |
ninguno | string |
ninguno | DNI del receptor: 7 u 8 dígitos, con o sin puntos |
--consumidor-final |
--cfinal |
boolean |
false |
Documento 0 e IVA receptor consumidor-final |
--iva-receptor <tipo> |
--ir <tipo> |
'cliente-del-exterior' | 'consumidor-final' | 'iva-liberado' | 'iva-no-alcanzado' | 'monotributista-social' | 'monotributo-trabajador-independiente-promovido' | 'proveedor-del-exterior' | 'responsable-inscripto' | 'responsable-monotributo' | 'sujeto-exento' | 'sujeto-no-categorizado' |
Con --cuit, la del padrón; si no, config.ivaReceptor |
Condición IVA del receptor |
--ir-ce |
ninguno | boolean |
false |
Cliente del exterior |
--ir-cf |
ninguno | boolean |
false |
Consumidor final |
--ir-il |
ninguno | boolean |
false |
IVA liberado |
--ir-ina |
ninguno | boolean |
false |
IVA no alcanzado |
--ir-ms |
ninguno | boolean |
false |
Monotributista social |
--ir-mtip |
ninguno | boolean |
false |
Monotributo trabajador independiente promovido |
--ir-pe |
ninguno | boolean |
false |
Proveedor del exterior |
--ir-ri |
ninguno | boolean |
false |
Responsable inscripto |
--ir-rm |
ninguno | boolean |
false |
Responsable monotributo |
--ir-se |
ninguno | boolean |
false |
Sujeto exento |
--ir-snc |
ninguno | boolean |
false |
Sujeto no categorizado |
El IVA receptor tiene que ser válido para la letra del comprobante. Por ejemplo, fa no admite --ir-cf y fb no admite --ir-ri. Ver IVA receptor.
Estos flags arman el contenido del comprobante.
En casi todos los casos te va a interesar mirar primero:
--monto--concepto--fecha--punto-venta
| Flag | Alias | Tipo | Valor por defecto | Descripción |
|---|---|---|---|---|
--cargar <ruta> |
ninguno | string |
ninguno | Carga datos base desde un archivo JSON |
--monto <numero> |
-m |
number |
requerido | Importe total del comprobante |
--alicuota <tasa> |
ninguno | '0' | '2.5' | '5' | '10.5' | '21' | '27' |
config.alicuota o 21 |
Alícuota de IVA (solo A y B) |
--alicuota <tasa>:<monto> |
ninguno | repetible | ninguno | Varias alícuotas: monto con IVA de cada una |
--exento <numero> |
ninguno | number |
0 |
Parte exenta del monto (solo A y B) |
--nogravado <numero> |
ninguno | number |
0 |
Parte no gravada del monto (solo A y B) |
--fecha <fecha> |
-f |
string |
hoy | Fecha del comprobante |
--dia <numero> |
-d |
integer |
ninguno | Deprecado: usá --vencimiento o --vto |
--punto-venta <numero> |
--pv |
integer |
config.puntoVenta |
Punto de venta |
--concepto <tipo> |
-c |
'productos' | 'servicios' | 'productos-servicios' |
config.concepto |
productos, servicios o productos-servicios |
--cs |
ninguno | boolean |
false |
Equivale a --concepto servicios |
--cp |
ninguno | boolean |
false |
Equivale a --concepto productos |
--csp |
ninguno | boolean |
false |
Equivale a --concepto productos-servicios |
--moneda <codigo> |
--mda |
string(3) |
config.moneda o ARS |
Moneda del comprobante: ISO o código de ARCA |
--cotizacion-moneda <numero> |
--cm |
number |
oficial de ARCA | Cotización de la moneda |
--misma-moneda |
ninguno | boolean |
false |
El pago se cancela en la moneda extranjera |
--servicio-desde <fecha> |
--sd <fecha> |
string |
ninguno | Fecha de inicio del servicio |
--servicio-hasta <fecha> |
--sh <fecha> |
string |
ninguno | Fecha de fin del servicio |
--vencimiento <fecha> |
--vto <fecha> |
string |
fin del servicio o fecha del comprobante | Vencimiento del pago (FchVtoPago) |
En moneda extranjera (--moneda USD) hay dos formas de informar la cotización:
- Te pagan en pesos (default): pasá
--cotizacion-monedacon la cotización acordada. Sin ella, ARCLI usa la oficial de ARCA y lo avisa en "Avisos". No puede ser1. - Te pagan en la moneda extranjera: pasá
--misma-moneda. ARCLI consulta la cotización oficial a ARCA y la muestra en la vista previa. No se combina con--cotizacion-moneda.
En pesos la cotización siempre es 1 y --misma-moneda no aplica. Detalle en Moneda y cotización.
--moneda acepta el código ISO o el de ARCA, en mayúsculas o minúsculas: ARS y PES son lo mismo, como USD y DOL, EUR y 060 o UYU y 011. ARCLI traduce el ISO al código de ARCA antes de enviar y la vista previa muestra el nombre con el ISO (Pesos uruguayos (UYU)). Están todas las monedas de la tabla de ARCA (arcli parametros monedas) que tienen código ISO; un código que no está en esa tabla se manda tal cual y lo rechaza ARCA si no existe. Lo mismo vale para codigoMoneda en el JSON y la clave moneda de la config.
--alicuota acepta alias: general (21), reducida (10.5), incrementada (27) y cero (0). Para una factura con ítems a distintas alícuotas, repetí --alicuota TASA:MONTO (por ejemplo --alicuota general:1210 --alicuota reducida:552,50); el total se calcula solo. Ver Varias alícuotas.
--monto siempre es el total del comprobante. Si informás --exento o --nogravado, ARCLI los descuenta del total y calcula neto e IVA sobre el resto. Ejemplo: fb -m 1196 --exento 50 --nogravado 25 da neto 926,45 e IVA 194,55. El flag es --nogravado, sin guion, porque el CLI interpreta cualquier --no-* como la negación de otro flag.
Los montos usan formato argentino: el punto separa miles y la coma separa decimales. 15000, 15.000, 1500,50 y 1.500,50 son válidos; 1500.50 da error, igual que el texto sobrante (12abc) y más de 2 decimales. La cotización acepta hasta 6. Vale para --monto, --exento, --nogravado, --cotizacion-moneda y el monto de --alicuota TASA:MONTO. En el JSON de --cargar los montos son números, también con 2 decimales como máximo (la cotización, 6).
Un comprobante puede llevar hasta cuatro fechas, y cada una responde a una pregunta distinta:
| Fecha | Flag | Responde | Sin el flag |
|---|---|---|---|
| Del comprobante | -f, --fecha |
¿Qué día se emite? | hoy |
| Período del servicio | --sd/--servicio-desde, --sh/--servicio-hasta |
¿Qué período cubre la factura? | la fecha del comprobante |
| Vencimiento | --vto, --vencimiento |
¿Cuándo vence el pago? | el fin del servicio, o la fecha del comprobante |
| Período asociado (notas) | --pd/--periodo-desde, --ph/--periodo-hasta |
¿Qué facturas ajusta la nota? | no va: se usa el comprobante asociado (--ac…) |
--servicio-*y--vencimientoson de facturas (y notas) de servicios.--periodo-*es solo de notas: en lugar de ajustar una factura puntual, ajustan todo lo facturado en ese período.--diaestá deprecado: usá--vencimientoo--vto.
Ejemplos:
# Servicio de octubre, facturado hoy, que vence el 10/11
arcli fc -m 1000 --cs --cfinal --sd 1/10 --sh 31/10 --vto 10/11
# Nota de crédito por un descuento sobre todo lo facturado en octubre de 2026
arcli ncc -m 500 --cs --cfinal --pd 1/10/2026 --ph 31/10/2026Para facturar con otra fecha, sumá -f: por ejemplo, -f 31/10 el 3/11 (en servicios, hasta 10 días antes o después de hoy).
Las cuatro se escriben igual: formato argentino (día primero), con mes y año opcionales; sin año se toma la fecha más cercana a hoy. Detalle completo en Fechas aceptadas.
Estos flags importan solo para notas. Si estás emitiendo una factura, podés ignorarlos.
Dicho más directo: no aplican a factura, factura-credito-electronica, recibo, fa, fb, fc, fcea, fceb, fcec ni rc.
| Flag | Alias | Tipo | Valor por defecto | Descripción |
|---|---|---|---|---|
--ac <atajo> |
ninguno | string |
ninguno | Atajo del comprobante asociado |
--at <numero> |
ninguno | integer |
ninguno | Tipo ARCA del comprobante asociado |
--asociado-punto-venta <numero> |
--apv <numero> |
integer |
ninguno | Punto de venta del asociado |
--ar <numero> |
ninguno | integer |
ninguno | Número del comprobante asociado |
--acuit <numero> |
ninguno | string(11) |
ninguno | CUIT del comprobante asociado |
--afecha <fecha> |
ninguno | string |
ninguno | Fecha del comprobante asociado |
--periodo-desde <fecha> |
--pd <fecha> |
string |
ninguno | Inicio del período asociado |
--periodo-hasta <fecha> |
--ph <fecha> |
string |
ninguno | Fin del período asociado |
Estos flags solo aplican a comprobantes de crédito electrónica. En cualquier otro comprobante dan error, porque ARCA los rechaza (10169).
| Flag | Alias | Tipo | Valor por defecto | Aplica a | Descripción |
|---|---|---|---|---|---|
--cbu <cbu> |
ninguno | string(22) |
config.cbu |
Factura FCE | CBU del emisor (obligatorio) |
--alias <alias> |
ninguno | string(6..20) |
config.aliasCbu |
Factura FCE | Alias del CBU (opcional) |
--transferencia <modalidad> |
ninguno | 'sca' | 'adc' |
sca |
Factura FCE | Modalidad de transferencia |
--anulacion |
ninguno | boolean |
false |
NC/ND FCE | La nota anula una factura rechazada |
Estos flags controlan el PDF del comprobante emitido. Los datos que se pasan acá solo van en el PDF: ARCA no los recibe. Detalle en PDF de comprobantes.
| Flag | Alias | Tipo | Valor por defecto | Descripción |
|---|---|---|---|---|
--exportar-pdf |
--pdf |
boolean |
según config.pdf |
Genera el PDF después de emitir |
--sin-pdf |
ninguno | boolean |
según config.pdf |
No genera el PDF |
--descripcion <texto> |
ninguno | string |
Según detalle |
Detalle del comprobante en el PDF |
--condicion-venta <tipo> |
--cv |
string |
config.condicionVenta |
Condición de venta en el PDF |
--sin-condicion-venta |
ninguno | boolean |
ninguno | Omite la condición aunque esté configurada |
--receptor-nombre <texto> |
ninguno | string |
ninguno | Nombre o razón social del receptor en el PDF |
--receptor-domicilio <texto> |
ninguno | string |
ninguno | Domicilio del receptor en el PDF |
--condicion-venta acepta contado, tarjeta-debito, tarjeta-credito, cuenta-corriente, cheque, transferencia, otros-medios-electronicos u otra, que se imprimen con su nombre (cuenta-corriente sale "Cuenta Corriente"). Cualquier otro texto se imprime tal cual: --cv "Billetera virtual". --sin-condicion-venta permite omitirla en un comprobante aunque exista un valor en la config; no se combina con --condicion-venta ni --cv. Solo en A, B y C; en la factura E va --forma-pago, que sí viaja a ARCA.
--exportar-pdf y --sin-pdf no se combinan. Sin ninguno de los dos, decide config.pdf (preguntar por defecto: en una terminal pregunta, con --json o sin terminal no genera).
Instala o revisa el plugin que genera los PDFs. No viene con ARCLI porque pesa unos 160 MB.
| Comando | Descripción |
|---|---|
arcli pdf |
Estado del plugin: instalado o no, versión y navegador |
arcli pdf estado |
Igual que arcli pdf |
arcli pdf instalar |
Descarga el plugin (y un navegador si no hay Chrome) |
arcli pdf desinstalar |
Borra el plugin y el navegador que haya descargado |
Todos aceptan --json. El formato está en Entrada y salida.
Arma el pedido del certificado de ARCA y carga el certificado que te devuelve, sin openssl. Los pasos en ARCA, con capturas, están en Cómo obtener los certificados.
| Comando | Descripción |
|---|---|
arcli certificado generar [--testing|--produccion] [--alias <alias>] |
Crea la clave privada y el CSR para subir a ARCA, y muestra los pasos del entorno |
arcli certificado importar <archivo> [--testing|--produccion] |
Valida el .crt que bajaste de ARCA, lo guarda y configura cert.<entorno> y key.<entorno> |
- Los archivos van a
certificados/<CUIT>/, junto al archivo de config:<entorno>.key(permisos0600),<entorno>.crty<entorno>.csr. generarusa el entorno de--testing/--producciono, sin flag, el de la config.--aliases el nombre del certificado en ARCA (por defectoarcli).- Renovar sin cortar la facturación:
generardeja la clave nueva como pendiente (<entorno>.nueva.key) y no toca la activa: seguís facturando con el certificado actual hasta queimportarvalida el nuevo. Recién ahí la pendiente pasa a ser la activa, y el par anterior queda como<entorno>.anterior.*. Si ya hay un pedido pendiente,generarfrena;--reemplazarlo descarta y arma otro. importarsaca el entorno del certificado (ARCA firma los de testing con "Computadores Test" y los de producción con "Computadores"). Antes de tocar nada valida que sea un certificado, que sea de tu CUIT, que no esté vencido y que corresponda a la clave del pedido. Acepta archivos con BOM o finales de línea de Windows. Al terminar, dice qué cargó: entorno, CUIT, alias y vencimiento.- Si ya había otro certificado configurado para ese entorno,
importarpregunta antes de reemplazarlo; sin terminal o con--json, hace falta--reemplazar. - Las rutas configuradas a mano con
arcli config establecer cert.*/key.*siguen andando igual:importarsolo las cambia al cargar un certificado nuevo. - En la terminal, el título va con el color del entorno y la carpeta, el CSR y la clave son links: con un clic se abren (en terminales que los soportan, como la de VS Code, iTerm2 o Windows Terminal;
FORCE_HYPERLINK=0los apaga). - Los dos aceptan
--json. El formato está en Entrada y salida.
Consultan a ARCA sin emitir nada. Usan el entorno y el punto de venta de la config (o --testing / --produccion) y aceptan --json.
| Comando | Descripción |
|---|---|
arcli estado |
Si los servidores de ARCA responden, cuánto tardan y si el punto de venta está habilitado |
arcli parametros |
Lista las tablas disponibles (no consulta ARCA) |
arcli parametros <tabla> |
puntos-venta, comprobantes, documentos, alicuotas, iva-receptor, monedas, conceptos, opcionales o tributos |
arcli parametros cotizacion <moneda> |
Cotización oficial de ARCA, por ejemplo USD |
- Las tablas muestran solo los valores vigentes hoy, salvo
puntos-venta, que también lista los bloqueados o dados de baja, marcados. - Puntos de venta en testing: ARCA no los informa, así que
parametros puntos-ventasale vacío yestadono puede verificar el punto de venta. En testing cualquier número sirve. - En producción,
estadoavisa si el punto de venta configurado no existe para tu CUIT, está bloqueado o dado de baja. estadoconlisto: falsesale con exit code0: es un diagnóstico, no un error. Si ARCA no responde, el error esARCA_UNAVAILABLE.- El JSON de cada uno está en Entrada y salida y tablas de ARCA.
Acá está la parte más práctica del documento: qué necesitás para emitir cada familia y qué cambia entre una y otra.
Las facturas comparten la misma base.
Obligatorio
- monto:
--monto - concepto:
--concepto,--cs,--cpo--csp - IVA del receptor:
--iva-receptor,--iro un solo--ir-*(con--cuitse puede omitir: sale del padrón)
Opcional
- identidad del receptor:
--cuit,--cuil,--dni,--consumidor-finalo--cfinal. Sin ninguna, es consumidor final (documento 0) - punto de venta si no está en config:
--punto-ventao--pv - fecha del comprobante:
--fecha - moneda y cotización:
--moneda,--mda,--cotizacion-moneda,--cm,--misma-moneda - carga JSON:
--cargar - fechas de servicio y vencimiento:
--servicio-desde,--servicio-hasta,--vencimiento(y--dia, deprecado) - modo de ejecución:
--previsualizar,--emitir - salida:
--json,--bruto
Factura C simple:
arcli fc -m 300000 --cs --consumidor-finalFactura A con CUIT:
arcli fa -m 1 --cs --cuit 20168598204 --ir-ri| Parámetro | Alias | Tipo | Requerido | Cuándo usarlo |
|---|---|---|---|---|
--monto <numero> |
-m |
number |
Sí | Siempre |
--concepto <tipo> |
-c |
'productos' | 'servicios' | 'productos-servicios' |
Sí | Siempre |
--cs, --cp, --csp |
ninguno | boolean |
Condicional | Si preferís el atajo en lugar de --concepto |
--cuit <numero> / --cuil <numero> / --dni <numero> / --consumidor-final |
--cfinal |
string / boolean |
No | Sin ninguna, consumidor final; una sola identidad |
--iva-receptor <tipo> / --ir <tipo> / --ir-* |
ninguno | unión de IVA receptor o boolean |
Sí | Una sola forma; con --cuit, sin el flag sale del padrón |
--punto-venta <numero> |
--pv <numero> |
integer |
Condicional | Si no está en config |
--fecha <fecha> |
-f |
string |
No | Si querés fijar una fecha específica |
--dia <numero> |
-d |
integer |
No | Deprecado: usá --vencimiento o --vto |
--servicio-desde <fecha> |
--sd <fecha> |
string |
Condicional | Si el concepto usa servicio |
--servicio-hasta <fecha> |
--sh <fecha> |
string |
Condicional | Si el concepto usa servicio |
--vencimiento <fecha> |
--vto <fecha> |
string |
No | Servicios y facturas FCE |
Las facturas no usan comprobante asociado, así que no aplican:
--ac--at--apv--asociado-punto-venta--ar--acuit
arcli rc (o arcli recibo c) emite el Recibo C, tipo ARCA 15. Usa los mismos flags y validaciones que la Factura C: sin IVA discriminado, sin comprobante asociado y sin FCE. Una nota de crédito o débito C lo puede asociar con --ac rc. Detalle en Reglas de validación.
arcli rc -m 15000 --cs --cfinalLas notas heredan todo lo de una factura, pero suman una regla importante: siempre requieren un comprobante asociado o un período asociado.
- siempre requieren asociado: una factura puntual (
--ac…) o un período (--periodo-desdey--periodo-hasta) - el asociado debe ser una factura compatible o, en notas C, un Recibo C (
--ac rc) - la letra del asociado debe coincidir con la de la nota
--acy--atson excluyentes
Obligatorio
- todo lo base de una factura
- además:
- un comprobante asociado:
--aco--at, con--asociado-punto-venta(o--apv),--ary--acuit - o un período asociado:
--periodo-desdey--periodo-hasta(entonces no van--ac,--apv,--arni--acuit)
- un comprobante asociado:
Opcional
- el resto de flags base de facturas
arcli nca -m 1 --cs --cuit 20168598204 --ir-ri --ac fa --apv 3 --ar 6 --acuit 20333333334Si la nota ajusta un período entero y no una factura puntual (por ejemplo, un descuento sobre todo lo facturado en el mes), usá el período en lugar del bloque --ac:
arcli ncb -m 5000 --cs --cfinal --periodo-desde 01-09-2026 --periodo-hasta 30-09-2026El período no puede terminar después de la fecha de la nota. Las notas FCE no lo aceptan.
| Parámetro | Alias | Tipo | Requerido | Cuándo usarlo |
|---|---|---|---|---|
--ac <atajo> |
ninguno | string |
Condicional | Si querés identificar el asociado por shortcut |
--at <numero> |
ninguno | integer |
Condicional | Si querés identificar el asociado por tipo ARCA |
--asociado-punto-venta <numero> |
--apv <numero> |
integer |
Condicional | Con --ac/--at |
--ar <numero> |
ninguno | integer |
Condicional | Con --ac/--at |
--acuit <numero> |
ninguno | string(11) |
Condicional | Con --ac/--at; no con período; en NC/ND FCE toma el CUIT emisor |
La base es la de una factura común, más los datos de cobro que exige el régimen MiPyMEs.
- cambia el tipo ARCA
- no usa comprobante asociado
- lleva el CBU del emisor y la modalidad de transferencia
- siempre lleva vencimiento de pago, incluso con concepto productos
- la fecha del comprobante puede ir de 5 días antes a 1 día después de hoy
Obligatorio
- lo mismo que en una factura común
- CBU:
--cbu, o configurado una vez conarcli config establecer cbu <22 dígitos>
Opcional
--alias,--transferencia(por defectosca) y--vencimiento
arcli fcea -m 1 --cs --cuit 20168598204 --ir-ri --cbu 0110599520000012345678Acá se combinan las dos reglas anteriores:
- base de factura
- tipo ARCA electrónico
- comprobante asociado obligatorio, con su fecha
Obligatorio
- todo lo base de una factura
- bloque de asociado completo, incluida
--afecha - el asociado tiene que ser del propio emisor:
--acuitse puede omitir y toma el CUIT configurado
Opcional
--anulacionsi la nota anula una factura que el comprador rechazó
No llevan CBU, alias, transferencia ni vencimiento de pago.
arcli ncea -m 1 --cs --cuit 20168598204 --ir-ri --ac fcea --apv 3 --ar 6 --afecha 01-03-2026arcli fe y arcli factura e hacen lo mismo: emiten o previsualizan una Factura de exportación E con el servicio wsfex, que tiene sus propios datos y su propio certificado autorizado. No es una letra más de la familia de facturas: no lleva concepto, IVA ni receptor con CUIT/CUIL/DNI, y en cambio lleva país de destino, incoterm, permisos de embarque e ítems reales.
Las notas de crédito y débito E todavía no están soportadas.
WSFEX pide un certificado autorizado al servicio wsfex. ARCLI usa exportacion.cert.<entorno> y exportacion.key.<entorno> si están configurados; si no, cae en cert.<entorno> y key.<entorno>. El par se resuelve junto: si configurás solo una de las dos claves de exportación, el comando corta antes de ir a ARCA. Ver Configuración.
Obligatorio
- importe total:
--monto - cliente y domicilio en el exterior:
--cliente,--domicilio-cliente - país de destino:
--pais-destino, por código (203) o por nombre (Brasil) - número del comprobante:
--numero, el siguiente al últimoEemitido en ese punto de venta (1si es el primero). ARCLI todavía no lo puede consultar:@arcasdk/corearma mal el pedido deFEXGetLast_CMP - actividad:
--actividado la claveexportacion.actividadde la config, con un código de la tabla de actividades de WSFEX
Opcional
--id-impositivoy--cuit-pais(sin--cuit-paisse resuelve desde el país de destino; si ARCA no publica un CUIT para ese país, el flag es obligatorio)--tipo-expo(1bienes,2servicios,4otros; por defecto2)--itempara el detalle real; sin ítems va un renglón con--descripcion--incotermy--incoterms-desc,--idioma,--forma-pago(por defectoTransferencia Internacional)--permisoy--permiso-existentepara permisos de embarque (solo con--tipo-expo 1; en2y4ARCA exigePermiso_existentevacío)--id-solicitudsi lo querés fijar a mano (por defecto, el siguiente de WSFEX)- punto de venta si no está en config:
--punto-ventao--pv - moneda y cotización:
--moneda(por defectoDOL),--mda,--cotizacion-moneda,--cm,--misma-moneda - PDF:
--exportar-pdf,--pdfo--sin-pdf - modo y salida:
--previsualizar,--emitir,--json,--bruto
Sin --tipo-expo, --moneda ni --forma-pago, la E sale de servicios (Tipo_expo 2), en dólares (DOL) y con forma de pago Transferencia Internacional. Las claves moneda y cotizacion de la config son de los comprobantes locales y no aplican a exportación.
La actividad no tiene default: cada emisor tiene la suya. La tabla de actividades de WSFEX (FEXGetPARAM_Actividades) no es la del padrón y es más chica (por ejemplo, 620900 no está y 620100 sí), así que un código que no está es error de validación antes de ir a ARCA, con las actividades que empiezan igual.
El pago de una exportación se hace en la moneda extranjera del comprobante (Moneda_Id/Moneda_ctz). Si además se cobra en esa misma moneda, --misma-moneda manda CanMisMonExt en S, que es el campo de WSFEX que lo declara; sin el flag va en N.
La E no lleva comprobantes asociados ni datos opcionales todavía, así que solicitud no incluye Cmps_asoc ni Opcionales: ARCA rechaza esos bloques vacíos (error 1820 el primero).
arcli fe --monto 1500 --cliente "ACME LLC" --domicilio-cliente "123 Main St" --pais-destino 203 \
--numero 1 --actividad 620100Con los datos del receptor del exterior (CUIT del país, ID impositivo, razón social y domicilio), ítems, incoterm y salida JSON:
arcli fe -m 1500 --cliente "ACME LLC" --id-impositivo "12-3456789" --domicilio-cliente "123 Main St" \
--pais-destino 212 --cuit-pais 55000002126 --tipo-expo 1 --incoterm FOB --numero 2 --actividad 620100 \
--item "001|Bienes varios|1|1500|unidad" --emitir --jsonCobrando en dólares, con la cotización de aduana de ARCA (sin --cm) y el pago en la misma moneda (--misma-moneda):
arcli fe -m 1500 --cliente "ACME LLC" --domicilio-cliente "123 Main St" --pais-destino 212 \
--numero 3 --actividad 620100 --misma-moneda --previsualizar| Parámetro | Alias | Tipo | Requerido | Cuándo usarlo |
|---|---|---|---|---|
--monto <numero> |
-m |
number |
Sí | Siempre |
--cliente <texto> |
ninguno | string |
Sí | Siempre: nombre o razón social del cliente del exterior |
--domicilio-cliente <texto> |
ninguno | string |
Sí | Siempre |
--pais-destino <codigo|nombre> |
ninguno | string |
Sí | Siempre: código de ARCA o nombre tal como lo informa ARCA |
--id-impositivo <texto> |
ninguno | string |
No | ID fiscal del cliente en su país |
--cuit-pais <numero> |
ninguno | integer |
No | CUIT del país del cliente; sin el flag sale de la tabla de ARCA |
--tipo-expo <1|2|4> |
ninguno | 1 bienes, 2 servicios, 4 otros |
No | Por defecto 2 (servicios) |
--actividad <codigo> |
ninguno | integer |
Condicional | Si no está exportacion.actividad en la config; código de la tabla de WSFEX |
--item <partes> |
ninguno | string repetible |
No | codigo|descripcion|cantidad|precio|unidad; la suma debe dar --monto |
--incoterm <codigo> |
ninguno | string |
No | Por ejemplo FOB; se valida contra la tabla de ARCA |
--incoterms-desc <texto> |
ninguno | string |
No | Por defecto, la descripción de la tabla de ARCA |
--idioma <codigo> |
ninguno | integer |
No | 1 español (por defecto), 2 inglés, 3 portugués |
--forma-pago <texto> |
ninguno | string |
No | Por defecto Transferencia Internacional |
--permiso <id> |
ninguno | string repetible |
No | Permiso de embarque ya existente; requiere --permiso-existente y --tipo-expo 1 |
--permiso-existente |
ninguno | boolean |
No | Marca que los permisos informados ya están en ARCA |
--numero <numero> |
ninguno | integer |
Sí | El siguiente al último E de ese punto de venta |
--id-solicitud <numero> |
ninguno | integer |
No | Por defecto, el siguiente de WSFEX |
--punto-venta <numero> |
--pv <numero> |
integer |
Condicional | Si no está en config |
--fecha <fecha> |
-f |
string |
No | No admite fechas futuras |
--fecha-pago <fecha> |
ninguno | string |
No | Por defecto, la fecha del comprobante |
--moneda <codigo> |
--mda |
string |
No | Código ISO o de ARCA, por ejemplo USD o DOL; por defecto DOL |
--cotizacion-moneda <numero> |
--cm |
number |
No | Sin flag se usa la última cotización de aduana publicada por ARCA |
--misma-moneda |
ninguno | boolean |
No | El pago se cancela en la misma moneda extranjera: manda CanMisMonExt en S |
--observaciones <texto> |
ninguno | string |
No | Observaciones del comprobante |
--obs-comerciales <texto> |
ninguno | string |
No | Observaciones comerciales |
--descripcion <texto> |
ninguno | string |
No | Solo sin --item; también va al PDF |
--cargar <ruta> |
ninguno | string |
No | Un objeto con un comprobante, no un lote |
Los flags globales (--testing, --produccion, --json, --bruto) y los de modo (--previsualizar, --emitir) funcionan igual que en el resto de los comprobantes.
Cada --item se separa con | para no pelear con las comas de los importes. La forma completa es codigo|descripcion|cantidad|precio|unidad; con cuatro partes se omite el código y con tres la unidad, que queda en unidad (código 7 de ARCA). La unidad puede ser el código numérico o el nombre de la tabla de unidades, que se compara sin mayúsculas y acepta singular o plural (unidad o unidades).
arcli fe -m 1500 --cliente "ACME LLC" --domicilio-cliente "123 Main St" --pais-destino 203 \
--numero 4 --actividad 620100 --item "001|Servicio de consultoría|1|1000|unidad" \
--item "002|Soporte|2|250|unidades" --previsualizarWSFEX no valida que Imp_total coincida con la suma de los ítems, así que ARCLI lo valida antes de ir a ARCA: si la suma no da --monto, el comando corta con un error de validación.
Estos flags de facturación no existen en fe, que los rechaza como opción desconocida. arcli factura e comparte el comando con A, B y C, así que los acepta pero los saltea con un aviso en "Avisos" (y en avisos del JSON); lo mismo pasa al revés con los flags de la E en arcli factura a, b o c:
- concepto (
--concepto,--cs,--cp,--csp) y fechas de servicio (--servicio-desde,--servicio-hasta,--vencimientoy--dia, deprecado) - identidad del receptor (
--cuit,--cuil,--dni,--consumidor-final) e--iva-receptor - IVA y alícuotas (
--alicuota,--exento,--nogravado; tampocoalicuotasen el JSON) - comprobante asociado (
--ac,--at,--apv,--ar,--acuit,--afecha,--anulacion,--periodo-desde,--periodo-hasta) - datos de cobro FCE (
--cbu,--alias,--transferencia); el régimen FCE (verificarFceen la config) tampoco se consulta
Los defaults de config de esos campos (concepto, IVA receptor, alícuota, CBU) no se usan al emitir una E.
- La vista previa consulta las tablas de WSFEX (países, monedas, unidades, incoterms, idiomas, actividades), la cotización y el ID de la solicitud, pero no emite.
- WSFEX numera por punto de venta y tipo de comprobante.
--numeroes obligatorio mientras@arcasdk/coreno permita consultar el último (FEXGetLast_CMP); si te equivocás, ARCA rechaza el comprobante. El ID de la solicitud sí se consulta (FEXGetLast_ID); fijalo con--id-solicitudsi emitís en paralelo. - El PDF se genera después de emitir, como en el resto de los comprobantes. Se guarda como
factura-e_<pv>-<numero>.pdfy usa el diseño de exportación: ítems reales, país de destino, CUIT del país, ID impositivo, divisa, forma y fecha de pago, incoterm y la leyenda de IVA exento. Ver PDF. - Un comprobante rechazado por WSFEX sale como respuesta válida con exit code
2, igual que en las letras A, B y C.
El JSON de salida y el de --cargar están en Entrada y salida.
Muestra ejemplos seguros y listos para copiar de todos los comprobantes soportados.
arcli ejemplosLa salida incluye versión mínima, versión completa, forma larga y forma corta para cada comprobante. Todos usan --previsualizar para evitar emisiones reales por error.
arcli fc -m 300000 --cs --consumidor-finalarcli fc --cargar ./voucher.json --jsonSi ya guardaste cuit, puntoVenta, concepto e ivaReceptor en config:
arcli config establecer concepto servicios
arcli config establecer ivaReceptor consumidor-final
arcli fc -m 300000arcli fa -m 1 --cs --cuit 20168598204 --ir-ri --emitir --json --brutoDos comandos de solo lectura para ver lo que ya está emitido en ARCA, sin abrir el modo interactivo:
arcli ultimos fb # últimas 15 facturas B del punto de venta configurado
arcli ultimos nca --cantidad 25 # últimas 25 notas de crédito A
arcli consultar fb 14 # detalle de la factura B número 14
arcli consultar fb 14 --json # lo mismo, en JSON| Comando | Argumentos | Flags |
|---|---|---|
arcli ultimos <tipo> |
tipo: atajo del comprobante (fa, fb, nca, fcea…) |
--cantidad <n> (1 a 50; por defecto config.comprobantesPorLista o 15), --pv / --punto-venta, --json, --testing, --produccion |
arcli consultar <tipo> <numero> |
tipo y número del comprobante |
--pv / --punto-venta, --json, --testing, --produccion |
Sin --pv usan el punto de venta de la config. Todavía no aceptan la Factura de exportación E (fe). Si el comprobante no existe, consultar termina con el error VOUCHER_NOT_FOUND. El formato del JSON está en Entrada y salida.
arcli fce-obligado <cuit> le pregunta a ARCA si un receptor está obligado a recibir Factura de Crédito Electrónica y desde qué monto. Con eso sabés si corresponde fa/fb/fc o fcea/fceb/fcec.
arcli fce-obligado 30546689979
arcli fce-obligado 30546689979 --fecha 15/10 --json| Flag | Alias | Descripción |
|---|---|---|
--fecha <fecha> |
-f |
Fecha de emisión a consultar; por defecto hoy |
--json, --testing, --produccion |
ninguno | Flags globales |
Usa el servicio wsfecred, que hay que autorizar aparte de wsfe. Ver Autorizar el servicio web.
Si activás arcli config establecer verificarFce true, la misma consulta corre en cada factura con CUIT del receptor y deja un aviso si el comprobante no coincide con el régimen. Por ejemplo, una fa a un receptor obligado por encima del mínimo. El aviso no frena la emisión. Ver Régimen FCE del receptor.
El JSON está en Entrada y salida.
arcli padron <cuit> muestra lo que ARCA tiene de un CUIT: nombre o razón social, domicilio fiscal, condición frente al IVA, impuestos, categoría de monotributo y actividad principal.
arcli padron 20201797064
arcli padron 20201797064 --json| Flag | Alias | Descripción |
|---|---|---|
--json, --testing, --produccion |
ninguno | Flags globales |
La condición IVA sale de los impuestos activos: monotributo es responsable-monotributo, IVA es responsable-inscripto e IVA exento es sujeto-exento. Con otros datos queda sin informar (condicionIva: null). Si el CUIT no está en el padrón, termina con el error TAXPAYER_NOT_FOUND. En testing el padrón tiene datos ficticios: 20201797064 devuelve datos completos. El JSON está en Entrada y salida.
Usa el servicio ws_sr_constancia_inscripcion, que hay que autorizar aparte de wsfe. Ver Autorizar el servicio web.
Al facturar con --cuit sin --ir (ni ivaReceptor en el JSON), ARCLI consulta el padrón y usa esa condición IVA, aunque la config tenga un ivaReceptor por defecto. También completa el nombre y el domicilio del receptor para el PDF, si no los pasaste. La vista previa lo marca: IVA receptor Responsable inscripto (padrón).
| Caso | Resultado |
|---|---|
--ir, --ir-* o ivaReceptor en el JSON |
Se usa ese valor; no se consulta el padrón |
| El padrón informa la condición | Se usa la del padrón |
| El padrón no responde o no informa la condición | Se usa ivaReceptor de la config, con un aviso en avisos |
Lo mismo, sin ivaReceptor en la config |
Error INPUT_VALIDATION_ERROR: indicala con --ir |
Para no consultarlo: arcli config establecer consultarPadron false. El modo interactivo hace la misma consulta al cargar un CUIT y propone esa condición, marcada "(según el padrón)".
Completa con Tab comandos, flags y valores en bash, zsh y fish: atajos (arcli ultimos nc<Tab>), flags (arcli fc --ir-<Tab>), valores de --iva-receptor, --concepto, --alicuota, --moneda, --transferencia y --ac, claves de config y sus valores (arcli config establecer entorno <Tab>), tablas de parametros y letras de las familias. Donde va una ruta (--cargar), completa archivos.
arcli completado instalar # con el shell de $SHELL; o: arcli completado instalar zsh
arcli completado # ¿está instalado?
arcli completado desinstalararcli completado instalar agrega al archivo de inicio del shell una línea marcada con un comentario # arcli y desinstalar saca solo eso:
| Shell | Archivo |
|---|---|
| zsh | ~/.zshrc (o $ZDOTDIR/.zshrc) |
| bash | ~/.bashrc; en macOS, el primero que exista de ~/.bash_profile, ~/.bash_login y ~/.profile |
| fish | ~/.config/fish/completions/arcli.fish, o $XDG_CONFIG_HOME/fish/completions/arcli.fish si está definida (archivo propio; desinstalar lo borra) |
Pedir el comando ya es la confirmación: no vuelve a preguntar, como arcli pdf instalar. Con --json devuelve { "cambio", "instalado", "ruta", "shell" }. Si no se puede saber el shell, da INPUT_VALIDATION_ERROR y hay que indicarlo. Un programa no puede cambiar la terminal que ya está abierta: después de instalar, abrí una nueva.
arcli completado <bash|zsh|fish> solo imprime el script, para instalarlo a mano. Cada Tab le pregunta a la versión instalada qué sigue, así que después de actualizar arcli no hay que reinstalar nada. En el modo interactivo está en Configuración → Autocompletado.
Crea un ícono que abre ARCLI en su modo interactivo con doble clic, sin escribir comandos:
arcli acceso-directo # en el escritorio
arcli acceso-directo ~/Documentos # en otra carpeta, que tiene que existir| Sistema | Qué crea | Dónde quedan el lanzador y el ícono |
|---|---|---|
| macOS | ARCLI.app |
Dentro de la .app |
| Windows | ARCLI.lnk |
En acceso-directo/, junto al archivo de config |
| Linux | ARCLI.desktop |
En acceso-directo/, junto al archivo de config |
Abre una terminal con ARCLI. Si termina con un error, la ventana espera un Enter para que se pueda leer. Con --json devuelve { "reemplazado", "ruta", "usaArcliInstalado" }.
-
Creado desde el código fuente (
yarn dev acceso-directo): abre elarcliinstalado en lugar del.tsdel repo, que Node no puede correr sin el cargador deyarn dev. Lo avisa al crearlo y enusaArcliInstalado. Si no hay unarcliinstalado, el ícono avisa que falta instalarlo. -
Repetirlo: actualiza el acceso directo de esa carpeta. En macOS y Linux, si ya hay un archivo con ese nombre que no creó ARCLI, da
INPUT_VALIDATION_ERRORy no lo toca. -
Si cambiás Node o ARCLI de lugar: el acceso directo guarda sus rutas al crearse. Si ya no están, prueba con el
arclidelPATH; si tampoco anda, volvé a correr el comando. -
Quitarlo: borrá el ícono como cualquier archivo.
-
En el modo interactivo está en Configuración → Acceso directo en el escritorio.
Comandos config y claves disponibles: Configuración.
Todos los comandos de esta referencia son estables, salvo storybook, una herramienta interna de desarrollo que no aparece en la ayuda ni en llms.txt.
- Patrones de uso: casos completos paso a paso.
- Reglas de validación y Troubleshooting: qué rechaza el CLI y cómo resolverlo.