@ekwo-ai/camt053

中文文档
0.25.2发布于 2026/11/13MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 6953

在 TypeScript 中将 ISO 20022 银行对客户对帐单(camt.053) 读入平方对象:账户,余额和行,金额作为小数字符串,以及不相加的内容. 零依赖性,它自己的严格的XML读取器.

中文使用文档
文档目录7 节
  1. 它会做什么
  2. 声明是恶意输入
  3. 抛出的东西, 回来作为违反
  4. 它不会做的
  5. 来源
  6. 何为已核实,何为未核实
  7. 许可证

@ekwo-ai/camt053

读取一个 ISO 20022 银行对客户对账单 —— 说 camt.053,账户 语句库作为 XML 发送到平面对象, 在 TypeScript 中, 没有 依赖性.

把文件交给它 它会给你其中的陈述 他们的行,还有 列表中不添加的内容.

import { readCamt053 } from '@ekwo-ai/camt053';

const { version, statements, violations } = readCamt053(bytesOrString);

for (const statement of statements) {
  statement.account.identifier; // { kind: 'iban', value } or { kind: 'other', value, scheme, issuer }
  statement.openingBalance;     // { type: 'OPBD', amount: '1000.00', currency: 'EUR', date: '2026-03-01' }
  statement.closingBalance;
  statement.balanced;           // true, false, or null when it could not be checked
  for (const line of statement.lines) {
    line.amount;                // '-450.50' — signed, a decimal string, never a float
    line.bookingDate;           // '2026-03-05'
    line.counterparty;          // { name, account, agentBic, ultimateName }
    line.remittance;            // { unstructured: ['Invoice 2026-0107'], structured: [{ reference, type, issuer }] }
    line.bankReference;         // the bank's own reference for the movement
  }
}

它不知道数据库、分类账和国家。 它返回的形状是 已声明 src/types.ts 和从哪里进口.

这个旁边的砖块 写入 行政部门需要的文件。 这个 一个 读取 银行发送的文件,并更改必须证明的内容: 输出是有效的, 但输入被理解了—— 文件 写来伤害读者不是.

它会做什么

  • 读取 02至14号版本 信息,和 说它读哪一个 (单位:千美元)version, (中文(简体) ), namespace) (中文(简体) ). 该版本是命名空间的最后一部分 文档元素,则无任何假设。 同样发明的语句是 十三个版本中每个版本都写着,与 ISO 计划相反 为该版本出版,并且必须读取所有对象中的相同对象 十三岁 后一版本仍作为 version_not_verified; 01版本被拒绝, 因为用同名它 这是另一个信息.
  • 回返 每个语句 文件的 - 信件可能包含多个 并说每一次违反.
  • 以 文件给出的一个IBAN 或者说 Othr/Id 与 其计划和发行人。 ISO 20022提供了选择,因为世界上有一半人 没有IBAN;只返回IBANs的读者会阅读一半的语句.
  • 在账户持有人一方的每个金额上签字——现金为正数,a 过度透支的余额为负数,并作为 十进制字符串 所写文件的位数。以千分之百的整数进行总和 (计划允许小数点后五分;没有数字通过 number。 。 。 .
  • 检查一下 期初余额+已记账账项=期末余额页:1 最后一个小数。 当它不是, 声明回来的银行写它, balanced 实值 false,以及 balance_mismatch 说差别相. 没什么 更正: 调整平衡的读取器隐藏了检查的事实 已存在以显示 .
  • 只计数 预定 条目(BOOK) (中文(简体) ). 待定或信息性条目为 返回, 标记 booked: false,并留出 算术,即 银行在计算期末余额时做了什么.
  • 留着 有条不紊的交流和自由的交流,并保持两者 当一笔报酬同时带有两个。 债权人的参考是付款人复制的东西 发票和机器可以匹配;免费文本是个人的东西 键入。 将一个扯入另一个 将分歧的调和抛出 继续生活.
  • 将批次分成交易 - 每行一行 TxDtls - 何时和何时 只有在每笔交易都带有入帐货币的金额时 准确的说就是这个条目 然后每行都有自己的参考资料, 交易和通信,加 entry, (中文(简体) ), detail, (中文(简体) ), detailCount 财务报告和审定财务报表 entryAmount 把批量放回去 否则就只留下一个 线条和 batch_not_split 说为什么 无论哪种方式,一个语句的行添加 因此,余额核对不取决于 选择。 (和解需要交易;余额需要输入. 分出只当两人都得到他们想要的. )
  • 名称 对手 作为金钱的债务人和债权人 钱会流出... 而反之 RvslInd 说条目 撤销了先前的一条,即当事方保留其在 原作: 被弹出转会回来 从 被派去的派对.
  • 拿着 银行写的那天。 。 。 . 2026-03-31T23:30:00+02:00 为3月31日 不被移动到协调世界时, 它将在另一天预订 地球上的一半.
  • 返回银行本身的引用( E)AcctSvcrRef交易,或 条目、条目引用、端到端标识符 已写入 —— 说 包括《京都议定书》 NOTPROVIDED 占地者,是银行的字眼,而不是 读者应该决定——授权、银行交易代码 (ISO域名/家族/子家族和专有家族),回归原因, 以另一种货币订的.

声明是恶意输入

它通过电子邮件,下载,第三方API到达. XML 读取器 在此包中写着,约300行,并严格按以下目的:

  • 任意 <!DOCTYPE 被拒绝未读。 不需要声明 10亿个家庭和外部实体家庭都需要一个. 没有要扩展的实体表格, 没有打开文件或套接字的表格 .
  • 5个预定义的实体和数字字符引用被解码; 任何其它实体都是错误,而不是空字符串。 字符参考 这不是 XML 字符是一个错误.
  • 大小 在读取字符前选中( e)maxBytes,32个米B by 默认), 深度 财务报告和审定财务报表 元素计数 读取时(maxDepth 64岁, maxElements 2 000 000美元。 读者不再重复:十万 筑巢元素被深度限制所拒绝 并且不会触碰 堆叠.
  • 仅UTF-8型,可致命地解码. 一个不是UTF-8的字节是错误而不是错误 以某人的名义替换角色 宣告另一个文件 编码被拒绝:解码并传递字符串.
  • 命名空间解决了,所以 <Document xmlns="…"> 财务报告和审定财务报表 <ns2:Document xmlns:ns2="…"> 是同一语句,也是 另一个命名空间 永远不会被读作声明的.
  • 形状不完善不读 : 标记不匹配, 第二个根, 一个赤色 &页:1 重复属性,一个控制字符.

它不是一个通用的 XML 解析器: 元素和属性名称是 ASCII, 它 iSO 20022 的每个名称都是, 运行时不会对一个计划进行验证 .

抛出的东西, 回来作为违反

丢弃 (单位:千美元)StatementFileError,带有 code),因为没有陈述 报告:

