Respuesta corta: asigna una llave única a cada operación antes de timbrar y nunca repitas una emisión sólo porque la pantalla tardó. Guarda solicitud, respuesta, UUID y XML; si hay duda, consulta primero el CFDI existente. Separa pedido, cobro, factura y entrega: son eventos relacionados, no el mismo evento. Usa un PAC que aparezca en la lista del SAT y pide al contador que apruebe reglas fiscales. La automatización debe detener excepciones, no decidir régimen, impuestos o cancelaciones por su cuenta.
¿Dónde nace una factura duplicada si sólo hiciste clic una vez?
El sistema envía una solicitud al proveedor, el PAC timbra el CFDI y la respuesta se pierde por internet. La pantalla muestra error y una persona vuelve a intentarlo. Si el segundo intento no reconoce la primera operación, puede emitir otro comprobante. También ocurre cuando tienda, vendedor y administración facturan el mismo pedido por caminos distintos. El control no consiste en confiar en el botón. Consiste en crear una referencia interna única, consultar el resultado anterior y permitir un solo estado final por operación. El UUID fiscal llega después; no reemplaza el folio interno que une pedido, pago y solicitud.
| Objeto | Identificador recomendado | Estado que debes guardar |
|---|---|---|
| Pedido o servicio | Folio comercial único | Creado, aprobado, entregado o cancelado |
| Pago | Referencia bancaria o del procesador | Pendiente, confirmado, devuelto o disputado |
| Solicitud de CFDI | Llave de idempotencia interna | Preparada, enviada, incierta, timbrada o rechazada |
| CFDI | UUID asignado al timbrar | Vigente, en cancelación, cancelado o sustituido |
Idempotencia significa que un reintento no crea otra operación
En software, una solicitud idempotente puede repetirse con la misma llave sin ejecutar dos veces el efecto. Stripe documenta este patrón para reintentar operaciones cuando una conexión falla. En facturación, tu sistema puede formar una llave con empresa, pedido, versión y tipo de documento. Antes de enviar, busca esa llave. Si ya tiene UUID, devuelve el resultado guardado. Si está incierta, consulta al PAC o al SAT antes de timbrar otra vez. Si los datos cambiaron, crea una versión nueva aprobada; no reutilices la llave con parámetros diferentes. Confirma con tu PAC qué mecanismo ofrece su API.
El PAC debe estar autorizado y el contrato debe explicar los reintentos
El SAT publica una lista de Proveedores Autorizados de Certificación para asignar folios e incorporar el sello digital. Verifica razón social y estatus en esa lista, no sólo el logotipo de una aplicación. Pregunta por ambiente de pruebas, límites, tiempos, consulta por referencia, descarga de XML, webhooks, registros, cancelaciones, soporte y salida de datos. Pide por escrito qué ocurre si el PAC timbra pero tu sistema no recibe respuesta. El proveedor debe permitir recuperar el resultado sin crear un segundo CFDI. Conserva contrato, contacto de emergencia y un procedimiento manual autorizado para contingencias.
Valida datos y reglas aprobadas antes de enviar
La automatización debe revisar campos obligatorios, formato, catálogo vigente, sumas, moneda, identidad del receptor y relación con el pedido. Eso no significa inventar datos faltantes. Si código postal, régimen, uso o tratamiento fiscal no coincide con una regla aprobada, manda el caso a una bandeja de excepciones. El contador define la regla; el sistema sólo la aplica y registra su versión. Guarda quién cambió un dato y cuándo. Evita editar directamente el XML después del timbrado. El archivo XML es el comprobante estructurado; el PDF es una representación útil para leer, pero no debe ser tu único respaldo.
Flujo numerado para emitir, comprobar y entregar
- Recibe una solicitud ligada a un pedido y confirma que puede facturarse.
- Genera una llave única y bloquea solicitudes paralelas del mismo folio.
- Valida datos contra las reglas que aprobó el contador.
- Guarda la solicitud exacta antes de enviarla al PAC.
- Envía una vez y registra identificador, hora y respuesta técnica.
- Si la respuesta es incierta, consulta antes de cualquier reintento.
- Al timbrar, guarda UUID, XML, estado y vínculo con pedido y pago.
- Entrega por el canal acordado y registra recepción o rebote.
- Concilia diariamente pedidos, cobros, solicitudes y CFDI vigentes.
Una respuesta incierta no equivale a una factura fallida
Distingue rechazo confirmado de tiempo agotado. En un rechazo, la respuesta indica que no se timbró y muestra una causa. En un tiempo agotado, no sabes si el PAC terminó. Cambia el estado a incierta, bloquea otra emisión y consulta por llave, folio o rango de tiempo. El SAT permite consultar y recuperar facturas emitidas y recibidas, junto con datos como UUID, fecha, PAC, total y estado. Esa consulta sirve para conciliar, aunque puede no reflejar un timbrado al mismo segundo. Define con tu proveedor la espera, los reintentos de consulta y la escalación humana.
La conciliación diaria encuentra silencios que una pantalla verde no muestra
Cada día compara cuatro listas: pedidos facturables, pagos confirmados, solicitudes enviadas y CFDI vigentes. Busca pedido sin factura, factura sin pedido, dos UUID para una referencia, total distinto, XML faltante, correo rebotado y cancelación sin reflejar. El SAT ofrece consulta y recuperación de XML y metadata; úsala como contraste con tus registros, respetando accesos y límites. No canceles automáticamente una diferencia. Una persona revisa el caso y el contador decide el tratamiento. Conserva evidencia de cualquier sustitución y relación entre comprobantes conforme a las reglas aplicables.



