PDFSub
定价APIMergeCompressEditE-Sign银行对账单博客
返回博客
指南OFX银行对账单Xero会计

OFX格式是什么?开放金融交换详解

2026年3月2日
T
Todd Lahman
Founder, PDFSub

OFX是银行与软件之间交换金融数据的开放标准。本文将介绍OFX文件的内容以及Xero、MYOB和GnuCash为何偏爱它。


您的会计软件要求提供OFX文件。您的银行给了您一个PDF。现在您面对着一个从未听说过的格式,并想知道为什么一个好好的电子表格不行。

OFX -- Open Financial Exchange(开放金融交换)-- 是驱动现代金融软件的无形标准。正是它让Xero无需您手动映射列即可导入银行交易。它让GnuCash能够检测重复项。它还是QuickBooks的QBO格式的基础。

本指南将详细介绍OFX到底是什么,它包含什么内容,它与CSV和QBO相比如何,哪些软件支持它,以及如何从PDF银行对账单创建OFX文件。

What is OFX format -- Open Financial Exchange explained

OFX一句话概括

开放金融交换是一种基于XML的数据格式,用于在金融机构、软件应用程序和最终用户之间交换金融信息。它是Intuit的QBO格式的基础 -- 也是大多数非QuickBooks会计软件在导入银行交易时偏爱的格式。

将OFX视为金融数据的通用语言。银行使用它,会计软件读取它。与CSV不同(CSV只是没有内在含义的行和列),OFX携带结构化元数据,确切地告诉接收软件每部分数据代表什么。


OFX的历史

OFX于1997年诞生,由Microsoft、Intuit和CheckFree共同创建。当时,它们各自拥有相互竞争的标准 -- Microsoft有OFC(Open Financial Connectivity),Intuit有自己的交换格式,CheckFree有其电子账单协议。OFX是统一它们的折衷方案。

版本时间线

  • OFX 1.0 (1997) -- 最初的规范,基于SGML(Standard Generalized Markup Language)。SGML允许标签不闭合,这使得OFX 1.x文件看起来与现代XML不同。
  • OFX 1.6 (2002) -- 最广泛部署的版本。仍基于SGML。大多数提供OFX下载的银行都生成1.6文件。
  • OFX 2.0 (2005) -- 重大改写。从SGML切换到带有闭合标签的真正XML。
  • OFX 2.2 (2016) -- 安全性增强,并改进了投资交易支持。
  • OFX 2.3 (当前) -- 最新版本,由金融数据交换(FDX)维护,这是一个行业联盟,接管了原始创始人的治理。

从SGML到XML的转变很重要,因为它会影响解析。1.x版本的文件使用未闭合的标签(如<TRNTYPE>DEBIT而没有</TRNTYPE>),而2.x版本则使用带有闭合标签的正确XML。大多数现代解析器都能处理这两种格式,但版本不匹配仍然是常见的OFX导入错误。


OFX data flow: Bank PDF → OFX File → Accounting Software → Reconcile, with key advantages over CSV

OFX可以包含什么

OFX不仅仅是一种银行对账单格式。该规范涵盖了广泛的金融数据:

  • 银行账户对账单 -- 支票、储蓄和货币市场账户交易。最常见的用例。
  • 信用卡对账单 -- 交易历史记录,支持商户类别代码和购买详情。
  • 投资和经纪账户对账单 -- 股票购买、股息支付、基金转账和投资组合头寸,包含批次成本基础数据。
  • 账单支付信息 -- 收款人列表、计划支付和支付确认。
  • 税务信息 -- 在金融机构和税务软件之间传输的1099表格和其他税务文件。
  • 贷款对账单 -- 抵押贷款、汽车贷款和个人贷款的交易记录和余额信息。

对于大多数会计师和簿记员来说,OFX意味着一件事:将银行和信用卡交易导入会计软件,无需进行列映射或猜测日期格式。


OFX文件内部

以下是一个完整的OFX 1.6银行对账单文件的样子。这是您最常遇到的格式 -- 基于SGML的版本,大多数银行和转换工具都生成这种格式:

