Referencia · Timbrar

TimbradoCFDI

Timbra un CFDI o una Retención que tú ya sellaste con tu CSD.
POST/api/TimbradoCFDI

Para 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

CampoPara qué
xmlBase64obligatoriobase64El XML ya sellado (con Sello, Certificado y NoCertificado), en UTF-8.
obtenerPDFbooleanoRegresa también el PDF en PDFBase64.

Lo que regresa

CampoPara qué
Codigotexto«100» timbrado, «506» ya estaba timbrado; cualquier otro, el rechazo.
MensajetextoQué pasó, en español. En un rechazo, la regla del SAT que no se cumplió.
UUIDtextoEl folio fiscal. Sólo con 100 o 506.
XMLBase64base64El CFDI timbrado, completo. Sólo con 100 o 506.
PDFBase64base64El PDF, si lo pediste con obtenerPDF; si no, null.
IdSeguimientotextoLa huella del comprobante: con ella preguntas después por su desenlace (seguimientoCFDI).

Códigos

CódigoHTTPQué significa
100200Timbrado.
506200Ya estaba timbrado: el mismo UUID y el mismo XML. Trátalo como éxito.
301200El XML no se puede leer, no viene sellado, no está en UTF-8 o su NoCertificado no es el del certificado.
302200El sello no corresponde: el XML cambió después de sellarlo.
303200El certificado del sello no es del RFC emisor.
306200Se selló con la e.firma en lugar del CSD.
307200El XML ya trae un timbre fiscal.
CFDI40xxx…200Una regla del SAT no se cumple (la matriz de validaciones); el mensaje dice cuál.
500503No se sabe si se timbró, o no se pudo enviar. Reintenta con el mismo XML.
102401Usuario 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
}
FIN
Respuesta 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.