A SvelteKit SaaS application that processes Stripe CSV files and generates FreeAgent-compatible reconciliation data.
- Upload Stripe balance and payouts CSV files
- Process and transform data according to FreeAgent requirements
- Generate a downloadable CSV file with three columns: date, amount, and description
- Modern, responsive UI built with Tailwind CSS
- Sales: Creates a positive line for each sale gross amount
- Fees: Creates a negative line for each fee amount
- Refunds: Creates a negative line for refund amounts
- Description Format:
{category} | {trace_id} | {balance_transaction_id} | {product_name}
- Positive Payouts: Converts to negative "transfer to bank account" amounts
- Negative Payouts: Converts to positive "stripe direct debit" amounts
- Description Format:
{category} | {trace_id} | {payout_id}
The generated CSV file contains exactly three columns:
- Date: DD/MM/YYYY format
- Amount: Positive for additions, negative for deductions
- Description: Complete transaction description
The application generates four summary tables that provide detailed reconciliation information:
- Number of Sales: Mathematical sum of all transactions in the "Amount" column
- Number of Fees: Mathematical sum of all fees in the "fee" column
- Net Balance Change from Activity: Sum of total sales + total fees
- Number of Transfer Payouts: Sum of all transfer payouts (negative amounts)
- Number of Stripe Direct Debits: Sum of stripe charges to bank account (positive amounts)
- Total Payouts: Sum of payouts + debits
- Count of Transactions: Total number of sales transactions
- Charges Gross Amount: Sum of all sales before fees or refunds
- Charges Fees: Total amount of fees (negative)
- Refunds Count: Number of refunds made
- Refunds Gross Amount: Sum of all refunds (negative)
- Balance Change from Activity Count: Sum of transaction count + refund count
- Balance Change from Activity: Sum of Charges Gross + Charges Fees + Refunds Gross
- Starting Balance: Dynamically set from form input
- Net Balance Change from Activity: From Table 1, row 3
- Total Payouts: From Table 2, row 3
- Ending Balance: Starting Balance + Net Balance Change + Total Payouts
-
Clone the repository
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser and navigate to
http://localhost:5173
Before using this tool, you need to download the required CSV reports from your Stripe dashboard:
- Go to Reports > Balance Summary
- Change dates to your financial year (e.g., 2024-05-01 to 2025-04-30)
- Download the full (all columns) "Balance change from Activity" Report
- Download the full (all columns) "Payouts" Report
- Upload your Stripe balance CSV file (itemised activity)
- Upload your Stripe payouts CSV file
- Click "Process Files" to generate the FreeAgent-compatible CSV
- Download the generated
freeagent.csvfile
- Framework: SvelteKit
- Styling: Tailwind CSS
- Language: TypeScript
- File Processing: Client-side CSV parsing and transformation
- Balance File: Must contain columns for balance_transaction_id, created, gross, fee, reporting_category, trace_id, and description
- Payouts File: Must contain columns for payout_id, effective_at, gross, and trace_id
- No header row
- Three columns: date, amount, description
- Chronologically sorted by date
- FreeAgent-compatible format
To run the development server:
npm run devTo build for production:
npm run buildTo preview the production build:
npm run previewThe samples/ directory contains example CSV files for testing the application functionality.
