# Monkey Split > Monkey Split is a free, privacy-friendly expense-splitting PWA for groups — roommates, trips, couples, and teams. Track shared expenses with categories and tags, visualize spending with cross-filtering interactive charts, settle balances across currencies with ECB-backed rates, and work fully offline. No ads, no tracking, no account paywalls. Monkey Split runs entirely on Cloudflare's edge (Workers + D1 + Pages) and installs as a standalone PWA on iOS, Android, and desktop. ## Key features ### Expenses - **Freeform categories** — create any category on the fly; autocompletes from past entries in the group - **Tags** — comma-separated tags on any transaction; click a tag anywhere to filter by it - **Flexible splits** — equal, weighted, percentage, or absolute per-member amounts - **Multi-currency per transaction** — each expense has its own currency; group has a base currency - **Recurring expenses** — rent, subscriptions, gym; configured once, projected each period for one-tap confirmation - **Transfers** — log settlement payments between members as transaction type "transfer" ### Visualisation & analysis - **Three interactive charts with cross-filtering:** - *Category breakdown* (donut) — click a slice to filter the other two charts by that category - *Member activity* (bars: paid / received / net) — click a member to filter by them - *Time-period trends* (stacked bar or line, by day/month/year) — click a period to filter by it - Active drill-down filters shown as removable pills; all three charts stay in sync ### Transactions view - **Search** across description, category, and tags (exact or fuzzy match) - **Group by** date, category, payer, currency, or transaction type - **Bulk select** → bulk delete, bulk set category, or bulk add tags - **CSV export** of the current filtered or selected set (Excel-compatible, with conversions and participants) - Compact vs. detailed density toggle ### Settlement - **Optimal settlement plan** — greedy algorithm minimises the number of transfers needed to zero out all balances - **One-tap record settlement** — confirm a suggested transfer and it's logged as a transaction - **PayPal deep-link** — if a payee has set their PayPal username, the settlement row links directly to PayPal.me - "Show my settlements only" toggle ### Multi-currency - 30+ currencies, aligned with ECB's published reference list (EUR + 29 non-EUR) - ECB daily reference rates, fetched once per day via cron (17:00 UTC) and cached in Cloudflare KV - Per-transaction conversions are pre-calculated server-side on first view and stored — no client-side FX math, no rate drift between sessions - Each expense converts using the rate on the date it was spent, not today's rate - Group base currency chosen at creation ### Offline & PWA - Installable on iOS, Android, desktop (standalone display) - All writes go through a local offline queue with merge semantics — e.g. creating then deleting an unsynced expense cancels it without ever touching the server - Automatic sync when the device comes back online - Reads served from a 5-minute stale cache when offline ### Sharing & joining - 6-character invite code per group, with optional password (SHA-256 + per-code salt, no plaintext) - Code is regenerable - Deep-link invites (`/join/:code`) survive the login flow and auto-open the join modal ## Use cases - **Roommates** splitting rent, utilities, groceries — categorised and tagged monthly. See [/guides/how-to-split-rent/](https://monkeysplit.app/guides/how-to-split-rent/) for four fair splitting methods with worked examples. - **Travel groups** tracking mixed-currency expenses across countries with daily trend charts. See [/guides/splitting-vacation-expenses/](https://monkeysplit.app/guides/splitting-vacation-expenses/) for a step-by-step multi-currency workflow. - **Couples** managing shared finances with category and tag breakdowns - **Team lunches, events, or shared subscriptions** with CSV export for reimbursement ## Comparisons Monkey Split is often searched for as a free alternative to Splitwise or Tricount. Neutral comparison pages: - [Monkey Split vs Splitwise](https://monkeysplit.app/compare/splitwise/) — where each wins. Short version: Monkey Split is free where Splitwise gates multi-currency, charts, CSV export, and recurring expenses behind Pro. Splitwise wins on native iOS/Android apps and brand recognition. - [Monkey Split vs Tricount](https://monkeysplit.app/compare/tricount/) — short version: Monkey Split has per-transaction ECB FX (stable balances), cross-filtering charts, and recurring expenses. Tricount wins on account-less link sharing and native mobile apps. ## Pages - [App](https://monkeysplit.app/) — landing page and full web application - [FAQ](https://monkeysplit.app/faq/) — 12 common questions with answers - [vs Splitwise](https://monkeysplit.app/compare/splitwise/) — feature comparison - [vs Tricount](https://monkeysplit.app/compare/tricount/) — feature comparison - [Rent splitting guide](https://monkeysplit.app/guides/how-to-split-rent/) — four methods with worked examples - [Vacation expenses guide](https://monkeysplit.app/guides/splitting-vacation-expenses/) — multi-currency workflow - [Privacy policy](https://monkeysplit.app/privacy/) — GDPR-compliant, no tracking - [Imprint](https://monkeysplit.app/imprint/) — §5 TMG + ECB data attribution - [Sitemap](https://monkeysplit.app/sitemap.xml) ## Tech Built on Cloudflare Workers, D1 (SQLite), Pages, and KV. Auth via Better Auth with httpOnly session cookies. Cloudflare Turnstile on signup. Native Cloudflare rate limiting on auth and share endpoints. Charts use Plotly. React + Vite client with Workbox service worker. Fully edge-run; no origin servers, no third-party trackers, no analytics. ## Data sources - Exchange rates: European Central Bank (ECB) Statistical Data Warehouse, daily reference rates, refreshed via Cloudflare cron at 17:00 UTC. Attribution in [/imprint/](https://monkeysplit.app/imprint/).