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.

Flujo de anulación de venta
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
Ventana de tiempo

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
}
¿Te fue útil esta página?