Mavri Get started
  • 100% free and open source
  • AGPL-3.0 license
  • Self-hosted
  • Docker + SQLite
  • UBL and XRechnung export
  • REST API and MCP

Invoicing that stays yours.

Create polished invoices and quotes, keep track of what’s been paid, and run Mavri on your own server. Your business records stay in the deployment you control.

Copy one command to install Mavri

curl -fsSL https://raw.githubusercontent.com/Raktim94/mavri/main/scripts/quickstart.sh | bash

Installs Docker Desktop and git with Homebrew if either is missing, then downloads and starts Mavri. No Homebrew yet? The script tells you how to get it.

curl -fsSL https://raw.githubusercontent.com/Raktim94/mavri/main/scripts/quickstart.sh | bash

Installs Docker Engine (official script) and git if either is missing, then downloads and starts Mavri. Safe to run again.

irm https://raw.githubusercontent.com/Raktim94/mavri/main/scripts/quickstart.ps1 | iex

Sets up WSL2 with the Docker Engine, so no Docker Desktop, then downloads and starts Mavri. The first time, Windows may ask for one restart: restart and run the same command again.

Prefer to do it by hand? · Docker + SQLite · No hosted billing account

Mavri dashboard with a setup checklist, outstanding, overdue and billed totals, and recent invoices. Fictional demo data.
Quote becomes an invoiceA quote sheet on the left is connected by a drawn arrow to an invoice sheet on the right, which then shows a check mark. QUOTE INVOICE
  • Free and open source, AGPL-3.0
  • Windows, macOS and Linux via Docker
  • SQLite, one data folder
  • REST API and MCP server
  • UBL 2.1 and XRechnung export
  • No analytics or tracking
15templates
Freeno paid plans
AGPL-3.0open license
~54 MBsingle container

Billing should feel simple. Your records should remain yours.

Hosted billing tools can make the software easy to start using while placing your records inside someone else’s service. Mavri takes a different route: run the application yourself, keep the database and backups under your control, and use a focused workspace for invoices, quotes, clients, and reports.

Run it on your server
Keep a portable SQLite data store
Use it without a third-party billing account

The essentials for getting paid and staying organized.

01

Invoices and quotes

Build client-ready documents with your business identity, reusable line items, taxes, discounts, terms, and payment details. Convert an accepted quote into an invoice.

Explore documents
02

Know what is outstanding

See billed, paid, overdue, and outstanding amounts from your dashboard. Review document status and payment history as work moves forward.

See the dashboard
03

Records you can take with you

Keep clients, products, business profiles, and document data in your own deployment. Download a backup from Settings, or copy the data folder.

Understand self-hosting
04

Automation when you need it

Connect your billing workflow using the versioned REST API, signed webhooks, and Mavri’s MCP server.

Read the API guide

Features

Everything a small business needs to invoice, in one app.

Mavri ships the core of invoicing and quoting in one container: no plug-ins, no paid tiers, no feature gating.

Invoices and quotesCreate, duplicate and number documents per business. Convert an accepted quote into an invoice.
Taxes and totalsTax per line or per document (added, included or withheld), plus discount, surcharge and shipping.
Payments and statusRecord partial payments. Invoices move through Unpaid, Partly paid, Paid and Void; quotes through Open, Accepted and Declined.
Print or save as PDFA clean invoice view that prints black on white from your browser’s print dialog.
E-invoice exportsDownload UBL 2.1 (Peppol BIS 3.0) and XRechnung 3.0 XML, with a list of any missing fields.
Clients and businessesMultiple business profiles and a customer list with tax IDs and e-invoice details.
Catalog and bank detailsProducts, categories, units, bank accounts and currencies, with archive and restore.
Templates and stylesFifteen print templates, plus saved looks: colour, font, size and columns. Presets fill a business, customer and notes in one step.
Getting paidPayment QR codes (UPI, SEPA) with the details as text, Stripe Checkout, reminders, and a Needs attention list for promises, disputes and overdue invoices.
Tax guidance and languagesDated rates and number checks for India, the UK, the EU, the UAE and the US, with what is missing and what you must decide. Documents in nineteen draft languages.
Drafts, issuing and correctionsInvoices start as drafts and are locked when issued; mistakes are fixed with credit and debit notes. Owner, staff and viewer accounts.
Statements and customersMatch a bank statement to unpaid invoices, see what each customer owes by lateness, and check EU VAT numbers with VIES.
Dashboard and reportsOutstanding, overdue and billed totals, plus billed, paid and outstanding by month and by client.
Backup and restoreDownload your records as one file and restore from it. Copy the data folder for keys and store secrets.
REST API and webhooksAPI keys, a versioned /api/v1 and signed Shopify, WooCommerce or generic webhooks.
MCP server and polishmavri-mcp for AI tools, a guided first run, light and dark themes, and Update now on CasaOS.

