共通
- 文字コードは、UTF-8固定とする。
- 改行コードは、CRLF固定とする。
- タグ間に改行文字・スペース文字・タブ文字を含めるか否かは、任意とするが、意味を持たない改行文字・スペース文字・タブ文字は、記述しないのが望ましい。ただし、本書では、可読性向上のため、これらの文字を使用している。
基本構造
OFXは、以下のように記述する。なお、コメント(<!--~-->)は、GnuCashで文字コードを正しく認識できない問題に対処する目的で記述している。
<?xml version="1.0" encoding="UTF-8"?>
<?OFX OFXHEADER="200" VERSION="200" SECURITY="NONE" OLDFILEUID="NONE" NEWFILEUID="NONE"?>
<!--
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:UTF-8
CHARSET:UNICODE
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
-->
<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<DTSERVER>OFXを生成した日時</DTSERVER>
<LANGUAGE>JPN</LANGUAGE>
<FI>
<ORG>プログラム名</ORG>
</FI>
</SONRS>
</SIGNONMSGSRSV1>
銀行・クレジットカード・証券・前払式帳票(電子マネー)のいずれか
</OFX>
プログラム名(A-32)
OFXを生成したプログラム名。
例:PURSE/1.0
日時(A-32、datetime)
YYYYMMDDHHIISS[TZ]
YYYY: 0000-9999, MM: 01-12, DD: 01-31, HH: 00-23, II: 00-59, SS: 00-60, TZ: +9:JST
年月日時分秒、タイムゾーンを連結した22バイトの文字列。
年月日の年は4桁の数値、月日は各々2桁の数値。指定桁数に満たない場合、ゼロパディングする。
時分秒は各々2桁の数値。指定桁数に満たない場合、ゼロパディングする。特に必要がなければ000000固定でもよい。
タイムゾーンは[+9:JST]固定とする。
OFX2.1.1仕様では、時分秒、タイムゾーンは省略可能だが、本仕様ではいずれも必須とする。
OFX2.1.1仕様では、ミリ秒は省略可能だが、本仕様では指定してはならない。
例(2012年6月15日の場合):20120615000000[+9:JST]
金額(A-32、amount)
金額を示す数値。カンマは記述しない。
入金は正の数値、出金は負の数値とする。正の数値の場合、+は省略してもよい。
例(+1234.5円の場合):1234.5
口座情報(A-360)
金融機関や口座情報を示す文字列。
銀行の場合、金融機関名、支店名、口座名を全角スペースで連結した文字列とする。クレジットカードの場合、金融機関名とカード名を全角スペースで連結した文字列とする。証券の場合、金融機関名とする。前払式帳票(電子マネー)の場合、識別子とするか、または識別子、ユーザーID等を全角スペースで連結した文字列とする
OFX2.1.1仕様では、タグ<MKTGINGO></MKTGINGO>自体が省略可能だが、本仕様では必須とする。
例(三菱東京UFJ銀行丸の内支店普通口座の場合):三菱東京UFJ銀行 丸の内支店 普通
明細
1件毎に、以下のように記述する。
<STMTTRN>
<TRNTYPE>取引種目</TRNTYPE>
<DTPOSTED>日時</DTPOSTED>
<TRNAMT>金額</TRNAMT>
<FITID>明細ID</FITID>
<NAME>摘要</NAME>
<MEMO>メモ</MEMO>
</STMTTRN>
取引種目
OFX2.1.1仕様で定義されている取引種目のうち、いずれかを指定する。
共通
受取利息・支払利息はINT、金融機関への支払手数料はFEE、(金融機関以外への)取引手数料はSRVCHG、(金融機関以外への)口座振替はDIRECTDEBIT、電子決済はPAYMENT、その他の入出金はOTHERとする。
銀行・クレジットカード
規則性や繰り返しのある支払はREPEATPMTとする。
銀行・証券
ATM(通帳・キャッシュカード)での入出金はATM、現金入金はDEP、現金出金はCASH、振込入出金はDIRECTDEP、(同一の金融機関口座における)預金種目間の振替はXFERとする。
前払式帳票(電子マネー)
特に必要なければDIRECTDEBITとする。その他を指定する場合、銀行に準じる。
銀行のみ
POS(レジ)での入出金はPOS、デビットカード払いはDEBIT、小切手払いはCHECKとする。
クレジットカードのみ
クレジットカード払いはCREDITとする。
証券のみ
分配金・配当金はDIVとする。
明細ID(A-255)
年月日、口座種目、請求月、データ種別、トランザクション通番を連結した20バイトの文字列。
年月日の年は4桁の数値、月日は各々2桁の数値。指定桁数に満たない場合、ゼロパディングする。
口座種目は4桁の数値。指定桁数に満たない場合、ゼロパディングする。同一のログイン情報配下に複数口座が登録されている場合、各々の口座を識別するために使用する。特に必要なければ0000固定とする。
請求月は2桁の数値。指定桁数に満たない場合、ゼロパディングする。クレジットカードにおいて、同一の日付に複数の明細が存在し、かつ明細毎に請求月が異なり、かつOFXを請求月単位で生成する場合、複数のOFXに亘って同一の明細IDが生成されてしまうため、それを防ぐために指定する。特に必要なければ00固定とする。
データ種別は1桁の数値。金融機関の明細には存在しない明細を追加する場合(具体的にはクレジットカードにおいて、支払日明細を追加する場合)1とする。特に必要なければ0固定とする。
トランザクション通番は5桁の数値。指定桁数に満たない場合、ゼロパディングする。年月日毎に00000から始まる連番とする。
例(2012年6月15日、口座種別20、請求月7、データ種別1、トランザクション通番12の場合):20120615002007100012
摘要(A-32)
摘要を示す文字列。
メモ(A-255)
メモを示す文字列。特に必要なければ-固定とする。
OFX2.1.1仕様では、タグ<MEMO></MEMO>自体が省略可能だが、本仕様では必須とする。

ソーシャルボタン