{"id":21250164,"url":"https://github.com/juftin/lunchable-splitlunch","last_synced_at":"2025-07-15T02:31:49.973Z","repository":{"id":219202873,"uuid":"748425195","full_name":"juftin/lunchable-splitlunch","owner":"juftin","description":"LunchMoney + Splitwise Integration","archived":false,"fork":false,"pushed_at":"2024-04-01T03:00:22.000Z","size":162,"stargazers_count":6,"open_issues_count":4,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-11T03:05:27.488Z","etag":null,"topics":["lunchable","lunchable-plugin","lunchmoney","python","splitwise"],"latest_commit_sha":null,"homepage":"http://juftin.com/lunchable-splitlunch/","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/juftin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","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}},"created_at":"2024-01-25T23:55:22.000Z","updated_at":"2025-01-25T21:31:39.000Z","dependencies_parsed_at":"2024-11-21T04:01:54.181Z","dependency_job_id":null,"html_url":"https://github.com/juftin/lunchable-splitlunch","commit_stats":null,"previous_names":["juftin/lunchable-splitlunch"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/juftin/lunchable-splitlunch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Flunchable-splitlunch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Flunchable-splitlunch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Flunchable-splitlunch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Flunchable-splitlunch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juftin","download_url":"https://codeload.github.com/juftin/lunchable-splitlunch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Flunchable-splitlunch/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265390885,"owners_count":23757605,"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":["lunchable","lunchable-plugin","lunchmoney","python","splitwise"],"created_at":"2024-11-21T03:16:11.668Z","updated_at":"2025-07-15T02:31:49.673Z","avatar_url":"https://github.com/juftin.png","language":"Python","funding_links":[],"categories":["Transaction Import Tools"],"sub_categories":["For the [V1 API](https://lunchmoney.app)"],"readme":"\u003ch1 align=\"center\"\u003elunchable-splitlunch\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\nLunchMoney + Splitwise Integration\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/juftin/lunchable-splitlunch\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/lunchable-splitlunch?color=blue\u0026label=lunchable-splitlunch\" alt=\"PyPI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.python.org/pypi/lunchable-splitlunch/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/pyversions/lunchable-splitlunch\" alt=\"PyPI - Python Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://juftin.github.io/lunchable-splitlunch/\"\u003e\u003cimg src=\"https://img.shields.io/static/v1?message=docs\u0026color=526CFE\u0026logo=Material+for+MkDocs\u0026logoColor=FFFFFF\u0026label=\" alt=\"docs\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/pypa/hatch\"\u003e\u003cimg src=\"https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg\" alt=\"Hatch project\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/astral-sh/ruff\"\u003e\u003cimg src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\" alt=\"Ruff\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/pre-commit/pre-commit\"\u003e\u003cimg src=\"https://img.shields.io/badge/pre--commit-enabled-lightgreen?logo=pre-commit\" alt=\"pre-commit\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/semantic-release/semantic-release\"\u003e\u003cimg src=\"https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\" alt=\"semantic-release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://gitmoji.dev\"\u003e\u003cimg src=\"https://img.shields.io/badge/gitmoji-%20😜%20😍-FFDD67.svg\" alt=\"Gitmoji\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cp float=\"center\"\u003e\n        \u003cimg src=https://assets.splitwise.com/assets/core/logo-square.svg\n            width=\"35%\" alt=\"lunchable\"\u003e\n        \u003cimg src=https://i.imgur.com/FyKDsG3.png\n            width=\"60%\" alt=\"lunchable\"\u003e\n    \u003c/p\u003e\n\u003c/div\u003e\n\n## Run via the Lunchable CLI\n\nYou can install lunchable with `pip` or\n[pipx](https://pypa.github.io/pipx/). Make sure to use the\n`lunchable[splitlunch]` extra to install the `SplitLunch` plugin.\nYou can also use the `lunchable[plugins]` extra to install all the\nknown plugins.\n\n```shell\npipx install \"lunchable[splitlunch]\"\n```\n\n```shell\npip install \"lunchable[splitlunch]\"\n```\n\n## Integrations\n\nThis plugin supports different operations, and some of those operations have prerequisites:\n\n### Auto Importer\n\nIt supports the auto-importing of Splitwise expenses into Lunch Money transactions. This requires\na manual asset exist in your Lunch Money account with \"Splitwise\" in the Name. Expenses that\nhave been deleted or which don't impact you (i.e. are only between other users in your group)\nare skipped. By default, payments and expenses for which you are recorded as the payer are\nskipped as well, but these can be overridden by the `--allow-payments` and `--allow-self-paid`\nCLI flags, respectively.\n\n#### Prerequisites\n\n-   Accounts:\n    -   Splitwise must be in the account name\n\n### LunchMoney -\u003e Splitwise\n\nIt supports the creation of Splitwise transactions directly from synced Lunch Money accounts. This syncing requires you create a tag called `SplitLunchImport`. Transactions with this tag will be created in Splitwise with your \"financial partner\". Once transactions are created in Splitwise they will be split in half in Lunch Money. Half of the split will be marked in the `Reimbursement` category which must be created.\n\n#### Prerequisites\n\n-   Financial Partners:\n    -   If you only have one friend in Splitwise, this is your Financial Partner\n    -   Financial Partners can be individual users or groups and transactions will be split accordingly\n    -   Financial Partners must be specified by their Splitwise Group ID, Splitwise User ID, or Email Address\n-   Tags:\n    -   `SplitLunchImport`\n-   Categories:\n    -   `Reimbursement`\n\n### SplitLunch\n\nIt supports a workflow where you mark transactions as split (identical to `Lunch Money -\u003e Splitwise`) without importing them into Splitwise. This syncing requires you create a tag called `SplitLunch` and a category named `Reimbursement`\n\n#### Prerequisites\n\n-   Tags:\n    -   `SplitLunch`\n-   Categories:\n    -   `Reimbursement`\n\n### LunchMoney -\u003e Splitwise (without splitting)\n\nIt supports the creation of Splitwise transactions directly from synced Lunch Money accounts. This syncing requires you create a tag called `SplitLunchDirectImport`. Transactions with this tag will be created in Splitwise with the total completely owed by your \"financial partner\". The entire transaction wil then be categorized as `Reimbursement` without being split.\n\n#### Prerequisites\n\n-   Financial Partners:\n    -   If you only have one friend in Splitwise, this is your Financial Partner\n    -   Financial Partners can be individual users or groups and transactions will be split accordingly\n    -   Financial Partners must be specified by their Splitwise Group ID, Splitwise User ID, or Email Address\n-   Tags:\n    -   `SplitLunchDirectImport`\n-   Categories:\n    -   `Reimbursement`\n\n\u003e **Note:** Some of the above scenarios allow for tagging of a `Splitwise` tag on updated transactions. This tag must be created for this functionality to work.\n\n## Installation\n\n```shell\npip install lunchable[splitlunch]\n```\n\n## Run the SplitLunch plugin for the Lunchable CLI\n\n```shell\nlunchable plugins splitlunch --help\n```\n\n## Run the SplitLunch plugin for the Lunchable CLI via Docker\n\n```shell\ndocker pull juftin/lunchable\n```\n\n```shell\ndocker run \\\n    --env LUNCHMONEY_ACCESS_TOKEN=${LUNCHMONEY_ACCESS_TOKEN} \\\n    --env SPLITWISE_CONSUMER_KEY=${SPLITWISE_CONSUMER_KEY} \\\n    --env SPLITWISE_CONSUMER_SECRET=${SPLITWISE_CONSUMER_SECRET} \\\n    --env SPLITWISE_API_KEY=${SPLITWISE_API_KEY} \\\n    juftin/lunchable:latest \\\n    lunchable plugins splitlunch --help\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuftin%2Flunchable-splitlunch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuftin%2Flunchable-splitlunch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuftin%2Flunchable-splitlunch/lists"}