Metrics and diagnostics
Build a Chargeback Aging Report Without Misreading Open Cases

A chargeback aging report should show where unresolved cases are spending time and whether the merchant can act. A case waiting for an external decision is operationally different from a case waiting for an internal owner, even when both have been open for the same number of days.
Use separate clocks for total case age and time in the current stage. Keep unfinished cases visible instead of mixing their current ages into the completed-case resolution average. That distinction turns an aging report from a list of old records into a practical map of blocked work.
Start each clock at a defined event
Total case age begins at the case's opening timestamp and runs to the reporting timestamp for unresolved cases. Current-stage age begins when the case entered its present operational stage. A stage change should reset only the stage clock, not the total age.
Use stages that answer who has the next move. A small merchant might use unassigned, merchant action in progress, blocked internal decision, awaiting external review, and closed. These are internal work stages layered over the provider's actual case status. Never overwrite the provider status merely to make your team's workflow easier to display.
Shopify's chargeback process separates merchant response from subsequent review. Your report should preserve that operational distinction without claiming a universal waiting period.
If the timestamp of a stage transition is missing, show stage age as unknown. Do not substitute the last export time, which would make every freshly extracted record look newly entered. Record the data repair task separately from the case action.
Separate elapsed time from controllable delay
Create two report panels. The action panel contains cases awaiting merchant work or an internal decision. The waiting panel contains cases with no currently available merchant action and a recorded external-review state. Both matter, but they should lead to different questions.
For action cases, ask whether the owner has accepted the work, whether a dependency is blocking progress, and what event will release the block. For waiting cases, ask whether the latest status has been checked and whether the case has changed since the prior review. Age alone does not justify repeatedly asking staff to do work that is already complete.
The source case remains the reference for current status. Use the applicable Shopify administration workflow when reconciling differences between your report and the case interface.
Choose age bands suited to your review cadence and observed workload. The bands are internal reporting categories, not filing deadlines. Document whether elapsed days are calendar days, and use the same basis every time. Business-day clocks can obscure how much real time has passed during closures.
Read a hypothetical report correctly
Suppose a hypothetical merchant reviews the following unresolved cases:
| Case | Total age | Current-stage age | Stage | Next owner action |
|---|---|---|---|---|
| Cedar | 3 days | 3 days | Unassigned | Team lead assigns owner |
| Elm | 16 days | 2 days | Blocked decision | Operations lead resolves dependency |
| Fir | 42 days | 36 days | External review | Owner checks for status change |
| Pine | 9 days | Unknown | Merchant action | Repair stage timestamp and confirm work |
Sorting only by total age puts Fir first. That may be useful for understanding inventory, but Cedar is the obvious ownership defect. Elm needs a decision from another role, while Pine combines a data-quality issue with active merchant work.
A useful summary would say: “Four unresolved cases; one unassigned; one blocked decision; one awaiting external review; one action case with unknown stage age.” It would not call all four overdue or assume the oldest case is mishandled.
Add a small movement table showing entries, exits, and net change by stage since the last review. If ten cases entered external review and eight closed, that stage grew by two. If unassigned cases grew despite steady arrivals, investigate intake ownership rather than external-review speed.
Report unfinished observations honestly
Completed cases have a known duration from opening to closure. Unresolved cases have only a lower bound: they have lasted at least their current age. Statistically, these are right-censored observations. A simple merchant report can handle this without advanced modeling by publishing completed durations and unresolved ages separately.
For a hypothetical month, say that twenty cases closed with a median duration of 28 days, while ten remain open with current ages from 5 to 61 days. Do not average all thirty numbers and label the result average resolution time. The ten unfinished cases may continue much longer.
Also resist comparing closure cohorts without noting selection. A month in which only quick cases close can show a low completed median while slow cases accumulate. Pair the median with unresolved counts and the oldest age in each stage.
End the review with named actions for ownership gaps, blocked decisions, and missing timestamps. Record when the waiting panel will next be reconciled. A good aging report does not make every old case look like an emergency; it makes the difference between unfinished work, external waiting, and missing information impossible to overlook.
Review case status and deadlines in Lower Chargeback to identify work needing attention.
Related reading in this collection:
- How to Calculate Your Shopify Chargeback Rate: Count and Value Explained
- Where to Find All Open Chargebacks and Inquiries in Shopify Admin
- Can Support Complaints Predict Chargebacks? Test the Link