Browse / Invoicing and finance
Inkvoice
One-container invoicing for freelancers: Stripe and PayPal, expenses, German e-invoicing, REST API.
Inkvoice is a Bun + Hono + React invoicing app in a single ~50 MB container with SQLite: invoices, quotes, recurring billing, online card payments, expenses, multi-currency reports and an opt-in ZUGFeRD/XRechnung/PEPPOL module for Germany. Deployment is an env table; day-to-day settings and Mustache templates are in-app. A REST API under /api/v1 mirrors the UI. MIT; a managed Cloud exists.
- I am a freelancer who wants invoices and card payments on a €5 VPS with my data in one SQLite file
- I invoice German businesses and need XRechnung or ZUGFeRD without a per-seat subscription
- COOKIE_SECURE defaults to true, so logins silently fail on plain HTTP unless you set it to false
- Keep the 512 MB memory cap or Bun grows its heap
- API tokens with scopes exist in routes/api-tokens.ts but the docs only describe JWT login
- Real-software signal is thin: 21 stars, 8 forks, issues from four people; kept on the Show HN thread, Dokploy template and hosted Cloud
Last activity Sep 2, 2026. Fit: adaptable 3, operable 2.
Editions
Self-hosted · Free open source
Inkvoice Cloud · Free closed source
- HostedOpen the hosted app
Adaptable: what is yours to change
Make it yours
Config only28 things to edit
Set JWT_SECRET and ADMIN_PASS and you are running; add SMTP to send invoices, Stripe or PayPal keys to take payments, OIDC for SSO, and a peppol.sh key for e-invoice transport. Currency, locale, numbering, logo and email and PDF templates (Mustache) are edited in Settings, not files. That is the whole surface for a freelancer or small team.
- Env vars
ADMIN_USERADMIN_PASSJWT_SECRETDATABASE_PATHPORTPUBLIC_BASE_URLCOOKIE_SECUREENABLE_HSTSSMTP_HOSTSMTP_PORTSMTP_USERSMTP_PASSSMTP_FROMSTRIPE_SECRET_KEYSTRIPE_PUBLISHABLE_KEYSTRIPE_WEBHOOK_SECRETPAYPAL_CLIENT_IDPAYPAL_SECRETPAYPAL_WEBHOOK_IDPAYPAL_ENVOIDC_ISSUER_URLOIDC_CLIENT_IDOIDC_CLIENT_SECRETPEPPOL_SH_API_KEYPEPPOL_SH_WEBHOOK_SECRETDEMO_MODE- Config files
.envdocker-compose.yml- Prompt files
- none
- Accounts you need
- Stripe or PayPal (optional)SMTP provider (to email invoices)peppol.sh (PEPPOL transport, optional)OIDC provider (SSO, optional)
Source
- github.com/pigontech/inkvoice
- MIT license
- Last commit Sep 2, 2026
- 21 stars
Operable: what an agent can drive
Interface
OfficialAPIpublished by the builderlocal
How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.
Reach
Complete coverage. 10 of 10 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| Invoice lifecycle: draft, send, paid, void, duplicate | Reachable | docs/api/invoices.md; /api/v1/invoices |
| Quotes and conversion to invoices | Reachable | docs/api/quotes.md; /api/v1/quotes |
| Recurring invoices | Reachable | packages/backend/src/routes/recurring.ts; not in the docs index |
| Online payments with Stripe and PayPal | Reachable | public /api/v1/public/invoices/:shareToken/pay; keys from STRIPE_* and PAYPAL_* env |
| Expense tracking | Reachable | packages/backend/src/routes/expenses.ts; not in the docs index |
| German e-invoicing and PEPPOL send/receive | Reachable | packages/backend/src/routes/einvoice.ts; docs/features/e-invoicing.md |
| Reports and CSV export | Reachable | docs/api/reports.md; routes/export.ts |
| Customers and products | Reachable | docs/api/customers.md, products.md |
| Invoice and email templates | Reachable | docs/api/templates.md; docs/TEMPLATE_VARIABLES.md |
| Users and roles | Reachable | routes/users.ts; multi-user with role-based permissions |
Code stack
- Languages
- TypeScript
- Frameworks
- BunHonoReact 19ViteTailwindshadcn/ui
- Package manager
- bun
- Database
- SQLite
- Hosting target
- Docker (ghcr.io/pigontech/inkvoice)Dokploy templateCoolify
- Built
- Mixed (recorded, never ranked)
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | single Docker container serving API and SPA (README Tech Stack) | 95% |
| executionModel | no model at runtime | 95% |
| operability | REST API documented at docs.inkvoice.app/api by the Builder; docs/api/*.md in repo | 85% |
| effort | README Configuration table and .env.example name every variable; Settings page holds runtime knobs | 90% |
| editions | README: MIT source, Inkvoice Cloud managed; no Cloud price found | 60% |
| active | GitHub pushedAt 2026-09-02; Show HN 2026-08-11; release tag 0.1.0 | – |
| reach | 80% |
Open questions
- Inkvoice Cloud pricing (site and cloud pages rendered without content for the fetcher)
- Whether API tokens are documented anywhere for agents, or JWT login is the intended path
- Gate 3 borderline; Curator to confirm
Sources
- github.com/pigontech/inkvoice sourcing:invoicing-finance:community
- docs.inkvoice.app/api/ analysis:invoicing-finance
- dokploy.com/templates/inkvoice analysis:invoicing-finance