OFXHEADER:100
DATA:OFXSGML
VERSION:160
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
 
<OFX> <SIGNONMSGSRSV1> <SONRS> <STATUS> <CODE>0 <SEVERITY>INFO </STATUS> <DTSERVER>20260228120000 <LANGUAGE>ENG </SONRS> </SIGNONMSGSRSV1> <BANKMSGSRSV1> <STMTTRNRS> <TRNUID>0 <STATUS> <CODE>0 <SEVERITY>INFO </STATUS> <STMTRS> <CURDEF>USD <BANKACCTFROM> <BANKID>021000021 <ACCTID>123456789 <ACCTTYPE>CHECKING </BANKACCTFROM> <BANKTRANLIST> <DTSTART>20260201120000 <DTEND>20260228120000 <STMTTRN> <TRNTYPE>CREDIT <DTPOSTED>20260201120000 <TRNAMT>3500.00 <FITID>20260201001 <NAME>DIRECT DEP PAYROLL <MEMO>ACME CORP PAYROLL </STMTTRN> <STMTTRN> <TRNTYPE>DEBIT <DTPOSTED>20260203120000 <TRNAMT>-87.50 <FITID>20260203001 <NAME>POS PURCHASE GROCERY <MEMO>WHOLE FOODS #10847 </STMTTRN> <STMTTRN> <TRNTYPE>CHECK <DTPOSTED>20260210120000 <TRNAMT>-1200.00 <FITID>20260210001 <NAME>CHECK 1045 <CHECKNUM>1045 </STMTTRN> </BANKTRANLIST> <LEDGERBAL> <BALAMT>4712.50 <DTASOF>20260228120000 </LEDGERBAL> <AVAILBAL> <BALAMT>4712.50 <DTASOF>20260228120000 </AVAILBAL> </STMTRS> </STMTTRNRS> </BANKMSGSRSV1>
</OFX>

文件结构解析

文件包含三个主要部分:

1. 头部块 -- 顶部的纯文本行(在<OFX>之前)声明了OFX版本、编码和安全设置。这不是XML -- 它是一个简单的键值头部,解析器在处理SGML/XML主体之前读取它。

2. 登录响应 (SIGNONMSGSRSV1) -- 认证和服务器元数据。CODE为0表示成功。大多数导入的文件在此处使用占位符值。

3. 对账单响应 (BANKMSGSRSV1) -- 实际的金融数据:

  • BANKACCTFROM -- 交易所属的账户(路由号码、账号、账户类型)
  • BANKTRANLIST -- 交易列表,由开始和结束日期界定
  • STMTTRN -- 单个交易记录
  • LEDGERBAL 和 AVAILBAL -- 特定日期的期末余额和可用余额

请注意SGML语法:像<TRNTYPE>CREDIT这样的标签没有闭合的</TRNTYPE>。解析器从下一个标签的开始推断值的结束 -- 这是有效的SGML,但无效的XML,这就是为什么OFX 2.x添加了闭合标签。


关键OFX标签

以下是您在银行对账单OFX文件中最常遇到的标签参考表:

标签 描述 示例
STMTTRN 对账单交易包装器 包含一个交易的所有字段
TRNTYPE 交易类型 DEBIT(借记)、CREDIT(贷记)、CHECK(支票)、DEP(存款)、ATM(ATM)、POS(POS机)、XFER(转账)、FEE(费用)、SRVCHG(服务费)、INT(利息)
DTPOSTED 过账日期 20260215120000(年年年年月月日日时时分分秒秒)
TRNAMT 交易金额(带符号) -87.50(负数=借记),3500.00(正数=贷记)
FITID 金融机构交易ID 20260215001 -- 用于重复检测的唯一标识符
NAME 收款人或商户名称 POS PURCHASE GROCERY(POS机购物)
MEMO 附加描述 WHOLE FOODS #10847 AUSTIN TX
CHECKNUM 支票号码 1045(仅限支票交易)
REFNUM 参考号码 银行分配的交易参考号
BANKACCTFROM 源账户信息 包含BANKID(路由)、ACCTID(账号)、ACCTTYPE(账户类型)
LEDGERBAL 期末/账面余额 包含BALAMT(余额金额)和DTASOF(截至日期)
AVAILBAL 可用余额 包含BALAMT(余额金额)和DTASOF(截至日期)
CURDEF 货币代码 USD(美元)、GBP(英镑)、EUR(欧元)、AUD(澳元)、CAD(加元)

