Files
nick-doc/Issues/ISSUE-004-post-api-disputes-id-resolve-dashboard-does-not-trigger-escr.md
Siavash Sameni eab1d77582 docs(issues): mark ISSUE-003 through ISSUE-006 resolved, update index
Index: 47 open (8 critical, 39 major), 6 resolved.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 18:48:04 +04:00

1.5 KiB

issue, title, severity, domain, labels, status, resolved, fix, created, source
issue title severity domain labels status resolved fix created source
004 POST /api/disputes/:id/resolve (dashboard) does not trigger escrow release — only updates Dispute model critical Dispute
bug
backend
escrow
major
resolved 2026-05-29 DisputeService.resolveDispute now calls releaseHoldResolve(purchaseRequestId) after saving, clearing escrow hold and unblocking payment release 2026-05-29 Doc vs Code Audit 2026-05-29

🔴 POST /api/disputes/:id/resolve (dashboard) does not trigger escrow release — only updates Dispute model

Severity: critical Domain: Dispute Labels: bug, backend, escrow, major

Description

The API claims resolveDispute 'triggers refund/release/split escrow action.' DisputeService.resolveDispute only updates the Dispute document. The separate POST /api/disputes/:purchaseRequestId/resolve (releaseHold router) is required to actually unblock escrow. Due to the route shadowing bug, the correct handler may never be reached.

Current Behavior

DisputeService.resolveDispute only updates the Dispute document. Escrow remains blocked until a separate correct API call is made to the releaseHold router.

Expected Behavior

Dispute resolution should atomically update the Dispute record AND release/refund the escrow as indicated by the action field.

Affected Files

  • backend/src/services/disputeService.ts
  • backend/src/controllers/disputeController.ts

References