Explore every feature

A document your client can understand at a glance.

Add your logo, colors, business details, bank information, notes, and terms. Mavri keeps a snapshot of the details used for each invoice or quote, so later edits to a client or catalog item do not rewrite an existing document.

Print or save as PDF from your browser, then send it your way. Mavri also downloads UBL 2.1 and XRechnung XML for electronic invoicing.

See how documents work
A printable Mavri invoice with a logo, the amount due and a Made with Mavri footer. Fictional demo data.
A printable invoice with logo and amount due. Fictional demo data.

Screenshots

See it in action.

Real screenshots from a running Mavri instance: invoices, quotes and reports. Fictional demo data throughout.

Invoice list with status tabs and counts, and overdue flags. Fictional demo data.
Invoices with status tabs, counts and overdue flags.
Quote list showing open, accepted and declined quotes. Fictional demo data.
Quotes you can convert into invoices.
Billed, paid and outstanding totals by month and by client for a chosen year. Fictional demo data.
Billed, paid and outstanding by month and client.

Browse all 21 screenshots

How to use Mavri

From first setup to your first invoice.

Create your owner account, add your business and a client, then build a quote or invoice. The guide walks through each screen with screenshots.

  1. Install and open

    Copy the command from the quick start, then open localhost:3001.

  2. Set up your business

    Create the owner account and add your business, logo, currency and bank details.

  3. Add clients and items

    Save customers and products you bill often. Both are optional.

  4. Make a quote or invoice

    Add lines and tax, record payments, convert accepted quotes, then print or save as PDF.

  5. Review and back up

    Check the dashboard and reports, and download a backup from Settings.

Self-hosting

Your server. Your database. Your call.

Mavri runs as a Docker deployment with SQLite. You choose where it runs and how it is exposed. The same control comes with responsibility.

Your responsibilityProtect access to the server, use HTTPS when exposing it remotely, keep a tested backup, and update when you choose to.
See installation and backup options
Self-hosting at a glanceA small server, a closed ledger and a backup drive sit together inside a dashed boundary, showing records kept on hardware you control.

Illustration, not the Mavri interface.

Architecture

How it works.

One container, one port, one SQLite database. The same server serves the web app, the REST API and the signed webhooks.

How Mavri is put togetherBrowsers and signed webhooks reach one Mavri container on port 3001, which is a single Go program serving the web app, REST API and webhooks. It stores everything in a SQLite database in the data volume. Browserlaptop, phone or tablet Scripts and shopsAPI key or signed webhook ONE CONTAINER · PORT 3001Mavri serverGo program: web app,REST API and webhooks+ mavri-mcp program in the image SQLitemavri.db in the data volume

One port, one origin

The app and the API share port 3001 by default (change it with HOST_PORT). Session cookies are first-party and there is nothing else to expose.

LAN access built in

Any device that can reach your server can open Mavri in its browser. No per-device app. Put HTTPS in front when it is reachable from the internet.

Data in a volume

The database lives in the data volume. Containers can be rebuilt or restarted and your records stay put. Back it up like any other important folder.

From setup to your first invoice.

  1. Install Mavri

    Start with the documented Docker Compose or CasaOS/ZimaOS path.

  2. Set up your business

    Create the owner account in your own install, then add business details, logo, currency and bank information. Every setup step is skippable.

  3. Add a client and line items

    Keep common clients and products ready for your next document.

  4. Create and track

    Prepare a quote or invoice, then update its status and record payments.

