Introducción
Cobrar con enlaces de pago es rápido y evita fricción: no necesitas checkout complejo ni terminal física, solo un link seguro que envías por WhatsApp, email o SMS. El desafío empieza después: ¿cómo confirmas cada pago y cuadras la caja sin perderte entre pestañas?
En este how-to verás cómo generar enlaces en Stripe o Mercado Pago, registrar confirmaciones y conciliar todo en Google Sheets. Además, agregarás alertas ante pagos atrasados o fallidos y tendrás una planilla lista para duplicar en tu operación.
Nota: respeta la privacidad y las normativas locales. Esto no es asesoría legal.
Resumen accionable
- Configura un enlace de pago con concepto, importe, moneda e identificadores (p. ej.,
id_citaoorden_id). - Capta la confirmación vía webhook o exportación y normaliza campos clave (método, estado, comisiones, referencia).
- Usa una Sheet de conciliación con pestañas:
pagos_brutos,pagos_netos,conciliacion,alertas. - Define reglas de cruce:
id_externo+ monto + fecha (tolerancia). Aplica idempotencia para evitar duplicados. - Implementa reintentos automáticos si el webhook falla y registra logs con marcas de tiempo.
- Activa alertas por email/Slack cuando haya diferencias o pagos pendientes > X horas.
- Audita semanalmente: reporte de aging y resumen de comisiones para control financiero.
Crear enlace
Los enlaces de pago te permiten cobrar sin desarrollo: generas un URL único que el cliente abre para pagar con tarjeta, saldo o Pix/boletos según el procesador y el país. Es clave que el enlace incluya metadatos que luego te ayuden a conciliar (p. ej., id_cita, paciente_nombre, servicio). También conviene fijar la moneda, el importe y la validez del enlace para evitar errores.
Antes de crear, define una nomenclatura mínima. Recomiendo generar un id_externo legible (p. ej., CITA-2025-10-30-1234) y repetirlo en todos los sistemas: en el enlace, en la cita/agendamiento y en la planilla. Así, la conciliación por cruce exacto es más simple y reduces revisiones manuales.
Pasos sugeridos (aplican a Stripe y Mercado Pago, con menús equivalentes):
- Crea un producto/ítem o usa un concepto genérico (“Consulta de especialidad”).
- Indica importe y moneda; si usas importe variable, documenta el cálculo en tu Sheet.
- Adjunta metadatos:
id_cita,paciente_nombre,profesional,servicio,origen_lead. - Genera el enlace y prueba un pago de bajo valor en modo de prueba/sandbox.
- Registra el enlace en tu Sheet (“enlaces_emitidos”) para trazabilidad.
Tabla comparativa (enlaces de pago)
| Criterio | Stripe | Mercado Pago |
|---|---|---|
| Enlace de pago único/compartible | Sí | Sí |
| Metadatos en el pago | Sí (custom fields/metadata) | Sí (external_reference/metadata) |
| Métodos disponibles | Tarjetas, wallets, BNPL (según país) | Tarjetas, Pix/boletos/saldo (según país) |
| Vencimiento del enlace | Configurable | Configurable |
| Exportación/transmisión de eventos | Webhooks/exports | Webhooks/exports |
Tras crear los enlaces y estandarizar metadatos, estarás listo para capturar confirmaciones y alimentar la planilla sin dobles registros.
Confirmación
Una confirmación confiable evita reconciliaciones a ciegas. Puedes obtenerla de dos maneras: webhooks (ideal, en tiempo casi real) o exportaciones (descargas periódicas). Los webhooks te envían eventos cuando el pago cambia de estado, con los metadatos que configuraste. Si prefieres exportar, agenda un proceso horario que descarga movimientos y los pega en pagos_brutos.
Estandariza campos en tu Sheet para que Stripe o Mercado Pago “hablen” el mismo idioma. Propón estas columnas base:
payment_id|id_externo|fecha_hora(ISO) |zona_horaria|monto_bruto|moneda|comision|impuestos|monto_neto|estado(succeeded/failed/pending/refunded) |metodo|cliente|metadata.id_cita
Si tu operación incluye agenda, añade el estándar de citas para trazabilidad:
Estructura sugerida de citas (ejemplo):id_cita | fecha_hora_inicio (ISO) | zona_horaria | paciente_nombre | paciente_contacto | profesional | servicio | estado | origen_lead | consentimiento
Cuando recibas una confirmación, normaliza el estado: úsalo como succeeded, pending o failed sin variantes locales. Completa id_externo con lo que enviaste en el enlace (p. ej., external_reference) y asegúrate de poblar monto_neto = monto_bruto - comision - impuestos. Mantén idempotencia: si llega el mismo evento dos veces, no dupliques filas (usa payment_id + evento_tipo + timestamp para detectar repetidos).
Conciliar
La conciliación compara lo esperado (enlaces emitidos o agenda) con lo cobrado (pagos confirmados) y marca diferencias. Trabaja en tres pestañas:
enlaces_emitidos(esperado)pagos_brutos/pagos_netos(real)conciliacion(resultado)
Empieza con una regla de cruce simple: id_externo exacto. Agrega salvaguardas: tolerancia de fecha (±1 día) y monto (±0,5% para redondeos). Si no hay match, clasifica como pendiente (emitido sin cobro) o extraño (cobro sin enlace). Utiliza fórmulas o Apps Script para automatizar los cruces y colorear estados.
Lógica de cruce (ejemplo en prosa):
- Une (
JOIN)enlaces_emitidos.id_externoconpagos_netos.id_externo. - Si coincide y
estado = succeeded, marca Conciliado. - Si no hay pago tras X horas desde
fecha_hora_iniciode la cita, marca Pendiente. - Si hay pago sin enlace, marca Investigar y alerta.
Diagrama ASCII (flujo simplificado)
[Enlace emitido]
| (id_externo)
v
[Pago realizado] --webhook--> [Sheets: pagos_brutos] --normaliza--> [pagos_netos]
| \
| \ (JOIN por id_externo, tolerancias)
v v
[Estado succeeded/pending/failed] ----------------------------> [conciliacion]
Para mayor control, añade reintentos: si el webhook falla, reintenta cada 5 minutos hasta 12 veces y marca en logs_webhook con status, error y retry_count. Configura alertas cuando retry_count supere 3 o cuando una fila permanezca en Pendiente más de 24 horas.
Alertas
Las alertas te ayudan a actuar a tiempo y reducir pérdidas. Define triggers claros y envía notificaciones por correo, Slack o WhatsApp (según política interna). Mantén un log de cada alerta con timestamp, tipo, id_externo, responsable y resuelto_en.
Triggers recomendados:
- Pago pendiente: enlace emitido sin cobro tras X horas.
- Pago fallido: estado
failedochargebackdetectado. - Diferencia: monto conciliado difiere > tolerancia.
- Webhook caído: sin eventos en Y minutos.
- Duplicado potencial: mismo
payment_ido mismoid_externocon dos cobros.
Buenas prácticas de operación:
- En cada alerta, asigna responsable y fecha objetivo.
- Cierra el ciclo: cuando marques “resuelto”, registra la causa raíz (tarjeta rechazada, enlace vencido, error de datos).
- Revisa semanalmente un dashboard con aging de pendientes y comisiones por método de pago.
Errores comunes
- No incluir
id_externo/external_referenceen el enlace, dificultando el cruce. - Mezclar formatos de fecha y no usar ISO (provoca falsos negativos).
- Ignorar idempotencia y duplicar filas por reintentos de webhook.
- No registrar comisiones/impuestos, distorsionando margen.
- Tolerancias muy amplias que emparejan pagos incorrectos.
- No tener plan B (exportación) cuando el webhook falla.
Al evitar estos errores y mantener reglas claras de cruce, tu conciliación será consistente y auditable, con menos trabajo manual y más previsibilidad de caja.
Checklist / Plantilla (versión resumida)
Pestañas sugeridas en Google Sheets:
enlaces_emitidos:id_externo,fecha_emision,moneda,monto,paciente_nombre,profesional,servicio,origen_lead.pagos_brutos:payment_id,id_externo,fecha_hora,moneda,monto_bruto,comision,impuestos,monto_neto,estado,metodo,cliente.pagos_netos(normalizada): mismas columnas, con estados y montos estandarizados.conciliacion:id_externo,match_status(Conciliado/Pendiente/Investigar),diferencia_monto,observaciones.alertas:timestamp,tipo,id_externo,detalle,responsable,resuelto_en.logs_webhook:evento_id,payment_id,retry_count,status,mensaje.
Campos de citas (si aplica):id_cita | fecha_hora_inicio (ISO) | zona_horaria | paciente_nombre | paciente_contacto | profesional | servicio | estado | origen_lead | consentimiento
FAQ
1) ¿Puedo usar enlaces con importes variables?
Sí. Puedes utilizar enlaces con importes variables sin inconvenientes. Se recomienda incluir en los metadatos la forma en que fue calculado el importe y almacenar el detalle correspondiente en la tabla o registro de enlaces_emitidos. Además, es importante definir tolerancias estrictas para realizar una conciliación correcta y evitar diferencias en los valores procesados.
2) ¿Qué pasa si el cliente paga dos veces el mismo enlace?
En caso de que un cliente realice el pago duplicado de un mismo enlace, se recomienda activar mecanismos de idempotencia en la recepción de las transacciones para evitar registros repetidos. Además, es conveniente generar una alerta de posible duplicado para facilitar la revisión manual o automática. Una vez verificado el caso, la devolución o ajuste correspondiente debe procesarse de acuerdo con la política interna definida por la empresa.
3) ¿Cómo manejo reembolsos y contracargos en la conciliación?
Los reembolsos y contracargos deben registrarse como movimientos independientes dentro del proceso de conciliación, utilizando importes con signo negativo y manteniendo siempre la referencia al payment_id original de la transacción. De esta manera, es posible conservar la trazabilidad completa de cada operación y facilitar las auditorías. Además, se recomienda actualizar el estado correspondiente en la conciliación para reflejar correctamente la situación actual del pago.
4) ¿Necesito un desarrollador para webhooks?
No necesariamente. Es posible comenzar utilizando exportaciones programadas para gestionar la información y automatizar parte del proceso sin necesidad de implementar webhooks desde el inicio. Sin embargo, integrar webhooks suele ser una mejora importante a medida que el volumen operativo crece, ya que ayudan a reducir la latencia en la actualización de datos y disminuyen la probabilidad de errores manuales en la sincronización de la información.
5) ¿Qué hacer con monedas distintas?
Cuando se trabajen operaciones en diferentes monedas, se recomienda normalizar todos los importes a una moneda base en una columna adicional para facilitar la conciliación y el análisis financiero. Al mismo tiempo, es importante conservar el tipo de cambio utilizado en la fecha de cada operación, ya que esto permite mantener trazabilidad, realizar auditorías correctamente y justificar posibles diferencias por variaciones cambiarias.
