--- issue: "017" title: "PaymentProvider TypeScript type missing 'shkeeper' and 'decentralized' values" severity: major domain: payment labels: [frontend, bug, typescript] status: open created: 2026-05-29 source: Doc vs Code Audit 2026-05-29 --- # 🟠 PaymentProvider TypeScript type missing 'shkeeper' and 'decentralized' values **Severity:** major **Domain:** payment **Labels:** frontend, bug, typescript ## Description `frontend/src/types/payment.ts` defines: ```ts type PaymentProvider = 'request.network' | 'test' | 'other' ``` The backend accepts `'shkeeper'`, `'decentralized'`, and `'other'` as `provider` values on Payment records. The two most-used production providers (`shkeeper`, `decentralized`) are absent from the TypeScript union. Any frontend code that switches on `payment.provider` will fall through to a default/unknown branch for all SHKeeper and DePay payments, causing incorrect UI rendering (wrong labels, missing payment method icons, etc.). ## Current Behavior SHKeeper and DePay payments in the payment list and payment detail views may show as "Unknown provider" or trigger TypeScript errors at compile time. ## Expected Behavior ```ts type PaymentProvider = 'request.network' | 'shkeeper' | 'decentralized' | 'test' | 'other' ``` ## Affected Files - `frontend/src/types/payment.ts` — `PaymentProvider` type definition (~line 15) ## References - [Doc vs Code Audit Report](../09%20-%20Audits/Doc%20vs%20Code%20Audit%20Report%20-%202026-05-29.md) — Finding M37 - Related: [[ISSUE-016-payment-provider-routing-always-request-network]]