Screens

Every screen below was generated from this object by OODS Foundry 0.10.1, in React and Vue, and shows the calls that made it and its content hash. Each runs as its generated app runs, in this site's brand, Aquex, in the theme you choose, with the sample records this object's own file carries. A value no record gives shows as a neutral one, such as an empty value or "Not recorded"; OODS Foundry invents none.

React app · sample recordsMaturity: not declaredsha256:6585b492cd9f…Open full size: Transaction detail screen generated by OODS Foundry in React
The calls that made the Transaction detail apps, in React and Vue
3 calls, as the pipeline sent them
design_compose {
  "object": "Transaction",
  "context": "detail",
  "preferences": {
    "brand": "Aquex",
    "theme": "light"
  }
}

code_generate {
  "schemaRef": "compose-e6e999b0",
  "framework": "react",
  "profile": "build",
  "options": {
    "output": "application",
    "brand": "Aquex",
    "theme": "light",
    "payloadMode": "file"
  }
}

code_generate {
  "schemaRef": "compose-e6e999b0",
  "framework": "vue",
  "profile": "build",
  "options": {
    "output": "application",
    "brand": "Aquex",
    "theme": "light",
    "payloadMode": "file"
  }
}

The React app's content hash: sha256:6585b492cd9f828fee0b1e4e072a3c40c1dd97349f650145b8ae02480aa71ee2. Its src/ folder: App.tsx, GeneratedUI.tsx, app.css, main.tsx, oods-brand-aquex.css

The Vue app's content hash: sha256:9c16817eb7353dab66acc8b4a9a2e967adea2b188760a0c54fec7cd9280492e3. Its src/ folder: App.vue, GeneratedUI.vue, app.css, main.ts, oods-brand-aquex.css

Fields

FieldTypeDescription
statusrequired string Canonical lifecycle state derived from the states parameter.
More

This is the single source of truth for the entity's current lifecycle position. Consumed by Colorized to resolve visual tokens, and by view extensions to render StatusBadge and StatusTimeline.

state_history StateTransition[] Chronological log of state transitions.
More

Each entry records the before/after states, timestamp, and (when governance is enabled) the actor, reason, and transition metadata. Rendered by StatusTimeline in the detail and timeline views. Entry structure: - from: string (previous state) - to: string (new state) - timestamp: ISO 8601 datetime - actor_id: string (user/system who triggered the transition, optional) - reason: string (human-readable justification, required when requireTransitionReason is true) - transition_metadata: Record<string, unknown> (arbitrary context, optional)

allowed_transitions string[] Materialized list of valid next states from the current status, computed from the transitionRules parameter.
More

When transitionRules is null (open model), this contains all states except the current one. Used by StatusSelector to disable invalid options and by StatusBadge to indicate available paths.

created_atrequired datetime Timestamp recording when the entity was first created.
updated_at datetime Timestamp for the most recent modification, when available.
last_eventrequired string Lifecycle event associated with the most recent timestamp mutation.
last_event_at datetime Timestamp for the lifecycle event captured in last_event.
unit_amount_centsrequired number Base unit price expressed in the smallest currency denomination.
currencyrequired string ISO currency code for the unit amount.
pricing_modelrequired string Monetization model applied to the entity.
billing_interval string Billing cadence when pricing_model indicates recurring revenue.
tax_behaviorrequired string (exclusive, inclusive) Defines whether taxes are included in the displayed price.
cancel_at_period_end boolean Whether cancellation occurs at the natural period end instead of immediately.
More

When true the entity is in a REVERSIBLE pending-cancellation state: the schedule can be undone (set back to false) any time before period end, returning the entity to active. This is distinct from a terminal cancellation (a `terminated`/canceled subscription), which is irreversible and non-reactivatable. Mirrors Stripe's cancel_at_period_end flag (docs.stripe.com/billing/subscriptions/cancel).

cancellation_reason string Free-form detail describing why cancellation occurred.
cancellation_reason_code string Structured reason code chosen from the allowedReasons parameter.
cancellation_requested_at datetime Timestamp capturing when the cancellation workflow was initiated.
is_archivedrequired boolean Flag indicating whether the entity is currently archived (soft-deleted).
archived_at datetime? Timestamp for when the entity entered the archived state.
restored_at datetime? Timestamp for when the entity was most recently restored from an archived state.
archive_reason string Human-readable narrative describing why the entity was archived.
archived_by string User ID or system identifier of the actor who archived this entity.
More

