> ## Documentation Index
> Fetch the complete documentation index at: https://developers.ipsofactura.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Custodia y destrucción del CSD

> Qué se borra cuando eliminas un Certificado de Sello Digital, en cuánto tiempo y qué queda fuera de nuestro alcance.

<Note>
  **Política v1 — septiembre 2026.** Dos puntos de este documento están marcados como
  pendientes de confirmación (la retención real de respaldos y la fecha comprometida para la
  revocación de la copia en el PAC). No lo tomes como versión final hasta que esos dos puntos
  estén resueltos.
</Note>

Esta página describe qué pasa con el material criptográfico de tu Certificado de Sello Digital
cuando lo eliminas de Ipsofactura. Está escrita para equipos legales y de seguridad que
necesitan documentar el ciclo de vida de la credencial.

## Cómo se custodia el CSD

Al registrar un CSD (`POST /empresas/{empresa_id}/certificados`) el material se separa en dos
categorías:

| Material                                        | Cómo se guarda                                                                                                                                                                        |
| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Certificado público (`.cer`)                    | En claro. Es público por construcción: viaja dentro de cada CFDI, en el atributo `Certificado` del comprobante.                                                                       |
| Llave privada (`.key`) y contraseña de la llave | Cifradas con **cifrado de sobre**: una llave de datos (DEK) por certificado, AES-256-GCM con nonce distinto por campo, y la DEK envuelta por una **KEK que vive en Azure Key Vault**. |

La KEK **nunca sale de Key Vault**: sobre ella sólo se invocan operaciones de envolver y
desenvolver la DEK (`wrapKey` / `unwrapKey`), y la política de acceso del vault no concede
nada más. La fila del certificado guarda el identificador versionado de la KEK que la envolvió,
para que una rotación no deje material ilegible. Si el vault no responde, el registro y el
timbrado fallan de forma explícita: nunca se guarda un CSD sin protección.

## Qué borra hoy `DELETE`

`DELETE /empresas/{empresa_id}/certificados/{numero_certificado}` responde `204` y **elimina
físicamente el renglón del certificado** de la base de datos. Es un borrado duro, no un
borrado lógico: no queda una fila marcada como eliminada.

Con ese renglón desaparecen:

* el certificado público (`.cer`) y su número de certificado;
* la llave privada cifrada, su nonce y la **DEK envuelta** que la abría;
* la contraseña de la llave, cifrada, y su nonce;
* la referencia a la versión de la KEK con la que se envolvió la DEK.

También se eliminan en cascada los registros asociados a ese certificado: sus consentimientos
de custodia y, cuando existan, sus eventos de certificado.

Eliminada la DEK envuelta, la llave privada es irrecuperable incluso para nosotros: la KEK sola
no abre nada.

<Note>
  La operación exige que la empresa sea de tu cuenta y que el número de certificado exista en
  esa empresa; si no, la respuesta es `404` (`EMPRESA_NOT_FOUND` o
  `CERTIFICATE_NUMERO_NOT_FOUND`).
</Note>

## Plazo

* **En la base de datos: inmediato.** El borrado ocurre dentro de la misma transacción que
  atiende la llamada; cuando recibes el `204`, la fila ya no existe.
* **En los respaldos de la base de datos:** el material cifrado sobrevive en los respaldos
  hasta que expira la ventana de retención.

  Pasada esa ventana, no queda copia del material en ningún respaldo.
* La KEK no está en esos respaldos: vive en Azure Key Vault y no sale de ahí. Un respaldo por
  sí solo no permite reconstruir la llave privada de un certificado registrado con el esquema
  de cifrado vigente.

## La copia que tiene el PAC

Al registrar el CSD, el material se sincroniza con la red de proveedores autorizados (PAC) que
timbrarán tus CFDIs. No todos operan igual: con algunos el certificado, la llave y la
contraseña se dan de alta en el proveedor y queda una copia allá; con otros el CSD viaja
dentro del comprobante en cada timbrado y no se registra ninguna copia.

<Warning>
  **Hoy el `DELETE` no revoca esa copia.** La eliminación actúa sobre nuestra base de datos y
  no dispara ninguna baja en el PAC. Es una brecha conocida y está en el plan de trabajo
  (IPS-137 / IPS-196).
</Warning>

Si necesitas la baja del CSD ante el PAC como parte de un proceso formal, escríbenos indicando
el RFC y el número de certificado.

Vale la pena recordar que la vía definitiva es el SAT: **revocar el CSD ante el SAT** invalida
la credencial frente a cualquier proveedor, incluidos nosotros y el PAC.

## Qué pasa con el CSD anterior

Al subir un CSD nuevo, el que estaba activo se **desactiva** (no se borra): la empresa tiene a
lo más un certificado activo.

Eliminar el certificado activo **no reactiva** ningún certificado anterior. La empresa queda
sin CSD activo y el siguiente intento de timbrado responde
`400 CERTIFICATE_NOT_FOUND` ("No se encontró un certificado activo para este RFC"). Para volver
a timbrar hay que registrar un CSD otra vez con
`POST /empresas/{empresa_id}/certificados`.

Los CFDIs ya timbrados con ese CSD no se ven afectados: siguen siendo válidos, y su XML y PDF
siguen disponibles. Ver [Datos y retención](/datos-y-retencion).

## Registro de la eliminación

Hoy la eliminación se registra en el **log de API**, junto con el resto de las llamadas: método,
ruta, status, cuenta y prefijo de la API key usada, identificador de correlación de la request,
IP de origen, user-agent y fecha. Esos registros se purgan a los **30 días** (ver
[Datos y retención](/datos-y-retencion#logs-de-api)). El servicio deja además una línea de log
de aplicación con el número de certificado y la empresa.

No existe todavía un **evento de auditoría persistente** por certificado —un histórico
consultable de "quién registró, usó o eliminó este CSD, y cuándo", independiente de la
retención del log de API—. Está en el plan de trabajo; no comprometemos fecha en este
documento.

Si necesitas constancia de una eliminación específica, pídela a soporte con el RFC, el número
de certificado y la fecha aproximada, dentro de la ventana de 30 días del log de API.
