FX Spot: USD/JPY With Two Settlement Legs

Element-scope currency and a zero-decimal JPY allocation

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 executed in 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.

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.