Skip to main content

Sync Venmo Balance and Transactions to Lunch Money

This is a small tool for automatically cashing out your Venmo balance so that each individual payment you receive has an associated bank transfer. It also syncs Venmo transaction notes and payees back to Lunch Money.

I built this because I wanted a cleaner way to track Venmo reimbursements. Typically, an incoming Venmo is for a shared expense I've already covered. By syncing the Venmo metadata back to Lunch Money, I can accurately categorize my "true spend" without a mess of unlinked transactions.

Installation

This project uses uv for dependency management.

git clone https://github.com/iloveitaly/lunchmoney-venmo-track
cd lunchmoney-venmo-track
uv sync

Usage

$ lunchmoney-venmo-track --token=XXX --allow-remaining
Your balance is $50
There are 3 transactions to cash-out

 -> Income: +$15.00 -- Mako (Dia beacon museum tickets)
 -> Income: +$15.00 -- David (Dia beacon museum tickets)
 -> Income: +$20.00 -- Randolf (Dinner)

All Venmo transactions processed successfully!

Features

  • Automatic Cashout: Triggers bank transfers for your Venmo balance based on individual received payments.
  • Lunch Money Sync: Matches Venmo transactions to Lunch Money entries by amount and updates them with notes and payee names.
  • Consistent Tracking: Only cashes out amounts that match recent transactions to ensure everything is accounted for.
  • Cron Ready: Includes built-in support for healthcheck heartbeats and internet connection retries for reliable scheduled execution.
  • Structured Logging: Uses structlog for clean, searchable logs in both console and JSON formats.

Consistent Tracking

By default, the tool only cashes out amounts that add up to the most recent transactions. This is useful when the script is running on a cron-job and you want to be sure it never misses an individual payment cash out (This can happen when the tool runs immediately after a payment is received, but before the payment appears in the transaction list).

If you wish to cash-out everything, use the --allow-remaining option. Otherwise, the tool will exit when there is a remainder.

$ lunchmoney-venmo-track --token=XXX --allow-remaining
Your balance is $39.95
There are 3 transactions to cash-out

 -> Income: +$15.00 -- Mako (Dia beacon museum tickets)
 -> Income: $24.95 of extra balance

All Venmo transactions processed successfully!

Lunch Money Integration

The script looks for transactions in Lunch Money which are part of an arbitrary Venmo category; these transactions are matched against previously tracked Venmo transactions by matching the exact amount.

The Lunch Money transaction is then updated with the Payee and Note from the Venmo transaction.

$ lunchmoney-venmo-track --token=XXX --lunchmoney-token=XXX --lunchmoney-category=z-venmo
Your balance is $0.00
There are 0 income transactions to cash-out
There are 1 expense transactions to track

 -> Expense: -$28.29 -- Randolf Tjandra (Volcano curry)

Lunch Money Updates: 1 / 1 transactions matched

 -> Randolf Tjandra (Volcano curry)  LM: 242330937

All Venmo transactions processed successfully!

Getting your API token

You can use uv run python to retrieve your token:

[!IMPORTANT] You may disregard the device-id, we only need the token.

from venmo_api import Client

Client.get_access_token(username="myemail@gmail.com", password="myPassword")

Heartbeat Support

You can specify a HEARTBEAT_URL environment variable to be pinged after each successful execution. This is highly recommended for monitoring your cron jobs. We recommend using Uptime Kuma to monitor these heartbeats.

Environment Variables

You can set the following variables instead of passing flags:

export VENMO_API_TOKEN=
export TRANSACTION_DB=
export LUNCHMONEY_TOKEN=
export LUNCHMONEY_CATEGORY=
export ALLOW_REMAINING=true
export HEARTBEAT_URL=

Credits

Originally forked from evanpurkhiser/venmo-auto-cashout.

MIT License

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lunchmoney_venmo_track-0.1.1.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lunchmoney_venmo_track-0.1.1-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file lunchmoney_venmo_track-0.1.1.tar.gz.

File metadata

  • Download URL: lunchmoney_venmo_track-0.1.1.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for lunchmoney_venmo_track-0.1.1.tar.gz
Algorithm Hash digest
SHA256 223874ed9828eca8cf3474cc11c07850ea928038abd19306287309d6c83b325d
MD5 73ac1b5a3f2248655566ef1efc5ed1ac
BLAKE2b-256 4a67a06f74c5e91fefac245e9bdd09a11afb5d905815699a06f8cdae14d14b80

See more details on using hashes here.

File details

Details for the file lunchmoney_venmo_track-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: lunchmoney_venmo_track-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 11.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for lunchmoney_venmo_track-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f91940820ff156915ed1cd2ee259bc61e608b5b7e8520b5e88a21fd6f88743dd
MD5 b9d0bc289085cfc10571a7cddc0feb45
BLAKE2b-256 dd73e527ccc8ca5cd41d253b9e0704b3e1e8910811e1f23f57086852ab7a16d9

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.0

2 files

This release

0.1.1 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page