Payments report

Charges, refunds, disputes, payout schedule. The finance reconciliation view.

Finance reconciliation, not the Dashboard summary

Distinct from the Payments page (which is the operational view): this report is the accounting view, designed for monthly reconciliation against the Stripe statement.

  • Gross + net — gross revenue, Stripe fees, refunds, net to bank. Reconciles to the Stripe statement to the cent.
  • By payment method — card, ACH, cash (counter), comp. Drives the "should we add more payment options?" decision.
  • Refunds — full vs partial, refund reason categorization, refund rate. Caddie flags abnormal refund patterns.
  • Disputes — open + resolved disputes with outcome (won / lost / refunded). Each row links to the dispute in Stripe.
  • Payout schedule — what's pending vs paid out vs in-transit. Match each payout to the underlying charges.
  • Tax breakdown — by jurisdiction, for quarterly tax filings.
  • Subscription billing — member plan renewals, failed renewals, retry results, dunning email triggers.
  • Add-ons — extra hours, lessons-add-ons, party packages attached to existing bookings. Tracks attach rate per booking and revenue lift vs base booking total.
  • Export — CSV that matches the QuickBooks import format. PDF for printed records.

Backend wiring pending. GET /operator/reports/payments in the live app. Cross-references the Stripe API for live status; cache-invalidates aggressively on webhook events.