Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



40 Commits

Repository files navigation

Venmo to Lunch Money

A simple SMTP server that transforms Venmo emails into Lunch Money transactions.

This project is just a result of a two-night hack session. I can't guarantee correctness or privacy conciousness.

Use at your own risk.

⚠️ This SMTP server runs with no security or keys, so is only appropriate to run locally. Feel free to fork to improve smtp-server security.

Run with Docker

  1. Install Docker.
  2. Create a docker-compose.yml file with the following contents.
version: '3.8'
    image: billycao/venmo-to-lunch-money
    container_name: venmo-to-lunch-money
      - API_TOKEN=
      - 25:25
      - data:/data
    restart: unless-stopped

  1. Add your Lunch Money access token after API_TOKEN= and then run
docker compose up

Local Installation

Previously, venmo-to-lunch-money used an external service (mailin) to receive emails and POST those emails to it as a webhook.

This had the benefit of allowing the user to run this tool with an alternate SMTP server or any system that sent webhooks.

However due to the lack of maintenance of mailin and other ultra-lightweight email-to-webhook tools I found, I've decided to bundle in the SMTP server as part of venmo-to-lunch-money.

If you're interested in using this tool with a different workflow, feel free to fork or send a PR. :)

Set up venmo-to-lunch-money

  1. Clone the repo:
git clone
cd venmo-to-lunch-money
  1. Add your Lunch Money API Token to config/default.yml.
  api-token: '1234567890123456789013245678901213457890'
  1. Start venmo-to-lunch-money.
npm install
npm build
npm start
  1. Send emails to nobody@localhost.

Where "localhost" is the host at which venmo-to-lunch-money is running. (you may need to set up MX records)


Additonal configuration settings like notes on transactions, currency, etc. can be found in config/default.yml. Regexes and selectors for email parsing can also be found there, so if Venmo changes their email format and something breaks, that would be the first place to look.


I made this as just a 2-day hack. I'll try to maintain it for my own use but have few cycles to contribute.

If you'd like to take over, please feel free to fork it and post on the Lunch Money slack community (avialable to all Lunch Money subscribers).

I'll try to remain responsive to all issues and PRs, and you can reach me at


Express.js server that turns Venmo emails into Lunch Money transactions