Cash Sale: Action-Only Record

A walk-in cash sale — no contract, no receivable, one component

The scenario

A customer buys a coffee order at the register of Corner Cafe LLC and pays 12.50 USD in cash. There is no contract, no credit terms, no invoice — value settles the moment it moves.

How FORAY models it

Any component type can be a record's entry point. A cash sale is settlement and nothing else, so this record carries one Action and three empty component arrays — empty, but present, because the four arrays are required envelope structure.

The Action carries the settled amount (F9, register name foray_settled_amount) and status (F15). The transaction's own amount (F7) and currency (F8) sit at top level; the Action's monetary fact resolves its currency from the transaction's F8 by inheritance — nothing is copied downward.

What to observe in the record

  • The record identifier (F1) and source record reference (F2) are equal: this record originates natively and names itself as its source.
  • All four component arrays are present; three are empty.
  • Whole-dollar values are spelled as bare integers on the wire — 12.5, never 12.50 — the canonical decimal spelling.

Wire 4.2 record

This record is a teaching example, emitted by the FORAY generator (template action-only-cash-receipt) — 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": "RETAIL_2026_Q3_CASH_112",
  "F2": "RETAIL_2026_Q3_CASH_112",
  "F3": "Corner Cafe LLC",
  "F7": 12.5,
  "F8": "USD",
  "F26": "cash_receipt",
  "schema_version": "4.2",
  "timestamp": "2026-07-24T08:15:00Z",
  "arrangements": [],
  "accruals": [],
  "anticipations": [],
  "actions": [
    {
      "F4": "cash_receipt",
      "F9": 12.5,
      "F15": "completed",
      "F22": [],
      "F23": [],
      "F24": [],
      "id": "ACT_CASH_SALE_112"
    }
  ],
  "component_hashes": {},
  "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":"RETAIL_2026_Q3_CASH_112","F2":"RETAIL_2026_Q3_CASH_112","F3":"Corner Cafe LLC","F7":12.5,"F8":"USD","F26":"cash_receipt","schema_version":"4.2","timestamp":"2026-07-24T08:15:00Z","arrangements":[],"accruals":[],"anticipations":[],"actions":[{"F4":"cash_receipt","F9":12.5,"F15":"completed","F22":[],"F23":[],"F24":[],"id":"ACT_CASH_SALE_112"}],"component_hashes":{},"merkle_root":"sha256:PLACEHOLDER","blockchain_anchor":{"anchored_at":null,"block_height":null,"confirmation_time_ms":null,"kaspa_tx_id":null}}

Canonical-bytes SHA-256: 71db9e649977b6c90de4e3191d8953f15a27423fc12cae104ab92de02f59ce14

Validated against the live validator (POST /api/validate-foray): 0 errors, 0 warnings.