Database
Neon
Neon holds application data plus a thin projection of what Polar reports, and branching is what makes that projection safe to reshape. You can rebuild it on a branch, replay stored webhook payloads into it, and compare before promoting the migration. Keep the raw event bodies in a table for exactly that purpose, because with a merchant of record you cannot reconstruct history from your own charges, since there are none to read.