Convert to Wealthfolio is a command-line tool that converts various CSV formats into a format that can be imported into Wealthfolio. The architecture uses a plugin-based system to support multiple input formats.
Note: This project targets Wealthfolio v3.x. CSVs generated by this tool may not be compatible with earlier versions.
- Features
- What's New
- Supported Formats
- Installing and Using the Converter
- Building and Running From Source
- Future Plans
- Getting Support
- Technical Information
- Contributing Code and Documentation
- Project Rationale
- License
- Attribution
- TypeScript: Full type safety and modern JavaScript features
- CLI Interface: Command-line tool for easy conversion and automation
- Plugin Architecture: Makes it easy to add new format converters by creating new plugins
- Format Detection: Automatically detects input format
- Field Validation: Validates all output records against activity type-specific field requirements
- Symbol Resolution: Supports pluggable data providers for symbol, ISIN, CUSIP, and company name lookups
- Symbol Override and Mapping: Allows overriding symbols and mapping them from ISINs, CUSIPs, and company names using an INI file
- Advanced Logging: Colorized log output with configurable log verbosity levels
- Comprehensive Testing: Full test coverage to ensure reliability
- Minimal Dependencies: Only uses lean libraries as runtime dependencies with none or minimal transitive dependencies
See the ChangeLog for a detailed list of released and upcoming changes.
- Generic: Flexible CSV format with support for:
- Standard transaction types (BUY, SELL, DEPOSIT, WITHDRAWAL, DIVIDENDS, etc.)
- Optional instrument type, currency, fee, FX rate, and comment fields
- Supports symbol resolution via ISIN, CUSIP, or company name fields
- Respects the default currency option
- Comma-delimited format
- See the Generic Format User Guide for details
See the Roadmap for a list of formats that will be added in the future.
Install the converter globally using npm:
npm install --global @leppa/convert-to-wealthfolioThis should make the convert-to-wealthfolio command available globally in your terminal.
Get help information about the CLI, its commands, and options:
convert-to-wealthfolio --helpConvert a CSV file:
convert-to-wealthfolio convert input.csv output.csvSee the User Manual for complete usage instructions, command examples, and available options.
Checkout the repository and install the dependencies:
git clone https://github.com/leppa/convert-to-wealthfolio.git
cd convert-to-wealthfolio
npm installAfter this, the converter can be run using npm start:
npm start <command> -- [options]See the User Manual for complete instructions on building and running the converter from source.
See the Roadmap for a list of planned features and improvements.
If your CSV format is not supported, you can create a new format plugin by extending the BaseFormat class. See the Format Plugin Development Guide for instructions on how to create and integrate your own format into the converter.
If you don't know how to create a format plugin but want to see your format supported, you can open a new format request with a sample CSV file and the expected output. See Requesting a New Format Plugin for guidelines on how to request a new format effectively.
If you want to add a new way of resolving symbols from ISINs, CUSIPs, or company names, you can create a new data provider by extending the DataProvider class. See the Data Provider Development Guide for instructions on how to create and integrate a new data provider into the converter.
Same as with format plugins, if you don't know how to create a data provider but want to see a new one supported, you can open a feature request with details about the data source. See Requesting a New Feature for guidelines on how to request new features effectively.
If you have an idea for a new feature or improvement, you can open a new feature request. See Requesting a New Feature for guidelines on how to request new features effectively.
Only the latest release is officially supported and will receive bug fixes.
For issues and bug reports, please open a new issue and use the appropriate template. See Reporting Issues for guidelines on how to report issues effectively.
If you need support or have general questions, please open a new discussion on GitHub: https://github.com/leppa/convert-to-wealthfolio/discussions
See the Technical Information document for details about the architecture, design, and implementation of the project.
If you want to contribute to the project, please refer to the Contributing to Convert to Wealthfolio for guidelines on how to get involved.
I started this project mainly for myself to be able to import transaction history from my brokers into Wealthfolio. While Wealthfolio's import system is rather flexible, it still expects all transaction details to be in one row. However, some brokers export transactions in a way that splits details across multiple rows (e.g., one row for the main transaction and another for the associated fees). This made it difficult to import my data directly, so I decided to create a tool that could convert these formats into the one that Wealthfolio expects.
At some point during development I realized that Convert to Wealthfolio could be useful for other people as well, so I decided to open source it and make it extensible. I will most probably not implement any extra formats outside of the ones that I need myself, but I'm open to contributions from other people. Same goes for the feature requests - feel free to open a feature request, but I can't promise that I will implement it unless it's something that I need myself.
Copyright © 2026 Oleksii Serdiuk
All rights reserved.
This project is licensed under the BSD 3-Clause License - see LICENSE file for details.
Wealthfolio is a trademark of Teymz Inc. This project is an independent tool and is not affiliated with or endorsed by Teymz Inc. in any way. See wealthfolio.app for more information about Wealthfolio.
See the NOTICE.md file for a list of license notices for third-party runtime dependencies used in this project.