# UJ-113 Filter and export payments

Audience: AI coding agents first.

- Actor + entry point: Staff operator; `/plugins/{plugin}/payments`.
- Priority: CARRY-OVER-CANDIDATE.
- Preconditions: Create settled payments through checkout/webhook APIs.
- Test layer: L3.

## Steps

1. Open payments → payment rows and filters render.
2. Apply filters → `GET /v1/admin/transactions/payments` returns matching visible rows (`admin-panel/src/pages/PaymentsPage.tsx:137-155`).
3. Activate `Export CSV` → browser downloads `payments-YYYY-MM-DD.csv` (`admin-panel/src/pages/PaymentsPage.tsx:181-196`, `admin-panel/src/pages/PaymentsPage.tsx:222-228`).

## Failure branches

- Auth failure → no rows/download.
- Export failure/429 → `Failed to export CSV. Please try again.` renders (`admin-panel/src/pages/PaymentsPage.tsx:195-197`).

## Backend touchpoints

`GET /v1/admin/transactions/payments` with filters and `format=csv`.

