Epic: Auto-reconcile claims payments with variance detection
F05-001
Auto-match 835 payments to 837 claims
Finance5 SP
As a finance team member, I want remittance payments automatically matched to their corresponding claims so that I can see which claims are fully paid, partially paid, or unpaid without manual matching.
Acceptance Criteria
Given an 835 payment of $450 matches claim #12345 billed at $500, When auto-matching runs, Then the claim status updates to "Partially Paid" with variance of -$50 and the adjustment reason code is displayed.
Given 95% of payments match on first pass, When the batch completes, Then the 5% unmatched are routed to the manual review queue with suggested matches ranked by confidence score.
F05-002
Variance threshold alerts
Finance3 SP
As a finance team member, I want automatic alerts when payment variances exceed configurable thresholds so that significant underpayments or overpayments are flagged immediately.
Acceptance Criteria
Given I set the variance threshold at 10%, When a claim billed at $1,000 is paid $800 (20% under), Then an alert fires with "Variance exceeds threshold: -$200 (20%)" and the claim is added to the exception queue.
Given a payment matches within 2% of the billed amount, When reconciliation runs, Then no alert fires and the claim is marked "Reconciled."
F05-003
Marketplace revenue reconciliation
Finance5 SP
As a finance team member, I want marketplace query fees reconciled against buyer payments and patient payouts so that the 80/20 split balances correctly in the ledger.
Acceptance Criteria
Given $10,000 in marketplace queries were processed this month, When reconciliation runs, Then the ledger shows: $10,000 gross revenue, $8,000 patient payouts, $2,000 Moonlitic fees, and any unreconciled variance.
Given a buyer's payment of $350 failed, When the query was already attributed, Then the variance report shows "Uncollected revenue: $350" and the patient payout for that query is held pending collection.
Epic: Double-entry financial ledger with error reporting
F05-004
Double-entry journal for all transactions
Auditor8 SP
As an auditor, I want every financial transaction recorded as a double-entry journal entry (debit + credit) so that the ledger always balances and every dollar is accounted for.
Acceptance Criteria
Given a buyer pays $350 for a Cohort query, When the payment is recorded, Then the journal shows: Debit Accounts Receivable $350, Credit Revenue $350; then Debit Revenue $280, Credit Patient Payable $280 (80% share); and Debit Revenue $70, Credit Platform Fees $70 (20% share).
Given the end-of-month close, When the trial balance runs, Then total debits equal total credits and any imbalance triggers an automatic investigation alert.
F05-005
Audit report generation
Auditor3 SP
As an auditor, I want to generate a complete audit report for any date range showing all journal entries, adjustments, and reconciliation status so that I can conduct financial reviews and respond to regulatory inquiries.
Acceptance Criteria
Given I request an audit report for Q1 2026, When the report generates, Then it includes: all journal entries, summary by account, reconciliation status for each transaction, and any unresolved exceptions.
F05-006
Error classification and trending
Auditor3 SP
As an auditor, I want reconciliation errors classified by type (underpayment, overpayment, duplicate, unmatched) and trended over time so that I can identify systemic issues.
Acceptance Criteria
Given 50 errors occurred in March, When I view the error dashboard, Then I see them grouped: 30 underpayments, 10 unmatched, 8 duplicates, 2 overpayments, with a 6-month trend chart showing if error rates are improving or worsening.
Epic: Reconciliation queues with retry logic and escalation
F05-007
Auto-retry failed reconciliation matches
Operator3 SP
As a platform operator, I want unmatched payments auto-retried on each new data ingestion so that timing mismatches between 835 and 837 files resolve automatically.
Acceptance Criteria
Given an 835 payment arrived before its 837 claim, When the next 837 batch is ingested, Then the system re-attempts matching and auto-reconciles if a match is found.
Given a payment remains unmatched after 30 days, When the aging threshold is hit, Then it escalates to the finance team with a "Stale Unmatched Payment" alert.
F05-008
Exception queue with priority ranking
Finance3 SP
As a finance team member, I want reconciliation exceptions ranked by dollar amount and age so that I resolve the highest-impact items first.
Acceptance Criteria
Given 25 exceptions are in the queue, When I open the exception dashboard, Then they are sorted by impact score (dollar amount x days outstanding) with the highest at the top.
F05-009
Payer-level reconciliation summary
Finance3 SP
As a finance team member, I want a payer-level summary showing total billed, total paid, and net variance per payer so that I can identify which payers are consistently underpaying.
Acceptance Criteria
Given I select "Q1 2026" and click "Payer Summary," When the report generates, Then each payer shows: total claims billed, total paid, variance percentage, and a trend arrow (improving/worsening vs. prior quarter).
F05-010
Manual adjustment with approval workflow
Finance5 SP
As a finance team member, I want to post manual adjustments (write-offs, corrections) with a dual-approval workflow so that no unilateral changes can be made to the financial ledger.
Acceptance Criteria
Given I submit a $200 write-off adjustment, When I click "Submit for Approval," Then a second finance team member receives a notification to approve or reject the adjustment before it posts to the ledger.
Given the approver rejects the adjustment, When rejection is submitted, Then the adjustment is not posted, I receive a notification with the rejection reason, and the exception remains open.