Local-first · open source with ethical-use clauses

Every account.
One calm picture.

beatrax pulls your bank, credit card, PayPal and app-store subscriptions into a single view of the month — then resolves the chains between them, so you can see what actually paid for what.

No telemetry · no cloud account · no sync server you don't own

The beatrax dashboard showing drift alerts, unusual charges, money in and out for the month, and savings-goal progress.
Next release v2.0

The biggest release yet is close.

Everything below has already landed on the development line. What is left before v2.0 ships is the mobile client as a full sync peer, and getting it into the app stores.

End-to-end encrypted device sync

Your devices reconcile directly with each other — signed change log, CRDT merge, QR pairing with safety numbers, LAN-direct with a relay that only ever holds ciphertext. No account, no server.

Envelope budgeting

Assign every euro, roll balances over, move money between envelopes.

Mobile apps

iOS and Android, each holding their own encrypted copy.

Signed desktop installers

Code-signed builds for macOS and Windows.

Open banking

An optional connector, off by default, with your own key.

Rules engine

Multi-condition rules that rename, categorise, tag and annotate on import.

Migration importers

Bring your budget across from YNAB, nYNAB or Actual.

Report builder

Compose, save and pin your own reports.

See the full roadmap
CAMT.053MT940CSVICS PDFPayPal CSVEmail receiptsOpen banking

Three promises

What you actually get.

It stays on your machine

The database, the OAuth tokens, the cached receipts — all on your disk. No telemetry, no cloud sync, no account to create. When devices do sync, they sync directly to each other, end-to-end encrypted, through a relay that only ever holds ciphertext.

It reads what your bank already gives you

CAMT.053, MT940 and CSV from European banks, ICS credit-card PDFs, PayPal exports. No screen-scraping, no shared credentials. An optional open-banking connector exists, off by default, with your own API key.

It resolves the chains

A PayPal charge funded by your bank. A card purchase settled weeks later in one bulk SEPA debit. beatrax links both ends, so a transaction stops being a mystery line and starts being an answer.

The problem it kills

Your money is spread across six statements that never agree.

The bank shows a €225 card settlement. The card statement shows fifteen purchases. PayPal shows an order the bank calls a transfer. Every month you rebuild the same picture by hand, and every month you give up somewhere near the middle.

beatrax does the reconciliation once, then keeps doing it.

  • Chains a card purchase to the bulk settlement that paid for it.
  • Names the counterparty behind an IBAN you have never seen.
  • Flags a subscription whose price moved while you weren't looking.
Funding chains, resolved
Funding chains, resolved

How it works

Four steps, then it keeps up on its own.

  1. 01

    Drop in a statement

    The setup wizard walks you through your bank, your credit card, PayPal and — if you want it — your email receipts. Every step is skippable and repeatable later.

  2. 02

    beatrax reads and dedupes

    It parses the format, fingerprints every row so re-importing the same file changes nothing, and resolves the counterparty behind each IBAN.

  3. 03

    You confirm the edge cases

    Unknown counterparties land in a keyboard-driven triage queue. Uncategorised rows land in an inbox. One keystroke each, and the rules ripple out to future imports.

  4. 04

    It keeps watch

    Recurring charges are detected, drift is flagged, unusual charges surface, and the forecast projects your balance 30 to 365 days out.

Drop in a statement — 1/9Drop in a statement — 2/9Drop in a statement — 3/9Drop in a statement — 4/9Drop in a statement — 5/9Drop in a statement — 6/9Drop in a statement — 7/9Drop in a statement — 8/9Drop in a statement — 9/9
Stretch the horizon
Stretch the horizon Thirty days to a full year, rescaling as you go.
Clear the inbox
Clear the inbox Assign categories down the list; the rules carry forward.
See the real price
See the real price An app-store charge settles in EUR but was billed in USD.
Jump anywhere
Jump anywhere ⌘K searches views, commands, counterparties and transactions.

What's inside

The whole month, not just the balance.

Every surface below is real — these are screenshots of the app running against a demo dataset, not mockups.

See

This month at a glance

This month at a glance

In, out and net for the period, with the alerts that need you first and the savings goals you're actually moving toward.

Every transaction, filterable

Every transaction, filterable

