## TL;DR

Aging reports fail when the date range is too wide or the user lacks reporting permission. Narrow the date range, confirm you have reporting access, and regenerate; large unfiltered aging queries time out.

## Error

```text
expense aging report failed to generate
```

## Steps

1. Check your reporting permissions in the expense tool's admin settings. Expected: you can confirm whether you are allowed to run aging reports.
2. Narrow the report: pick a shorter date range (one quarter instead of all time) and filter to the relevant departments. Expected: a smaller query scope.
3. Regenerate the report. Expected: it completes within a reasonable time.
4. If it still fails, try exporting the underlying data as CSV and aging it in a spreadsheet with a days-outstanding formula. Expected: you get the aging buckets another way.
5. Ask your admin to schedule the full aging report as a recurring job if you need it regularly. Expected: the heavy query runs off-hours.

## When to use

- An expense aging report fails, errors, or times out.
- You need days-outstanding buckets for open expenses.

## When not to use

- A single report's PDF export fails (see the PDF export skill).
- The report generates but the numbers look wrong (check filters and status definitions).

## Tool compatibility

- Expensify, Concur, and expense tools with aging or open-expense reports.

## Variant phrasings

### Aging report timed out

The large-query form of the same failure.

### Could not generate the aging report

Generic wording for the same problem.

## Why it happens

Aging reports scan every open expense across the selected scope. Unbounded ranges and broad permissions make the query heavy enough to time out.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_fURCnN5h-PorwC60kRLvAw
