Back to SmartSpender

Enable Banking Setup Guide

Connect your Danish bank account to SmartSpender via the Open Banking API. Free for personal use, takes about 10 minutes.

What is Enable Banking?

Enable Banking is a licensed Open Banking provider under PSD2 regulation. It lets you access your own bank transaction data via API, with your explicit consent through MitID. SmartSpender uses this to sync transactions automatically instead of manual CSV exports.

Before you start

Python 3

Check with python3 --version

SmartSpender cloned

The repo with tools/eb-api.py

Danish bank account

With MitID for authentication

Claude Desktop

With Cowork enabled (Pro, Max, Team, or Enterprise)

Setup steps

1

Create an Enable Banking account

  1. Go to enablebanking.com and click Sign up
  2. Create an account with your email
  3. Verify your email and log in to the dashboard

Enable Banking's Restricted production mode is free for personal use. You don't need to pay or register a company.

2

Create an application

  1. In the Enable Banking dashboard, go to Applications
  2. Click Create Application
  3. Select Restricted production mode
  4. Name the application SmartSpender (or whatever you prefer)
  5. Set the Redirect URL to:
https://smartspender.mentilead.com/callback.html

After creating the application, copy the Application ID — you'll need it in step 5.

3

Download your private key

Enable Banking generates an RSA private key for your application. Download the .pem file and save it securely:

mkdir -p ~/.config/smartspender
mv ~/Downloads/private.pem ~/.config/smartspender/private.pem
chmod 600 ~/.config/smartspender/private.pem

Important: This private key can't be downloaded again. If you lose it, you'll need to create a new application.

4

Install Python dependencies

pip install requests PyJWT cryptography

If pip doesn't work, try pip3 or python3 -m pip install requests PyJWT cryptography

5

Create the config file

Create ~/.config/smartspender/eb-config.json with your Application ID from step 2:

{
  "app_id": "your-application-id-here",
  "key_path": "~/.config/smartspender/private.pem"
}
6

Test the connection

From the SmartSpender project directory, run:

python3 tools/eb-api.py status

You should see "status": "no_session" — that's correct. It means the config is valid but you haven't linked a bank yet.

Common errors:

FileNotFoundError — Check that the key_path in eb-config.json matches where you saved the .pem file

ModuleNotFoundError — Run the pip install step again

7

Connect your bank

Start the authorization flow for your bank. This opens a browser where you'll log in with MitID:

python3 tools/eb-api.py auth --bank Nykredit

After MitID consent, the browser redirects to SmartSpender's callback page, which passes the authorization code back to the local script. The session is created automatically.

Supported Danish banks:

Nykredit Danske Bank Nordea Jyske Bank Sydbank Spar Nord Lunar Arbejdernes Landsbank + 50 more via BEC/Bankdata
8

Verify and list accounts

Check that the session is active and list your linked accounts:

python3 tools/eb-api.py status
python3 tools/eb-api.py accounts

The status command shows your session expiry (consent lasts 90 days under PSD2). The accounts command lists all accounts you gave consent for, with their UIDs.

Use with Cowork

You're all set. In Claude Cowork, run these commands:

/smartspender:add-account enable-banking

Registers your accounts in SmartSpender's data files. Cowork will give you terminal commands to run — paste the output back.

/smartspender:sync enable-banking

Fetches transactions. Same pattern: Cowork tells you what to run in your terminal.

/smartspender:analyze

Categorizes transactions and detects subscriptions. This runs entirely in Cowork.

How it works: API calls run locally on your machine (they need your private key). Cowork handles the analysis, categorization, and reporting — which only needs the CSV data files.

Good to know

PSD2 rate limits

You can fetch account data up to 4 times per day per account. The tool tracks this and warns you before hitting the limit.

90-day consent

Bank consent expires after 90 days (PSD2 requirement). You'll need to re-authenticate with MitID when it expires. The status command shows days remaining.

Transaction history

The API provides approximately 90 days of transaction history. Older transactions aren't available through Open Banking.

Your credentials stay local

The private key and session data are stored in ~/.config/smartspender/ on your machine. API calls go directly from your machine to Enable Banking. Nothing passes through SmartSpender infrastructure.