Application to read account statement files from different peer to peer lending sites, e.g. mintos.com, and produces a Portfolio Performance readable csv file.
Input format needs to be a csv file as well!
parse-account-statements.py --help
usage:
An application to read account statement files from different peer to peer lending sites, e.g. Mintos.com and creates
a Portfolio Performance readable csv file.
NOTE: The output only contains interest and interest like payments received. No other statements are currently parsed.
List of currently supported providers:
- Bondora
- Bondora Grow Go
- Estateguru
- Mintos
- Robocash
- Swaper
- Debitum Network
- Viainvest
Control the way how account statements are processed via the aggregate parameter:
- transaction: Currently does not process the input data beyond making it Portfolio Performance compatible.
- daily: This aggregates all bookings of the same type into one statement per type and day.
- monthly: This aggregates all bookings of the same type into one statement per type and month. Sets
the last day of the month as transaction date.
Default behaviour for now is 'transaction'.
Copyright 2018-03-17 ChrisRBe
positional arguments:
infile CSV file containing the downloaded data from the P2P site
optional arguments:
-h, --help show this help message and exit
--aggregate {transaction,daily,monthly}
specify how account statements should be summarized
--type TYPE Specifies the p2p lending operator
--debug enables debug level logging if set
./parse-account-statements.py --type mintos src/test/testdata/mintos.csv
⚠ If you are using the --aggregate=monthly option, please note that this aggregates account activities always on then last day of the month. This can lead to import issues in Portfolio Performance when importing data for the current month.
E.g. import date is the 15th of a July, the account statement contains data with a date of 31st of July.
Account activity for a "future date" will be ignored/ not imported by Portfolio Performance.
Please note, that this behaviour on application side is intentional to avoid importing account activity multiple times in Portfolio Performance.
- mintos - Supports current account-statement.csv file format
- estateguru - Supports current German layout account statement csv file format
- robocash - Supports current account statement format (as of 2018-05-01) exported to csv
- swaper - Supports current account statement format (as of 2018-05-01) exported to csv
- bondora - Supports current account statement format (as of 2019-10-12); exported to csv
- bondora go & grow - Supports current account statement format (as of 2019-10-12); exported to csv
- debitumnetwork - Supports current account statement format (as of 2020-09-08) exported to csv
- viainvest - Supports current account statement (as of 2021-12-12) exported as csv (Withdrawals do not work yet)
Unfortunately, the output file of Auxmoney's reports is not suitable for being parsed by PP-P2P-Parser in a meaningful way. As an alternative, you can check out the PP-Auxmoney-Parser project.
Configuration for this script is stored in yaml files located under the config subdirectory. The content directly reflects the format of the source account statement files.
Example:
---
type_regex: !!map
deposit: "(Deposits)|(^Incoming client.*)|(^Incoming currency exchange.*)|(^Affiliate partner bonus$)"
withdraw: "(^Withdraw application.*)|(Outgoing currency.*)|(Withdrawal)"
interest: "(^Delayed interest.*)|(^Late payment.*)|(^Interest income.*)|(^Cashback.*)|(^.*[Ii]nterest received.*)|(^.*late fees received$)"
fee: "(^FX commission.*)|(.*secondary market fee$)"
ignorable_entry: ".*investment in loan.*|.*[Pp]rincipal received.*|.*secondary market transaction.*"
special_entry: "(.*discount/premium.*)"
csv_fieldnames:
booking_date: 'Date'
booking_date_format: '%Y-%m-%d %H:%M:%S'
booking_details: 'Details'
booking_id: 'Transaction ID'
booking_type: 'Details'
booking_value: 'Turnover'
CSV file format compatible with Performance Portfolio (German language setting).
To use this application the following dependencies need to be installed:
- Python 3.7+ (unit test are run against Python 3.7, 3.8, 3.9, 3.10)
- virtualenv
- pipenv
Installation of Python dependencies can be handled in two ways:
-
Install dependencies via
pip install -r requirements.txt
-
Create a virtual environment using pipenv (preferred way)
pipenv install pipenv shell
I'm not a lawyer. This project is in no way affiliated with Portfolio Performance, but intended to be used with it.