Subir Certificado (CSD)
Esta guia explica como subir y gestionar tus Certificados de Sello Digital (CSD) en FactuLink para poder firmar y timbrar CFDIs.
Que es un CSD
Un Certificado de Sello Digital (CSD) es un par de archivos que el SAT emite a cada contribuyente para firmar digitalmente sus comprobantes fiscales (CFDIs). Sin un CSD activo no puedes timbrar facturas.
El CSD es diferente a la e.firma (FIEL):
| CSD | e.firma (FIEL) | |
|---|---|---|
| Uso | Firmar CFDIs | Tramites fiscales generales |
| Emitido por | SAT (portal de tramites) | SAT (oficinas) |
| Vigencia | 4 anos | 4 anos |
| Archivos | .cer + .key | .cer + .key |
No subas tu e.firma a FactuLink. Solo se requiere el CSD.
Archivos necesarios
Para subir un CSD necesitas tres elementos:
- Certificado (.cer) — Archivo publico que contiene tu informacion fiscal
- Llave privada (.key) — Archivo privado para firmar. Se almacena cifrado en nuestros servidores
- Contrasena — La contrasena que estableciste al generar el CSD en el portal del SAT
Archivos de prueba: El sandbox de FactuLink incluye un CSD demo precargado — no necesitas subir tu CSD real para probar el flujo. Nunca subas tu CSD productivo (.cer/.key reales) al sandbox: la llave privada quedaría almacenada en un ambiente de menor confianza. Tu CSD real solo va en producción (
sk_live_).
Subir CSD
POST/api/v1/csds
El upload se hace via multipart/form-data con los tres campos:
curl -X POST https://api.factulink.com.mx/api/v1/csds \
-H "Authorization: Bearer sk_test_4b7e2f1a8d9c3e6b5f0a1d2c4e7f8a9b" \
-F "cer=@/ruta/a/certificado.cer" \
-F "key=@/ruta/a/llave.key" \
-F "password=MiContrasena123"/api/v1/csds201{
"id": "csd_01HQ3KC8V2M5XNRP7WBTF6D3AH",
"rfc": "EKU9003173C9",
"serial_number": "30001000000500003456",
"valid_from": "2024-01-01T00:00:00Z",
"valid_to": "2028-01-01T00:00:00Z",
"is_default": true,
"status": "active",
"created_at": "2026-04-05T10:32:00Z"
}Posibles errores
| Codigo | Descripcion |
|---|---|
csd_password_invalid | La contrasena no corresponde a la llave privada |
csd_expired | El certificado ya vencio |
csd_rfc_mismatch | El RFC del CSD no coincide con el RFC del tenant |
csd_already_exists | Ya existe un CSD activo con el mismo numero de serie |
Establecer CSD como default
Si tienes multiples CSDs (por ejemplo, al renovar antes de que venza el anterior), puedes establecer cual usar como predeterminado para timbrar:
PATCH/api/v1/csds/:id
curl -X PATCH https://api.factulink.com.mx/api/v1/csds/csd_01HQ3KC8V2M5XNRP7WBTF6D3AH \
-H "Authorization: Bearer sk_test_4b7e2f1a8d9c3e6b5f0a1d2c4e7f8a9b" \
-H "Content-Type: application/json" \
-d '{
"is_default": true
}'/api/v1/csds/:id200{
"id": "csd_01HQ3KC8V2M5XNRP7WBTF6D3AH",
"rfc": "EKU9003173C9",
"serial_number": "30001000000500003456",
"valid_from": "2024-01-01T00:00:00Z",
"valid_to": "2028-01-01T00:00:00Z",
"is_default": true,
"status": "active",
"created_at": "2026-04-05T10:32:00Z"
}Al establecer un CSD como default, el anterior pierde esa marca automaticamente. Solo puede haber un CSD default por tenant a la vez.
Listar CSDs
Consulta todos los CSDs asociados a tu tenant:
GET/api/v1/csds
curl -X GET https://api.factulink.com.mx/api/v1/csds \
-H "Authorization: Bearer sk_test_4b7e2f1a8d9c3e6b5f0a1d2c4e7f8a9b"/api/v1/csds200{
"data": [
{
"id": "csd_01HQ3KC8V2M5XNRP7WBTF6D3AH",
"rfc": "EKU9003173C9",
"serial_number": "30001000000500003456",
"valid_from": "2024-01-01T00:00:00Z",
"valid_to": "2028-01-01T00:00:00Z",
"is_default": true,
"status": "active",
"created_at": "2026-04-05T10:32:00Z"
}
],
"pagination": {
"has_more": false,
"next_cursor": null,
"limit": 20
}
}Alertas de vencimiento
FactuLink monitorea automaticamente la fecha de vencimiento de tus CSDs y envia notificaciones:
| Dias antes del vencimiento | Accion |
|---|---|
| 30 dias | Notificacion por email al administrador del tenant |
| 15 dias | Segunda notificacion + alerta en el dashboard |
| 7 dias | Notificacion diaria hasta renovar |
| Vencido | El CSD se marca como expired y no se puede usar para timbrar |
Si tienes webhooks configurados, recibiras eventos csd.expiring_soon
y csd.expired.
Recomendacion: Sube el nuevo CSD antes de que venza el anterior y marcalo como default. El CSD anterior seguira disponible para consultas pero no se usara para timbrar nuevos CFDIs.
Siguientes pasos
- Emitir CFDI — Usa tu CSD para timbrar tu primera factura
- Cancelar CFDI — Como cancelar comprobantes ante el SAT
- Referencia API — Documentacion completa de todos los endpoints