Skip to main content

Billing Service — Service Risk Register

Status: populated Owner: Platform Engineering Last updated: 2026-04-18

IDRiskLikelihoodImpactMitigationOwner
R-BILL-01Missing pricing rule causes events to NAK indefinitelyMediumHighBillingPricingNotFound alert fires immediately; ops creates rule; event replaysEngineering
R-BILL-02Duplicate billing event (NATS redelivery) causes double invoice chargeLowHighON CONFLICT (message_id) DO NOTHING + unique index; integration testEngineering
R-BILL-03Overlapping pricing table effective datesLowHighPartial unique index prevents active row overlap; CI validationEngineering
R-BILL-04Redis pricing cache serves stale after pricing update (60s window)MediumLow60s acceptable business tolerance; immediate DEL on pricing writeEngineering
R-BILL-05Pricing rules not configured at launchHighHighMIGRATION_PLAN phase 1 gate: pricing_not_found alert must be 0 before phase 2Finance + Eng
R-BILL-06Partial first month invoice confuses customersHighMediumFinance briefed; invoice includes periodStart date; support FAQFinance
R-BILL-07S3 unavailable during invoice cronLowMediumInvoice stays DRAFT; re-run next month or manual trigger; BillingS3Error alertSRE
R-BILL-08Invoice cron runs twice concurrently (clock skew / pod restart)LowHighK8s CronJob concurrencyPolicy: Forbid; UNIQUE (account_id, period_start) on invoicesEngineering
R-BILL-09Negative margin undetected for extended periodMediumMediumBillingNegativeMargin alert; Finance reviews monthlyFinance
R-BILL-10PDF template change breaks existing invoice formatLowMediumTemplate versioning; CI snapshot test of rendered PDF structureEngineering
R-BILL-11FX rate not applied when currencies differMediumHighCurrent assumption: same currency; cross-currency events rejected until FX integrationEngineering
R-BILL-12Large account usage query timeoutLowMediumUsage query uses pre-aggregated usage_summaries; index on (account_id, bucket_hour DESC)Engineering