代码何时
too_large, (中文(简体) ), too_deep, (中文(简体) ), too_many_elements超过限制
unsupported_encoding不使用UTF-8
doctype_forbidden, (中文(简体) ), undefined_entity见上文
malformed_xml未形成
not_a_statement成型良好,而非相机 053 —相机 052, HTML 错误页面
unsupported_versioncamt.053.001.01 (英语)
incomplete_statement没有 Stmt,或没有标识符或账户的报表

已返回 内 violations,与语句和它的行,因为 一条坏线不应该浪费另外三百条:

代码何时
balance_mismatch打开 + 预定的条目 + 关闭 ; 消息 表示差异
opening_balance_missing, (中文(简体) ), closing_balance_missing没有 OPBD (或 PRCD),无 CLBD; 未检查余额
balance_currency_mismatch以账户以外的其他货币计算的余额
foreign_currency_entry(a) 以账户以外的另一种货币输入——报告, 未转换; 未检查余额
invalid_amount, (中文(简体) ), invalid_direction, (中文(简体) ), invalid_date线回与 null 那边
booking_date_missinga 未经预订的条目 BookgDt (计划允许它)
invalid_iban以 IBAN 写入, 并且失败 ISO 13616 自己的检查数字 —— 按已写返回
duplicate_bank_reference, (中文(简体) ), duplicate_entry_reference一份说明的两个条目
batch_not_split, (中文(简体) ), batch_count_mismatch见上文
version_not_verified此软件包没有用于

invalid_amount, (中文(简体) ), invalid_direction 财务报告和审定财务报表 invalid_date 每一个东西 schema拒绝:测试将每个都放入一个文件,并观看验证失败. balance_mismatch 恰恰相反,而这个软件包存在的原因—— 测试显示计划 接受 一种不相加的陈述.

