← All work

Disputes · Dec 2025 – Oct 2026

Disputes, in two weeks

When a cardholder disputes a payment, a merchant has days to respond with evidence, and the case can climb through three network levels. I rebuilt how that works, for the merchant and for the operations team that reviews every case.

Role
Lead frontend
When
Dec 2025 – Oct 2026
Where
PayGlocal
Stack
Next.jsTypeScriptZustandTanStack Query

The situation

The old screen was a table of chargebacks. Merchants could not tell what was expected of them or by when, and the operations team handled reviews, representations and debits outside the product. Each level (dispute, pre-arbitration, arbitration) has its own rules, amounts and deadlines.

What I built

  • Action cards for each network level, driven by status: what happened, what is needed, and the deadline in days or hours.
  • Accept in full, accept part of the amount (with the remainder calculated live), or contest with evidence.
  • Evidence upload that suggests the right documents for the dispute reason.
  • An operations console: review documents, request more, represent to the bank, push or approve debits and penalties, close a case in either party’s favour.
  • Maker-checker approvals, so the person who requests a debit cannot also approve it.
  • Fifteen notification emails, including bulk versions that list many cases in one message.
  • Later, a full case view with AI-assisted document review in the new operations console.
Try it

Sample case · CB-0001 · not real data

Cardholder says the goods never arrived

Amount
$1,240.00
Respond in
7 days
  1. Dispute
  2. Pre-arbitration
  3. Arbitration

Case timeline

    Decisions

    Map every backend status to a screen state, including the ones that “never happen”

    There were dozens of internal and external statuses across three levels. I wrote a fallback for every level so an unexpected status shows a safe, readable state instead of an empty card.

    Make the AI earn its place

    For the AI review I agreed a few rules with the team: approval stays disabled until the insights exist, insights are never generated silently, and the screen says when they are out of date.

    One deadline language

    Every card speaks the same way about time: days left, then hours left, then overdue. Merchants see it on the table, the card and in the reminder emails.

    Outcome

    WhatBeforeAfterChange
    First merchant release—2 weeks13K+ lines
    Network levels covered1 table3 + compliancestaged
    Notification emails015+15
    Dispute win rate after launch
    ↑↓ move↵ openesc close