什麼是 OFX 格式?Open Financial Exchange (開放金融交換) 詳解
OFX 是銀行與軟體之間交換財務數據的開放標準。本文將介紹 OFX 檔案的內容,以及為何 Xero、MYOB 和 GnuCash 偏好使用此格式。
您的會計軟體要求提供 OFX 檔案,但銀行只給了您 PDF。現在您正盯著一個從未聽過的格式,心裡納悶為什麼好端端的試算表不能用。
OFX —— Open Financial Exchange (開放金融交換) —— 是驅動現代金融軟體的隱形標準。它是 Xero 能夠在無需手動對應欄位的情況下匯入銀行交易的原因;它是 GnuCash 能夠偵測重複項的原因;它也是 QuickBooks 的 QBO 格式所建立的基礎。
本指南將深入解析 OFX 的實際定義、包含的內容、與 CSV 和 QBO 的比較、支援的軟體,以及如何從 PDF 銀行對帳單建立 OFX 檔案。
一句話解釋 OFX
Open Financial Exchange 是一種基於 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 (標準通用標記語言)。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 可以包含什麼
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. 標頭區塊 (Header Block) —— 頂部的純文字行(在 <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, POS, XFER, FEE, SRVCHG, INT |
DTPOSTED |
過帳日期 | 20260215120000 (YYYYMMDDHHMMSS) |
TRNAMT |
交易金額 (帶正負號) | -87.50 (負數 = 支出), 3500.00 (正數 = 存入) |
FITID |
金融機構交易 ID | 20260215001 —— 用於重複偵測的唯一識別碼 |
NAME |
收款人或商家名稱 | POS PURCHASE GROCERY |
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) | 不支援 —— 重新匯入會產生重複項 |
| 日期格式 | 明確無誤 (YYYYMMDDHHMMSS) | 因地區而異 —— 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 是自然的過渡格式。
- 自定義處理 —— 程式腳本和數據流水線處理 CSV 比處理 OFX 的嵌套標籤結構更容易。
- 通用相容性 —— 每個讀取表格數據的應用程式都能讀取 CSV。並非每個應用程式都能讀取 OFX。
實際建議:匯入會計軟體時使用 OFX,其他用途則使用 CSV。
OFX vs QBO
這是最讓大眾困惑的問題 —— 而答案比您預期的要簡單。
QBO (QuickBooks Web Connect) 其實就是換了副檔名並增加了一些 Intuit 特定標籤的 OFX。底層數據結構是完全相同的。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 的重複偵測,並攜帶帳戶中繼資料。
如何匯入: 前往 Accounting > Bank Accounts,選擇帳戶,點擊 Manage Account > Import a Statement,然後選擇您的 .ofx 檔案。每個檔案最多支援 1,000 筆交易。
MYOB (全面支援)
MYOB 接受 OFX 用於銀行饋送匯入。過程與 Xero 類似 —— 將檔案上傳到相關銀行帳戶,交易就會出現在銀行饋送中供匹配和分類。
GnuCash (免費開源)
GnuCash 通過 libofx 函式庫內建了 OFX 匯入功能。它是處理 OFX 檔案的最佳免費選擇之一。
如何匯入: 前往 File > Import > Import 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 —— 這是為了列印而設計的,而不是為了數據交換。有些銀行提供最近交易(通常是過去 90 天)的 CSV 匯出,但對於歷史數據、已關閉的帳戶或沒有數位匯出選項的銀行,您只能使用 PDF。
PDFSub 的銀行對帳單轉換器 可以從 PDF 銀行對帳單中提取交易,並生成結構正確且有效的 OFX 檔案。輸出內容包括每筆交易的唯一 FITID、正確的 YYYYMMDD 日期格式、帶有適當交易類型的正負金額以及帳戶中繼資料 —— 這是會計軟體進行乾淨匯入所需的一切。
該轉換器支援來自 20,000 多家銀行、133 種語言的對帳單。數位 PDF(基於文字的對帳單)會在您的瀏覽器中處理 —— 檔案永遠不會離開您的裝置。掃描件或圖片較多的對帳單則通過伺服器端 AI 進行提取。
方案起價為每月 24.90 美元(500 頁),並提供 7 天免費試用。有關將生成的 OFX 檔案匯入 Xero 的詳細步驟,請參閱 Xero 銀行對帳單匯入指南。
常見 OFX 問題及解決方法
OFX 檔案雖然是結構化的,但並非萬無一失。以下是最常見的問題及其解決方案:
1. 無效的 XML/SGML 語法
症狀: 您的軟體因解析錯誤而拒絕該檔案。
原因: 標籤格式錯誤、缺少閉合標籤(在 2.x 檔案中)或說明中包含非法字元。和字號 (&) 是最常見的元兇 —— 在 XML 中它們必須編碼為 &,但在像 "AT&T" 這樣的名稱中經常被直接保留。
修正: 在文字編輯器中打開檔案,將單獨的 & 替換為 &。如果是 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 更好?
對於 Xero,OFX 更好。它無需欄位對應即可自動匯入,包含基於 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 檔案,請確保每個開啟標籤都有對應的閉合標籤。