Set to "system" for automated/policy-driven archival. Supports audit trail queries like "show all entities archived by user X" or "show all auto-archived entities".

archive_metadata object Structured metadata about the archival action for compliance and audit purposes.
More

Properties: - method: "manual" | "automated" | "policy" — how the archive was triggered - compliance_tags: string[] — regulatory labels (e.g., ["GDPR", "SOX", "HIPAA"]) - retention_policy_id: string — reference to the retention policy that triggered archival - original_status: string — the Stateful status before archival - related_entity_count: number — count of related entities also archived (cascade)

restoration_metadata object Metadata about the most recent restoration action.
More

Properties: - restored_by: string — user ID or "system" - restored_fields: string[] — when partial restore, which fields were restored - restoration_reason: string — why the entity was restored - restored_from_snapshot: boolean — whether restored from a point-in-time snapshot

transaction_idrequired uuid Unique identifier for the transaction record.
user_idrequired uuid Identifier of the user associated with the transaction.
user_name string Display name of the user associated with the transaction.
organization_id uuid Tenant organization responsible for the transaction.
organization_name string Display name of the tenant organization responsible for the transaction.
occurred_atrequired datetime Timestamp when the transaction occurred in the source system.
payment_methodrequired string (card, bank_transfer, digital_wallet, invoice) Funding source used to complete the transaction.
channelrequired string (online, in_app, point_of_sale, partner) Sales channel through which the transaction was initiated.
payment_reference string Provider reference code linking to the payment processor.
description string What the payment was for, as it appears on the customer's statement.
risk_score number Fraud assessment score assigned during authorization.

Traits

Each trait adds fields and behaviour. Every object with the trait gets the same.

Relationships

These arrows show declared relationships between object types. They don't join live records.

Relationships: Transaction3 object types and 2 declared associations. Arrows point from source to target. Labels state source-relative cardinality and the via field; they do not assert live referential integrity. Transaction to Organization: Tenant organization, many-to-one, via organization_id. Transaction to User: User, many-to-one, via user_id.Tenant organizationmany-to-onevia organization_idUsermany-to-onevia user_idCanonical account record for tenant and workspace governance across the platform.OrganizationTraits: Labelled, Stateful, Ownerable,Timestampable, Taggable, Addressable,Preferenceable, Authable, CommunicableKey fields (6 of 46)organization_id: uuid *label: string *billing_status: string *domain: string *plan_tier: string *billing_contact_email: emailCanonical transaction record tracking monetary movement, lifecycle, and audit metadata.TransactionTraits: Stateful, Timestampable,Priceable, Cancellable, ArchivableKey fields (6 of 32)transaction_id: uuid *payment_reference: stringuser_id: uuid *organization_id: uuidchannel: string *occurred_at: datetime *Canonical identity record representing a platform user across lifecycle contexts.UserTraits: Stateful, Timestampable,Taggable, Addressable, Preferenceable,Authable, CommunicableKey fields (6 of 37)user_id: uuid *name: string *primary_email: email *role: string *description: stringpreferred_name: string

The object file

The Transaction object definition in YAML: objects/core/Transaction.object.yaml
object:
  name: Transaction
  version: 1.1.0
  domain: core.commerce
  description: Canonical transaction record tracking monetary movement, lifecycle, and audit metadata.
  tags:
    - universal
    - transaction
    - commerce

traits:
  - name: lifecycle/Stateful
    parameters:
      states:
        - pending
        - authorized
        - settled
        - failed
        - refunded
        - cancelled
      initialState: pending
  - name: lifecycle/Timestampable
    parameters:
      recordedEvents:
        - initiated
        - authorized
        - settled
        - refunded
        - failed
      timezone: UTC
  - name: financial/Priceable
    parameters:
      supportedCurrencies:
        - USD
        - EUR
        - GBP
        - JPY
        - AUD
      defaultCurrency: USD
      pricingModels:
        - one_time
        - usage_based
      billingIntervals:
        - one_time
      taxBehavior: exclusive
  - name: lifecycle/Cancellable
    parameters:
      allowCancellationAfterStart: false
      cancellationWindowHours: 24
      requireReason: true
      allowedReasons:
        - customer_request
        - suspected_fraud
        - duplicate_charge
        - payment_method_error
  - name: lifecycle/Archivable
    parameters:
      gracePeriodDays: 365
      retainHistory: true
      restoreWindowDays: 30

