--- issue: "026" title: "'completed' payment status not counted in successfulPayments stats — admin dashboard undercounts" severity: major domain: payment labels: [backend, bug] status: open created: 2026-05-29 source: Doc vs Code Audit 2026-05-29 --- # 🟠 'completed' payment status not counted in successfulPayments stats — admin dashboard undercounts **Severity:** major **Domain:** payment **Labels:** backend, bug ## Description `paymentService.getPaymentStats()` aggregate counts only `'confirmed'` as `successfulPayments`. `'completed'` is excluded from this count. Most SHKeeper payments follow the terminal path: `pending → processing → completed`. `'confirmed'` is a separate RN-specific intermediate state. This means the vast majority of successfully completed payments (SHKeeper + DePay) are **invisible in the `successfulPayments` count** in the admin stats endpoint. ## Current Behavior Admin dashboard shows a `successfulPayments` count that excludes all `'completed'` status payments. For a platform where SHKeeper is the primary payment provider, this count is close to 0 even when hundreds of payments have succeeded. ## Expected Behavior `successfulPayments` should count payments in both `'confirmed'` and `'completed'` status, or the aggregate should be documented with a clear note about which statuses are terminal success states. ## Affected Files - `backend/src/services/payment/paymentService.ts` — `getPaymentStats()` aggregate pipeline ## References - [Doc vs Code Audit Report](../09%20-%20Audits/Doc%20vs%20Code%20Audit%20Report%20-%202026-05-29.md) — Finding M36