Anular venta (después del pago)
Reverso de una venta ya pagada. El dinero regresa al cliente. Sujeto a la ventana de tiempo permitida: solo antes de la liquidación de medianoche.
sequenceDiagram
participant C as Caja
participant B as Backend del comercio
participant Y as Yappy API
participant A as Yappy App
Note over C,A: Transacción ya en estado COMPLETED<br/>(En tránsito hasta medianoche)
C->>B: Anular venta
B->>Y: PUT /transaction/{id}
alt Antes de medianoche (no liquidada)
Y-->>B: Reverso ejecutado
Note over A: Cliente recibe<br/>dinero de vuelta
else Después de medianoche (ya liquidada)
Y-->>B: YP-0014 — No se puede reversar
Note over C: Gestionar reembolso<br/>manualmente
end Las transacciones pagadas permanecen “En tránsito” hasta la medianoche del día en que se completaron (hora de Panamá). A esa hora, Yappy liquida los fondos al comercio y la operación queda irreversible vía API.
Después de la liquidación, el reembolso debe gestionarse manualmente (transferencia bancaria o Yappy persona a persona).
Efectos de la anulación
- Para el comercio: la transacción desaparece del historial de transacciones en Yappy Comercial.
- Para el cliente: la transacción desaparece del historial en la app de Yappy. Sin embargo, se genera un movimiento de acreditación en el historial de su cuenta bancaria asociada a Yappy.
Llamada
// Anular venta (transacción en estado COMPLETED)
const resp = await fetch(
`{{BASE_URL}}/transaction/${transactionId}`,
{
method: "PUT",
headers: {
"api-key": process.env.YAPPY_API_KEY,
"secret-key": process.env.YAPPY_SECRET_KEY,
"authorization": sessionToken
}
}
);
const result = await resp.json();
if (result.status.code === "YP-0000") {
// Anulación exitosa
} else if (result.status.code === "YP-0014") {
// Ya fue liquidada — gestionar manualmente
}