The guided setup that follows account creation: business and logo, currency and bank, first customer. Every step can be skipped.
The guided setup after creating an account. Every step is optional.

The guided first run takes you from account to business, logo, currency, bank details and first customer in a few minutes.

Follow the setup guide

Connect the tools around your business.

Use REST endpoints, signed Shopify and WooCommerce webhooks, or the MCP server to build a workflow that fits your setup.

REST APISigned webhooksMCP server

The API is served by your own Mavri installation. It is for integrations, not a hosted service.

Read about automation
Mavri connected to other toolsA document card in the centre is linked by lines to three nodes, representing the REST API, signed webhooks and the MCP server, and to an envelope. API MCP

Comparison

How Mavri compares.

Against typical hosted invoicing subscriptions and the spreadsheet approach. Hosted products differ, so check the one you are considering.

Mavri versus a typical hosted invoicing service and a spreadsheet
FeatureMavriHosted invoicing serviceSpreadsheet
Software costFree (AGPL-3.0). You pay for your own hostingUsually a subscriptionFree to start
Where records liveYour server, in a SQLite fileThe provider’s serversYour computer or cloud drive
Quotes to invoicesYes, in one stepVariesManual
Partial payments and statusRecorded and trackedVariesManual
Collects card or bank paymentsNo, it tracks payment recordsOften an optionNo
UBL 2.1 and XRechnung XMLYesVariesNo
REST API and webhooksYes, served by your own installVaries, sometimes a paid tierNo
Needs a vendor accountNoYesNo
Backups and updatesYou do themThe provider does themYou do them
Open sourceYes, AGPL-3.0VariesNot applicable

Self-hosting trades convenience for control: you maintain the server, the backups and the updates.

Runs on

Windows, macOS and Linux.

Copy one command: it installs what is missing, downloads Mavri and starts it. Then open localhost:3001.

Windows 10 and 11. Open PowerShell.

Easiest: one command
irm https://raw.githubusercontent.com/Raktim94/mavri/main/scripts/quickstart.ps1 | iex

Sets up WSL2 with the Docker Engine, so no Docker Desktop, then downloads and starts Mavri. The first time, Windows may ask for one restart: restart and run the same command again.

Or do it by hand

  1. 1
    Install Docker Desktop and Git
    winget install -e --id Docker.DockerDesktop winget install -e --id Git.Git

    Restart if asked, then start Docker Desktop. Prefer clicking? See Docker’s Windows guide.

  2. 2
    Download and start Mavri
    git clone https://github.com/Raktim94/mavri.git cd mavri docker compose up -d --build
  3. 3
    Open it
    start http://localhost:3001

Intel and Apple silicon. Open Terminal.

Easiest: one command
curl -fsSL https://raw.githubusercontent.com/Raktim94/mavri/main/scripts/quickstart.sh | bash

Installs Docker Desktop and git with Homebrew if either is missing, then downloads and starts Mavri. No Homebrew yet? The script tells you how to get it.

Or do it by hand

  1. 1
    Install Git and Docker Desktop
    xcode-select --install

    That installs Git. Then get Docker Desktop from Docker’s Mac guide and open it once. Keep it running while you use Mavri.

  2. 2
    Download and start Mavri
    git clone https://github.com/Raktim94/mavri.git cd mavri docker compose up -d --build
  3. 3
    Open it
    open http://localhost:3001

Debian, Ubuntu, Fedora and others. Open a terminal.

Easiest: one command
curl -fsSL https://raw.githubusercontent.com/Raktim94/mavri/main/scripts/quickstart.sh | bash

Installs Docker Engine (official script) and git if either is missing, then downloads and starts Mavri. Safe to run again.

Or do it by hand

  1. 1
    Install Docker Engine and Git

    Follow the official Docker guide for your distribution (with the Compose plugin), install Git, then let your user run Docker:

    sudo usermod -aG docker $USER

    Log out and back in afterwards.

  2. 2
    Download and start Mavri
    git clone https://github.com/Raktim94/mavri.git cd mavri docker compose up -d --build
  3. 3
    Open it
    xdg-open http://localhost:3001