Search across all retained history, filter by date, account, amount or category, and recategorise inline. Flip to original currency to see what a charge really cost.

Who you actually pay

Who you actually pay

Every merchant, bank, person and self-account that has moved money, with twelve-month totals, monthly averages and a sparkline of recent activity.

Funding chains, resolved

Funding chains, resolved

PayPal funded by your bank, a card purchase settled weeks later in a bulk SEPA debit — beatrax links both ends and shows the fan-out.

Bills on a calendar

Bills on a calendar

Upcoming fixed payments laid out by day, each with a running projected balance so you can see a tight week before it arrives.

Ask your own questions

Ask your own questions

Compose a report from metric, grouping, period, currency mode and filters. Save the ones you keep asking; pin the three you want on the dashboard.

Operate

Envelope budgeting

Envelope budgeting

Assign every euro to a category, carry balances month to month, move money between envelopes, and decide up front what happens when one overspends.

Where the balance is heading

Where the balance is heading

A 30- to 365-day projection across every account, with what-if scenarios you can lay over the baseline to see a dip before it happens.

Savings goals

Savings goals

Set a target and a date; beatrax derives the finish date from your actual cash flow rather than wishful arithmetic.

Pots inside one balance

Pots inside one balance

Carve a real account into named virtual pots that always reconcile back — allocated plus unallocated equals the real balance, always.

Subscriptions, detected

Subscriptions, detected

Recurring charges found in your history, with the monthly total computed across currencies and every occurrence listed.

Reconcile to the statement

Reconcile to the statement

Mark rows cleared, enter the statement balance, and watch the difference converge — or get told exactly how far off it is.

Tax-deductible tagging

Tax-deductible tagging

Tag what's deductible against your country's deduction categories, then export a clean per-year CSV or PDF for your records.

Trust

Price drift alerts

Price drift alerts

When an approved subscription's latest charge moves outside your threshold, it lands here with prior and current amounts and the annualised impact.

Unusual charges

Unusual charges

Charges that deviate from your own baseline — large versus typical, a first-time merchant, a suspected duplicate — surfaced and dismissible.

Triage unknown counterparties

Triage unknown counterparties

A transaction from an IBAN beatrax has never seen lands here with its recent activity. Name it once and every transaction sharing that IBAN is labelled.

A categorisation inbox

A categorisation inbox

Anything that arrived without a category, in a keyboard-driven queue. Number keys assign, arrows move, Enter saves — and the rules ripple forward.

A notification inbox

A notification inbox

Payment reminders, shortfall warnings and over-budget nudges land in a deduplicated inbox with read state synced across your devices.

Your devices, not a server

Your devices, not a server

Pair by QR or word-code, verify by safety number, sync directly over the LAN. The relay fallback only ever holds ciphertext.

App-lock and biometrics

App-lock and biometrics

A PIN or your OS biometric, separate from account login, that re-locks on idle — and is what releases the at-rest encryption key.

A console when you need it

A console when you need it

Ingestion state, queue health, read-only SQL, logs, doctor checks and sync health — visible only when you turn developer mode on.

Privacy

There is no server to trust.

beatrax has no backend. There is no account, no telemetry, no crash reporter phoning home, and no hosted copy of your ledger. The SQLite database lives in your application-support directory and is yours to back up, move or delete.

Sync is peer-to-peer

Devices pair by QR code or a spoken word-code and verify each other by safety number. They talk directly over your LAN when both are awake, and fall back to a relay that only ever stores ciphertext it cannot read.

Encrypted at rest

Each device encrypts its own copy with a key derived from your passphrase and released only by the app-lock. Removing a device rotates the group key and re-wraps it to the devices you kept.

Open-banking stays optional

The connector is off by default and needs your own aggregator key. When on, your machine talks to the aggregator directly — no beatrax server sits in the middle, because there isn't one.

Install

Runs on your desktop.

macOS, Windows and Linux. Every release publishes SHA-256 checksums and a signed manifest, so you can verify exactly what you downloaded.

Every release publishes SHA-256 checksums and a signed manifest.

Read the source. Run it yourself.

Every line of beatrax is public: read it, build it, modify it, fork it. The licence adds ethical-use clauses on top, which is the one thing that keeps it from being OSI-certified — the difference, and the reasoning, are written out in full.