它不会做的

  • 它不会改变任何东西. 报告以另一种货币输入 以美元为单位的订单 以美元为单位的回报 而不是账户中移动的 货币。 收费率属于保存这些书的人.
  • 什么都没有. 它不知道一张工资发票。 手拿着 对于和解需要什么, 分离.
  • 它不决定什么是重复. 同一日期的两行, 金额和对等方为两行; 文件是否已导入 问谁持有前一个.
  • 它不读每个元素. 收费、利息、税款、证券和 某方的卡片细节、可用性和邮政地址不 已经返回。 它们被跳过,而不是被误读.
  • 它不读相机052或相机054. 日内报告和 借记/贷记通知与报表分享其大多数类型 但报告没有预定结束 平衡检查和通知 根本没有余额,所以它们是其他 以其他担保方式提交的文件,并被姓名拒绝,直到某人 需要他们.
  • 报告没有全文. StmtPgntn 返回( e)page(三); 打开并关闭每个页面 临时结余(ITBD),此软件包返回其中 balances 并且确实 不需要开场或闭幕 如此一页的报告 opening_balance_missing 而不是猜测.

来源

何为已核实,何为未核实

已验证: 测试此软件包的每个文件首先针对 化学式 ISO 为其版本出版(test/schema.test.ts13个计划, 未修改 test/xsd/,没有网络和系统工具)——因此 阅读器通过camt.053进行测试,而不是根据作者的camt.053的想法进行测试. 一个 语句以所有13个版本写成,并读取相同的对象. 蓄意违反《公约》规定的行为,经证实被 计划; 最重要的, 平衡, 显示 没有 成为。 这个 敌对文件按姓名分别被拒绝,要求时间或 在试验措施的范围内拒绝记忆.

写下反对阴谋的固定装置 驳斥了第一稿 同样的 小时 : BIC 成为 BICFI 在03版,而不是在04版,因为草案有它。 还有 获取计划发现两个版本 草案不知道:14,出版 在2026年3月,和01, 以同名服务,是另一个 留言.

未核实 - 这是更大的一半:

  • 没有银行的文件. 这里的每个陈述都是发明的 因为一个真实的 是某人的账户。 计划说银行什么的 可能 发送; 不发送 说什么银行 已经 发送。 银行对此有不同之处 软件包关心: 批次是否详细, 引用在哪里 (单位:千美元)AcctSvcrRef 进入、交易、交易和交易, 不论支付卡片的对方是当事人还是免费文本, 什麽 PRCD 意味着一个星期一. 传出发明文件的读取是 说明,不是证据每个银行的第一个真实对账单是 测试谁都没跑过.
  • 无使用准则. EPC、CGI-MP,以及执行指南 国家银行联合会限制信息 填充,用哪个代码 无一被测试.
  • 逆转的对手. 双方保持原有的 角色当 RvslInd 此软件包读取信件是真实的 定义和共同惯例;计划不能说,银行可能 不同之处.
  • 02和08版本为所使用. 其余11个已经核实 他们的阴谋 和,就提交人所知, 没有其他的: 这里没有人见过野外的相机053.001.11.
  • 外部代码集 (银行交易代码、收益原因、余额) 类型)作为书面返回,而不与 ISO 的发布相核对 列表.
  • 业绩 被绑定, 未被测量: 默认大小的语句 限制在记忆中读取,作为一个整体.

许可证

麻省理工学院. 见 LICENSE。 。 。 .

版本与发布记录

@ekwo-ai/camt053 共发布 33 个版本,首次发布于 2026/09/19;过去 12 个月发布了 33 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.25.2latest2026/11/13今天
0.25.12026/11/13今天
0.25.02026/11/076 天前
0.24.12026/11/058 天前
0.24.02026/10/2815 天前
0.23.02026/10/2816 天前

关于 @ekwo-ai/camt053 的常见问题

@ekwo-ai/camt053 是什么?

在 TypeScript 中将 ISO 20022 银行对客户对帐单(camt.053) 读入平方对象:账户,余额和行,金额作为小数字符串,以及不相加的内容. 零依赖性,它自己的严格的XML读取器.

如何安装 @ekwo-ai/camt053?

在项目目录运行 npm install @ekwo-ai/camt053,或使用 pnpm add / yarn add / bun add。

@ekwo-ai/camt053 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@ekwo-ai/camt053 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@ekwo-ai/camt053 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@ekwo-ai/camt053 可以商用吗?

@ekwo-ai/camt053 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ekwo-ai/camt053 的下载量有多少?

根据 npm 官方下载统计,@ekwo-ai/camt053 在 2026/10/13 – 2026/11/11 这 30 天内被下载 6,953 次,日均约 232 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ekwo-ai/camt053 还在维护吗?

最新版本 0.25.2 发布于 2026/11/13(今天);至今共发布 33 个版本,其中过去 12 个月发布了 33 个;首次发布于 2026/09/19。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。