Check your tools and everyday commands
docker --version
docker compose version
git --version

# in the mavri folder
docker compose logs -f     # watch the logs
docker compose down        # stop Mavri
docker compose up -d       # start it again

Home server or NAS? Use the CasaOS and ZimaOS guide. Back up from Settings before you rebuild or update.

After installing

Open it and send your first invoice.

  1. Open http://localhost:3001 (or http://<your-machine-ip>:3001 from another device) and create the owner account: an email and a password of at least 8 characters with letters and numbers.
  2. Follow the short setup, then add a business and a client and go to Invoices → New invoice.
  3. Set the public address under Automation so links in emails and client pages are right. Check health any time: curl http://localhost:3001/api/health.
git clone https://github.com/Raktim94/mavri.git
cd mavri
docker compose up -d --build

Needs Docker with Compose and git. Builds Mavri from source; bash install.sh does the same and waits until Mavri is healthy.

docker run -d --name mavri -p 3001:3001 -v mavri-data:/data ghcr.io/raktim94/mavri:2.5.0

No git and no build. Your data lives in the mavri-data volume.

curl -fsSLO https://raw.githubusercontent.com/Raktim94/mavri/main/casaos/docker-compose.yml

In CasaOS or ZimaOS open App Store → Custom Install → Import and choose that file. It opens on port 8473. Full CasaOS guide.

Updating

On CasaOS open Settings → Updates and press Update now. Elsewhere, pull and rebuild (or pull the newest image and recreate the container). Your data stays in the volume; download a backup first.

cd mavri
git pull
docker compose up -d --build
Behind HTTPS, or on another port

Behind nginx, Caddy or a Cloudflare Tunnel, switch on secure cookies and proxy trust. Change the port with HOST_PORT. Email, online payments and scheduled backups stay off until you configure them in Settings.

COOKIE_SECURE=true TRUST_PROXY=1 docker compose up -d --build
HOST_PORT=8080 docker compose up -d --build

Maintainers do not host or manage your instance, so back up your data folder before relying on it.

Progress

What’s shipped.

Mavri is under active development. This list comes from the project’s own history; there is no dated promise about what comes next.

2.5.0Current version
AGPL-3.0License
~54 MBSingle container
0Analytics or trackers

v2.5

Shipped
  • Bank statement matching: upload a bank CSV and confirm which unpaid invoice each line of money received pays; nothing is recorded until you confirm.
  • Customer pages with what they owe by lateness, and VIES checks of EU VAT numbers; quiet hours and time zones for reminders.
  • India e-invoice JSON prepared for upload (Mavri does not register it), eleven more draft document languages, sales filters, organisation default template, and an automated accessibility check with no violations on the main screens.

v2.4

Shipped
  • Drafts, issuing and a lock: issued invoices cannot change; mistakes are fixed with credit and debit notes, and refunds are recorded.
  • Owner, staff and viewer accounts, idempotency keys and rate-limit headers for the API, and journal and line-item CSV exports.
  • Item codes, service periods and tax reasons on lines, and a second currency shown at a rate you enter.

v2.3

Shipped
  • One-page invoice composer with a live preview, a review checklist, keyboard shortcuts and a browser-kept draft; add a customer without leaving the page.
  • Fifteen templates with a gallery, from a plain ledger to GST, VAT and thermal layouts.
  • Needs attention: a daily list of unpaid invoices, promises to pay, disputes and pauses; clients can reply from the secure link.
  • Payment QR codes for UPI and SEPA with the same details as text; scanning never marks an invoice paid.
  • Tax guidance for India, the UK, the EU, the UAE and the US with dated rates and number checks (unreviewed packs, labelled as such); document languages as draft translations; invoice CSV import, JSON export and an order dry run.

v2.2

Shipped
  • Share and email: secure client links, email through your own SMTP server, and Stripe Checkout payments recorded when Stripe confirms.
  • Automation: reminders, recurring invoices, bulk actions, and signed outgoing webhooks.
  • Safety: activity history, CSV import and export, encrypted and S3 backups, a health page, OpenAPI, and MCP actions that need your approval.

