{"id":"2adbb539-25b5-4d2e-bbcc-fe4478477b66","slug":"openbill","kind":"mcp","name":"openbill","summary":"Self-hosted quotes and invoices with custom fields, Liquid templates and EN 16931 e-invoices. REST API and MCP for agents.","owner":"baeroe","repoUrl":"https://github.com/baeroe/openbill","license":"MIT","licenseTier":"permissive","trust":"community","stars":1,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-10-04T15:49:28.000Z","addedAt":"2026-10-21T05:15:54.145Z","logoUrl":"https://avatars.githubusercontent.com/u/35110665?u=7d6d77cf28bfc5edb095eb039f230eb37bd86b7b&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["cloud-infra","files-documents"],"tags":["e-invoice","gotenberg","invoicing","laravel","liquid","pdf","react","self-hosted"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-27T00:50:32.311Z","sample":false,"url":"https://conduits.dev/tools/openbill","language":"TypeScript","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# openbill\n\n[![Tests](https://github.com/baeroe/openbill/actions/workflows/tests.yml/badge.svg)](https://github.com/baeroe/openbill/actions/workflows/tests.yml)\n[![Docker Hub](https://img.shields.io/docker/v/baeroe/openbill?sort=semver&label=docker%20hub)](https://hub.docker.com/r/baeroe/openbill)\n\nOpen, self-hosted quotes, order confirmations, invoices and cancellations. Your own fields on every level, line items in groups, PDF templates in Liquid and EN 16931 e-invoices (ZUGFeRD/Factur-X) – in the browser, over a REST API and for AI agents over MCP.\n\n**Docs: [openbill.dev](https://openbill.dev)** (English and German)\n\n![The document editor: a draft invoice with groups of positions, custom fields, the compliance check and the live preview (the demo company writes its invoices in German)](https://openbill.dev/screenshots/en/editor.png)\n\n## Features\n\n- Quotes, order confirmations, invoices and cancellations, converted along the chain with one click; numbers are assigned when you finalize\n- Custom fields on the organization, customers, contacts, documents and line items\n- Line items in groups with subtotals, optional items in quotes, suggestions from earlier documents\n- Templates in HTML, CSS and Liquid, rendered to PDF by Gotenberg: three built in, a toolkit with live preview for your own\n- E-invoices after EN 16931 as PDF/A-3 with embedded XML; VAT for regular taxation, small businesses (§ 19 UStG), EU reverse charge and third countries\n- REST API (OpenAPI) and an MCP server with scoped tokens\n- English and German, light and dark\n\n## Quickstart\n\nYou need Docker with Compose v2.\n\n**Paste and deploy:** [`docker-compose.standalone.yml`](docker-compose.standalone.yml) is one self-contained stack without `.env`. Paste it into Dockge or Portainer (or save it as `compose.yaml`), change the four values at the top (`APP_URL`, `ADMIN_EMAIL`, `ADMIN_PASSWORD`, `DB_PASSWORD`) and deploy – see [Quick start](https://openbill.dev/en/setup#quick-start-paste-and-deploy).\n\n**With a separate `.env`:**\n\n```bash\nmkdir openbill && cd openbill\ncurl -fsSLO https://raw.githubusercontent.com/baeroe/openbill/main/docker-compose.yml\ncurl -fsSL -o .env https://raw.githubusercontent.com/baeroe/openbill/main/.env.docker.example\n# edit .env: APP_URL, ADMIN_EMAIL and the passwords ADMIN_PASSWORD, DB_PASSWORD, DB_ROOT_PASSWORD\n# (empty in the template: docker compose refuses to start until the database ones are set)\ndocker compose up -d                              # start\ndocker compose pull && docker compose up -d       # update\n```\n\nopenbill listens on port `7739` of the host. Put a reverse proxy with HTTPS in front, set `APP_URL` to its address and log in with `ADMIN_EMAIL` / `ADMIN_PASSWORD` (then remove `ADMIN_PASSWORD` from `.env`; passwords are changed in the app).\n\n- [Setup](https://openbill.dev/en/setup) and [Reverse proxy](https://openbill.dev/en/reverse-proxy)\n- [Backup](https://openbill.dev/en/backup) and [Upgrading](https://openbill.dev/en/upgrading)\n- [Templates](https://openbill.dev/en/templates), [E-invoices](https://openbill.dev/en/e-invoice), [REST API](https://openbill.dev/en/api), [MCP](https://openbill.dev/en/mcp)\n\nImages: `baeroe/openbill` on Docker Hub for `linux/amd64` and `linux/arm64`, tagged `X.Y.Z`, `X.Y` and `latest`.\n\n## Development\n\nLocal development runs in [DDEV](https://ddev.com) (PHP 8.4, MariaDB 11.4, Node 24 with pnpm, Gotenberg); the guide is [Development](https://openbill.dev/en/development). The docs live in [`docs/`](docs) (VitePress): `ddev exec pnpm --dir docs dev`.\n\nThe clickable prototypes in [`prototypes/`](prototypes) (`clickdummy` and `clickdummy-v2` with its `DESIGN.md`) are the design reference the app was built from; they are not part of the app.\n\n## Release\n\nA tag `vX.Y.Z` builds the image for amd64 and arm64, pushes it to Docker Hub and creates a GitHub release with the notes from [`docs/en/upgrading.md`](docs/en/upgrading.md).\n\n## Disclaimer\n\nopenbill is no tax or legal advice and does not guarantee that your invoices, your archive or your processes meet the rules that apply to you (e.g. GoBD, VAT law). Check your setup with your tax advisor. It comes without warranty, see the license.\n\n## License\n\n[MIT](LICENSE)\n"}