Skip to content
gadmin2151Public

About

Self-hosted personal finance with receipt scanning, a native Android app, shared workspaces and an AI assistant grounded in your own records.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Finora Personal Finance — English web overview with fictional demonstration data

Finora · Personal Finance

Turn everyday receipts into a clearer picture of your money.

Scan a purchase. Understand your spending. Plan what comes next.
A shared finance workspace that runs on your own server.

Server and web CI Android CI MIT license Android 8 and newer Docker for amd64 and arm64

Get started  ·  Download Android  ·  Screenshot gallery  ·  Русский


The current wallet includes debt repayments and shows balances separately from monthly income. Adjust an account with an auditable add/subtract/set action, and open spending categories to explore their receipt items. Wallet and chat guide →

Know who added each receipt. Filter receipts and purchases by their author, and compare category spending for each participant. Missing item categories are assigned when you confirm a manual or corrected receipt; your explicit category choices stay intact. Receipt authors and categories →

Cash and cards: your choice

Choose Settings → Money tracking on the web, or profile → Money tracking on Android. All together merges every MDL account into the primary account: opening balances are added, transactions, receipts and plans are reassigned, and the empty source accounts are removed. Amounts, categories and receipt originals stay intact. New transactions use the single account. Switch to separate mode to create new accounts; the merged history stays on the primary account. Existing foreign-currency accounts remain separate without automatic conversion.

Use Set current balance on Overview or Accounts to enter how much you actually have now. Future transactions change that balance. The difference is an auditable correction rather than monthly income or expense; opening balances and transaction history are not overwritten.

Make the little purchases add up to insight

A bank balance tells you how much is left. Finora helps you understand what you bought, where the money went, and what is still coming up. Keep the receipt, explore the items behind the total, and share the same picture with your household or team.

What you can do
📷 Capture without retyping Scan a receipt QR, upload photos, or capture a long receipt from top to bottom on Android. Review the recognized items and total before confirming a mobile import.
🧾 Go beyond the total Search purchases by name, category, store, date, account, currency or unit. Compare prices paid across your own receipts. Keep the original images alongside the results.
💸 See the whole month Track income, expenses, accounts, transfers, refunds, budgets and scheduled bills. Separate recurring income from occasional payments.
🤝 Keep debts clear Record money lent or borrowed, repay part or all of it, and add to an existing debt. Each movement keeps its account, date and history. Available on web and Android.
✨ Ask better questions Ask the optional AI assistant about spending, periods and products. Answers come with reports calculated from your organization's records.
🏡 Share a workspace Use separate organizations for a household or team. Switch between them with one account, assign roles and manage access from the web.

Built for the moment you get the receipt

1. Capture
QR, gallery or a vertical scan
2. Review
Check the items, categories and total
3. Understand
See the month in one place
Native Android receipt capture with QR, camera and gallery options, dark theme Native Android review of a fictional receipt with merchant, total and product categories Native Android monthly overview with fictional income, expenses and categories, light theme

You stay in control. Correct the merchant, address, date, quantities, prices or categories before confirming. Recognition can leave uncertain fields for review; a missing total is never silently replaced with a guess.

The phone opens receipt websites through its own network, then sends the page text and screenshots to your Finora server for processing. One server-side AI key can serve your devices. Long-receipt stitching happens locally on the phone. Capture guide and limitations →

A workspace that feels like yours

Mint, warm gold and a little more breathing room. On the web, choose Classic (signature green), White, or Material Black (neutral charcoal surfaces with mint accents). The toolbar cycles all three instantly; profile settings also offer the system appearance. Android retains its system, light and dark options. Preferences are saved independently on each device.

Light, clear and calm Dark, focused and comfortable
Finora web dashboard in light theme with fictional demonstration data The same Finora web dashboard in dark theme with fictional demonstration data

Explore purchases, reports, the assistant and mobile finances →
Actual application screens. All people, organizations and financial records shown are fictional.

Enter a receipt manually

Organization administrators can create a receipt without a photo, QR code, AI service or imported bank transaction. On the web, open Receipts → Add receipt → Manual. On Android 1.12+, open the central Add tab → Manual receipt.

Enter the store, date, payment account and items. Quantity × price fills each line total; edit a line total to include a discount. Finora adds the lines and, after confirmation, records one receipt and one account expense with category breakdowns. You can attach an original later. A failed connection can be retried without duplicating the expense. Regular members keep their existing upload and review permissions.

Your language, from the first sign-in

English and Russian are available in both the web and native Android apps. Choose a language on the sign-in screen, or change it later under My profile → Interface language on the web and avatar → Language on Android.

The default Device language option uses Russian when the device's primary language is Russian, and English otherwise. An explicit choice is remembered on that browser or phone, including after signing out. Names, receipt contents and other information you enter stay exactly as you entered them.

Choose before signing inChange it in your profile
Finora English sign-in screen with the language selector Finora English profile settings with language and appearance choices