schema:
  transaction_id:
    type: uuid
    required: true
    description: Unique identifier for the transaction record.
  user_id:
    type: uuid
    required: true
    description: Identifier of the user associated with the transaction.
  user_name:
    type: string
    required: false
    description: Display name of the user associated with the transaction.
  organization_id:
    type: uuid
    required: false
    description: Tenant organization responsible for the transaction.
  organization_name:
    type: string
    required: false
    description: Display name of the tenant organization responsible for the transaction.
  occurred_at:
    type: datetime
    required: true
    description: Timestamp when the transaction occurred in the source system.
  payment_method:
    type: string
    required: true
    description: Funding source used to complete the transaction.
    validation:
      enum:
        - card
        - bank_transfer
        - digital_wallet
        - invoice
  channel:
    type: string
    required: true
    default: online
    description: Sales channel through which the transaction was initiated.
    validation:
      enum:
        - online
        - in_app
        - point_of_sale
        - partner
  payment_reference:
    type: string
    required: false
    description: Provider reference code linking to the payment processor.
  description:
    type: string
    required: false
    description: What the payment was for, as it appears on the customer's statement.
    validation:
      maxLength: 160
  risk_score:
    type: number
    required: false
    description: Fraud assessment score assigned during authorization.
    validation:
      minimum: 0
      maximum: 100

semantics:
  transaction_id:
    semantic_type: commerce.transaction.id
    token_mapping: tokenMap(commerce.transaction.id)
  user_id:
    semantic_type: identity.user.id
    token_mapping: tokenMap(identity.id.primary)
    ui_hints:
      displayLabelField: user_name
  user_name:
    semantic_type: identity.user.name
    token_mapping: tokenMap(identity.name.primary)
  organization_id:
    semantic_type: organization.id
    token_mapping: tokenMap(organization.id.primary)
    ui_hints:
      displayLabelField: organization_name
  organization_name:
    semantic_type: organization.name
    token_mapping: tokenMap(organization.name.primary)
  # The one-line summary under the payment reference in lists: what the payment was for.
  description:
    semantic_type: text.summary
    token_mapping: tokenMap(commerce.transaction.description)
  occurred_at:
    semantic_type: commerce.transaction.timestamp
    token_mapping: tokenMap(commerce.transaction.timestamp)
  payment_method:
    semantic_type: commerce.payment.method
    token_mapping: tokenMap(commerce.payment.method)
  channel:
    semantic_type: commerce.transaction.channel
    token_mapping: tokenMap(commerce.transaction.channel)
  payment_reference:
    semantic_type: text.label
    token_mapping: tokenMap(commerce.transaction.id)
    ui_hints:
      displayFallbackField: transaction_id
  risk_score:
    semantic_type: risk.transaction.score
    token_mapping: tokenMap(risk.score.primary)

tokens:
  commerce.transaction.id: "var(--text-strong)"
  commerce.transaction.channel.partner: "var(--status-info)"
  risk.score.primary: "var(--status-warning)"

metadata:
  owners:
    - finance@oods.systems
    - risk@oods.systems
  steward: platform@oods.systems
  changelog:
    - version: 1.1.0
      date: "2026-09-20"
      description: Name transactions by the optional payment reference, falling back to transaction_id for display only.
    - version: 1.0.0
      date: "2025-10-16"
      description: Initial Universal Quintet baseline.

# Authored type associations; no record join or referential-integrity claim.
relationships:
  - target: User
    via: user_id
    cardinality: many-to-one
    label: User
  - target: Organization
    via: organization_id
    cardinality: many-to-one
    label: Tenant organization

