IntermediateAction GuideUpdated regularly5 min read

Calculate True SKU Net Profit from Amazon Settlement Reports

Amazon's Settlement Report (GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE) is delivered as a Tab-Separated Values (TSV) file, not CSV — which causes immediate parsing failures when tools assume comma delimiters. More critically, the report uses an extremely flat transaction model where each row represents a single event type (Order, Refund, Adjustment, FBA Fee, Commission) rather than aggregating per order. A single order generates 4-6 rows: one Order row with product_sales revenue, separate rows for fba_fees, commission, and shipping_credits, and if refunded, additional rows with negative values in product_sales and positive reversals in fee columns. The accounting trap: when building a Pivot Table to calculate net profit per SKU, naive summation of the amount column double-counts refunds because the original sale and the refund reversal both appear as separate line items. Additionally, fee columns like selling_fees and fba_fees store values as negative numbers (costs), but refund rows store fee reversals as positive numbers. This workflow parses the TSV, groups transactions by amazon-order-id and sku, netting each transaction type correctly before outputting a clean per-SKU profit summary.

Why this matters?

A 7-figure Amazon seller managing 340 active SKUs built a monthly P&L by pivoting their Settlement Report's amount column. The Pivot Table showed SKU B08X7K9PL2 with -$4,200 net profit — appearing as their worst performer. After manual reconciliation, they discovered the Pivot had summed refund rows' fee reversals as additional charges instead of credits. The SKU had 847 refunds that month, and each refund row's positive selling_fees value (the fee Amazon returned) was misinterpreted as an extra cost. Corrected, the SKU was actually +$11,300 profitable. Across all 340 SKUs, the double-counting error understated total monthly net profit by $38,700.

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 Anonymize Customer Data Before Sharing with ChatGPT or Developers

A step-by-step SOP for stripping PII (names, emails, phone numbers, physical addresses) from production datasets while preserving the statistical shape of the data. Includes guidance on which columns to mask, which to drop, and how to verify the output is truly de-identified.

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 Convert Stripe Payout Reports into QuickBooks Import Format

Stripe's payout CSV has 15+ columns that don't map to QuickBooks' expected schema. This guide shows how to separate gross revenue from processing fees, reformat dates to MM/DD/YYYY, and produce a clean CSV that QuickBooks accepts without manual reconciliation.

Clean WooCommerce Exports for Financial System Import

WooCommerce's native CSV export is notoriously hostile to accounting workflows. Product descriptions in the post_content column arrive wrapped in raw HTML tags and shortcodes like [woocommerce_reviews]. Custom meta fields (e.g., _regular_price, _sku) frequently shift columns when plugins inject hidden postmeta, and the post_date column alternates between Y-m-d H:i:s and Unix timestamps depending on your WordPress version. This SOP strips HTML remnants via regex, realigns displaced meta columns, and standardizes all date fields to ISO 8601 so QuickBooks and Xero accept the import without throwing schema validation errors.

Sample Datasets

Amazon Settlement Report Sample Data

A representative Amazon Seller Central settlement report with 150 transactions covering FBA fees, commissions, reimbursements, and refunds across multiple marketplaces. Use this to test the Amazon Settlement Cleaner and see how 40+ raw columns collapse into a clean profit summary.

Facebook Ads Campaign Report Sample

A Facebook Ads Manager export with 100 rows spanning 3 campaigns, 12 ad sets, and key metrics (impressions, clicks, spend, conversions, ROAS). Includes intentionally messy rows with zero-spend days and broken attribution windows for testing the Ads ROAS Pivot tool.

Stripe Payout Export Sample

A Stripe payout CSV with 80 transactions including charges, refunds, disputes, and fee breakdowns across USD and EUR. Timestamps are in raw UTC format. Use this to test the Stripe Payout Formatter and validate QuickBooks-compatible output.

Zendesk Tickets Export Sample Dataset

This dataset contains 5,000 synthetic Zendesk support tickets exported in standard CSV format, featuring exact production columns: Ticket ID, Subject, Description, Status, Priority, Requester, Assignee, and Created. It simulates a realistic helpdesk environment with a mix of open, pending, and resolved tickets across multiple support queues. The critical Zendesk export quirk is that Description and Comments fields contain embedded CRLF (\r\n) line breaks from customer emails and multi-paragraph replies. Naive CSV parsers that don't respect RFC 4180 quoting rules will split a single ticket row into multiple invalid records at every newline, corrupting the dataset structure. The intentionally injected dirty data inventory includes: embedded CRLF newlines in 1,200 Description cells, 340 rows with Assignee set to null (unassigned tickets), and UTF-8 characters (é, ñ, ü) in Requester names without a BOM header to test encoding fallbacks. After cleaning and proper quote-handling, this yields exactly 5,000 valid ticket records. Ideal for: ETL pipeline testing, CSV parser validation, DuckDB text-loading demos, and NLP preprocessing on support logs. Load this file into the format-cleaner tool to strip CRLF artifacts and normalize the text fields.