Documentation
Welcome to Cashflow JS. This application is designed to provide a clear, visual, and interactive analysis of your cash flow. By uploading your financial data, you can generate a 12-week forecast, analyze customer payment behavior, and manage complex financial scenarios with ease.
The application is divided into three main sections: Analysis for visualizing your data, Data Management for inputting and refining your data sources, and Configuration for customizing the application to your needs.
Dashboard
Weekly View
A detailed grid view of your cash flow, broken down by category (Accounts Receivable, Accounts Payable, etc.) for each of the next 12 weeks. Clicking any monetary value opens a dialog with the underlying transaction details.
Customer Scorecard
Analyzes and scores customers based on their historical payment behavior. It calculates on-time payment percentages and average days late, providing insights into which customers are reliable payers. Click a customer to see their paid invoice history.
Balance Summary
Consolidates all transactions to show a net balance for every entity (customer/vendor). It uses data from the Name Pairing page to merge related accounts. Clicking an entity's name opens a dialog showing a full breakdown of their receivables and payables.
Imported Data
The starting point of the application. Upload an Excel file (.xlsx, .xls, .csv), or a previously exported session file (.json) here. The page includes a table to view all raw data from your file.
Manual Transactions
Add one-off or recurring transactions (e.g., rent, salaries, subscriptions) that are not present in your imported file. You can configure start dates, frequency, and end conditions. A history page allows you to manage past-due occurrences.
Exclusions
Select names from your data to completely exclude from all forecast calculations. This is useful for removing test data or irrelevant entities without altering your source file.
Intercompany
Tag specific names as "Intercompany". This allows for separate tracking and analysis in the breakdown charts on the Dashboard and in the Weekly View grid.
Name Pairing
Link receivable names with their corresponding payable names. This is crucial for entities that are both a customer and a vendor, allowing the Balance Summary page to show a true, consolidated net balance. The app can auto-suggest pairs based on name similarity.
The application requires the following columns:
- Type: Must contain one of 'Invoice', 'Bill', 'Bill Credit', or 'Credit Memo'.
- Document Number: A unique identifier for the transaction.
- Name: The name of the client or vendor.
- Due Date: The date the payment is due.
- Date: A fallback transaction date if 'Due Date' is empty.
- Amount: The original transaction amount.
- Remaining Amount: The open or outstanding amount.
The following columns are optional but recommended for full functionality:
- Status: The current state (e.g., 'Open', 'Paid'). If missing, it's inferred from 'Date Closed'.
- Date Closed: The date a transaction was paid. Used for status inference and customer payment analysis.
- Installment Columns: If your data has installment-based payments, you can map columns for Installment Due Date, Amount, Number, and Status to override the main transaction fields.
Status-Based Filtering
Only transactions with a status of 'Open', 'Unpaid', or 'Pending Approval' are included in the forecast. All other statuses are ignored in calculations but are still visible on the Imported Data page.
Settings
Configure your starting bank balance and map the column names from your file to the fields the application expects. Date format preferences can also be set here.
Export
- To Excel: Exports the 12-week summary forecast.
- To JSON: Exports your entire session (imported data, all settings, manual transactions, etc.). This file can be shared and re-uploaded by another user to perfectly replicate your session.
Data Storage
The application works entirely in your browser. Raw imported data is stored in sessionStorage (cleared when the tab closes). All settings, manual transactions, and name pairings are stored in localStorage (persists between sessions).