关于 OpenProfit
OpenProfit 是面向运营多个产品的开发者的开源财务面板。它汇总支付收入与各类服务成本,按产品计算利润,并支持自托管和会计报表。
主要功能
- 01按周期查看收入与成本
- 02按产品和服务商拆分利润
- 03连接支付与账单数据
- 04手动录入固定成本
- 05货币换算与可调整基准币种
- 06成本提醒、每周邮件与产品公开页
适用场景
- 01核对扣除手续费和基础设施账单后的产品利润
- 02跨币种汇总收入与服务成本
- 03准备月度会计记录和年度报税数据
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://openprofit.dev/mcpclaude mcp add --transport http lobbystack-openprofit https://openprofit.dev/mcp{"mcpServers":{"lobbystack-openprofit":{"type":"http","url":"https://openprofit.dev/mcp"}}}在 Cursor 中打开{"servers":{"lobbystack-openprofit":{"type":"http","url":"https://openprofit.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"lobbystack-openprofit":{"type":"http","url":"https://openprofit.dev/mcp"}}}{"mcpServers":{"lobbystack-openprofit":{"serverUrl":"https://openprofit.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
关于 OpenProfit
连接 Stripe、OpenAI、Vercel 和其他所有账单。查看每个应用扣除成本后的收入,并获取报税所需的数据。
收入记录在支付处理商那里。成本则分散在十几个账单页面中:AI 服务商、托管、数据库、电子邮件、域名。每处都只显示一部分数据,且使用各自的货币。OpenProfit 会汇总这些数据,并将每笔账目归入对应的产品。
连接你的整套技术栈
查看支付处理商的收入,以及 AI 服务商、托管和基础设施的成本。粘贴 API 密钥,即可填充两年的历史数据。
衡量实际所得
查看你运营的每个应用扣除手续费、退款、AI 账单和托管费用后的收入。屏幕上显示的,就是你实际所得。
- 扣除手续费和退款。 在显示任何数据之前,先扣除支付处理商的手续费和退款。
- 统一货币。 收入以欧元结算,账单以美元计费。一切都会按当天汇率换算。
- 按产品计算利润。 即使三个产品共用一个 OpenAI 账户,你也能看出哪个产品能自给自足。
所有账单,一处查看
OpenAI、Vercel、Neon、Resend 以及另外 10 家服务商会按天或按月、按项目报告收费金额。没有 API 的订阅只需十秒即可添加。
- 按用量计费。 按 Token 和 GB 收费的数据来自服务商自己的账单数据。
- 固定订阅。 Supabase、域名和其他费用,只需输入一次价格,就会计入每个月。
- 映射到产品。 将每个 OpenAI 或 Vercel 项目关联到其服务的产品。其余项目会保留在“未分配”下,直到你决定如何归类。
掌握变化情况
每周一收到一封邮件,查看上周的收入、成本和利润。账单翻倍、利润率下降或同步失败时,当天就会收到提醒。
- 每周摘要。 三个数字,以及最值得关注的一项变化。所有套餐均免费提供。
- 激增提醒。 账单翻倍或利润率下降时,当天发送邮件提醒。Slack 和 Discord 支持即将推出。
- 公开页面。 在任何人都能访问的页面上分享某个产品的数据。显示内容由你决定。
开源,由你运行
采用 MIT 许可证。使用内置 Postgres 的单个 Docker 镜像,也可以连接你自己的 Postgres。你的 API 密钥绝不会离开你的服务器。
主要功能
- 概览:查看任意时段的收入、成本、利润、MRR 和客户数,与上一时段的差值,以及以去年为参考线的十二个月图表。
- 细分数据:按产品、收入来源和成本提供商查看。
- 连接器:使用各提供商所提供的权限最小的 API 密钥,保存前先进行测试,并加密存储。OpenProfit 只会使用该密钥读取数据。首次同步时获取两年的历史数据,此后增量同步。安全列出了每个密钥的权限。
- 产品映射:按提供商的子单位映射产品,其余项目归入“未分配”类别。
- 固定成本:适用于订阅、域名、一次性购买以及任何没有 API 的项目。
- 多币种工作区,使用每日汇率,并可在之后更改基础货币。使用加元的工作区采用加拿大银行的汇率。
- 账簿:为 QuickBooks、Xero 或任何会计软件提供月度日记账,并提供可填入税表各项的年度数据(T2125 和 TP-80、T2 的 GIFI 附表、Schedule C 或 Form 1120)。
- 提醒:成本激增、利润率下限和同步失败提醒。
- 每周邮件:对比上周与前一周的数据。
- 公开页面:按产品提供,使用相同的数据进行服务端渲染。
- 深色模式、键盘搜索,以及适合手机的布局。
- 自托管:可在内置 Postgres 的单个容器中运行,也可使用指向自有数据库的
postgres://URL。 - 登录:使用电子邮件、GitHub 或 Google 登录。
连接器
| 提供商 | 类型 | 读取内容 |
|---|---|---|
| Stripe | 收入 | 余额交易、有效订阅、MRR、客户 |
| Polar | 收入 | 不含税的已付款订单、Polar 费用、退款、MRR、有效订阅 |
| Paddle | 收入 | 不含税的已完成交易、费用、退款和拒付、MRR、付费订阅者 |
| Lemon Squeezy | 收入 | 不含税的订单和续订、退款、MRR、有效订阅(API 中没有费用数据) |
| RevenueCat | 收入 | 月收入和扣除商店佣金后的收益、MRR、有效订阅 |
| OpenAI | 成本 | 按项目和明细项划分的每日成本 |
| Anthropic | 成本 | 按工作区划分的每日成本 |
| OpenRouter | 成本 | 按 API 密钥和模型划分的每日成本,最近 30 天 |
| Vercel | 成本 | 按项目划分的每日费用 |
| Cloudflare | 成本 | 计费使用量;或在无法获取时使用发票数据 |
| Railway | 成本 | 按公开费率计算的项目月度使用量 |
| DigitalOcean | 成本 | 按项目和产品划分的月度成本 |
| GitHub | 成本 | 按 SKU 和仓库划分的每日使用成本 |
| Twilio | 成本 | 每日使用成本总额 |
| Firecrawl | 成本 | 按公开费率计算的每个 API 密钥的积分用量 |
| Resend | 成本 | 按公开费率计算的每个发送域名的邮件数量 |
| xAI | 成本 | 按计费说明划分的每日成本 |
| Neon | 成本 | 按公开费率计算的项目月度使用量 |
| MongoDB Atlas | 成本 | 按项目划分的每日发票明细项 |
| 固定成本 | 成本 | 手动输入任意月度、年度或一次性金额 |
App Store、Google Play 和 Supabase 即将推出。一个连接器就是 src/connectors 中实现 verify 和 fetchRevenue 或 fetchCosts 的一个文件。如果你希望添加尚未列出的连接器,请附上提供商计费 API 的链接提交问题,或发送拉取请求。
开始使用
最快的方式是使用托管版本 openprofit.dev。登录、创建工作区、连接一个收入来源和一个成本来源,概览页面便会显示数据。
当你的产品月总收入低于 $2,500 时可免费使用。超过后,价格固定,绝不会随收入增长。所有套餐都包含全部连接器。
自托管
一个容器即可。数据存储在卷上的嵌入式 Postgres 中,因此无需运行其他服务。
docker run -d \
--name openprofit \
-p 3000:3000 \
-v openprofit_data:/app/data \
-e SECRET_KEY=$(node -e "console.log(require('crypto').randomBytes(32).toString('base64'))") \
-e APP_URL=http://localhost:3000 \
ghcr.io/morencyr/openprofit:latest
打开 http://localhost:3000/login 并输入你的电子邮件。未配置电子邮件服务提供商时,登录链接会打印在 docker logs openprofit 的日志中。设置 RESEND_API_KEY 和 EMAIL_FROM 即可通过邮件发送链接。将 DATABASE_URL 指向 postgres:// 服务即可使用自己的数据库。
自托管指南介绍了更新、Dokploy 和 Railway。环境变量参考列出了所有变量。
工作原理
一个 TanStack Start 应用负责提供着陆页、文档和应用。服务器内的调度器按各连接的调度周期拉取数据,将金额转换为工作区的基础货币,并根据各提供商自己的 ID 对数据行执行插入或更新,因此重复运行同一范围不会重复计数。概览是对这些数据行进行分组汇总的结果。
src/connectors/ one file per provider: verify, fetchRevenue, fetchCosts, fetchSnapshots
src/server/ sync runner, FX rates, alerts, weekly email, billing, server functions
src/routes/ landing, docs, app pages, API routes
src/db/ Drizzle schema for Postgres; migrations in ./drizzle
所有环境都使用 Postgres:自托管和本地开发使用嵌入式 PGlite,托管版本使用 Postgres 服务。身份验证使用 Better Auth。样式使用 Tailwind。
开发
需要 Bun 1.3 或更高版本。
bun install
cp .env.example .env # set SECRET_KEY
bun run db:seed # a demo workspace with a year of numbers
bun run dev
在 http://localhost:3000/login 登录一次,然后将演示工作区关联到你的用户:
bun run db:seed [email protected]
检查项:bun run check(Biome)、bunx --bun tsc --noEmit、bun run build。更改架构后,bun run db:generate 会生成迁移;服务器启动时会运行迁移。
贡献
欢迎提交问题和拉取请求。连接器是最有价值的贡献。CONTRIBUTING.md 列出了连接器涉及的文件、必须返回的数据,以及如何使用真实账户进行测试。
发现安全问题?请发送邮件至 [email protected],而不要提交问题。
许可证
MIT。openprofit.dev 上的托管版本由 Lobbystack Inc. 运营。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
