Reconcile Stripe Disputes and Refunds Against Original Charges
Annual Stripe exports for mid-volume merchants routinely exceed 500,000 rows, mixing successful charges, partial refunds, full refunds, dispute creations, dispute wins, and dispute losses in one monolithic CSV. The Type column uses cryptic values like dispute, dispute_reversal, and refund without linking back to the original charge amount in the same row. You must trace each dispute or refund back to its Source ID to find the original charge row and calculate net revenue impact. This workflow filters the export to only dispute and refund event types, joins them back to original charge rows using Source ID as the foreign key, and computes the net realized revenue per order after all adjustments.
Why this matters?
A Shopify Plus merchant hit a 1.8% dispute rate in Q4 due to a fraudulent batch of subscription renewals, but their finance team only discovered it in February because the annual Stripe export was too large to open in Excel (the application crashed at 480K rows during AutoFilter). The 3-month detection delay meant they missed Visa's dispute monitoring program threshold and incurred $15,000 in non-compliance penalties. Outsourcing the reconciliation to a freelance data engineer required uploading the full export — which contained customer full names, email addresses, and last-four card numbers — to an unvetted Google Cloud Storage bucket.
The 3-Step Solution
Follow this streamlined workflow to transform your raw data export into a clean, analysis-ready dataset. Each step leverages our browser-based tools to ensure your sensitive data never leaves your device.
By following these three steps, you eliminate manual data wrangling, reduce human error, and maintain full GDPR compliance throughout the process.
Ready to clean your data?
100% local processing. Zero uploads. Blazing fast.
Recommended Tools
Related Workflows
How to Merge 50 Shopify Order CSVs Without Crashing Excel
Shopify limits order exports to specific date ranges, so sellers with years of data end up with dozens of separate CSV files. This guide walks through merging them into a single master file while handling duplicate order IDs and inconsistent column orders across exports.
How to Clean Apollo Exported Leads Before Importing into Cold Email Software
Apollo.io exports contain duplicate contacts, generic role-based emails (info@, support@), invalid domains, and inconsistent company name formatting. This workflow shows how to clean all of these issues in one pass to keep your sender reputation above 95% deliverability.
How to Query Nested JSON API Responses with SQL Directly in the Browser
Modern APIs return deeply nested JSON that's painful to parse in spreadsheets. This developer-focused guide demonstrates converting API response dumps into queryable tables and running SQL with JOINs, aggregations, and window functions — all without spinning up a local database.
Sanitize Email Lists Before Klaviyo Import
Importing a dirty contact list into Klaviyo is the fastest way to torch your sending domain's reputation. Exported suppression lists from legacy ESPs are riddled with invisible zero-width spaces, malformed addresses like user@@domain.com, and role-based emails (info@, admin@) that trigger spam traps. If your hard bounce rate exceeds 2% on a single campaign, Klaviyo will throttle your account and your transactional emails start landing in Gmail's Promotions tab. This workflow cross-references your prospect list against historical bounce logs, strips non-printable Unicode characters, and validates RFC 5322 email formatting entirely in your browser.
Sample Datasets
Shopify Standard Order Export CSV Sample
A realistic Shopify order export with 200 rows including multi-line items, refunded orders, and discount code fields. Includes both a 'dirty' version (raw export with duplicates and nested line items) and a 'clean' version showing the expected output after normalization. Use this to test the Shopify Normalizer and CSV Merger tools.
Apollo.io B2B Leads Export Sample
An Apollo.io lead list export with 300 contacts including duplicate emails, role-based addresses (info@, admin@), invalid domains, and inconsistent company name casing. Perfect for testing the Apollo Leads Cleaner and CSV Deduplicator on a realistic dirty dataset.
HubSpot Contacts Export Sample Dataset
This dataset contains 8,500 synthetic HubSpot contact records with exact production export columns: First Name, Last Name, Email, Lifecycle Stage, Associated Company, Lead Status, and HubSpot Score. It represents a mid-market B2B SaaS database with contacts spanning multiple lifecycle stages from subscriber to customer. The HubSpot-specific quirk is that multi-checkbox custom properties and system fields like Lead Status are exported as semicolon-separated strings (e.g., New;Qualified;SQL) rather than comma-separated values. Data engineers unfamiliar with this behavior often split these fields incorrectly during ETL, destroying the multi-select taxonomy. The dirty data inventory includes: semicolon-delimited strings in 2,100 Lead Status cells, trailing whitespace in 890 Email addresses that would cause duplicate contact creation on re-import, and 420 rows where Lifecycle Stage is completely blank due to API-synced contacts bypassing the form submission flow. After deduplication and whitespace trimming, this yields 8,340 unique, import-ready contacts. Ideal for: CRM migration testing, HubSpot import validation, data warehouse schema design, and reverse-ETL dry runs. Run this dataset through the csv-deduplicator tool to identify and merge the whitespace-polluted email duplicates.