面向应用开发者的 Nordlet
通过一个 JSON API、类型化的 SDK、Webhook、MCP 服务器和沙盒公司,将开票、记账和欧盟税务申报功能集成到您的软件中。
许多应用都会产生资金事件: 订单支付、订阅续费、退款发出。这些事件最终都需要记入公司的账簿。
Nordlet 是一个以 API 为先构建的会计软件。网页应用能做的所有事情,也都可以通过一个 JSON API 来完成。您的应用发送事件,Nordlet 则负责记账并准备税务申报。
Nordlet 的功能
- 将每一个操作公开为
POST /v1/{module}/{resource}/{action}并带有 JSON 请求体,例如/v1/sales/invoices/create。 - 使用属于某家公司的 API 密钥对每个请求进行身份验证。每个密钥都带有权限范围 (scope),例如
sales:read或sales:write,用于限制其可执行的操作。 - 将金额作为十进制字符串接收,绝不使用浮点数,从而避免因四舍五入而丢失分文。
- 在每个变更请求中接受
Idempotency-Key请求头。使用相同密钥重试会返回第一次的结果,而不是重复执行操作。幂等性 (idempotency) 意味着重复请求的效果与单次请求相同。 - 以统一的共享格式返回所有错误。
- 每个 API 密钥每分钟允许 300 个请求。
- 在审计日志 (audit log) 中记录每一项变更。
API 规范指南详细介绍了其中每一项规则。
保持准确的账簿
- 开具发票会分配连续且无间断的编号,检查会计期间 (accounting period)是否开放,并在同一个数据库事务中过账分录 (journal entry)。
- 每笔过账必须借贷平衡。保存事务时,数据库会自行检查这一点。
- 已开具和已登记的单据无法删除。错误的银行匹配通过冲销分录来撤销,而不是通过修改旧分录。这就是不可变账本 (immutable ledger)的含义。
SDK、MCP 与 Webhook
- 类型的 SDK 是根据同一份 OpenAPI 规范为 TypeScript、Python、Go、Java、C#、Ruby、PHP、Swift 和 Rust 生成的。在 SDK 发布之前,您可以从其源码仓库进行安装。请参阅 SDK 指南。
- 提供包含所有端点的 Postman 集合。
- MCP 服务器允许像 Claude Code 这样的 AI 助手搜索 API 并使用您的 API 密钥调用它。每次调用都是一个普通的 API 请求,受相同的权限范围和限制约束。
- Webhook 会在发生某些事件时通知您的应用,例如
sale_invoice.issued或sale_invoice.paid。每次推送都带有 HMAC 签名,以便您验证其是否来自 Nordlet。发送失败的推送会在约 24 小时内进行重试。
使用沙盒公司进行测试
- 创建带有
isSandbox: true的公司,或者在应用中设置公司时勾选沙盒复选框。 - 沙盒公司的运作方式与真实公司完全相同: 相同的模块、相同的 API。
- 它会被明确标记为测试数据,并且您无法将真实公司转换为沙盒公司,反之亦然。
- 沙盒公司的申报表和电子发票 (e-invoice)将发送至税务机关的测试服务。
- 沙盒公司的使用情况会像真实公司一样进行计量和计费。
快速入门指南将带领您了解第一个 API 密钥、第一张发票以及完整的业务循环。
FAQ
一个应用可以为多家公司服务吗?
可以。每个 API 密钥都属于一家公司,因此您需要为每家公司创建一个密钥。每个 Webhook 推送都携带其所属公司的 companyId,因此单个接收端可以为多家公司服务。
我必须自己构建税务申报功能吗?
不需要。Nordlet 会根据账簿自动生成申报表。对于每项申报,它会根据不同国家/地区的要求直接发送、生成供您上传的文件,或者显示供您手动录入的数据。申报支持对照表列出了所有情况。