Subir el sello digital
El CSD es lo único que timbra. Hasta que un emisor tenga el suyo, cualquier intento de facturar contesta
issuer_not_ready. Esto te deja mandarlo sin abrir el panel.
Lo que estás mandando
Con la llave privada y su contraseña cualquiera puede emitir comprobantes a nombre de ese contribuyente. Van por TLS, se guardan cifradas, y nunca se escriben en un log ni en un reporte de errores.
No hay forma de volver a leerlas. No existe un GET de este recurso, y la respuesta
sólo trae lo que el propio SAT publica del certificado: su serie, de quién es y hasta cuándo dura. Tú ya tienes esos bytes;
una segunda copia legible sería un segundo lugar del que se pueden filtrar.
Parámetros
- data arreglo de strings · requerido
- Los archivos en base64. Puede ser el .cer y el .key por separado, el .zip del SAT tal cual, o los dos. No leemos los nombres: qué es cada archivo lo sacamos de su contenido.
- passwords arreglo de strings · requerido en la práctica
- La contraseña de la llave privada. Se prueba contra todas las llaves que mandes, así que si subes el sello y la e.firma juntos manda las dos y nosotros vemos cuál abre cuál.
Respuesta
201 cuando guardamos al menos uno, con lo que quedó en
data. Si no guardamos ninguno contestamos
422 con el mismo cuerpo, y
refused dice qué pasó con cada cosa.
- id entero
- Identificador del certificado dentro de oden.tax.
- kind string
- csd para el sello, fiel para la e.firma. Lo leemos del keyUsage del certificado, no del nombre del archivo.
- certificate_number string
- El número de serie que le puso el SAT, veinte dígitos.
- tax_id string
- El RFC del contribuyente al que pertenece.
- valid_from / expires_at string
- Su vigencia en ISO 8601. Un CSD dura cuatro años.
- usable booleano
- Si con éste se puede timbrar hoy. Una e.firma nunca lo es.
- refused arreglo
- Lo que no guardamos y por qué: wrong_taxpayer, expired, missing_key o bad_password. Un certificado vencido trae además su expires_at, para que puedas compararlo contra el archivo que tengas.
Errores
- no_certificate
- No reconocimos ningún certificado en lo que mandaste.
- issuer_required
- La ruta lleva el emisor; revisa que el id sea de uno tuyo.
- payload_too_large
- El envío pasa de 12 MB. Un CSD y su llave pesan unos pocos kilobytes.
- plan_required
- La API está incluida en el plan Pro.