FITID -- 为什么它很重要

从会计角度来看,FITID(金融机构交易ID)是OFX文件中最重要的标签。它是分配给每笔交易的唯一标识符,也是实现重复检测的关键。

当您将OFX文件导入Xero、GnuCash或任何其他兼容软件时,它会存储所有已看到的FITID。再次导入同一文件时,软件会将其中的每个FITID与数据库进行比对,并静默跳过重复项。

这是OFX相对于CSV的主要优势。使用CSV时,没有唯一标识符 -- 重复导入同一文件会导致出现重复条目,需要手动清理。


OFX vs CSV

这两种格式都可以将银行交易导入会计软件。OFX在结构上占优;CSV在灵活性上占优。

为什么OFX更适合会计导入

特性 OFX CSV
列映射 自动 -- 标签定义含义 手动 -- 您分配每个列
重复检测 是(基于FITID) 否 -- 重新导入会产生重复项
日期格式 明确无歧义(年年年年月月日日时时分分秒秒) 因地区而异 -- DD/MM/YYYY vs MM/DD/YYYY
金额处理 带符号值和TRNTYPE 必须解析符号、符号、分隔符
账户识别 内嵌(路由+账号) 不包含
余额验证 包含期末余额 通常不包含
交易类型 已分类(DEBIT、CREDIT、CHECK等) 自由文本或缺失
多账户文件 单个文件支持 需要单独的文件

仅日期格式一项就能节省数小时的故障排除时间。使用CSV时,01/02/2026是模棱两可的 -- 1月2日还是2月1日?OFX通过YYYYMMDDHHMMSS消除了这种歧义。20260201120000始终是2026年2月1日。

何时CSV是更好的选择

CSV有其合理的优势:

  • 数据编辑 -- 您可以在Excel中打开CSV文件,修复错误,添加分类,然后重新保存。OFX文件需要文本编辑器和对标签结构的了解。
  • Excel分析 -- 如果您需要对交易数据运行公式、数据透视表或图表,CSV是自然的中间格式。
  • 自定义处理 -- 程序脚本和数据管道比OFX的嵌套标签结构更容易处理CSV。
  • 通用兼容性 -- 任何读取表格数据的应用程序都读取CSV。并非所有应用程序都读取OFX。

实际建议:将OFX用于导入会计软件,将CSV用于其他所有用途。


OFX vs QBO

这是最容易让人混淆的问题 -- 答案比您预期的要简单。

QBO(QuickBooks Web Connect)是OFX,但具有不同的文件扩展名和一些Intuit特有的标签。底层数据结构是相同的。QBO文件是QuickBooks识别为自己文件的OFX文件。

主要区别

方面 OFX QBO
文件扩展名 .ofx .qbo
规范 开放标准(FDX) Intuit的品牌子集
FI标识符 可选的FI块 INTU.BID标签(Intuit银行ID)
目标软件 Xero、MYOB、GnuCash、Wave等 QuickBooks(桌面版和在线版)
兼容性 更广泛 -- 大多数会计软件 QuickBooks专用

INTU.BID标签是Intuit的主要补充 -- 这是一个银行标识符代码,告诉QuickBooks文件来自哪个金融机构,从而在导入时能够自动匹配到正确的银行账户。

实际上,您可以将.ofx文件重命名为.qbo,QuickBooks通常会读取它。反之亦然 -- 大多数读取OFX的软件都会处理.qbo文件。但为了干净地导入,请使用每个应用程序期望的格式。

还有QFX(Quicken Financial Exchange)-- 相同的OFX基础,不同的品牌,不同的文件扩展名,针对Quicken。


支持OFX的软件

OFX在会计和个人理财软件中得到了广泛支持:

Xero(推荐格式)

