Referencia · Timbrar
TimbradoCFDI
Timbra un CFDI o una Retención que tú ya sellaste con tu CSD.
POST
/api/TimbradoCFDIPara cuando tu sistema sella por su cuenta y no quieres guardar tu sello aquí. Mandas el XML ya sellado, CFDI 4.0 o Retenciones 2.0, y el servicio lo timbra tal como llega: el mismo texto, con tu Addenda si trae una.
Antes de mandarlo al PAC se revisa que el sello sea de un CSD del emisor y que firme este comprobante. Si algo cambió después de sellarlo, responde 302 sin gastar el envío.
Para cancelar sí necesitas tu sello en la cuenta: cárgalo con CargarCertificado.
Lo que mandas
| Campo | Para qué |
|---|---|
xmlBase64obligatoriobase64 | El XML ya sellado (con Sello, Certificado y NoCertificado), en UTF-8. |
obtenerPDFbooleano | Regresa también el PDF en PDFBase64. |
Lo que regresa
| Campo | Para qué |
|---|---|
Codigotexto | «100» timbrado, «506» ya estaba timbrado; cualquier otro, el rechazo. |
Mensajetexto | Qué pasó, en español. En un rechazo, la regla del SAT que no se cumplió. |
UUIDtexto | El folio fiscal. Sólo con 100 o 506. |
XMLBase64base64 | El CFDI timbrado, completo. Sólo con 100 o 506. |
PDFBase64base64 | El PDF, si lo pediste con obtenerPDF; si no, null. |
IdSeguimientotexto | La huella del comprobante: con ella preguntas después por su desenlace (seguimientoCFDI). |
Códigos
| Código | HTTP | Qué significa |
|---|---|---|
| 100 | 200 | Timbrado. |
| 506 | 200 | Ya estaba timbrado: el mismo UUID y el mismo XML. Trátalo como éxito. |
| 301 | 200 | El XML no se puede leer, no viene sellado, no está en UTF-8 o su NoCertificado no es el del certificado. |
| 302 | 200 | El sello no corresponde: el XML cambió después de sellarlo. |
| 303 | 200 | El certificado del sello no es del RFC emisor. |
| 306 | 200 | Se selló con la e.firma en lugar del CSD. |
| 307 | 200 | El XML ya trae un timbre fiscal. |
| CFDI40xxx… | 200 | Una regla del SAT no se cumple (la matriz de validaciones); el mensaje dice cuál. |
| 500 | 503 | No se sabe si se timbró, o no se pudo enviar. Reintenta con el mismo XML. |
| 102 | 401 | Usuario o contraseña inválidos. |
Ejemplo
XML=$(base64 < factura-sellada.xml | tr -d '\n')
curl https://pruebas.timbrado.idea15.com/api/TimbradoCFDI \
-u "$DUBSARIA_USUARIO:$DUBSARIA_CLAVE" \
-H "Content-Type: application/json" \
-d @- <<FIN
{
"xmlBase64": "$XML",
"obtenerPDF": false
}
FINRespuesta real en pruebas · HTTP 200
{
"Codigo": "100",
"Mensaje": "Comprobante timbrado exitosamente",
"UUID": "A85C5E3B-7D9A-42A6-90C7-8757A7E5CC60",
"XMLBase64": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxj…",
"PDFBase64": null,
"IdSeguimiento": "acc8643f7d06074425938d5e078926620e4f6402e926cacc11288fd7381d70a5"
}Para tener en cuenta
- Sin DOCTYPE ni entidades, y sin el carácter «|» en los datos (salvo CadPago).
- La vigencia y la revocación del CSD las revisa el PAC: responde 305 o 304.
- Es el TimbradoCFDI que el servicio anterior sólo tenía por SOAP, ahora por REST.