English screen gallery · Русские экраны · Language guide

Ask your records, get the numbers

“Compare groceries in August and September.”
“Find my LAPTE purchases.”
“Where did I pay less for the same product?”

Finora's assistant searches and explains your own records. The backend validates the request and calculates reports; the AI adds an explanation. Follow-up questions keep context, and purchase results link back to their receipts.

Finora AI stays available in the lower-right corner of the web interface, knows the current page and can open a section on request. Expand the conversation for a full-height workspace. Ask about balances, debts, income plans, transactions and budgets, or compare receipt spending by user across the full recorded history. Budgets offers both cards and a compact category list, sorted by spending from largest to smallest.

  • Useful without AI: preset summaries, category reports and price comparisons work without a provider.
  • Choose your provider: OpenAI with an encrypted server-side key, or optional Ollama on your own hardware.
  • Read-only by design: the chat cannot move money, post expenses or delete records.
  • Clear data boundaries: only the selected organization's data is used. Recognition content and context needed for an answer are sent to the configured provider when AI is enabled.

Price comparisons use historical purchases, not live shop offers. How the assistant works →

Get started

Run locally with Docker

Install Docker with Compose, Git and Python 3.11+, then:

git clone https://github.com/gadmin2151/Finora.git
cd Finora
python3 scripts/init.py
python3 scripts/deploy.py

Open localhost:8088. Sign in as admin using the random initial password in .secrets/admin_password, then change it in Settings → Security. There is no shared default password or public registration.

Put it on your server

The installer supports Debian 12 / 13 and Docker images for amd64 / arm64:

sudo apt-get update
sudo apt-get install -y git
sudo git clone https://github.com/gadmin2151/Finora.git /opt/finora
cd /opt/finora
sudo ./scripts/install-debian.sh --domain finance.example.com

Replace the domain with your own. Caddy needs DNS pointing to the server and ports 80/443 for automatic HTTPS. Prefer a tunnel? Use the Cloudflare Tunnel guide.

Connect Android

Download the signed APK and view installation instructions →

Enter your server's HTTPS URL, username and password, then choose an organization. The native app supports receipt capture and review, history, monthly overview, income, debts and the assistant. Administration screens are available in the web interface.

Installation, updates and recovery · Full Russian manual · Configuration reference

Your server, with clear boundaries

Area Current support
Clients Responsive web interface and native Android 8+. No native iOS app yet.
Language English and Russian web/Android interfaces; device-language default and a saved manual choice. Receipt recognition is independent of the interface language.
Money MDL reports; MDL, EUR, USD and RON accounts, with the exchange rate saved on each transaction.
Receipts Photos, electronic receipt pages including Moldova's MEV/SFS, multiple photos and bank payment confirmations. Provider availability and image quality affect recognition.
Categories 34 everyday presets, including groceries, sweets, coffee, energy drinks, tobacco and household supplies. Custom rules and reclassification of existing receipts.
Access Organization-scoped data, administrator/member roles, password resets, session revocation and recoverable organization/user deletion.
Data PostgreSQL plus private receipt files on your server. Encrypted backups and a recovery procedure. Records are not end-to-end encrypted.
Banking Manual entry and receipt import. Automatic bank-account synchronization is not included.

Finora is actively developed. Review recognized data before posting and keep backups of the database, receipt files and server secrets. Security policy · Backup and restore

Built to be understood and extended

FastAPI · PostgreSQL 17 · React / TypeScript · Kotlin / Jetpack Compose · Docker Compose

flowchart LR
    Web[Web app] -->|HTTPS| API[Finora API]
    Android[Android app] -->|HTTPS| API
    Android -->|Phone network| Receipt[Receipt websites]
    API --> Database[(PostgreSQL)]
    API --> Originals[Private receipt originals]
    Worker[Background worker] --> Database
    Worker --> Originals
    Worker --> AI[Optional OpenAI / Ollama]
Loading

Server CI checks tests, migrations, formatting, dependencies and both container architectures before publishing images. Android CI checks formatting, unit tests, release lint and the release build. See the workflows above for the latest results.

Explore Guide
Install, update or restore Deployment · Русская инструкция
Set up your phone Android · Long receipts
Manage shared finances Organizations and users · Mobile income and debts
Choose your interface language English and Russian · Bilingual screenshots
Understand the calculations AI and reports
Contribute or report a problem Developer guide · Issues · Security

Have an idea that makes everyday finance simpler? Open an issue with the use case. Contributions to receipt handling, accessibility, translations and documentation are welcome; use synthetic examples instead of personal financial data.

The public service's bilingual privacy policy is also linked from Android sign-in and profile screens. Self-hosted operators control their own server data and backups.


Your receipts. Your money. Your server.
Built by gadmin2151 · 27G Finora · MIT license

About

Self-hosted personal finance with receipt scanning, a native Android app, shared workspaces and an AI assistant grounded in your own records.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages