CSV Close CheckWORKED EXAMPLESFree workspace

Beyond CSV comparison: try the paid-but-locked-out check, with a replayable synthetic failure and corrected result.

TRY THE MONTH-TO-MONTH REVIEW · SYNTHETIC DATA

Three findings again.
A different follow-up list.

Last review: three exceptions. This review: three exceptions. The totals look unchanged. See what actually needs fresh attention.

3 → 3Same total. Different work.

Invented records, processed in your browser. No sign-in or payment. The dates are illustrative.

What is in this example?

demo_B has the same status difference. demo_C’s compared amount changes from 49.02 to 59.00 against billing of 49.00. demo_D is now present and matching on both sides. demo_E appears only in access now. The comparison itself cannot prove why a prior finding disappeared.

This workflow is included with the $9/month hosted plan. You save a snapshot, then choose it during your next review. No automatic imports or monitoring.

LEARN WITH SYNTHETIC DATA

Five CSV comparisons.
Every finding explained.

Try different column names, missing records, duplicate IDs, and amount or date differences before using your own exports. Each example runs the same comparison engine as the free workspace, locally in your browser.

All IDs and records on this page are invented. No sign-in or payment is needed. JavaScript enables the run and download buttons; the full source CSVs, settings and expected findings remain readable below.

EXAMPLE 01 · MISSING RECORDS AND STATUS

Compare a billing export with an access export

Both exports have already been aligned to a common status definition and reporting date. One customer appears only in billing, another only in access, and one status differs.

Workspace settings: match on customer_id; compare status as Text. Amount tolerance is unused.

Billing / A · 3 records

customer_id,status
demo_A,active
demo_B,canceled
demo_C,active

Access / B · 3 records

customer_id,status
demo_A,active
demo_B,active
demo_D,active

Expected: 2 unique IDs matched; 3 exceptions

What to investigate: check whether cancellation takes effect at the end of a paid term, whether a free plan explains access, or whether the exports cover different accounts. These findings do not establish money owed or unauthorized access.

Run this example to see the actual engine output.

EXAMPLE 02 · AN AMBIGUOUS MATCH

Find duplicate customer IDs before pairing records

Two billing rows share demo_B. Their statuses conflict. Picking the first or last row would silently make a business decision, so the engine leaves that ID unpaired.

Workspace settings: match on customer_id; compare status as Text. Amount tolerance is unused.

Billing / A · 4 records

customer_id,status
demo_A,active
demo_B,active
demo_B,canceled
demo_C,active

Access / B · 3 records

customer_id,status
demo_A,active
demo_B,active
demo_C,active

Expected: 2 unique IDs matched; 1 exception

What to investigate: determine whether the export is at customer level or subscription level. Multiple subscriptions may be legitimate. Resolve the source or choose an appropriate shared ID before rerunning; this tool does not merge or delete rows.

Run this example to see the actual engine output.

EXAMPLE 03 · EXPLICIT TYPES

Compare exact decimals and validate ISO dates

This example assumes the amount uses the same currency and renewal date has the same meaning in both systems. The tool does not infer units, convert currencies or translate date formats.

Workspace settings: match on customer_id; compare amount as Amount and renewal_date as ISO date; set amount tolerance to 0.01.

Billing / A · 4 records

customer_id,amount,renewal_date
demo_A,19.990,2026-10-01
demo_B,49.00,2026-10-02
demo_C,15.00,2026-02-30
demo_D,USD 12.00,2026-10-04

Access / B · 4 records

customer_id,amount,renewal_date
demo_A,20.00,2026-10-01
demo_B,49.02,2026-10-03
demo_C,15.00,2026-02-28
demo_D,12.00,2026-10-04

Expected: 4 unique IDs matched; 4 exceptions

What to investigate: review the original export format and the significance of each date. Correct invalid source values deliberately. Four matched IDs means four unambiguous pairs, not four passing records.

Run this example to see the actual engine output.

EXAMPLE 04 · DIFFERENT COLUMN NAMES

Compare CSV files without renaming their columns

These exports use different headers and opposite row orders. Explicit column pairs preserve the original records and identify which values belong together.

Workspace settings: Billing / A ID customer_id; Access / B ID Account ID. Select status → Access status as Text and amount → Monthly price as Amount, tolerance 0.01. Both amounts use the same currency and monthly basis.

Billing / A · 2 records

customer_id,status,amount
demo_A,active,19.99
demo_B,canceled,0.00

Access / B · 2 records

Account ID,Access status,Monthly price
demo_B,active,49.00
demo_A,active,20.00

Expected: 2 unique IDs matched; 2 exceptions

demo_B has a status and amount mismatch (billing record 3, access record 2). demo_A is within the inclusive 0.01 tolerance. The different header names and row order do not create extra exceptions.

What to investigate: confirm the reporting period and cancellation timing. Column pairs identify corresponding fields; they do not translate status values or certify that access is wrong.

Run this example to see the actual engine output.

EVERYDAY RECORDS · SYNTHETIC EXAMPLE

What changed since your last renewal review?

Two complete lists, five records each. See a one-cent price change, different terms, a revised decision and records present in only one list. These are invented entries, not connected accounts or verified charges.

Run locally without an account or uploading files.

Expected: 4 unique IDs matched; 8 exceptions

Use your own lists: edit copies of the CSVs below, preserving stable IDs. In the free workspace, choose prior as File A and current as File B, open “Reviewing subscriptions or renewals?” and select “Use renewal-review rules.” Applying rules does not run the comparison. Keep the original full CSV lists for your next review.

Rules: ID subscription_id; compare service, price, currency, billing_interval, next_renewal and decision. Price is Amount with tolerance 0; next_renewal is ISO date; other fields are Text. Unknown dates stay blank and are flagged. Text labels are not verified provider statuses, and dates do not establish contract notice periods. There are no reminders, currency conversions or savings calculations.

Prior record / File A

subscription_id,service,price,currency,billing_interval,next_renewal,decision
renew_A,Example Storage,9.99,USD,month,2026-10-01,keep
renew_B,Example Design,12.00,USD,month,2026-10-02,review
renew_C,Example Hosting,120.00,USD,year,2026-11-01,keep
renew_D,Example Archive,5.00,USD,month,2026-10-04,review
renew_E,Example Music,9.990,USD,month,2026-10-05,keep

Record to review / File B

subscription_id,service,price,currency,billing_interval,next_renewal,decision
renew_E,Example Music,9.99,USD,month,2026-10-05,keep
renew_A,Example Storage,10.00,USD,month,2026-10-01,keep
renew_B,Example Design,100.00,EUR,year,2026-11-02,review
renew_C,Example Hosting,120.00,USD,year,2026-11-01,consider_cancel
renew_F,Example Reading,4.00,USD,month,2026-10-06,review

Try these files in the free workspace

  1. Download both CSVs from one example.
  2. Open the free comparison workspace. Choose the first or prior CSV for File A and the second or current CSV for File B. Selecting these files reads them locally; it does not send their contents to the application server.
  3. Apply the exact settings listed above that example. Imported columns initially use Text, so explicitly select Amount and ISO date for example 3.
  4. Select Compare records, review the findings, and download the CSV or JSON report if useful.

Record numbers include the header as record 1. Surrounding whitespace is trimmed; text case and internal whitespace stay significant. Duplicate IDs are not paired automatically. A report without exceptions does not prove the exports are complete.

Do these examples upload files or change my systems?

No. The examples and free workspace compare in your browser and add no analytics or advertising scripts. Nothing changes billing or access. The hosting provider may process normal connection and access information; see the privacy notice.

What should I compare next?

Use comparable export dates and a stable shared ID. Compare only fields with the same meaning. The evaluation guide explains how to investigate exceptions and measure whether the check helps your team.

For saved check history, you can review the $9/month hosted plan. Review the amount in Stripe before you pay; cancel future renewals in your account.