ARCA {API}
CUITs y certificados

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/cuits

Da 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."
  }'
CampoTipoDescripción
cuitstringObligatorio. 11 dígitos. Se aceptan guiones (20-12345678-9) y se validan el formato y el dígito verificador
environmentstringObligatorio. homologacion o produccion
aliasstringObligatorio. 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
businessNamestringObligatorio. 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

StatusDescripción
400Falta un campo, el CUIT no es válido o el entorno no existe
401API key ausente, inválida o revocada
402La cuenta completó el cupo de CUITs
403La API key es de solo lectura
409Ya 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 }'
CampoTipoDescripción
aliasstring (opcional)Nuevo alias. No puede quedar vacío
businessNamestring (opcional)Nueva razón social. No puede quedar vacía
ptoVtanumber | 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 400 en 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 ptoVta distinto del guardado lo deja sin verificar (ptoVtaHabilitado: null) hasta la próxima reverificación.

Errores

StatusDescripción
400Un valor es inválido o el body trae un campo no editable
401API key ausente, inválida o revocada
403La API key es de solo lectura
404El 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

StatusDescripción
401API key ausente, inválida o revocada
403La API key es de solo lectura
404El CUIT no existe en ese entorno, es de otra cuenta o ya fue dado de baja

En esta página