Milo12 downloadsPull your bank and credit card accounts, balances and transactions into your vault in a stable, documented format.
Bring your bank and credit card accounts, balances and transactions into your Obsidian vault, kept up to date in a stable, documented format. PassBook is a data layer: sync with one command, then build your own notes, daily summaries, dashboards and scripts on top. No server and no telemetry; it talks directly to your data provider from your device.
api.v1) with a sync-completed event and
published TypeScript types.Try it without an account: in Settings → PassBook, set Data source to
Demo. PassBook then syncs made-up accounts and transactions into a separate
PassBook (demo) folder, with no network use at all.
Your accounts and transactions are plain JSON in the data folder (default
PassBook/json/), in the format documented in docs/schema.md. Turn on
Also save CSV files in settings to get spreadsheet copies as well (in PassBook/csv/
by default). Folder layout lets you keep everything in one folder instead. Templates, scripts and
other plugins can read them through PassBook's API, app.plugins.plugins.passbook.api.v1,
documented in docs/api.md.
examples/templater/passbook_daily.js is a
Templater user script. Copy it into your
Templater user scripts folder and add this to your daily-note template:
<% await tp.user.passbook_daily() %>
Each new daily note then gets something like:
## Balances
| Account | Balance | Available |
|---|---:|---:|
| First Bank · Checking | 12,523.50 USD | 12,473.07 |
| First Bank · Rewards Card | -312.99 USD | |
## New since last sync (2)
| Date | Account | Description | Amount |
|---|---|---|---:|
| 2026-10-09 | Rewards Card | GROCERY MART | -42.50 |
| 2026-10-09 | Checking | PAYROLL *(pending)* | 2,100.00 |
The script only reads data. Run PassBook: Sync now to fetch new transactions first.
PassBook talks only to the data provider you connect, directly from your device. There
is no PassBook server and no telemetry. Every request goes through
src/providers/obsidian-adapters.ts.
SimpleFIN Bridge (needs a paid SimpleFIN Bridge account, about $15/year):
POST to the claim URL inside your setup token, once, to get an access URL.GET <access URL>/accounts when you connect (balances only, to check it works) and
on each sync (accounts, balances and transactions for a date window). A sync of more
than 90 days makes one request per 90 days.Demo mode makes no network requests at all.
Feedback buttons. Report a problem and Suggest a feature in PassBook's settings open a pre-filled form on GitHub in your browser. PassBook itself sends nothing. You see the form, including the optional diagnostic summary (versions, settings and counts, never names or amounts), and nothing reaches GitHub unless you submit it. Buy me a coffee, at the top of PassBook's settings, opens the developer's Ko-fi page in your browser; the Ko-fi logo is bundled with PassBook, so showing it makes no request.
Real bank data needs a SimpleFIN Bridge account, a paid third-party service (about $15/year at the time of writing) that PassBook isn't affiliated with. PassBook itself is free, and demo mode needs no account.
data.json, or anything that syncs. Other devices read the synced data instead.The full picture, including what could go wrong, is in docs/threat-model.md. To report a security problem, see SECURITY.md.
PassBook is free and open source. If it's useful to you, you can buy the developer a coffee on Ko-fi.
Found a problem or have an idea? Use Report a problem or Suggest a feature at the bottom of Settings → PassBook, or open an issue.
Building from source, running the tests and the project's ground rules are in CONTRIBUTING.md.