{"id":16672864,"url":"https://github.com/bgutter/mint2tiller","last_synced_at":"2025-10-27T20:42:35.646Z","repository":{"id":83119660,"uuid":"233523615","full_name":"bgutter/mint2tiller","owner":"bgutter","description":"Port your Mint transactions export into Tiller Money","archived":false,"fork":false,"pushed_at":"2020-01-13T06:17:11.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-06T01:50:04.219Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bgutter.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2020-01-13T06:07:50.000Z","updated_at":"2020-01-13T06:17:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"a4379a44-cc37-4214-9183-ef93846c8fdf","html_url":"https://github.com/bgutter/mint2tiller","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgutter%2Fmint2tiller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgutter%2Fmint2tiller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgutter%2Fmint2tiller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgutter%2Fmint2tiller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bgutter","download_url":"https://codeload.github.com/bgutter/mint2tiller/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243324266,"owners_count":20273098,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-10-12T12:07:32.812Z","updated_at":"2025-10-27T20:42:35.542Z","avatar_url":"https://github.com/bgutter.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+Title: mint2tiller\n\nThis is a script to convert a transactions export from Mint into a CSV which is compatible with the default Tiller Money spreadsheet template. It will also attempt to deduplicate any transactions which appear in both the Mint export and Tiller's initial data pull.\n\nUnsupported/unmaintained/no warranty. But it worked for me.\n\n*Workflow*\n\n1. Set up Tiller Money with all of your accounts.\n2. Once you have a Google Sheet with your initial data sync (~90 days of data, varying by account), download it as a CSV.\n3. Download all of your transactions from Mint as a CSV.\n4. Run this script, creating \"merged.csv\".\n   1. Recommend to use --verbose and review the output carefully\n5. Upload merged.csv to Google Drive as a new spreadsheet\n6. Double check that everything looks okay\n7. Cut/paste into the transactions page on your Tiller Google Sheet.\n\n*CLI*\n\n#+begin_src sh\npython -m mint2tiller --mint_csv_path=/path/to/mint/transactions.csv --tiller_initial_csv_path=/path/to/initial/tiller/transactions.csv --output_path=/path/to/output.csv --verbose\n#+end_src\n\n*More*\n\nIf you know python, there's an argument to =read_from_mint()= which allows you to arbitrarily remap Mint category names to Tiller Money category names. I ended up not using this, but maybe it works.\n\n*How it Works*\n\nBasically, on a per-account basis, it attempts to determine the cutoff date where Tiller no longer has data. In a window around that date, it tries to match transactions between Mint and Tiller. Transactions without matches are passed to the output CSV. When there is a match, the Tiller transaction is written to CSV, and the Mint duplicate is dropped.\n\nMatches are made based on amount (which should always match). Among all Mint \u003c-\u003e Tiller transactions with the same account name and amount, an alignment is chosen which minimizes the error in terms of transaction date (which for some reason does differ between Mint and Tiller). Description is ignored. Amount and Date are unique enough that this seems to work fairly well, but it will be pretty slow if you have many transactions occurring on the same day. Generally, the complexity of this hacky script O(N) WRT number of days and O(N) WRT number of transactions, but, O(N^2) WRT transactions with the same dollar amount, which are from the same account, occurring within 7 days of the oldest Tiller value for that account. Intuitive, I know.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbgutter%2Fmint2tiller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbgutter%2Fmint2tiller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbgutter%2Fmint2tiller/lists"}