Alta, edición y baja
Dá de alta un CUIT con su CSR, editá su alias, razón social o punto de venta, y dalo de baja.
Las tres operaciones requieren una API key con scope read_write. Ninguna consume cuota.
Dar de alta un CUIT
POST /api/cuitsDa de alta el CUIT en el entorno indicado y, en la misma operación, genera su CSR.
curl -X POST https://arca.api.com.ar/api/cuits \
-H "Authorization: Bearer ak_TuSecretoAqui" \
-H "Content-Type: application/json" \
-d '{
"cuit": "20123456789",
"environment": "produccion",
"alias": "facturacion-acme",
"businessName": "ACME S.R.L."
}'| Campo | Tipo | Descripción |
|---|---|---|
cuit | string | Obligatorio. 11 dígitos. Se aceptan guiones (20-12345678-9) y se validan el formato y el dígito verificador |
environment | string | Obligatorio. homologacion o produccion |
alias | string | Obligatorio. Nombre del certificado: va como CN en el CSR y es lo que tu cliente va a ver en ARCA como computador fiscal al delegar servicios. Usá algo reconocible |
businessName | string | Obligatorio. Razón social: va como O en el CSR |
Respuesta exitosa
Status: 201 · El objeto CUIT, en estado pendiente y con el CSR listo para pegar en ARCA:
{
"cuit": "20123456789",
"environment": "produccion",
"alias": "facturacion-acme",
"businessName": "ACME S.R.L.",
"estado": "pendiente",
"pasosPendientes": ["cargar_certificado"],
"certificado": null,
"csrPendiente": {
"csrPem": "-----BEGIN CERTIFICATE REQUEST-----\nMIICuz...\n-----END CERTIFICATE REQUEST-----\n",
"createdAt": "2026-10-22T14:03:11.517Z"
},
"ptoVta": null,
"ptoVtaOrigen": null,
"ptoVtaHabilitado": null,
"constanciaAutorizada": null,
"datosFiscales": {
"condicionFiscal": null,
"categoriaMonotributo": null,
"inicioActividades": null,
"domicilioFiscal": null
},
"createdAt": "2026-10-22T14:03:11.204Z"
}Si el CUIT se crea pero la generación del CSR falla, el alta se conserva: la respuesta sigue siendo 201, con estado: "sin_certificado" y pasosPendientes: ["generar_csr"]. Reintentá con POST .../csr.
Alta duplicada
Status: 409 · Si la cuenta ya tiene ese CUIT activo en ese entorno. El body trae el CUIT existente en el campo cuit, sin modificar, con su CSR pendiente intacto:
{
"error": "Ya tenés ese CUIT registrado en ese entorno",
"cuit": { "cuit": "20123456789", "environment": "produccion", "estado": "pendiente", "...": "..." }
}Esto hace que reintentar un alta sea seguro: si tu request anterior se cortó después de crear el CUIT, el reintento te devuelve lo que ya existe y podés seguir.
Cupo de CUITs del plan
Status: 402 · Si la cuenta ya tiene tantos CUITs activos como permite su plan. No se crea nada.
{ "error": "Alcanzaste el límite de certificados de tu plan. Subí de plan para agregar más." }El cupo se respeta también ante altas simultáneas: si te queda un lugar y mandás dos altas a la vez, exactamente una se crea y la otra recibe 402. Cada CUIT por entorno ocupa un lugar; dar de baja uno lo libera.
Errores
| Status | Descripción |
|---|---|
400 | Falta un campo, el CUIT no es válido o el entorno no existe |
401 | API key ausente, inválida o revocada |
402 | La cuenta completó el cupo de CUITs |
403 | La API key es de solo lectura |
409 | Ya existe ese CUIT en ese entorno |
Editar un CUIT
PATCH /api/cuits/{cuit}/{environment}Modifica sólo los campos presentes en el body.
curl -X PATCH https://arca.api.com.ar/api/cuits/20123456789/produccion \
-H "Authorization: Bearer ak_TuSecretoAqui" \
-H "Content-Type: application/json" \
-d '{ "ptoVta": 4 }'| Campo | Tipo | Descripción |
|---|---|---|
alias | string (opcional) | Nuevo alias. No puede quedar vacío |
businessName | string (opcional) | Nueva razón social. No puede quedar vacía |
ptoVta | number | null (opcional) | Fija el punto de venta con el que se emite. null lo borra y vuelve a la resolución automática contra ARCA |
Status: 200 · El objeto CUIT actualizado.
- El número de CUIT y el entorno no se modifican: identifican el recurso. Para cambiarlos, dalo de baja y creá otro.
- Los datos fiscales (
datosFiscales) son de sólo lectura por la API. - Cualquier otro campo en el body responde
400en lugar de ignorarse en silencio. - Cambiar el alias o la razón social no altera un CSR ya generado: el CSR pendiente conserva el subject con el que se creó. Si necesitás que el certificado salga con los datos nuevos, generá otro CSR.
- Fijar un
ptoVtadistinto del guardado lo deja sin verificar (ptoVtaHabilitado: null) hasta la próxima reverificación.
Errores
| Status | Descripción |
|---|---|
400 | Un valor es inválido o el body trae un campo no editable |
401 | API key ausente, inválida o revocada |
403 | La API key es de solo lectura |
404 | El CUIT no existe en ese entorno, es de otra cuenta o fue dado de baja |
Dar de baja un CUIT
DELETE /api/cuits/{cuit}/{environment}curl -X DELETE https://arca.api.com.ar/api/cuits/20123456789/produccion \
-H "Authorization: Bearer ak_TuSecretoAqui"Status: 204 · Sin body.
El CUIT deja de aparecer en el listado, deja de poder usarse como representada y libera su lugar en el cupo. En la misma operación:
- su certificado activo se da de baja y descartamos su clave privada;
- su CSR pendiente, si había, se cancela y también descartamos su clave.
Es todo o nada: si algo falla, no cambia nada. Un CUIT dado de baja no conserva material de clave privada, así que no se puede reactivar: si lo volvés a dar de alta, se crea como un CUIT nuevo, con un CSR nuevo, y tu cliente tiene que tramitar otro certificado en ARCA.
Errores
| Status | Descripción |
|---|---|
401 | API key ausente, inválida o revocada |
403 | La API key es de solo lectura |
404 | El CUIT no existe en ese entorno, es de otra cuenta o ya fue dado de baja |