{"id":39990807,"url":"https://github.com/edvgui/firefly-gaf","last_synced_at":"2026-01-19T00:38:53.298Z","repository":{"id":308775712,"uuid":"1033400015","full_name":"edvgui/firefly-gaf","owner":"edvgui","description":"Fix the account names of transations imported using gocardless","archived":false,"fork":false,"pushed_at":"2025-11-28T20:00:54.000Z","size":59,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-30T23:49:43.680Z","etag":null,"topics":["account","data-importer","firefly-iii","gocardless","name","nordigen","original"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edvgui.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-06T18:52:57.000Z","updated_at":"2025-11-28T20:00:55.000Z","dependencies_parsed_at":"2025-08-31T10:14:28.180Z","dependency_job_id":"e0675a21-2ca5-4c75-a5b1-090740db54de","html_url":"https://github.com/edvgui/firefly-gaf","commit_stats":null,"previous_names":["edvgui/firefly-gaf"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/edvgui/firefly-gaf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edvgui%2Ffirefly-gaf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edvgui%2Ffirefly-gaf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edvgui%2Ffirefly-gaf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edvgui%2Ffirefly-gaf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edvgui","download_url":"https://codeload.github.com/edvgui/firefly-gaf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edvgui%2Ffirefly-gaf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28554780,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T23:48:35.235Z","status":"ssl_error","status_checked_at":"2026-01-18T23:47:49.178Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["account","data-importer","firefly-iii","gocardless","name","nordigen","original"],"created_at":"2026-01-19T00:38:52.716Z","updated_at":"2026-01-19T00:38:53.286Z","avatar_url":"https://github.com/edvgui.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# firefly-gaf\n\n[Firefly III](https://github.com/firefly-iii/) is an amazing tool to manage personal finances.  And its [data importer](https://github.com/firefly-iii/data-importer) is a bliss to import transactions automatically via third party services.\n\nWhen transactions are made using via some payment providers, such as VISA, the IBAN of the beneficiary might be an intermediate account that doesn't reflect the business you made the payment to.  When the data importer imports these transactions, the IBAN is the most strict reference for the destination bank account, and therefore many different business will be grouped under the same IBAN.  This is not very convenient, but of course there is a way around that.\n\n**The workaround** is a two steps approach:\n1. Modify the name of the \"generic\" bank account that groups all of the mislabelled transactions.  From now on, the data importer will add a note to the transactions added to this account, inserting the original beneficiary name.\n2. For each beneficiary ending up in this account, create a rule that matches the note, and changes the beneficiary to an account named more appropriately.\n\nThis first step can not really be automated, as only you, as a human, remembering where you made the passed transactions, can know that the current destination account of some transactions is wrong.\n\nThe second step however is pretty easy to handle, and this is precisely what this repo aims to do.\n\nThis tool is a simple script, that can run on demand or periodically (see systemd deployment).  It is packaged in a container for easy distribution and installation.\n\n## Run from source\n\n**Requirements**:\n- [uv](https://docs.astral.sh/uv/getting-started/installation/)\n\n```console\n$ git clone https://github.com/edvgui/firefly-gaf.git\n$ ./firefly-gaf/script.py\nUsage: script.py [OPTIONS] ACCOUNT\nTry 'script.py --help' for help.\n\nError: Missing argument 'ACCOUNT'\n```\n\n## Run with podman\n\n**Requirements**:\n- podman or docker\n\n```console\n$ podman run --rm ghcr.io/edvgui/firefly-gaf:latest\nUsage: script.py [OPTIONS] ACCOUNT\nTry 'script.py --help' for help.\n\nError: Missing argument 'ACCOUNT'\n```\n\n## Run periodically with systemd timer\n\n**Requirements**:\n- podman\n- [quadlet](https://docs.podman.io/en/latest/markdown/podman-quadlet-install.1.html)\n\n1. Create a container unit named `firefly-gaf.container` in the folder `.config/containers/systemd/` of your user with the following content:\n```systemd\n[Unit]\nDescription=Podman firefly-gaf.service\nDocumentation=https://github.com/edvgui/firefly-gaf\nWants=firefly-gaf.timer\nPartOf=firefly-gaf.timer\n\n[Install]\nWantedBy=default.target\n\n[Container]\nImage=ghcr.io/edvgui/firefly-gaf:latest\nEnvironment=FIREFLY_III_URL=https://your-firefly-instance/\nEnvironment=FIREFLY_III_ACCESS_TOKEN=...\nEnvironment=FIREFLY_III_RULE_GROUP=an-existing-rule-group-name\nEnvironment=ACCOUNT_NAME=Visa\n```\n\n2. Create a timer unit named `firefly-gaf.timer` in the folder `.config/systemd/user/` of your user with the following content:\n```systemd\n[Unit]\nDescription=Podman firefly-gaf.timer\nDocumentation=https://github.com/edvgui/firefly-gaf\nRequires=firefly-gaf.service\n\n[Timer]\nOnCalendar=*-*-* 23:05:00\nUnit=firefly-gaf.service\n\n[Install]\nWantedBy=timers.target\n```\n\n3. Reload systemd and enable the timer\n\n```console\n$ systemctl --user daemon-reload\n$ systemctl --user enable --now firefly-gaf.timer\n```\n\n## Options\n\nAll options can be provided via cli or environment variables, when both are used, the value provided via cli takes precedence.\n\n| Option | Env var | Description |\n| --- | --- | --- |\n| `-l/--log-level` | `LOG_LEVEL` | The log level of the script. |\n| `-u/--url` | `FIREFLY_III_URL` | The url of the firefly instance where the transactions are available. |\n| `-t/--access-token` | `FIREFLY_III_ACCESS_TOKEN` | The firefly user personal access token required to access and modify the user transactions and rules. |\n| `-g/--group` | `FIREFLY_III_RULE_GROUP` | The name of the group in which the rules should be created. |\n| `--dry-run` | `DRY_RUN` | Whether the script should be executed in read-only mode, only searching for rules to create. |\n| `\u003cargument\u003e` | `ACCOUNT_NAME` | The name of the \"generic\" account, in which the mislabelled transactions can be found. |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedvgui%2Ffirefly-gaf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedvgui%2Ffirefly-gaf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedvgui%2Ffirefly-gaf/lists"}