# Eight authored sample transactions: the sample subscriptions' payments (one a bank transfer still in progress), a
# card-verification hold and a cancelled checkout, each by a sample organization's user. Amounts are stored at Priceable's factor of 100 per currency unit.
# Cancellation is not a recorded event, so the cancelled checkout's last event is its initiation.
samples:
  - payment_reference: PAY-2026-0412
    description: Business plan, Sep 2 to Oct 2
    user_id: 8b2e4d6f-1a3c-4e5b-9d7f-2c4e6a8b0d01
    user_name: Dana Whitfield
    organization_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a01
    organization_name: Northwind Traders
    occurred_at: '2026-09-02T15:00:00Z'
    unit_amount_cents: 14900
    currency: USD
    pricing_model: one_time
    payment_method: card
    channel: online
    risk_score: 8
    status: settled
    state_history:
      - { title: Initiated, from: null, to: pending, at: '2026-09-02T15:00:00Z', reason: Business plan renewal charge }
      - { title: Authorized, from: pending, to: authorized, at: '2026-09-02T15:01:00Z', reason: Approved by the card issuer }
      - { title: Settled, from: authorized, to: settled, at: '2026-09-03T02:00:00Z', reason: Included in the nightly payout }
    cancellation_reason: null
    cancellation_reason_code: null
    cancellation_requested_at: null
    created_at: '2026-09-02T15:00:00Z'
    updated_at: '2026-09-03T02:00:00Z'
    last_event: settled
    last_event_at: '2026-09-03T02:00:00Z'
  - payment_reference: PAY-2026-0388
    description: Upgrade to Business, prorated
    user_id: 8b2e4d6f-1a3c-4e5b-9d7f-2c4e6a8b0d01
    user_name: Dana Whitfield
    organization_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a01
    organization_name: Northwind Traders
    occurred_at: '2026-06-16T15:00:00Z'
    unit_amount_cents: 5333
    currency: USD
    pricing_model: one_time
    payment_method: card
    channel: online
    risk_score: 6
    status: settled
    state_history:
      - { title: Initiated, from: null, to: pending, at: '2026-06-16T15:00:00Z', reason: Prorated charge for the upgrade to Business }
      - { title: Authorized, from: pending, to: authorized, at: '2026-06-16T15:01:00Z', reason: Approved by the card issuer }
      - { title: Settled, from: authorized, to: settled, at: '2026-06-17T02:00:00Z', reason: Included in the nightly payout }
    cancellation_reason: null
    cancellation_reason_code: null
    cancellation_requested_at: null
    created_at: '2026-06-16T15:00:00Z'
    updated_at: '2026-06-17T02:00:00Z'
    last_event: settled
    last_event_at: '2026-06-17T02:00:00Z'
  - payment_reference: PAY-2026-0417
    description: Starter plan, Sep 15 to Oct 15
    user_id: 8b2e4d6f-1a3c-4e5b-9d7f-2c4e6a8b0d04
    user_name: Tomas Lindqvist
    organization_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a03
    organization_name: Lindqvist Bakery
    occurred_at: '2026-09-15T08:00:00Z'
    unit_amount_cents: 1900
    currency: EUR
    pricing_model: one_time
    payment_method: card
    channel: online
    risk_score: 4
    status: settled
    state_history:
      - { title: Initiated, from: null, to: pending, at: '2026-09-15T08:00:00Z', reason: Starter plan renewal charge }
      - { title: Authorized, from: pending, to: authorized, at: '2026-09-15T08:01:00Z', reason: Approved by the card issuer }
      - { title: Settled, from: authorized, to: settled, at: '2026-09-16T02:00:00Z', reason: Included in the nightly payout }
    cancellation_reason: null
    cancellation_reason_code: null
    cancellation_requested_at: null
    created_at: '2026-09-15T08:00:00Z'
    updated_at: '2026-09-16T02:00:00Z'
    last_event: settled
    last_event_at: '2026-09-16T02:00:00Z'
  - payment_reference: PAY-2026-0395
    description: Starter plan, charged twice in August
    user_id: 8b2e4d6f-1a3c-4e5b-9d7f-2c4e6a8b0d04
    user_name: Tomas Lindqvist
    organization_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a03
    organization_name: Lindqvist Bakery
    occurred_at: '2026-08-16T08:00:00Z'
    unit_amount_cents: 1900
    currency: EUR
    pricing_model: one_time
    payment_method: card
    channel: online
    risk_score: 11
    status: refunded
    state_history:
      - { title: Initiated, from: null, to: pending, at: '2026-08-16T08:00:00Z', reason: August renewal charged a second time }
      - { title: Authorized, from: pending, to: authorized, at: '2026-08-16T08:01:00Z', reason: Approved by the card issuer }
      - { title: Settled, from: authorized, to: settled, at: '2026-08-17T02:00:00Z', reason: Included in the nightly payout }
      - { title: Refunded, from: settled, to: refunded, at: '2026-08-19T11:30:00Z', reason: Duplicate charge refunded in full }
    cancellation_reason: null
    cancellation_reason_code: null
    cancellation_requested_at: null
    created_at: '2026-08-16T08:00:00Z'
    updated_at: '2026-08-19T11:30:00Z'
    last_event: refunded
    last_event_at: '2026-08-19T11:30:00Z'
  - payment_reference: PAY-2026-0409
    description: Team plan, Sep 3 to Oct 3
    user_id: 8b2e4d6f-1a3c-4e5b-9d7f-2c4e6a8b0d05
    user_name: Grace Okafor
    organization_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a04
    organization_name: Kestrel Print Co.
    occurred_at: '2026-09-03T10:00:00Z'
    unit_amount_cents: 4900
    currency: GBP
    pricing_model: one_time
    payment_method: card
    channel: online
    risk_score: 64
    status: failed
    state_history:
      - { title: Initiated, from: null, to: pending, at: '2026-09-03T10:00:00Z', reason: Team plan renewal charge }
      - { title: Failed, from: pending, to: failed, at: '2026-09-03T10:01:00Z', reason: Card declined by the issuer }
    cancellation_reason: null
    cancellation_reason_code: null
    cancellation_requested_at: null
    created_at: '2026-09-03T10:00:00Z'
    updated_at: '2026-09-03T10:01:00Z'
    last_event: failed
    last_event_at: '2026-09-03T10:01:00Z'
  - payment_reference: PAY-2026-0425
    description: Card check before the Team trial
    user_id: 8b2e4d6f-1a3c-4e5b-9d7f-2c4e6a8b0d03
    user_name: Priya Raman
    organization_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a02
    organization_name: Blue Harbor Studio
    occurred_at: '2026-09-21T08:58:00Z'
    unit_amount_cents: 100
    currency: USD
    pricing_model: one_time
    payment_method: card
    channel: in_app
    risk_score: 9
    status: authorized
    state_history:
      - { title: Initiated, from: null, to: pending, at: '2026-09-21T08:58:00Z', reason: Card check before the Team trial }
      - { title: Authorized, from: pending, to: authorized, at: '2026-09-21T08:58:30Z', reason: Hold approved; it is released without capture }
    cancellation_reason: null
    cancellation_reason_code: null
    cancellation_requested_at: null
    created_at: '2026-09-21T08:58:00Z'
    updated_at: '2026-09-21T08:58:30Z'
    last_event: authorized
    last_event_at: '2026-09-21T08:58:30Z'
  - payment_reference: PAY-2026-0429
    description: Enterprise renewal, 2026 to 2027
    user_id: 8b2e4d6f-1a3c-4e5b-9d7f-2c4e6a8b0d02
    user_name: Ruth Adeyemi
    organization_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a05
    organization_name: Tidewater Co-op
    occurred_at: '2026-09-24T21:00:00Z'
    unit_amount_cents: 1200000
    currency: USD
    pricing_model: one_time
    payment_method: bank_transfer
    channel: online
    risk_score: 3
    status: pending
    state_history:
      - { title: Initiated, from: null, to: pending, at: '2026-09-24T21:00:00Z', reason: Bank transfer sent for INV-2026-0155 }
      - { title: Returned, from: pending, to: failed, at: '2026-09-25T02:00:00Z', reason: The reference had no invoice number }
      - { title: Sent again, from: failed, to: pending, at: '2026-09-28T21:00:00Z', reason: Sent again with the invoice number }
    cancellation_reason: null
    cancellation_reason_code: null
    cancellation_requested_at: null
    created_at: '2026-09-24T21:00:00Z'
    updated_at: '2026-09-28T21:00:00Z'
    last_event: initiated
    last_event_at: '2026-09-28T21:00:00Z'
  - payment_reference: PAY-2026-0404
    description: Team plan purchase at trial end
    user_id: 8b2e4d6f-1a3c-4e5b-9d7f-2c4e6a8b0d09
    user_name: Helen Rowe
    organization_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a08
    organization_name: Gale & Rowe Legal
    occurred_at: '2026-09-08T12:50:00Z'
    unit_amount_cents: 4900
    currency: USD
    pricing_model: one_time
    payment_method: card
    channel: online
    risk_score: 12
    status: cancelled
    state_history:
      - { title: Initiated, from: null, to: pending, at: '2026-09-08T12:50:00Z', reason: Team plan checkout at the end of the trial }
      - { title: Cancelled, from: pending, to: cancelled, at: '2026-09-08T12:58:00Z', reason: Customer cancelled before capture }
    cancellation_reason: Customer cancelled the Team plan purchase before capture
    cancellation_reason_code: customer_request
    cancellation_requested_at: '2026-09-08T12:58:00Z'
    created_at: '2026-09-08T12:50:00Z'
    updated_at: '2026-09-08T12:58:00Z'
    last_event: initiated
    last_event_at: '2026-09-08T12:50:00Z'