InvoicePlane 介绍与选型指南
InvoicePlane 自托管开源发票管理系统介绍与选型指南:定位与社区身份、CodeIgniter 3 + PHP 8.2 架构与 25 个业务模块、功能特性清单、官方安装主线、适用场景与无 REST API 等限制,以及与 Invoice Ninja、Crater、InvoiceShelf、Kill Bill 的量化选型对比。全部事实溯源官网与 GitHub 官方渠道,查询日期 2026-10-24。
InvoicePlane 介绍与选型指南
目标:面向正在评估"自托管开票/收款系统"的读者,系统介绍 InvoicePlane 的定位、架构、功能、安装主线与同类竞品差异,帮助完成选型决策。本篇为认知与选型篇,全部事实均溯源官方渠道(官网 invoiceplane.com、GitHub InvoicePlane 组织与 v1.7.2 官方源码/文档),溯源渠道与查询日期在"环境信息"中逐项标注;部署与配置的本地实测内容见 《InvoicePlane 1.7.2 Docker Compose 部署指南》、《InvoicePlane 1.7.2 配置参数详解》 与 《InvoicePlane 1.7.2 常用 CLI 命令与任务调度详解》。
一、环境信息
本篇是认知/选型篇,不做本地部署实测,以下为取证渠道清单(全部于 2026-10-24 查询):
| 渠道 | 用途 | 关键结论 |
|---|---|---|
| https://invoiceplane.com (官网首页) | 产品定位、下载版本 | 最新稳定版 v1.7.2;累计下载超 10 万次、覆盖 193 个国家/地区 |
| https://github.com/InvoicePlane (组织页,16 个仓库) | 社区/生态全景 | 主仓库 3.2k stars、886 forks、61 个开放 issue,最近更新 2026-10-23 |
| https://github.com/InvoicePlane/InvoicePlane/releases.atom (发布流) | 版本节奏 | 最新稳定版 v1.7.2(此前 1.7.1、1.7.0、1.6.5 等),另有 v1.7.2-rc/beta 预发布序列 |
| 官方 v1.7.2 源码树(git tag v1.7.2,提交 aaeea1e,2026-08-27) | 架构、模块、许可、容器契约 | CodeIgniter 3 + PHP 8.2 + MariaDB/MySQL,MIT 许可 |
| https://wiki.invoiceplane.com/ (官方文档站) | 安装与使用文档入口 | 官方 Wiki,覆盖安装、配置、模板开发 |
💡 说明:任务常见误区是 InvoicePlane 有"基金会仓库"。实测核查 GitHub 上不存在
getinvoiceplane/ipfw仓库(shields.io 返回 repo not found),项目实际以 GitHubInvoicePlane组织为核心进行社区治理,组织内含主程序、v2 开发分支、Docker 开发栈(ivpldock)、电子发票模板(e-invoices)、官方主题(Themes)等 16 个仓库。
二、软件概述
InvoicePlane 是一款自托管(self-hosted)的开源发票管理应用,用于管理报价单(Quotes)、发票(Invoices)、客户(Clients)与收款(Payments),覆盖"报价 → 开票 → 收款"的完整业务闭环。它由 PHP + CodeIgniter 3 编写,以 MIT 许可证开源,任何人都可以下载后部署在自己的服务器上,数据完全自主可控。
关键身份信息(溯源官方渠道,查询日期 2026-10-24):
| 维度 | 内容 |
|---|---|
| 软件定位 | 自托管发票/报价/收款管理(小微商业开票系统) |
| 开源许可 | MIT(源码 LICENSE.txt);"InvoicePlane"名称与 logo 版权归 InvoicePlane.com 限制性保留 |
| 当前稳定版 | v1.7.2(官网下载页当前版本;发布流最新稳定条目一致) |
| 技术栈 | PHP 8.2+、CodeIgniter 3(HMVC 模块化)、MySQL/MariaDB、mPDF(PDF 生成)、PHPMailer(邮件)、Yarn/Grunt(前端构建) |
| 社区规模 | GitHub 3.2k stars / 886 forks;官网宣称 10 万+ 下载、193 个国家/地区;社区论坛 community.invoiceplane.com + Discord |
| 版本节奏 | 1.x 系列持续维护(1.6.5 → 1.7.0 → 1.7.1 → 1.7.2);v2 在独立仓库 InvoicePlane-v2 中重写开发(30 stars、216 个开放 issue,尚未发布) |
| 官方文档 | Wiki(wiki.invoiceplane.com)+ 社区论坛 + Discord |
💡 技术拓展:电子发票(eInvoice)不止一种格式标准。欧盟场景下常见标准对比——
标准 形态 特点与适用 Factur-X PDF/A-3 内嵌 XML 法德主流,PDF 可读 + XML 机读兼顾 UBL 2.x 纯 XML 万维网联盟背书的通用商务文档格式,互换性强 XRechnung 基于 UBL 的德国规范 德国公共部门强制 ZUGFeRD 德区 PDF 内嵌 XML 与 Factur-X 同源兼容 InvoicePlane 自 1.6.2 起支持生成符合欧盟标准的电子发票,官方源码注释中明确提供 Factur-X 1.0 与 UBL 2.4 两类 XML 模板,配套模板在独立仓库 InvoicePlane-e-invoices 中维护。本文所述 1.7.2 版本即包含该能力。
项目沿革:InvoicePlane 源自商业产品 FusionInvoice 的社区分支,组织内至今保留从 FusionInvoice v1.x 迁移到 InvoicePlane 的官方迁移工具仓库(Migrationtool),这也解释了其代码基为 CodeIgniter 3(FusionInvoice 时代的选型)而非 Laravel。
三、核心架构
3.1 技术栈构成
以下成分逐项核实自 v1.7.2 官方源码树(composer.json / package.json / 官方 Containerfile / AGENTS.md):
| 层 | 选型 | 说明 |
|---|---|---|
| Web 框架 | CodeIgniter 3(HMVC) | 非 Laravel:无 Artisan CLI、无 Eloquent ORM、无 artisan migrate;路由为 模块/控制器/方法 形态 |
| 语言运行时 | PHP 8.2+ | 官方容器基于 php:8.2-apache;扩展依赖 bcmath/gd/mbstring/mysqli/xml/zip(Containerfile 内逐项安装并 composer check-platform-reqs 校验) |
| 数据库 | MySQL / MariaDB | 数据表统一 ip_ 前缀(如 ip_clients、ip_invoices),官方安装器建 40+ 张表 |
| PDF 生成 | mPDF | 由 HTML/CSS 模板渲染 PDF 发票与报价单 |
| 邮件发送 | PHPMailer | 经 mailer 模块封装,支持 SMTP 配置与邮件模板 |
| 前端构建 | Yarn + Grunt | assets 构建产物随发行包提供 |
| 会话 | CI3 Session(文件或数据库表 ip_sessions) | 支持绑定 IP、定期重建销毁旧会话 ID 等加固项 |
💡 技术拓展:PHP 应用常见架构分层有"全栈框架单体(Laravel/Symfony)"与"轻量框架模块化单体(CodeIgniter HMVC)"两类。前者生态新、抽象厚、开发效率高;后者内核轻、学习曲线平缓、对老旧宿主机友好。InvoicePlane 1.x 采用后者,这直接决定了它的集成形态(详见第六节"限制")——本系列后续实测文档均基于该架构事实展开。
3.2 模块化业务架构(HMVC modules)
v1.7.2 源码 application/modules/ 下共 25 个业务模块(按职责归类):
| 业务域 | 模块 |
|---|---|
| 客户 | clients(客户档案)、families(客户分组)、user_clients(客户侧访问授权) |
| 报价 | quotes、quote 模板(公共/PDF 双套) |
| 发票 | invoices(含 Cron、Recurring 控制器)、invoice_groups(编号规则)、custom_fields/custom_values(自定义字段) |
| 收款 | payments、payment_methods、guest/gateways(PayPal、Stripe 在线支付回调) |
| 计价要素 | products、tax_rates、units、tasks、projects |
| 触达 | mailer(PHPMailer 封装)、email_templates(邮件模板)、upload(附件) |
| 运营支撑 | reports(报表)、import(导入)、settings(系统设置)、setup(安装向导与迁移)、dashboard、filter、layout、sessions、guest(免登录公开访问)、welcome |
3.3 关键机制一览
以下机制均以官方源码与官方文档(CONTAINER_DEPLOYMENT.md、ipconfig.php.example)为准,本系列后续文档逐项实测:
- 编号规则引擎(invoice_groups):每张发票/报价单按分组模板(如
{{{id}}}、QUO{{{id}}})自动编号,支持前导零、多套序列并行。 - 循环发票(Recurring Invoices):对周期性账单(月费、订阅费)设置频率(1D/7D/30D/…)与起止日期,由官方内置 HTTP 端点
invoices/cron/recur/<key>触发生成,端点以 cron_key 鉴权并内置防爆破限流。 - 模板白名单防 RCE:自定义 PDF/网页模板必须同时在
ipconfig.php的白名单常量(如CUSTOM_INVOICE_TEMPLATES_PDF)中登记才会在界面出现——官方明确禁止文件系统扫描发现模板,堵死"上传 .php 模板即远程代码执行"类漏洞。 - 公开访问链接(guest 模块):每张发票/报价单生成 32 位随机 url_key,客户凭
…/guest/view/invoice/<url_key>免登录查看、下载 PDF、在线支付;草稿态不暴露,已发送态才可见。 - 双层安装形态:① 经典 Web 安装向导(setup 模块,逐页填库建管理员);② 容器化环境变量契约(官方提供 Containerfile 与全部环境变量清单,启动时自动生成配置、跑迁移、建默认管理员)。
- 官方 CLI 入口:1.7.2 原生提供
php index.php setup/cli/migrate(建表/迁移)与php index.php setup/cli/create_default_user(按环境变量创建首个管理员,仅命令行可调)。
四、功能特性
按官网宣传与源码模块逐项对照(来源:官网首页 + v1.7.2 源码,2026-10-24):
| 功能 | 说明 |
|---|---|
| 报价单 | 创建/发送报价,客户可经公开链接在线批准或拒绝,批准后一键转发票 |
| 发票管理 | 草稿→已发送→已付/逾期状态机;只读锁定(sent 后禁改,可配置);条目级折扣与税 |
| 收款与在线支付 | 手工登记收款 + PayPal/Stripe 在线支付(客户在公开页直接付款),网关回调记录留痕 |
| 循环发票 | 周期自动生成 + 可选自动邮件(依赖邮件模板与 SMTP 配置) |
| 客户管理 | 联系方式、备注、自定义字段、客户分组;支持给客户开"门户式"访问授权(user_clients) |
| 产品/任务/项目 | 产品目录直接带入发票条目;任务与项目可计时计费 |
| 电子发票 | 1.6.2+ 支持 EU 合规 eInvoice(Factur-X/UBL 模板,独立仓库维护) |
| 报表 | 按时间段/状态/客户维度的收入与账龄报表 |
| 多语言/多主题 | 社区翻译多语言界面;官方 Themes 仓库提供可选主题 |
| 模板定制 | PDF 与网页两套模板体系(mPDF 渲染),支持自定义模板白名单挂载 |
| 附件/导入 | 发票附件上传;CSV 导入客户/发票等历史数据 |
| 安全 | 密码重置限流(IP 5 次/60 分钟、邮箱 3 次/小时、重置令牌 15 分钟有效);cron 端点防爆破限流(15 分钟窗口 10 次错误即封禁);会话绑定 IP/防固定;上传图片可选剥离 EXIF(含 GPS);CSRF、X-Frame-Options 等防护开关 |
五、快速开始(最小可用示例)
以下为官方经典安装主线,转述自官网下载页与官方 Wiki 安装文档(wiki.invoiceplane.com,2026-10-24 查询);完整步骤与实测回显见本系列部署篇。
- 获取发行包:访问官网 invoiceplane.com,点击 Download 获取当前版本 v1.7.2;或到 GitHub Releases 页(github.com/InvoicePlane/InvoicePlane/releases)下载对应版本的发布压缩包。
- 部署到 Web 根目录:将发行包解压到 PHP 8.2+ 环境的站点目录(Apache/Nginx 均可,需开启 URL 重写),确保
uploads/、storage/两个目录对 PHP 进程可写。 - 运行安装向导:浏览器访问站点,跟随 setup 向导逐步完成:数据库连接(MySQL/MariaDB 主机、库名、账号)→ 配置校验 → 数据表安装 → 创建管理员账号。
- 首次登录:使用向导中创建的管理员账号登录后台,即可开始建立客户、报价与发票。
面向容器化部署的读者:官方仓库提供一体化 Containerfile 与完整环境变量契约(必需项 IP_URL、DB_HOSTNAME、DB_USERNAME、DB_PASSWORD、DB_DATABASE、ENCRYPTION_KEY,可选项涵盖会话、限流、模板、Sumex 瑞士医疗发票等 30 余项),容器首次启动自动完成配置生成、数据库迁移与默认管理员创建。逐条实测的 Compose 部署、环境变量表与验证回显见 《InvoicePlane 1.7.2 Docker Compose 部署指南》。
六、适用场景与限制
6.1 适用场景
- 自由职业者/工作室/小微企业:需要报价-开票-收款闭环但不想为 SaaS 订阅付费,数据希望留在自己服务器。
- 周期性账单:托管费、会费、月度服务费等固定周期账单,用循环发票 + cron 端点 + 邮件模板实现准自动化。
- 欧洲合规开票:需要向欧盟客户开具 Factur-X/UBL 电子发票的场景。
- 客户自助:客户凭公开链接查看账单、下载 PDF、直接在线支付(PayPal/Stripe),无需开放后台。
6.2 限制(选型前必须知晓)
- 无 REST API:1.x 不提供 REST/gRPC 管理 API。对外集成仅三条路:官方 cron HTTP 端点(循环发票)、guest 公开链接(支付/查看)、直读数据库表(需自担升级兼容风险)。系统对接诉求强烈的团队应优先评估 Invoice Ninja 等带完整 API 的竞品。
- CLI 能力有限:仅 setup/cli 两个运维入口(迁移、建默认管理员),无数据导入导出/用户管理等运维子命令。
- 单业务主体:界面与权限模型围绕单一开票主体设计,多公司主体共用一套部署需借助发票分组区分序列,无法做到组织级隔离。
- 技术栈较老:CodeIgniter 3 + jQuery 时代前端;官方已将下一代重构为 InvoicePlane-v2(尚未发布),选型时应接受"1.x 稳定但架构陈旧、v2 未就绪"的现实。
- 支付网关内置仅两家:PayPal、Stripe(官网注明"others coming soon");其他支付渠道需自行开发。
七、同类选型对比(含量化维度)
下表为同类自托管开票/计费系统的量化对比(星数取自 shields.io GitHub stars 徽章接口,2026-10-24 查询;Crater 已归档停止维护,其社区继任者为 InvoiceShelf):
| 产品 | GitHub Stars | 技术栈 | 定位 | API | 活跃度(2026-10) |
|---|---|---|---|---|---|
| InvoicePlane | 3.2k | PHP 8.2 + CodeIgniter 3 | 发票/报价/收款闭环 | 无 REST(cron 端点 + 公开链接) | 主仓库 2026-10-23 有更新,v1.7.2 为当前稳定版 |
| Invoice Ninja | 10k | PHP/Laravel | 发票 + 任务计时 + 门户,功能面最广 | REST API 完整 | 持续活跃,v5 系列 |
| Crater | 8.4k | PHP/Laravel + Vue | 现代界面开票系统 | REST API | 已归档,由 InvoiceShelf 接续 |
| InvoiceShelf | 1.9k | PHP/Laravel + Vue | Crater 社区继任者 | REST API | 维护中,社区规模尚小 |
| Kill Bill | 5.8k | Java | 订阅计费引擎(账单平台而非发票工具) | REST API 完整 | 持续活跃,面向计费平台化 |
关键差异解读:
- 体量与活跃度:Invoice Ninja 以 10k stars 与完整 API 领先;InvoicePlane 星数居中,但主仓库近两年持续有安全与功能维护(1.7.2 于 2026-08-27 定版,源码安全提交延续至 2026-10)。
- 定位差异:Kill Bill 是"订阅计费引擎"(面向平台型计费、计量计费、账单编排),与"给人用发票软件"不是一个赛道;Crater/InvoiceShelf/Invoice Ninja 才是 InvoicePlane 的直接可比对象。
- 集成能力是分水岭:需要 API 驱动(对接 ERP、电商、自动化平台)→ 选 Invoice Ninja/InvoiceShelf;只需人用界面 + 周期账单自动生成 → InvoicePlane 的循环发票 + cron 端点 + 公开支付链接即可闭环,且部署极轻(单应用 + 一个数据库)。
- 数据自主与许可:三者同为开源可自托管;InvoicePlane 为 MIT(最宽松),选型合规约束最少。
选型建议("如果…则…"):
- 如果团队没有专职运维、只需要能开票收款的轻量系统 → InvoicePlane(部署面最小:一个应用进程 + 一个 MariaDB)。
- 如果需要开放 API 给内部系统调用(订单自动开票、状态回写)→ Invoice Ninja(功能与 API 均最全)或 InvoiceShelf(喜欢 Crater 风格界面者)。
- 如果业务本质是订阅制计费(套餐、用量计量、阶梯价、账单编排)→ Kill Bill,不要用发票工具硬扛。
- 如果看重 EU 电子发票合规且要轻部署 → InvoicePlane 1.7.2(Factur-X/UBL 内置模板)。
八、参考链接
- 官网:https://invoiceplane.com (产品介绍与下载;查询日期 2026-10-24)
- GitHub 组织(16 仓库全景):https://github.com/InvoicePlane (查询日期 2026-10-24)
- 主仓库:https://github.com/InvoicePlane/InvoicePlane (v1.7.2 源码、LICENSE、CONTAINER_DEPLOYMENT.md;查询日期 2026-10-24)
- 发布流(版本核实):https://github.com/InvoicePlane/InvoicePlane/releases.atom (查询日期 2026-10-24)
- 官方文档 Wiki:https://wiki.invoiceplane.com/ (查询日期 2026-10-24)
- 官方电子发票模板仓库:https://github.com/InvoicePlane/InvoicePlane-e-invoices (查询日期 2026-10-24)
- 社区论坛:https://community.invoiceplane.com/ ;Discord:https://discord.gg/PPzD2hTrXt (查询日期 2026-10-24)
- 星数数据:shields.io GitHub stars 徽章接口(https://img.shields.io/github/stars/<owner>/<repo>.json;查询日期 2026-10-24)
- 本地实测系列:《InvoicePlane 1.7.2 Docker Compose 部署指南》、《InvoicePlane 1.7.2 配置参数详解》、《InvoicePlane 1.7.2 常用 CLI 命令与任务调度详解》