Ultrafast and lightweight application to synchornize your TrueLayer transactions to Firefly III
Note
This project is in an experimental stage. Feel free to use it, but be aware that it may not be fully stable or feature-complete. Your feedback and contributions are welcome as work is done towards a more polished release. Raise an issue if you run into any problems or have suggestions for improvements. Thank you for your understanding and support!
This is an asynchronous Python application to synchronize your transactions to Firefly III, via the TrueLayer financial services platform. It offers a user-friendly interface for managing the process and configuration. Its design is to be minimal and efficient.]
TrueLayer2Firefly documentation
You can install the application via Docker Compose or via the Docker command:
services:
truelayer2firefly:
iimage: erwind/truelayer2firefly:latest
container_name: truelayer2firefly
ports:
- "3000:3000" # Update this to your desired port
volumes:
- /YOUR_MOUNT:/app/data # Update this to your mount pointdocker run -d \
--name truelayer2firefly \
-p 3000:3000 \
-v /YOUR_MOUNT:/app/data \
erwind/truelayer2firefly:latestThe application will create a basic configuration file to store your settings.
Follow these steps to set up your Firefly III instance:
- Create an OAuth Client in your Firefly III instance. You can do this by going to
Profile > OAuth > OAuth Clientsand clicking onCreate OAuth Client. Make sure to uncheck theConfidentialoption. - Fill in the
NameandRedirect URIfields. TheRedirect URLshould be set tohttp://{YOUR_HOST}:{YOUR_PORT}/auth/firefly/callback. For example, if you are running the application onlocalhostand port3000, the redirect URL would behttp://localhost:3000/auth/firefly/callback. This needs to 100% match the URL you are using to access the application. - In TrueLayer2Firefly, fill in the
API URLwith the URL of your Firefly III instance. For example, if you are running Firefly III onlocalhostand port8080, the API URL would behttp://localhost:8080. Also fill in theClient ID. You will now be guided through the OAuth flow to authorize the application to access your Firefly III instance. - On completion, you will be redirected to the application and your Firefly III instance will be connected.
Follow these steps to set up your TrueLayer instance. This is a bit more complicated, so follow these steps carefully. You can find more information on the TrueLayer documentation.
- Create an application in the TrueLayer dashboard (sign up if you don't have an account yet).
- Switch your application to
Livemode. This is done by clicking on theSwitch to Livebutton in the top right corner of the dashboard. You can confirm if you're inLivemode by checking the theClient ID. This should not start withsandbox-. - Find your
Client IDandClient Secretin the application settings. These can be found in theSettingstab of your application. If you forgot somehow yourClient Secret, you can regenerate it in theSettingstab. - In the
Redirect URIfield, fill in the URL of your TrueLayer2Firefly instance. For example, if you are running the application onlocalhostand port3000, the redirect URL would behttp://localhost:3000/auth/truelayer/callback. This needs to 100% match the URL you are using to access the application. - In TrueLayer2Firefly, fill in the
Client ID,Client Secret,Redirect URIwith the values from the TrueLayer dashboard. Again, this needs to 100% match the URL you are using to access the application. You will now be guided through the OAuth flow to authorize the application to access your TrueLayer instance. You can filter per country and then find the banking institutions you want to connect to. - From here, follow the instructions in the application to connect your bank accounts.
- On completion, you will be redirected to the application and your bank accounts will be connected. You can now start synchronizing your transactions!
This is an active open-source project. We are always open to people who want to use the code or contribute to it.
We've set up a separate document for our contribution guidelines.
Thank you for being involved! 😍
The simplest way to begin is by utilizing the Dev Container feature of Visual Studio Code or by opening a CodeSpace directly on GitHub. By clicking the button below you immediately start a Dev Container in Visual Studio Code.
This Python project relies on Poetry as its dependency manager, providing comprehensive management and control over project dependencies.
You need at least:
- Python 3.11+
- Poetry
Install all packages, including all development requirements:
poetry installPoetry creates by default an virtual environment where it installs all necessary pip packages.
This repository uses the pre-commit framework, all changes are linted and tested with each commit. To setup the pre-commit check, run:
poetry run pre-commit installAnd to run all checks and tests manually, use the following command:
poetry run pre-commit run --all-filesIt uses pytest as the test framework. To run the tests:
poetry run pytestTo update the syrupy snapshot tests:
poetry run pytest --snapshot-updateMIT License
Copyright (c) 2025 Erwin Douna
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