Xero明确推荐使用OFX而不是CSV进行手动银行对账单导入。OFX文件自动映射,无需配置列,包含基于FITID的重复检测,并携带账户元数据。

导入方法: 前往 会计 > 银行账户,选择账户,点击 管理账户 > 导入对账单,然后选择您的.ofx文件。每个文件最多支持1000笔交易。

MYOB(全面支持)

MYOB接受OFX进行银行馈送导入。过程与Xero类似 -- 将文件上传到相关银行账户,交易就会出现在银行馈送中进行匹配和分类。

GnuCash(免费,开源)

GnuCash通过libofx库内置了OFX导入功能。它是处理OFX文件的最佳免费选项之一。

导入方法: 前往 文件 > 导入 > 导入OFX/QFX,选择文件,然后将其映射到正确的账户。GnuCash的重复检测使用FITID来防止重复输入。

其他兼容软件

  • Wave -- 免费会计软件,支持OFX导入
  • Sage Business Cloud -- 接受OFX进行银行交易导入
  • FreeAgent -- 支持OFX和QIF文件上传
  • Moneydance -- 个人理财软件,支持OFX直接连接和文件导入
  • KMyMoney -- 开源个人理财管理器,通过libofx支持OFX
  • Microsoft Money -- 已停产但仍有人使用;内置OFX支持是其核心功能之一
  • Reckon(澳大利亚) -- 在其银行馈送导入工作流程中接受OFX文件

QuickBooks是值得注意的例外 -- 它更喜欢其QBO品牌变体,并且使用包含INTU.BID标识符的.qbo文件时更可靠。


从PDF银行对账单创建OFX文件

大多数银行不直接提供OFX下载。它们提供PDF -- 格式化用于打印,而非数据交换。一些银行提供CSV导出(通常是最近90天的交易),但对于历史数据、已关闭账户或没有数字导出选项的银行,您只能使用PDF。

PDFSub的银行对账单转换器可从PDF银行对账单中提取交易,并生成具有正确结构的有效OFX文件。输出包括每笔交易的唯一FITID、正确的YYYYMMDD日期格式、带适当交易类型的带符号金额以及账户元数据 -- 所有会计软件进行干净导入所需的一切。

该转换器支持130多种语言的20,000多家银行的对账单。数字PDF(基于文本的对账单)在您的浏览器中处理 -- 文件永远不会离开您的设备。扫描或图像繁重的对账单则通过服务器端AI提取进行处理。

一体化套餐为每月20美元/用户(年付)或每月25美元/用户(月付),每位用户包含500页银行对账单。所有付费套餐均包含7天免费试用。有关将生成的OFX文件导入Xero的详细教程,请参阅Xero银行对账单导入指南。


常见的OFX问题及解决方法

OFX文件是结构化的,但并非万无一失。以下是最常见的问题及解决方法:

1. 无效的XML/SGML语法

症状: 您的软件以解析错误拒绝文件。

原因: 标签格式错误,缺少闭合标签(在2.x文件中),或描述中存在非法字符。和号(&)是最常见的问题 -- 在XML中必须编码为&amp;,但经常在“AT&T”之类的名称中直接使用。

修复: 在文本编辑器中打开文件,将裸露的&替换为&amp;。如果文件是2.x版本,也要检查未闭合的标签。

2. 缺少或重复的FITID

症状: 导入产生重复交易,或软件报告缺少标识符。

原因: 一些转换工具为每笔交易生成相同的FITID(如0或1),或完全省略该标签。

修复: 文件中的每个FITID都必须是唯一的。一种常见的模式是将日期和顺序计数器结合起来:20260215001、20260215002等。在导入前,在文本编辑器中编辑占位符FITID。

3. 日期格式错误

症状: 交易显示在错误的日期,或软件显示1900年或2099年的日期。

原因: DTPOSTED值不遵循YYYYMMDDHHMMSS格式。仅有YYYYMMDD(无时间)是可以的,但DD/MM/YYYY或MM-DD-YYYY会导致解析错误。

修复: 确保所有DTPOSTED值都使用YYYYMMDD或YYYYMMDDHHMMSS。20260215和20260215120000都是有效的。

4. 字符编码问题

