Situation & objective: A 0.5% variance between Billing and GL must be explained, corrected, and prevented with minimal disruption while producing an auditable trail for auditors.1) Clarify scope & constraints- Confirm time window, currency, cutoffs, FX handling, rounding rules, invoice lifecycle states, known batch jobs, and limited source access (which systems are accessible/read-only).2) Investigative queries & aggregations (run on billing DB, ETL staging, GL extract)- High-level reconciliation to reproduce variance:sql
SELECT period, SUM(billed_amount) billed, SUM(gl_amount) gl, SUM(billed_amount)-SUM(gl_amount) diff
FROM billing b JOIN gl g ON b.invoice_id=g.invoice_id
WHERE period BETWEEN '2025-01' AND '2025-03'
GROUP BY period;
- Breakdowns: product, customer_type, revenue_type, sales_channel, region, currency, invoice_state, invoice_date vs recognition_date.sql
SELECT product, COUNT(*), SUM(billed_amount) billed, SUM(gl_amount) gl
FROM joined_view
GROUP BY product ORDER BY ABS(SUM(billed_amount)-SUM(gl_amount)) DESC LIMIT 50;
- Time-lag analysis: compare billing by invoice_date vs GL by recognition_date in rolling windows to spot delays.- Rounding & FX check: aggregate by currency, apply rounding rules and historical FX rates.3) Sampling & stratification strategy- Stratify by: contribution to variance (top-N by absolute diff), high-volume customers, large-value invoices, recent periods, and suspect channels.- Use two-tier sampling: - Tier A: deterministic sample of top 20 buckets causing 80% of discrepancy. - Tier B: statistically significant random sample (95% CI, 5% margin) within remaining population to detect systemic issues.- For each sampled invoice trace: invoice record, billing event, adjustment notes, GL journal, posting batch, and any manual journals.4) Controls & auditable trails- Create a canonical reconciliation view that preserves raw source extracts (immutable snapshots with checksums) and all transform logic in versioned scripts in a repo.- Log every reconciliation run with parameters, queries, checksums, and reviewers; store artifacts in WORM storage.- Implement automated row-level provenance linking invoice_id → billing_event_id → journal_id; surface anomalies via dashboards and issue-tickets automatically created.- Require electronic approvals for any manual journal adjustments with metadata: reason code, linked invoice, approver, timestamp.5) Remediation & customer-compensation plan- Classify discrepancies: timing, mapping, rounding/FX, duplicate/missing, manual adjustments.- For timing-only differences: document cutoffs and do not adjust balances; propose disclosure to auditors and policy update.- For real errors affecting customer balance: - Batch remediation windows with low business impact; apply corrective journals for GL and, if needed, billing credit memos. - Prioritize customer-facing remediations for monetary impact > threshold (e.g., $X or top 1% customers). - Communicate via templated customer notifications; offer automatic credits/refunds where appropriate.- All remediations logged, linked to audit ticket, with CFO/legal sign-off for material items.6) Governance & prevention- Short-term: daily reconciliation of top KPIs, exception alerts.- Medium-term: automated reconciliation pipelines, reconciliation SLA, tighter mapping tables, unit tests for ETL transforms, and a monthly audit-ready report.- Present to auditors a reproducible methodology, sample trace evidence, immutable logs, and remediation ledger.Result metrics to show auditors: variance reduced to <0.05% within agreed timeframe, root-cause analysis for >90% of variance, and documented control improvements with timelines.