# US-MGN-004-007-003: Cancelar Pago **RF Asociado:** [RF-MGN-004-007](../../02-modelado/requerimientos-funcionales/mgn-004/RF-MGN-004-007-gestión-de-pagos-y-conciliación.md) **Módulo:** MGN-004 - Financiero Básico **Epic:** Pagos y Conciliación **Prioridad:** P0 (MVP) **Story Points:** 3 **Sprint:** Sprint 12 **Estado:** Ready for Development **Fecha:** 2025-11-24 --- ## User Story **Como** usuario tesorería, **Quiero** cancelar pagos registrados, **Para** anular pagos erróneos y revertir asiento contable y conciliaciones. --- ## Descripción Detallada Cancelar pago genera asiento de reversión, elimina conciliaciones, actualiza facturas a state='open', y marca payment.state='cancelled'. --- ## Criterios de Aceptación ### Escenario 1: Cancelar pago **Dado que** payment.state='posted', **Cuando** POST /payments/:id/cancel con reason, **Entonces** state='cancelled', asiento reversión, conciliations eliminadas, facturas reabiertas. ### Escenario 2: Reabrir facturas conciliadas **Dado que** pago tenía factura conciliada (paid), **Cuando** cancelo pago, **Entonces** factura.state='open', amount_residual recalculado. --- ## Reglas de Negocio - **RN-1:** Solo pagos posted pueden cancelarse. - **RN-2:** Asiento reversión automático. - **RN-3:** Eliminar conciliations. - **RN-4:** Reabrir facturas. --- ## Tareas Técnicas ### Backend - [ ] POST /payments/:id/cancel - [ ] Service: PaymentService.cancel() - [ ] Eliminar conciliations - [ ] Actualizar invoice.state y amount_residual - [ ] Unit tests (6 test cases) --- ## Estimación: 6 horas = 3 SP --- ## Referencias - [RF-MGN-004-007](../../02-modelado/requerimientos-funcionales/mgn-004/RF-MGN-004-007-gestión-de-pagos-y-conciliación.md)