症状: 交易描述显示乱码、问号或缺失的重音符号。

原因: 文件头声明了一种编码(通常是USASCII或UTF-8),但实际内容使用了不同的编码。这在使用包含非ASCII字符的国际银行对账单时尤其常见。

修复: 将ENCODING头部更改为与实际文件编码匹配。对于包含重音字符的国际对账单,UTF-8是最安全的选择。一些旧软件需要USASCII且不带特殊字符。

5. 版本兼容性(1.x vs 2.x)

症状: 期望OFX 2.x的软件拒绝1.x文件,反之亦然。

原因: OFX 1.x使用SGML(标签不需要闭合),而2.x使用真正的XML(所有标签都必须打开和关闭)。为某个版本构建的解析器可能会在另一个版本上失败。

修复: 大多数现代会计软件都能处理这两种版本。如果您的软件不行,可以通过添加闭合标签(1.x到2.x)或删除它们(2.x到1.x)来在版本之间进行转换。对于小文件,文本编辑器的查找和替换可以处理这个问题。


常见问题解答

OFX代表什么意思?

OFX代表Open Financial Exchange -- 一个由金融数据交换(FDX)维护的、用于金融机构与最终用户应用程序之间电子交换金融数据的开放标准。

OFX和QBO是相同的吗?

几乎相同。QBO是Intuit为QuickBooks提供的OFX品牌版本。数据结构相同 -- QBO添加了一个INTU.BID标签用于银行识别,并使用.qbo扩展名。您通常可以将.ofx重命名为.qbo,QuickBooks就会接受。

我可以在Excel中打开OFX文件吗?

不能直接作为结构化数据打开。Excel会将文件作为文本文件打开,显示原始的SGML/XML标记。要在Excel中查看OFX数据,您需要先将其转换为CSV或XLSX,或者使用第三方插件将OFX标签解析到电子表格列中。

对于Xero,OFX还是CSV更好?

OFX对Xero更好。它无需列映射即可自动导入,包含基于FITID的重复检测,使用无歧义的日期格式,并携带账户元数据。Xero自己的文档推荐使用OFX而不是CSV进行手动银行对账单导入。

银行提供OFX下载吗?

有些银行提供,但并不普遍。美国、英国和澳大利亚的主要银行可能提供近期交易(通常是过去90天)的OFX或QFX下载。许多小型银行、信用合作社和国际机构仅提供PDF对账单。对于超出下载窗口期的历史数据,PDF转换通常是唯一的选择。

OFX安全吗?

OFX规范包括在传输过程中使用SSL/TLS加密以及直接连接的基于证书的身份验证的规定。然而,保存在磁盘上的OFX文件是纯文本 -- 它以可读形式包含账号和交易详情。请像对待任何金融文件一样谨慎对待OFX文件。

OFX 1.x和2.x之间有什么区别?

OFX 1.x使用SGML标记(标签不需要闭合),而OFX 2.x使用真正的XML(所有标签都必须打开和关闭)。数据内容相同 -- 区别在于语法。1.6版本仍然是最广泛生成的格式。大多数现代会计软件都能解析这两种版本而没有问题。

我可以手动编辑OFX文件吗?

可以。OFX文件是纯文本,可以在任何文本编辑器中编辑。您可以修复描述、更正金额、添加缺失的FITID或调整日期。只需保持标签结构 -- 未闭合或不匹配的标签将导致导入失败。对于OFX 2.x文件,请确保每个开标签都有相应的闭标签。

返回博客

有疑问? 联系我们

PDFSub

您所需的一切 PDF 和文档工具,尽在一处。快速、安全且私密。

符合 GDPR符合 CCPA符合 SOC 2
由 PDFSub Engine 提供支持

产品

  • 所有工具
  • 功能
  • 银行对账单
  • API
  • 定价
  • 常见问题
  • 博客

支持

  • 关于我们
  • 帮助中心
  • 联系我们
  • 常见问题

法律条款

  • 隐私政策
  • 服务条款
  • Cookie 政策

© 2026 PDFSub. 保留所有权利。

在美国制造,怀揣对全球用户的热忱