SolidInvoice 3.1.2 介绍与选型指南
SolidInvoice 3.1.2 开源计费与开票系统全景介绍:功能特性、Symfony+API Platform 技术架构、部署形态与同类竞品选型对比。
SolidInvoice 3.1.2 介绍与选型指南
目标:面向需要自建计费/开票平台的团队与个人,讲清 SolidInvoice 是什么、能做什么、技术架构如何、部署形态有哪些,并与同类开源竞品做量化选型对比。本文为认知篇,全部信息溯源自官方仓库与官方文档(GitHub SolidInvoice/SolidInvoice、solidinvoice.co),溯源与查询日期为 2026-10-24,未包含本地实测内容。
一、环境信息
本文是认知篇(联网溯源),不涉及本地实验环境。信息取证口径如下:
- 软件:SolidInvoice(开源计费与开票系统)
- 官方仓库:
https://github.com/SolidInvoice/SolidInvoice - 官方网站:
https://solidinvoice.co(营销站与文档入口)、https://solidinvoice.app(官方托管 SaaS 与在线 API 文档) - 官方文档站:
https://solidinvoice.co/docs(Docusaurus 站点,源码位于仓库docs/docs/目录) - 最新稳定版:3.1.2(发布于 2026-10-22,来源:GitHub Releases Atom Feed
https://github.com/SolidInvoice/SolidInvoice/releases.atom,查询日期 2026-10-24) - 许可证:MIT(来源:仓库 3.1.2 tag
composer.json的license字段) - 维护方:SolidWorx(作者 Pierre du Plessis,来源:仓库源码文件头版权声明)
- 社区活跃度取证:GitHub Stars 978、Docker Hub 拉取量约 145k(来源:shields.io 徽章
img.shields.io/github/stars/SolidInvoice/SolidInvoice与img.shields.io/docker/pulls/solidinvoice/solidinvoice,查询日期 2026-10-24)
二、软件概述
SolidInvoice 是一个面向自由职业者与小企业的开源计费与开票(Invoicing/Billing)平台,官方定位为 "The open-source invoicing platform for freelancers and small businesses"(来源:仓库 README,2026-10-24 查询)。它提供报价单(Quote)、发票(Invoice)、周期发票(Recurring Invoice)、客户管理、在线收款、多币种与多税率的完整计费链路,既能作为官方托管服务使用(solidinvoice.app,8 美元/月),也能 100% 自托管(MIT 许可,免费)。
💡 技术拓展:计费/开票类软件按收费模型可分为「按账单收款的开票工具」与「按订阅周期计费的计费引擎」两类。前者面向"给客户开发票"场景(SolidInvoice、InvoicePlane、Invoice Ninja),后者面向"按用量/订阅自动扣款"场景(Kill Bill、Lago)。SolidInvoice 覆盖前者全量能力,并通过周期发票(Recurring Invoice)覆盖轻量订阅场景;本文选型对比按此口径展开。
基本信息速览(来源:仓库 README 与 3.1.2 tag composer.json):
| 项目 | 内容 |
|---|---|
| 软件名称 | SolidInvoice |
| 最新稳定版 | 3.1.2(2026-10-22 发布) |
| 开源许可 | MIT |
| 开发语言 | PHP(要求 PHP 8.4+) |
| 核心框架 | Symfony(3.1.2 依赖 symfony/framework-bundle ^8.1) |
| API 框架 | API Platform 4(api-platform/core ^4.3) |
| ORM / 数据层 | Doctrine ORM 3(doctrine/orm ^3.6)、Doctrine DBAL 4 |
| 数据库支持 | SQLite(内置开箱即用)、MySQL、MariaDB、PostgreSQL |
| 内置 Web 服务器 | Caddy / FrankenPHP(自包含发行形态内嵌,HTTPS 默认开启) |
| 前端栈 | Tabler UI + Bootstrap 5.3、Stimulus、Webpack Encore、Bun |
| 部署形态 | 官方托管 SaaS / Docker / 自包含二进制 / Homebrew / Linux 发行包 / Git 源码 / Helm(Kubernetes) |
版本节奏(来源:GitHub Releases Atom Feed,查询日期 2026-10-24):3.0.0-beta1 → 3.0.0 → 3.0.1 → 3.1.0(2026-10-17)→ 3.1.1(2026-10-17)→ 3.1.2(2026-10-22),3.x 线处于活跃迭代期,patch 版本以周为单位发布。
三、核心架构
SolidInvoice 是一个标准的 Symfony 单体应用(Modular Monolith),按业务域拆分为多个 Symfony Bundle,通过 Doctrine ORM 映射数据库,前端为服务端渲染 + Stimulus 增强。以下架构信息溯源自仓库源码目录结构与官方文档(查询日期 2026-10-24)。
3.1 技术分层
| 层 | 组件 | 说明 |
|---|---|---|
| Web 服务器 | Caddy / FrankenPHP | 自包含二进制与容器化发行形态内嵌,默认 HTTPS(自签证书),可 --disable-https 切换纯 HTTP |
| 应用框架 | Symfony 8.1 系 | 路由、表单、安全(Symfony Security + Voters)、Workflow(发票状态机)、Messenger(异步任务) |
| API 层 | API Platform 4 | 自动生成 REST API(/api/*),支持 JSON-LD/HAL/JSON/JSON:API/XML 内容协商,附带 GraphQL 端点与内置 MCP Server |
| 数据层 | Doctrine ORM 3 / DBAL 4 | ULID 主键、实体级多公司(multi-tenancy)过滤器、数据库迁移(Doctrine Migrations) |
| 计费域 | Payum + MoneyPHP | 支付网关抽象(Stripe、PayPal 等)、金额以 Money 对象表达(避免浮点误差) |
| 前端 | Tabler + Bootstrap 5.3 | 响应式管理界面,Webpack Encore 构建,Bun 作包管理器 |
| 检索 | Meilisearch(可选) | 对发票/客户/报价做全文检索,未配置时回退数据库查询 |
| 可观测 | Prometheus 指标端点(可选)、Sentry(可选) | --enable-metrics 开启 /metrics;Sentry DSN 接入错误监控 |
3.2 业务 Bundle 划分(源码目录证据)
仓库 src/ 目录按业务域组织(来源:仓库 3.1.2 tag 文件树,经 jsDelivr 镜像站取数,查询日期 2026-10-24):CoreBundle(核心配置与遥测)、InvoiceBundle(发票/周期发票)、QuoteBundle(报价)、ClientBundle(客户与联系人)、PaymentBundle(支付与 Payum 集成)、TaxBundle(税率)、UserBundle(用户与 API Token)、ApiBundle(API 鉴权)、McpBundle(AI Agent 的 MCP 服务)、InstallBundle(安装向导)、NotificationBundle(通知)、CronBundle(定时任务)、SaasBundle(托管版相关)等。
3.3 关键运行机制
- 发票状态机:发票走
draft → pending → paid状态流转(README 原文 "Invoice state machine (draft → pending → paid)"),由 Symfony Workflow 组件驱动,逾期自动标记与付款提醒由后台任务完成。 - 后台任务内建:容器化发行、二进制、Homebrew 发行形态中,周期发票生成与异步邮件投递的 worker 随主进程自动运行,无需另配 cron(来源:官方文档
docs/docs/installation-guide/docker.md"Recurring tasks and async work (email sending) run automatically inside the container");仅 Git/发行包安装需要按cron-job-setup.md另行配置。 - 多公司与多租户:单实例可运行多个公司(multi-tenancy out of the box),Doctrine 层做公司数据过滤,API Token 与公司绑定(来源:README 与官方 REST API 文档)。
- 配置目录:应用生成的密钥、安装状态、SQLite 数据库(未接外部库时)统一落在配置目录(容器化发行形态为
/etc/solidinvoice,二进制形态为~/.SolidInvoice/),来源:官方构建文件docker/package.Dockerfile的SOLIDINVOICE_CONFIG_DIR环境变量与docs/docs/installation-guide/quick-install.mdx。
四、功能特性
以下特性清单溯源自仓库 README(2026-10-24 查询):
4.1 计费与开票
- 报价单一键转换为发票;周期发票按灵活计划自动生成。
- 多币种支持:金额使用真实 Money 对象表达,规避浮点舍入误差。
- 多税支持:行级税、发票级税调整,开票时对税率做快照。
- 比例税与固定税两种税型,行级折扣。
- 8 套内置 PDF 发票/报价模板。
- 逾期发票自动检测,可配置逾期通知与按计划的付款提醒。
- 发票状态机:draft → pending → paid。
4.2 客户与联系人
- 客户与联系人全量管理,支持自定义字段(客户、联系人、发票、报价均可扩展字段)。
- 按客户设置币种、地址与联系渠道。
4.3 用户与安全
- TOTP 两步验证(2FA)、Google OAuth 登录、用户邮箱验证。
- 基于 Symfony Security 与 Voters 的角色访问控制(RBAC)。
- 新用户引导清单(onboarding checklist)。
4.4 支付收款
- 通过 Payum 接入自带账号的 Stripe、PayPal 等网关。
- 发票附带在线支付链接;卡数据不经自托管服务器,天然规避 PCI 合规负担。
4.5 集成与 API
- REST API(JSON-LD、JSON-HAL、JSON、XML),由 API Platform 4 驱动,
X-API-TOKEN令牌鉴权,实例自带/api/docsSwagger UI。 - 内置 MCP Server(OAuth2 授权),支持 AI Agent 自动化操作业务数据。
- Meilisearch 全文检索集成;网格导出与全公司数据导出(CSV/JSON/XML)。
- 通知通道覆盖邮件、短信与聊天渠道(Symfony Notifier 生态,仓库 composer.json 中含 Telegram/Slack/Twilio/Amazon SNS 等数十个 Notifier 桥接)。
4.6 隐私与工程化
- 100% 可自托管:数据库归自己管,MIT 许可允许 fork 与二次分发。
- 密钥加密存储、ULID 主键、PHPStan level 6 静态分析、PHPUnit 测试与 GitHub Actions CI(来源:README "Modern Stack" 小节)。
- Kubernetes Helm charts 与可选 Prometheus 指标端点。
五、快速开始(最小可用示例)
以下命令均引自官方文档(未做本地实测),用于建立对启动成本的直观认知。
方式一:官方容器化发行(来源:官方文档 docs/docs/installation-guide/docker.md):官方在 Docker Hub 发布多架构发行物 solidinvoice/solidinvoice,单条启动命令即可拉起应用(监听 8765 端口,配置目录 /etc/solidinvoice 挂载持久卷),首次访问进入安装向导完成数据库与管理员配置。完整编排与落地过程见本专栏《SolidInvoice 3.1.2 Docker Compose 部署指南》。
方式二:自包含二进制(来源:官方文档 docs/docs/installation-guide/quick-install.mdx):
# 一键安装脚本,装到 /usr/local/bin(默认装最新稳定版,可用 VERSION=3.1.2 指定)
curl -fsSL https://raw.githubusercontent.com/SolidInvoice/SolidInvoice/3.0.x/packaging/install.sh | sh
solidinvoice run
二进制内嵌 PHP 运行时与 Caddy Web 服务器,无需单独安装 PHP/Composer/Nginx;默认监听 https://localhost:8765(自签证书),SQLite 数据库开箱即用,装完即进入安装向导。
健康检查(来源:官方文档 quick-install.mdx):
curl http://localhost:8765/health
# 应用正常运行时返回 OK(HTTP 200)
API 侧最小示例(来源:官方文档 docs/docs/api/rest-api.md;令牌在 Web 界面 Settings → API Keys 创建):
curl -H "X-API-TOKEN: <your-token>" \
-H "Accept: application/ld+json" \
https://your-instance.example/api/invoices
⚠️ 说明:正式部署(含 MySQL + 数据持久化 + 定制环境变量)建议直接使用 Docker Compose 编排,官方仓库根目录提供了
docker-compose.yml(app + mysql:8.0 两服务)示例;完整落地过程见本专栏《SolidInvoice 3.1.2 Docker Compose 部署指南》。
六、适用场景与限制
6.1 适合的场景
- 自由职业者/小企业自建开票:报价、开票、收款、提醒全链路闭环,零许可成本。
- 对数据主权有要求的团队:MIT 许可 + 全量自托管,发票与客户数据不出自有服务器。
- 需要 API 集成的业务流:REST API + GraphQL + MCP Server 三种集成面,适合接入 ERP、报表或 AI Agent 自动化。
- 多主体记账:单实例多公司,代理记账/多品牌经营场景友好。
6.2 已知限制(官方口径)
- 无原生 Windows 版:自包含二进制仅支持 64 位 Linux(x86_64/arm64)与 macOS(Intel/Apple Silicon),Windows 需走 WSL2(来源:
quick-install.mdx)。 - 数据库依赖:SQLite 适合小规模与试用,生产并发场景官方推荐接 MySQL/MariaDB/PostgreSQL(来源:安装向导文档
system-installation.md)。 - 托管版差异:托管版(8 美元/月)移除 SolidInvoice 品牌、自动更新与备份、新特性先享;自托管版这些均需自理(来源:README Self-Hosted vs Hosted 对比表)。
- 3.x 为活跃开发线:3.1.x 以周为单位发版,升级需关注仓库
UPGRADE.md。
七、同类选型对比
对比数据取证口径:竞品定位与许可来自各竞品官方站点/仓库公开信息与 SolidInvoice 官方对比页(solidinvoice.co 下 vs-invoice-ninja、vs-freshbooks、vs-quickbooks、vs-wave、vs-zoho-invoice 等页面,2026-10-24 查询);SolidInvoice 数据同本文第二、七节来源。Star 数为 shields.io 徽章读数(SolidInvoice 978,查询日期 2026-10-24;竞品未逐一取证,以「同类平台已有专栏」标注供横向定位)。
7.1 与同类自托管开票平台对比
| 维度 | SolidInvoice 3.1.2 | Invoice Ninja | InvoicePlane | Kill Bill / Lago(订阅计费引擎) |
|---|---|---|---|---|
| 开源许可 | MIT | Invoice Ninja:Elastic License 约束的自托管 + 付费白标 | MIT | Kill Bill:Apache-2.0;Lago:AGPL-3.0 系 |
| 技术栈 | PHP 8.4 + Symfony 8.1 + API Platform 4 | PHP (Laravel) | PHP (CodeIgniter 系) | Java(Kill Bill)/ Ruby(Lago) |
| 定位 | 全链路开票 + 轻量周期计费 | 全链路开票,功能面广,白标需付费 | 纯开票,轻量,功能收敛 | 订阅计量计费引擎,不含开票 UI 完整闭环 |
| API | REST(4 种格式)+ GraphQL + MCP | REST API | REST API(插件形态) | REST API 为主,面向计费集成 |
| 数据库 | SQLite/MySQL/MariaDB/PostgreSQL | MySQL/MariaDB | MySQL/MariaDB | PostgreSQL/TiDB(Kill Bill) |
| AI/自动化 | 内置 MCP Server(OAuth2)+ 通知渠道矩阵 | Webhook/ Zapier 生态 | 无内建 | 事件驱动 |
| 上手成本 | 低(单二进制/单容器发行物,向导安装) | 中(含 self-host 配置项多) | 低 | 高(需理解订阅/计费域模型) |
选型解读:要"从 0 到 1 快速自建开票系统且保留 API 自动化能力",SolidInvoice 与 Invoice Ninja 同档;SolidInvoice 的差异化在 MIT 许可(商用无白标限制)、内嵌运行时带来的极低部署成本(单二进制/单容器发行物)、以及 MCP/GraphQL 等新形态集成面。若只需要"手工开票"且极简,InvoicePlane 足够;若核心诉求是用量计费/订阅扣款引擎,应选 Kill Bill 或 Lago 而非开票工具。
7.2 社区活跃度与版本节奏量化
| 指标 | 取值 | 取证来源 |
|---|---|---|
| GitHub Stars | 978 | shields.io 徽章(2026-10-24) |
| Docker Hub 拉取量 | 约 145k | shields.io 徽章(2026-10-24) |
| 最新版本发布密度 | 3.1.0/3.1.1(2026-10-17)、3.1.2(2026-10-22) | GitHub Releases Atom(2026-10-24) |
| 官方文档完整度 | 安装(Docker/二进制/Homebrew/发行包/Git/Helm/Proxmox)、API、集成、功能指南齐全 | 官方文档站目录(2026-10-24) |
| 官方托管服务 | solidinvoice.app(8 美元/月) | 官网 Pricing(2026-10-24) |
💡 说明:978 Star 属中小体量项目,但版本以周为单位持续发布、官方文档站完整度高、且有商业托管服务兜底(商业收入反哺开源维护),工程活跃度高于同 Star 体量的一般项目。对"开票"这类长周期使用的业务系统,维护活跃度比 Star 数更重要。
7.3 兼容矩阵
| 维度 | 支持情况 |
|---|---|
| 操作系统 | 64 位 Linux(x86_64/arm64)、macOS;Windows 经 WSL2 |
| PHP | 8.4+(自包含发行形态无需自装 PHP) |
| 数据库 | SQLite(内置)、MySQL、MariaDB、PostgreSQL |
| 容器化发行 | 官方多架构容器发行物 solidinvoice/solidinvoice(major/major.minor/major.minor.patch/latest 标签体系,来源:仓库 docker-bake.hcl) |
| Kubernetes | 官方 Helm chart(仓库 helm/ 目录) |
| 支付网关 | Payum 生态(Stripe、PayPal 等,自带网关账号) |
| 检索/监控 | Meilisearch(可选)、Prometheus /metrics(可选)、Sentry(可选) |
八、参考链接
- 官方仓库:https://github.com/SolidInvoice/SolidInvoice
- 官方网站:https://solidinvoice.co
- 官方文档站:https://solidinvoice.co/docs
- 官方 REST API 文档:https://solidinvoice.co/docs/api/rest-api(实例内 Swagger UI:
https://<your-instance>/api/docs) - Docker Hub 镜像:https://hub.docker.com/r/solidinvoice/solidinvoice
- 版本发布列表:https://github.com/SolidInvoice/SolidInvoice/releases
- 本专栏部署落地:《SolidInvoice 3.1.2 Docker Compose 部署指南》