The scenario
GlobalTrade Capital LLC buys 10,000,000 USD against 1,485,000,000 JPY at a spot rate of 148.50, settling T+2 in two legs — USD via CHIPS, JPY via BOJ-NET.
How FORAY models it
The transaction's currency (F8) is USD; the JPY-denominated elements carry their own element-scope F8, overriding inheritance exactly where the currency differs — the payable Accrual and the JPY settlement leg. The JPY allocation sums in whole yen: exact-decimal comparison needs no special casing for zero-decimal currencies.
Execution details, settlement instructions, and mark-to-market context are residue in F25 — present, hashed, and outside Root validation by design.
What to observe in the record
- Element-scope F8 appears only where the element’s currency differs from the transaction’s — inheritance is resolution, never copying.
- The trade-execution Action records status
executedin F15; status vocabulary is the record author’s. - Party entries carry LEIs; party-entry interior structure is deliberately open at 4.2 pending catalog work.
The record
Wire 4.2 record
This record is a teaching example, emitted by the FORAY generator (template fx-spot) — not hand-written. No blockchain anchoring has occurred or is implied; anchor-related fields are placeholders. Parties, amounts, and dates are illustrative. Wire keys are catalog codes (F-codes); the readable names used in the prose above are the implementer register, which never appears in hashed bytes.
{
"F1": "FX_SPOT_2026_USDJPY_001",
"F2": "FX_SPOT_2026_USDJPY_001",
"F3": "GlobalTrade Capital LLC",
"F7": 10000000,
"F8": "USD",
"F15": "settled",
"F25": {
"compliance_flags": [
"Dodd_Frank",
"EMIR",
"MiFID_II",
"CFTC"
]
},
"F26": "fx_spot",
"schema_version": "4.2",
"timestamp": "2026-01-23T14:30:00Z",
"arrangements": [
{
"F4": "fx_spot_contract",
"F5": [
{
"jurisdiction": "US-NY",
"lei": "549300ABCDEFGHIJ1234",
"name": "GlobalTrade Capital LLC",
"role": "buyer_usd"
},
{
"jurisdiction": "JP",
"lei": "353800XYZABCDEFG5678",
"name": "Tokyo Metropolitan Bank",
"role": "seller_usd"
}
],
"F7": 10000000,
"F11": "2026-01-23T14:30:00Z",
"F25": {
"currency_pair": "USD/JPY",
"description": "USD/JPY Spot - Buy 10M USD vs JPY",
"direction": "buy_usd_sell_jpy",
"execution_details": {
"benchmark_fixing": "WMR_4PM_London",
"dealer_spread": 0.02,
"execution_timestamp": "2026-01-23T14:30:22.456Z",
"execution_venue": "Reuters_Matching",
"mid_rate": 148.49
},
"legal_documents": [
"ISDA_Master_Agreement",
"FX_Definitions_2021"
],
"notional_jpy": 1485000000,
"notional_usd": 10000000,
"settlement_type": "T+2",
"spot_rate": 148.5,
"trade_date": "2026-01-23",
"value_date": "2026-01-27"
},
"id": "ARR_FX_SPOT_USDJPY"
}
],
"accruals": [
{
"F4": "fx_receivable",
"F7": 10000000,
"F17": "FixedAmount",
"F20": 10000000,
"F22": [
"ARR_FX_SPOT_USDJPY"
],
"F25": {
"accounting_entry": {
"credit": {
"account": "2150-FX Payables JPY",
"amount": 10000000,
"fx_rate": 148.5
},
"debit": {
"account": "1150-FX Receivables USD",
"amount": 10000000
}
},
"description": "USD leg receivable - awaiting T+2 settlement",
"mark_to_market": {
"mtm_rate": 148.65,
"mtm_timestamp": "2026-01-23T21:00:00Z",
"unrealized_pnl_usd": 10084.18
}
},
"id": "ACC_FX_USD_RECEIVABLE"
},
{
"F4": "fx_payable",
"F7": 1485000000,
"F8": "JPY",
"F17": "FixedAmount",
"F20": 1485000000,
"F22": [
"ARR_FX_SPOT_USDJPY"
],
"F25": {
"description": "JPY leg payable - awaiting T+2 settlement",
"nostro_account": {
"account_number": "JPY-NOSTRO-001",
"bank": "Tokyo Metropolitan Bank",
"swift": "TMBJPJTT"
}
},
"id": "ACC_FX_JPY_PAYABLE"
}
],
"anticipations": [
{
"F4": "fx_settlement",
"F10": 10000000,
"F22": [
"ARR_FX_SPOT_USDJPY"
],
"F23": [
"ACC_FX_USD_RECEIVABLE",
"ACC_FX_JPY_PAYABLE"
],
"F25": {
"description": "T+2 settlement of USD/JPY spot",
"settlement_instructions": {
"jpy_account": "JPY-NOSTRO-001",
"jpy_paying_bank": "Tokyo Metropolitan Bank",
"jpy_swift": "TMBJPJTT",
"usd_account": "USD-NOSTRO-001",
"usd_receiving_bank": "JPMorgan Chase",
"usd_swift": "CHASUS33"
}
},
"F27": "2026-01-27",
"F28": 0.999,
"id": "ANT_FX_SETTLEMENT"
}
],
"actions": [
{
"F4": "fx_trade_execution",
"F6": "Tokyo Metropolitan Bank",
"F9": 10000000,
"F12": "2026-01-23T14:30:22Z",
"F15": "executed",
"F22": [
"ARR_FX_SPOT_USDJPY"
],
"F23": [],
"F24": [],
"F25": {
"counterparty_deal_id": "TMB-FX-20260123-0892",
"deal_id": "RTR-2026012314302245",
"description": "Trade executed on Reuters Matching",
"execution_price": 148.5,
"slippage_bps": 0.5
},
"id": "ACT_FX_TRADE_EXECUTION"
},
{
"F4": "fx_settlement_leg",
"F6": "Tokyo Metropolitan Bank",
"F9": 10000000,
"F12": "2026-01-27T16:00:00Z",
"F15": "completed",
"F16": "chips",
"F21": [
{
"allocation_type": "full",
"amount": 10000000,
"currency": "USD",
"ref": "ACC_FX_USD_RECEIVABLE",
"ref_type": "accrual",
"remaining_balance": 0
}
],
"F22": [
"ARR_FX_SPOT_USDJPY"
],
"F23": [
"ACC_FX_USD_RECEIVABLE"
],
"F24": [
"ANT_FX_SETTLEMENT"
],
"F25": {
"chips_uid": "20260127CHPS1234567",
"description": "USD leg settled via CHIPS",
"receiving_bank_confirmation": "JPMC-CONF-789012"
},
"id": "ACT_FX_SETTLEMENT_USD"
},
{
"F4": "fx_settlement_leg",
"F6": "Tokyo Metropolitan Bank",
"F8": "JPY",
"F9": 1485000000,
"F12": "2026-01-27T09:00:00Z",
"F15": "completed",
"F16": "boj_net",
"F21": [
{
"allocation_type": "full",
"amount": 1485000000,
"currency": "JPY",
"ref": "ACC_FX_JPY_PAYABLE",
"ref_type": "accrual",
"remaining_balance": 0
}
],
"F22": [
"ARR_FX_SPOT_USDJPY"
],
"F23": [
"ACC_FX_JPY_PAYABLE"
],
"F24": [
"ANT_FX_SETTLEMENT"
],
"F25": {
"boj_reference": "BOJNET-20260127-JP456789",
"description": "JPY leg settled via BOJ-NET",
"paying_bank_confirmation": "TMB-PAY-CONF-2345",
"settlement_time_jst": "2026-01-27T18:00:00+09:00"
},
"id": "ACT_FX_SETTLEMENT_JPY"
}
],
"component_hashes": {
"accruals": "sha256:PLACEHOLDER",
"actions": "sha256:PLACEHOLDER",
"anticipations": "sha256:PLACEHOLDER",
"arrangements": "sha256:PLACEHOLDER"
},
"merkle_root": "sha256:PLACEHOLDER",
"blockchain_anchor": {
"anchored_at": null,
"block_height": null,
"confirmation_time_ms": null,
"kaspa_tx_id": null
}
}
Canonical form — the hashed bytes
The canonical byte form is a single line: F-coded members in ascending numeric order, envelope members in their ruled enumeration, one legal spelling per number. The hash below is computed over exactly the bytes shown — copy the line into any SHA-256 tool to reproduce it.
{"F1":"FX_SPOT_2026_USDJPY_001","F2":"FX_SPOT_2026_USDJPY_001","F3":"GlobalTrade Capital LLC","F7":10000000,"F8":"USD","F15":"settled","F25":{"compliance_flags":["Dodd_Frank","EMIR","MiFID_II","CFTC"]},"F26":"fx_spot","schema_version":"4.2","timestamp":"2026-01-23T14:30:00Z","arrangements":[{"F4":"fx_spot_contract","F5":[{"jurisdiction":"US-NY","lei":"549300ABCDEFGHIJ1234","name":"GlobalTrade Capital LLC","role":"buyer_usd"},{"jurisdiction":"JP","lei":"353800XYZABCDEFG5678","name":"Tokyo Metropolitan Bank","role":"seller_usd"}],"F7":10000000,"F11":"2026-01-23T14:30:00Z","F25":{"currency_pair":"USD/JPY","description":"USD/JPY Spot - Buy 10M USD vs JPY","direction":"buy_usd_sell_jpy","execution_details":{"benchmark_fixing":"WMR_4PM_London","dealer_spread":0.02,"execution_timestamp":"2026-01-23T14:30:22.456Z","execution_venue":"Reuters_Matching","mid_rate":148.49},"legal_documents":["ISDA_Master_Agreement","FX_Definitions_2021"],"notional_jpy":1485000000,"notional_usd":10000000,"settlement_type":"T+2","spot_rate":148.5,"trade_date":"2026-01-23","value_date":"2026-01-27"},"id":"ARR_FX_SPOT_USDJPY"}],"accruals":[{"F4":"fx_receivable","F7":10000000,"F17":"FixedAmount","F20":10000000,"F22":["ARR_FX_SPOT_USDJPY"],"F25":{"accounting_entry":{"credit":{"account":"2150-FX Payables JPY","amount":10000000,"fx_rate":148.5},"debit":{"account":"1150-FX Receivables USD","amount":10000000}},"description":"USD leg receivable - awaiting T+2 settlement","mark_to_market":{"mtm_rate":148.65,"mtm_timestamp":"2026-01-23T21:00:00Z","unrealized_pnl_usd":10084.18}},"id":"ACC_FX_USD_RECEIVABLE"},{"F4":"fx_payable","F7":1485000000,"F8":"JPY","F17":"FixedAmount","F20":1485000000,"F22":["ARR_FX_SPOT_USDJPY"],"F25":{"description":"JPY leg payable - awaiting T+2 settlement","nostro_account":{"account_number":"JPY-NOSTRO-001","bank":"Tokyo Metropolitan Bank","swift":"TMBJPJTT"}},"id":"ACC_FX_JPY_PAYABLE"}],"anticipations":[{"F4":"fx_settlement","F10":10000000,"F22":["ARR_FX_SPOT_USDJPY"],"F23":["ACC_FX_USD_RECEIVABLE","ACC_FX_JPY_PAYABLE"],"F25":{"description":"T+2 settlement of USD/JPY spot","settlement_instructions":{"jpy_account":"JPY-NOSTRO-001","jpy_paying_bank":"Tokyo Metropolitan Bank","jpy_swift":"TMBJPJTT","usd_account":"USD-NOSTRO-001","usd_receiving_bank":"JPMorgan Chase","usd_swift":"CHASUS33"}},"F27":"2026-01-27","F28":0.999,"id":"ANT_FX_SETTLEMENT"}],"actions":[{"F4":"fx_trade_execution","F6":"Tokyo Metropolitan Bank","F9":10000000,"F12":"2026-01-23T14:30:22Z","F15":"executed","F22":["ARR_FX_SPOT_USDJPY"],"F23":[],"F24":[],"F25":{"counterparty_deal_id":"TMB-FX-20260123-0892","deal_id":"RTR-2026012314302245","description":"Trade executed on Reuters Matching","execution_price":148.5,"slippage_bps":0.5},"id":"ACT_FX_TRADE_EXECUTION"},{"F4":"fx_settlement_leg","F6":"Tokyo Metropolitan Bank","F9":10000000,"F12":"2026-01-27T16:00:00Z","F15":"completed","F16":"chips","F21":[{"allocation_type":"full","amount":10000000,"currency":"USD","ref":"ACC_FX_USD_RECEIVABLE","ref_type":"accrual","remaining_balance":0}],"F22":["ARR_FX_SPOT_USDJPY"],"F23":["ACC_FX_USD_RECEIVABLE"],"F24":["ANT_FX_SETTLEMENT"],"F25":{"chips_uid":"20260127CHPS1234567","description":"USD leg settled via CHIPS","receiving_bank_confirmation":"JPMC-CONF-789012"},"id":"ACT_FX_SETTLEMENT_USD"},{"F4":"fx_settlement_leg","F6":"Tokyo Metropolitan Bank","F8":"JPY","F9":1485000000,"F12":"2026-01-27T09:00:00Z","F15":"completed","F16":"boj_net","F21":[{"allocation_type":"full","amount":1485000000,"currency":"JPY","ref":"ACC_FX_JPY_PAYABLE","ref_type":"accrual","remaining_balance":0}],"F22":["ARR_FX_SPOT_USDJPY"],"F23":["ACC_FX_JPY_PAYABLE"],"F24":["ANT_FX_SETTLEMENT"],"F25":{"boj_reference":"BOJNET-20260127-JP456789","description":"JPY leg settled via BOJ-NET","paying_bank_confirmation":"TMB-PAY-CONF-2345","settlement_time_jst":"2026-01-27T18:00:00+09:00"},"id":"ACT_FX_SETTLEMENT_JPY"}],"component_hashes":{"accruals":"sha256:PLACEHOLDER","actions":"sha256:PLACEHOLDER","anticipations":"sha256:PLACEHOLDER","arrangements":"sha256:PLACEHOLDER"},"merkle_root":"sha256:PLACEHOLDER","blockchain_anchor":{"anchored_at":null,"block_height":null,"confirmation_time_ms":null,"kaspa_tx_id":null}}
Canonical-bytes SHA-256: 74f8d004b372dde10a76813a4043dc3ae4f625628b91d3cc5e43a2700c5f3d3a
Validated against the live validator (POST /api/validate-foray): 0 errors, 0 warnings.