API de Facturación Electrónica para Argentina
/health - Health check/api/accounts - Listar cuentas/api/accounts - Agregar cuenta/api/invoices/types - Tipos de comprobante/api/invoices/create - Crear factura/api/invoices/create-with-pdf - Crear factura con PDFAbrí una terminal y ejecutá:
# Crear directorio para los certificados
mkdir -p ~/afip-certs && cd ~/afip-certs
# Generar clave privada (GUARDAR ESTE ARCHIVO - ES SECRETO)
openssl genrsa -out private.key 2048
# Generar CSR (Certificate Signing Request)
openssl req -new -key private.key -out request.csr \
-subj "/C=AR/O=TU_RAZON_SOCIAL/CN=TU_NOMBRE/serialNumber=CUIT TU_CUIT"
Ejemplo real:
openssl req -new -key private.key -out request.csr \
-subj "/C=AR/O=BAUX SRL/CN=Santiago Herzfeld/serialNumber=CUIT 20123456789"
Completar el formulario:
| Campo | Valor |
|---|---|
| Alias | Un nombre para identificarlo (ej: facturacion-api) |
| Nombre del DN | Tu razón social o nombre |
| CUIT representado | Tu CUIT (sin guiones) |
| Tipo | Seleccionar "CSR" |
En el campo de texto grande, pegar el contenido del archivo request.csr:
cat request.csr
certificate.crt# Estos dos comandos deben dar el mismo hash
openssl rsa -noout -modulus -in private.key | openssl md5
openssl x509 -noout -modulus -in certificate.crt | openssl md5
Para poder emitir facturas electrónicas, necesitás crear un Punto de Venta habilitado para web services:
| Campo | Valor |
|---|---|
| Número | El próximo disponible (ej: 1, 2, 3...) |
| Nombre de Fantasía | Nombre descriptivo (ej: "API Facturación") |
| Sistema de Facturación | RECE / Factura Electrónica - Web Services |
| Domicilio | Seleccionar tu domicilio fiscal |
Opción A: Subir archivos directamente (recomendado)
curl -X POST https://afip.baux.ar/api/accounts \
-F "name=mi-empresa" \
-F "cuit=20123456789" \
-F "cert=@certificate.crt" \
-F "key=@private.key" \
-F "businessName=MI EMPRESA SRL" \
-F "ivaCondition=Responsable Inscripto" \
-F "production=true"
Opción B: Enviar rutas de archivos (si ya están en el servidor)
curl -X POST https://afip.baux.ar/api/accounts \
-H "Content-Type: application/json" \
-d '{
"name": "mi-empresa",
"cuit": "20123456789",
"certPath": "./certs/certificate.crt",
"keyPath": "./certs/private.key",
"businessName": "MI EMPRESA SRL",
"ivaCondition": "Responsable Inscripto",
"production": true
}'
Si querés facturar en nombre de una Persona Jurídica (SAS, SRL, SA, etc.), necesitás pasos adicionales para autorizar a una persona física a operar en su nombre.
El CSR debe incluir los datos de la empresa, no de la persona física:
openssl req -new -key private.key -out request.csr \
-subj "/C=AR/O=NOMBRE DE LA EMPRESA SAS/CN=Representante Legal/serialNumber=CUIT CUIT_EMPRESA"
Ejemplo:
openssl req -new -key private.key -out request.csr \
-subj "/C=AR/O=NAS ENTERTAINMENT SAS/CN=Santiago Herzfeld/serialNumber=CUIT 30719171075"
curl -X POST https://afip.baux.ar/api/accounts \
-F "name=NAS Entertainment" \
-F "cuit=30719171075" \
-F "cert=@certificate.crt" \
-F "key=@private.key" \
-F "businessName=NAS ENTERTAINMENT SAS" \
-F "address=Dirección Fiscal, CABA" \
-F "ivaCondition=Responsable Inscripto" \
-F "production=true"
| Aspecto | Persona Física | Persona Jurídica |
|---|---|---|
| CUIT en CSR | Tu CUIT personal | CUIT de la empresa |
| Razón Social | Tu nombre | Nombre de la empresa |
| Tipo de Factura | C (Monotributo) o A/B (RI) | A o B (generalmente RI) |
| Autorización extra | No | Sí - delegar servicios |
| ID | Tipo | Uso |
|---|---|---|
| 1 | Factura A | Ventas a Responsable Inscripto |
| 6 | Factura B | Ventas a Consumidor Final (por RI) |
| 11 | Factura C | Ventas por Monotributista |
| ID | Alícuota |
|---|---|
| 3 | 0% |
| 4 | 10.5% |
| 5 | 21% |
| 6 | 27% |
| ID | Tipo |
|---|---|
| 80 | CUIT |
| 86 | CUIL |
| 96 | DNI |
| 99 | Consumidor Final |
private.keychmod 600 private.key