v2.1

Shipped13 October 2026
  • Update now button and updater sidecar for CasaOS, with a version check you can turn off.
  • Guided first run: sign-up with live password checks and a skippable setup wizard.
  • Dashboard: outstanding, overdue and billed totals, a setup checklist, status tabs with counts and overdue flags.
  • Invoice view with brand header and a polished print layout; light and dark themes.

v2.0

Shipped12 October 2026
  • Rewrite: a Go server with SQLite and a React interface in one container.
  • Documents: invoices and quotes, partial payments, quote to invoice, snapshots of the details used.
  • Exports and records: UBL 2.1 and XRechnung XML, reports, one-file backup and restore.
  • Integrations: versioned REST API, signed webhooks and the mavri-mcp server.
  • Migration: mavri-legacy converts databases from earlier versions.

See the full progress page

More from NodeDR

More free, open-source software from NodeDR.

Mavri is one of several products from NodeDR Infotech. Each one runs on your own hardware and keeps your data with you.

NodeDR POS

AGPL-3.0

Retail

Free, offline-first point of sale and inventory for retail shops: barcode checkout, GST billing and ESC/POS thermal printing.

OrderRestro

AGPL-3.0

Restaurants

Free restaurant management and POS: UPI QR payments, GST billing, kitchen display, inventory, staff attendance and payroll, accounting and QR ordering.

Zulivio

AGPL-3.0

CRM

Free, self-hostable telecalling CRM and workforce-operations platform for teams that want to keep their data.

Rechvix

AGPL-3.0

Accounting

Self-hosted billing, inventory, accounting and India GST platform with double-entry accounting, e-Invoice and e-Way Bill. Go and PostgreSQL.

KinetiRx

AGPL-3.0

Pharmacy

Free pharmacy management software you run yourself.

Submify

AGPL-3.0

Forms

A self-hosted form backend: point any website’s contact form at it and read submissions in your own dashboard. Go API, Next.js dashboard, PostgreSQL, export to XLSX and PDF.

NodeDrDial

MIT

Communication

Open-source, self-hosted communication platform for SMS, voice calls, contacts and campaigns, using your own Twilio account.

See all NodeDR projects

Practical notes for independent businesses.

Invoicing

Quote vs. invoice: when to use each

What separates a quote from an invoice, how they move through a job, and how Mavri turns one into the other.

Raktim Ranjit ·

All articles

Questions, answered plainly.

Is Mavri free?

Mavri is open-source software released under the AGPL-3.0 license. Review the license and its terms in the license page.

Where is my invoice data stored?

Mavri uses a SQLite database in the deployment’s data directory or volume. You choose and administer the server where it runs.

Do I need to create an account with Mavri?

Mavri is self-hosted. You create the owner account in your own installation; there is no Mavri hosted billing account required.

Can I create quotes as well as invoices?

Yes. You can prepare quotes and convert an accepted quote into an invoice.

Can I export electronic invoice formats?

Yes. Mavri can download UBL 2.1 (Peppol BIS 3.0) and XRechnung 3.0 XML, and tells you which required field is missing if a document is incomplete. Generated files do not replace review for your own jurisdiction’s rules.

Does Mavri process card or bank payments?

No. Mavri tracks invoice and payment records. It is not a payment processor.

How do I back up Mavri?

Use Settings → Backup to download your records as one file, and copy the whole data folder if you also want the keys and store connections, which a backup file does not include. Keep backups somewhere separate and periodically check that you can restore them. See the backup guide.

Can I connect other software?

Yes. Mavri has a versioned REST API, signed webhooks (Shopify, WooCommerce or any sender that can sign a JSON body) and an MCP server. See the API reference.

Which languages does the interface support?

The interface is in English, and the database is SQLite only.

Mavri is made by NodeDR Infotech Private Limited and maintained by Raktim Ranjit (@Raktim94). It is free, open-source software under the AGPL-3.0 license.

Contribute

Keep your billing workflow under your control.

Install Mavri