Cómo reembolsar un pago
Marca como reembolsado un pago ya registrado para que el ticket deje de contar ese importe como cobrado. La acción recalcula el ticket, pero no ejecuta una devolución real en banco, terminal ni pasarela.
En este artículo
El reembolso de pago sirve para corregir el estado interno de cobro de un ticket cuando un pago registrado deja de ser válido. Antylogic no crea un pago negativo ni borra las asignaciones: actualiza el pago existente y vuelve a calcular el estado del ticket.
Este flujo está pensado para operadores de TPV y responsables de sala que necesitan dejar trazable la corrección sin separar el ticket, sus líneas, sus pagos y su estado de cobro.
Antes de empezar
- Tener contexto activo de organización y ubicación; en el runtime de España, Grupo Marea Demo y Marea Gran Via.
- Tener permiso `tpv:use` para abrir el cobro del ticket.
- Tener permiso `tpv:refund` o `tickets:manage` para confirmar el reembolso.
- Abrir un ticket accesible con al menos un pago no reembolsado, como el caso de documentación `TPV_PAID_TICKET_ID` cuando esté preparado.
- El ticket no debe tener factura visible en el detalle para que la pantalla habilite Reembolsar.
- El pago concreto no debe estar vinculado a una factura para que el backend acepte la acción.
Instrucciones
- 1.
Abre el cobro del ticket
Desde el TPV operativo, entra en el pago avanzado del ticket que ya tiene un cobro registrado. La pantalla carga el ticket, los métodos de pago y las operaciones de cobro cuando el usuario tiene acceso al TPV.
- 2.
Localiza el pago registrado
En la sección Pagos, revisa la fila del cobro: método, estado, importe y asignaciones al ticket. Un pago que todavía cuenta como cobrado puede mostrar la acción Reembolsar.
- 3.
Comprueba que se puede reembolsar
Antes de tocar la acción, confirma que Reembolsar está disponible. Si no aparece o queda bloqueado, el pago puede estar ya reembolsado, puede faltar permiso o el ticket puede tener una factura asociada.
- 4.
Confirma el reembolso
Pulsa Reembolsar y lee el modal Reembolsar pago. Cancelar cierra el modal sin cambiar datos; confirmar marca ese pago local como reembolsado.
- 5.
Verifica el resultado
Después de confirmar, comprueba el mensaje de éxito, el estado Reembolsado en la fila del pago y la ausencia del botón de reembolso en esa misma fila. El importe pendiente y el estado de cobro del ticket deben quedar recalculados.
Validaciones y límites
- La pantalla solo carga datos de cobro si existen organización, ubicación y permiso `tpv:use`.
- La UI habilita Reembolsar solo si el pago no está `refunded`, el detalle del ticket no incluye `invoice` y el usuario puede reembolsar.
- El backend exige acceso al ticket y permiso `tpv:refund` o `tickets:manage`.
- La ruta de API acepta solo `POST` y admite body vacío o `{}`; JSON mal formado se rechaza como payload inválido.
- El backend rechaza tickets anulados, pagos que no pertenecen al ticket, pagos ya reembolsados y pagos vinculados a factura.
- El reembolso no devuelve dinero en terminal, banco, bridge ni pasarela; solo marca el pago local como `refunded`.
- La UI actual no envía `refunded_by_staff_id`, aunque el endpoint lo admite como campo opcional.
- Los pagos reembolsados dejan de sumar en los saldos del ticket y de sus líneas, pero las asignaciones del pago no se eliminan.
- Si la petición falla, el modal no se cierra por éxito y se muestra el error de reembolso resuelto por la API.
Resultado esperado
El pago existente queda en estado `refunded`, el ticket recalcula su estado de cobro como `pending`, `partially_paid` o `paid` según los otros pagos efectivos, y la pantalla refresca el detalle y la lista de tickets.