CLI para facturación de exportación de servicios (Factura E) para monotributistas argentinos con integración AFIP.
NOTA: Este proyecto es en gran medida programado via LLM.
- Abrir la pagina de Releases.
- Descargar el archivo correspondiente al sistema operativo y arquitectura del equipo.
- Descomprimir el archivo descargado.
En Linux y macOS, instalar arca para el usuario actual:
mkdir -p ~/.local/bin
install -m 755 arca ~/.local/bin/arcaAgregar ~/.local/bin al PATH si todavia no esta disponible. Para Zsh:
echo "export PATH=\"\$HOME/.local/bin:\$PATH\"" >> ~/.zshrc
source ~/.zshrcPara Bash, agregar la misma linea a ~/.bashrc en lugar de ~/.zshrc.
En Windows:
- Mover
arca.exea un directorio permanente, por ejemplo%LOCALAPPDATA%\Programs\arca. - Agregar ese directorio a la variable de entorno de usuario
Path. - Abrir una nueva terminal.
Verificar la instalacion desde una terminal nueva:
arca --helpLa instalacion permite ejecutar arca desde cualquier directorio. La configuracion,
los certificados y los datos siguen siendo propios de cada usuario.
Esta opcion requiere una toolchain estable de Rust y las dependencias nativas de OpenSSL:
cargo install --git https://github.com/bizk/arca-cli.git --locked
arca --helpCargo instala el ejecutable en ~/.cargo/bin. Ese directorio debe estar incluido
en el PATH.
Para instrucciones de desarrollo y publicacion, consultar DEVELOPMENT.md.
- CUIT activo como monotributista
- Clave fiscal nivel 3 o superior
- OpenSSL instalado en tu sistema
# Crear directorio para certificados
mkdir -p ~/.arca
# Generar clave privada RSA 2048 bits
openssl genrsa -out ~/.arca/cert.key 2048
# Generar CSR (Certificate Signing Request)
# Reemplazar los valores con tus datos reales
openssl req -new -key ~/.arca/cert.key -out ~/.arca/solicitud.csr \
-subj "/C=AR/O=TU_RAZON_SOCIAL/CN=TU_NOMBRE/serialNumber=CUIT TU_CUIT_SIN_GUIONES"Ejemplo con datos reales:
openssl req -new -key ~/.arca/cert.key -out ~/.arca/solicitud.csr \
-subj "/C=AR/O=Juan Perez/CN=Juan Perez/serialNumber=CUIT 20123456789"-
Ingresar a https://auth.afip.gob.ar con tu CUIT y clave fiscal
-
Buscar el servicio "Administración de Certificados Digitales"
- Si no lo tienes habilitado, ir a "Administrador de Relaciones de Clave Fiscal" → "Adherir Servicio" → buscar "Administración de Certificados Digitales"
-
Dentro del servicio, seleccionar "Agregar Alias"
-
Completar:
- Alias: Un nombre descriptivo (ej:
facturacion,arca-cli) - CSR: Copiar todo el contenido del archivo
~/.arca/solicitud.csr
- Alias: Un nombre descriptivo (ej:
# Ver contenido del CSR para copiar
cat ~/.arca/solicitud.csrDebe verse así:
-----BEGIN CERTIFICATE REQUEST-----
MIICxjCCAa4CAQAwYTE...
...
-----END CERTIFICATE REQUEST-----
- Descargar el certificado generado y guardarlo:
# Mover el archivo descargado (ajustar nombre según lo descargado)
mv ~/Descargas/certificado.crt ~/.arca/cert.crt-
En AFIP, ir a "Administrador de Relaciones de Clave Fiscal"
-
Seleccionar "AFIP" → "WebServices" → "Habilitación de Servicios"
-
Buscar y habilitar: "Factura Electrónica - WebService de Factura Electrónica de Exportación (wsfex)"
-
Vincular el servicio con el alias del certificado que creaste en el paso anterior
# Verificar que tienes ambos archivos
ls -la ~/.arca/
# Deberías ver:
# cert.crt - Certificado descargado de AFIP
# cert.key - Tu clave privada
# Verificar que el certificado es válido
openssl x509 -in ~/.arca/cert.crt -text -noout | head -20
# Verificar que clave y certificado coinciden
openssl x509 -noout -modulus -in ~/.arca/cert.crt | openssl md5
openssl rsa -noout -modulus -in ~/.arca/cert.key | openssl md5
# Ambos comandos deben mostrar el mismo hash-
El proceso de certificado es el mismo
-
Los endpoints son diferentes:
- WSAA:
https://wsaahomo.afip.gov.ar/ws/services/LoginCms - WSFEX:
https://wswhomo.afip.gov.ar/wsfexv1/service.asmx
- WSAA:
-
En la configuración de arca-cli usar:
[afip] ambiente = "testing"
~/.arca/
├── cert.crt # Certificado público (de AFIP)
├── cert.key # Clave privada (SECRETA)
├── config.toml # Configuración de arca-cli
├── clientes.json # Base de datos de clientes
└── facturas/ # Facturas emitidas
└── *.json
- Verificar que el certificado no esté vencido:
openssl x509 -in ~/.arca/cert.crt -noout -dates-
Verificar que clave y certificado coinciden (ver Paso 4)
-
Verificar que el servicio WSFEX está habilitado y vinculado al certificado
- Ir a AFIP → Administrador de Relaciones → verificar que WSFEX está habilitado y vinculado
- Verificar que estás usando el CUIT correcto en la configuración
- El CUIT debe coincidir con el del certificado
MIT