Skip to content

Keeps a given Notion database up to date with expenses using Plaid.

Notifications You must be signed in to change notification settings

ejach/notion-budgeter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

notion-budgeter

PyPI PyPI PyPI PyPI

Keeps a given Notion database up to date with transactions using Plaid.

docker-compose.yml

version: '3.7'
services:
  notion_budgeter:
    image: ghcr.io/ejach/notion-budgeter
    container_name: notion_budgeter
    environment:
      - access_token=<access_token>
      - client_id=<client_id>
      - secret=<secret>
      - environment=<development OR sandbox> # optional, defaults to development
      - data_dir=<data_dir>
      - notion_secret=<notion_secret>
      - notion_db=<notion_db>
      - custom_property=<custom_property> # optional
      - excluded=<excluded> # optional
      - icon=<icon> # optional, default 🧾
    volumes:
      - /path/to/data:/path/to/data
    restart: unless-stopped
Variable Description Required
access_token Token associated with financial account (see below)
client_id ID associated with a Plaid account
secret Key associated with environment
data_dir Path to where the database file should be stored
environment What Plaid environment should the program run in (development or sandbox)
notion_secret The secret token associated with your Notion integration
notion_db What Notion database name to write to (case-sensitive)
custom_property Custom property in the format that Notion expects (see below)
excluded Expense name(s) that will not be written to Notion (Example: Walmart or Walmart,Amazon)
icon What icon should the expense have in Notion (Example: 💳)

Installation

Pre-requisites:

NOTE: If you get a "Connectivity not supported" error when using the Quickstart repository to get an access_token, follow this guide.


Expected properties

'Expense' -> type: text
'Amount' -> type: number
'Date' -> type: date

You must format your Notion database to have these properties.

How to format Custom Properties

The program expects a Python-like dictionary:

{'Category': {'type': 'multi_select', 'multi_select': [{'name': '\u2754Uncategorized'}]}}

Or a list of Python-like dictionaries:

{'Category': {'type': 'multi_select', 'multi_select': [{'name': '\u2754Uncategorized'}]}, 
'Comment': {'type': 'rich_text', 'rich_text': [{'type': 'text', 'text': { 'content': 'Hello World' }}]}}

When adding these to your environment, they need to be encapsulated in quotes ""

More information on this format can be found here.

NOTE: Use a Python code beautifier like Code Beautify if you get stuck.