Project

General

Profile

Edit Copy Actions

Feature #10634

closed

Refunds consolidated into the dispute flow

Added by sairam machavarapu 18 days ago. Updated 18 days ago.

Status:
Closed
Priority:
Normal
Start date:
08/26/2026
Due date:
08/26/2026
% Done:

100%

Estimated time:
5:00 h
Spent time:

Add

Subtasks


Add

Related issues

Updated by sairam machavarapu 18 days ago

  • Status changed from New to Closed
  • % Done changed from 0 to 100

Two refund paths existed in parallel: a direct per-item refund from the order card and kitchen screen, and the dispute resolution flow. The direct path moved money with no ticket behind it and no record of who authorised it or why.

The direct path has been closed. All refunds now go through a dispute, which means every refund has a reason, an owner, and an audit trail before the money moves. The refund control remains visible in the interface but disabled, with a tooltip directing staff to the dispute flow — this was deliberate: removing the button entirely would have left staff hunting for a feature they knew existed.

Two defects were found and fixed in the process.

The first affected Stripe refunds. The code set reverse_transfer whenever a tenant had a Connect account, but Stripe rejects that parameter on charges that were never routed through Connect — which describes every order placed before Connect was configured. Those refunds were failing outright. The code now inspects the actual charge and only reverses a transfer that exists.

The second affected delivery credentials. Secrets are masked as asterisks when sent to the browser, and the save path was meant to restore the real value when the mask came back. On a tenant's first save there was nothing to restore from, and the literal mask string was written to the database as the credential. The mask is now never persisted under any path.

Edit Copy Actions

Also available in: Atom PDF