{
  "generatedFrom": "Payments Signal canonical architecture registry",
  "reviewDate": "2026-07-23",
  "blueprint": {
    "id": "architecture-payment-hub",
    "slug": "payment-engine-and-hub",
    "title": "Payment engine and payment-hub internals",
    "shortTitle": "Payment hub internals",
    "family": "foundation",
    "summary": "Open the processing core: identity, validation, controls, routing, posting, message assembly, network release, exceptions, and the evidence plane that joins them.",
    "audience": "Payment solution architects, product owners, business analysts, developers, testers, and operations leads",
    "reviewDate": "2026-07-23",
    "versionLabel": "Reference architecture v1",
    "status": "current",
    "nodes": [
      {
        "dataClassification": [
          "Payment instruction and operational metadata"
        ],
        "nonFunctionalRequirements": [
          "Traceable processing with stable identifiers",
          "Capacity and availability matched to the supported payment service",
          "Auditable state changes and operator actions"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Component: Ingress and acceptance",
              "simplifications": "Component boundaries and product names vary between institutions."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-ingress",
        "title": "Ingress and acceptance",
        "kind": "service",
        "summary": "Receives the instruction, authenticates its source, and decides whether the bank has accepted it for processing.",
        "responsibilities": [
          "Validate the envelope",
          "Assign a durable identity",
          "Return acceptance separately from completion"
        ],
        "owner": "Payment platform",
        "inputs": [
          "Channel request"
        ],
        "outputs": [
          "Accepted canonical intake"
        ],
        "interfaceContracts": [
          "Authentication, correlation, acceptance, and replay contract"
        ],
        "controls": [
          "Source authentication",
          "Schema and envelope validation",
          "Rate limiting"
        ],
        "failureModes": [
          "Invalid envelope",
          "Repeated client reference",
          "Acceptance response lost"
        ],
        "recovery": [
          "Query by client reference",
          "Return the existing payment identity"
        ],
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment instruction and operational metadata"
        ],
        "nonFunctionalRequirements": [
          "Traceable processing with stable identifiers",
          "Capacity and availability matched to the supported payment service",
          "Auditable state changes and operator actions"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Component: Canonical payment record",
              "simplifications": "Component boundaries and product names vary between institutions."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-canonical",
        "title": "Canonical payment record",
        "kind": "data-store",
        "summary": "The bank’s stable internal description of the payment and its history.",
        "responsibilities": [
          "Preserve original data",
          "Store normalised fields",
          "Link every downstream identifier"
        ],
        "owner": "Payment platform",
        "inputs": [
          "Accepted instruction and subsequent events"
        ],
        "outputs": [
          "Current state and complete event history"
        ],
        "interfaceContracts": [
          "Versioned canonical data model"
        ],
        "controls": [
          "Immutable history",
          "Optimistic concurrency",
          "Data retention"
        ],
        "failureModes": [
          "Schema drift",
          "Lost correlation",
          "Conflicting update"
        ],
        "recovery": [
          "Reject incompatible events",
          "Rebuild current state from the journal"
        ],
        "lenses": [
          "applications",
          "data",
          "controls",
          "operations",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment instruction and operational metadata"
        ],
        "nonFunctionalRequirements": [
          "Traceable processing with stable identifiers",
          "Capacity and availability matched to the supported payment service",
          "Auditable state changes and operator actions"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Component: Identity and duplicate control",
              "simplifications": "Component boundaries and product names vary between institutions."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-dedup",
        "title": "Identity and duplicate control",
        "kind": "control",
        "summary": "Determines whether a request is new, a safe repeat, or a conflicting duplicate.",
        "responsibilities": [
          "Own idempotency keys",
          "Compare economic identity",
          "Return the prior outcome for safe repeats"
        ],
        "owner": "Payment platform",
        "inputs": [
          "Client, payment, message, transaction, and posting identifiers"
        ],
        "outputs": [
          "New, repeat, or conflict decision"
        ],
        "interfaceContracts": [
          "Idempotency and uniqueness contract"
        ],
        "controls": [
          "Unique constraints",
          "Time-window policy",
          "Payload fingerprint"
        ],
        "failureModes": [
          "False duplicate",
          "Duplicate missed",
          "Key reused with changed data"
        ],
        "recovery": [
          "Stop conflicting reuse",
          "Correlate against the authoritative record"
        ],
        "lenses": [
          "applications",
          "data",
          "controls",
          "operations",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment instruction and operational metadata"
        ],
        "nonFunctionalRequirements": [
          "Traceable processing with stable identifiers",
          "Capacity and availability matched to the supported payment service",
          "Auditable state changes and operator actions"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "iso20022-catalogue",
              "label": "official-requirement",
              "locator": "Message definitions and implementation-community restrictions"
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "ISO 20022 catalogue — select the implementation community and message version in force"
          }
        ],
        "id": "hub-validation",
        "title": "Validation and enrichment",
        "kind": "service",
        "summary": "Checks that the instruction is usable and fills only facts the bank is authorised to supply.",
        "responsibilities": [
          "Apply product and profile rules",
          "Resolve parties and routes",
          "Preserve provenance"
        ],
        "owner": "Payment product and reference-data operations",
        "inputs": [
          "Canonical instruction",
          "Profile rules",
          "Reference data"
        ],
        "outputs": [
          "Validated and enriched payment or reasoned repair item"
        ],
        "interfaceContracts": [
          "Rule-result and enrichment provenance contract"
        ],
        "controls": [
          "Versioned rules",
          "No silent truncation",
          "Field-level provenance"
        ],
        "failureModes": [
          "Missing data",
          "Invalid profile",
          "Stale enrichment"
        ],
        "recovery": [
          "Repair only permitted fields",
          "Revalidate under the same or explicitly migrated rule version"
        ],
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls",
          "operations"
        ]
      },
      {
        "dataClassification": [
          "Payment instruction and operational metadata"
        ],
        "nonFunctionalRequirements": [
          "Traceable processing with stable identifiers",
          "Capacity and availability matched to the supported payment service",
          "Auditable state changes and operator actions"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Component: Lifecycle orchestrator",
              "simplifications": "Component boundaries and product names vary between institutions."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-orchestrator",
        "title": "Lifecycle orchestrator",
        "kind": "application",
        "summary": "Runs the controlled sequence and records which command may happen next.",
        "responsibilities": [
          "Apply state transitions",
          "Invoke controls",
          "Coordinate posting and release",
          "Handle timers"
        ],
        "owner": "Payment platform",
        "inputs": [
          "Validated payment and downstream outcomes"
        ],
        "outputs": [
          "Commands, events, current state, exceptions"
        ],
        "interfaceContracts": [
          "State machine and command-result contract"
        ],
        "controls": [
          "Allowed transition table",
          "Command uniqueness",
          "Timeout policy"
        ],
        "failureModes": [
          "Stuck state",
          "Out-of-order result",
          "Partial success"
        ],
        "recovery": [
          "Resume from durable state",
          "Quarantine impossible transitions"
        ],
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls",
          "operations",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment instruction and operational metadata"
        ],
        "nonFunctionalRequirements": [
          "Traceable processing with stable identifiers",
          "Capacity and availability matched to the supported payment service",
          "Auditable state changes and operator actions"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Component: Screening adapter",
              "simplifications": "Component boundaries and product names vary between institutions."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-screening",
        "title": "Screening adapter",
        "kind": "control",
        "summary": "Maps the payment’s relevant fields into the screening service and preserves its evidence.",
        "responsibilities": [
          "Map all governed fields",
          "Invoke the correct screening mode",
          "Correlate alerts and dispositions"
        ],
        "owner": "Payments controls and financial crime technology",
        "inputs": [
          "Parties, agents, addresses, identifiers, and narrative"
        ],
        "outputs": [
          "Proceed, hold, or stop plus evidence reference"
        ],
        "interfaceContracts": [
          "Screening-decision contract"
        ],
        "controls": [
          "Field-coverage mapping",
          "Configuration version",
          "Case linkage"
        ],
        "failureModes": [
          "Unmapped field",
          "Timeout",
          "Duplicate alert"
        ],
        "recovery": [
          "Hold under the approved posture",
          "Re-screen after recovery",
          "Reuse a valid prior result only under policy"
        ],
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls",
          "operations",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment instruction and operational metadata"
        ],
        "nonFunctionalRequirements": [
          "Traceable processing with stable identifiers",
          "Capacity and availability matched to the supported payment service",
          "Auditable state changes and operator actions"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Component: Rail and route decision",
              "simplifications": "Component boundaries and product names vary between institutions."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-routing",
        "title": "Rail and route decision",
        "kind": "service",
        "summary": "Chooses a reachable service using amount, currency, speed, cost, cut-off, risk, and customer promise.",
        "responsibilities": [
          "Assess candidate rails",
          "Check reachability",
          "Record the route decision"
        ],
        "owner": "Payment product",
        "inputs": [
          "Validated payment and current route facts"
        ],
        "outputs": [
          "Selected route and fallback constraints"
        ],
        "interfaceContracts": [
          "Explainable routing-decision contract"
        ],
        "controls": [
          "No unsupported route",
          "Cut-off and calendar checks",
          "Customer promise consistency"
        ],
        "failureModes": [
          "No reachable route",
          "Cut-off missed",
          "Fallback changes semantics"
        ],
        "recovery": [
          "Queue, re-date, repair, or reject according to the product contract"
        ],
        "lenses": [
          "applications",
          "data",
          "controls",
          "ownership",
          "operations"
        ]
      },
      {
        "dataClassification": [
          "Payment instruction and operational metadata"
        ],
        "nonFunctionalRequirements": [
          "Traceable processing with stable identifiers",
          "Capacity and availability matched to the supported payment service",
          "Auditable state changes and operator actions"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "iso20022-catalogue",
              "label": "official-requirement",
              "locator": "Message catalogue and versioned schemas"
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "ISO 20022 catalogue — select the implementation community and message version in force"
          }
        ],
        "id": "hub-transform",
        "title": "Message assembly and transformation",
        "kind": "service",
        "summary": "Creates the exact outbound message without inventing or silently losing meaning.",
        "responsibilities": [
          "Map canonical data",
          "Apply the profile",
          "Build headers",
          "Record truncation or translation treatment"
        ],
        "owner": "Payments integration",
        "inputs": [
          "Canonical payment and target profile"
        ],
        "outputs": [
          "Network message and transformation evidence"
        ],
        "interfaceContracts": [
          "Version-pinned mapping contract"
        ],
        "messageIds": [
          "pain-001",
          "pacs-008",
          "pacs-009",
          "mt103",
          "mt202-cov"
        ],
        "controls": [
          "Profile validation",
          "Data-loss checks",
          "Message identifier uniqueness"
        ],
        "failureModes": [
          "Profile rejection",
          "Truncation",
          "Code translation error"
        ],
        "recovery": [
          "Repair source data or mapping",
          "Never patch only the outbound copy without preserving provenance"
        ],
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls",
          "operations"
        ]
      },
      {
        "dataClassification": [
          "Payment instruction and operational metadata"
        ],
        "nonFunctionalRequirements": [
          "Traceable processing with stable identifiers",
          "Capacity and availability matched to the supported payment service",
          "Auditable state changes and operator actions"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Component: Ledger adapter",
              "simplifications": "Component boundaries and product names vary between institutions."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-ledger-adapter",
        "title": "Ledger adapter",
        "kind": "service",
        "summary": "Turns a payment state transition into an idempotent accounting command and interprets the result.",
        "responsibilities": [
          "Create posting keys",
          "Separate reservation, posting, release, and reversal",
          "Correlate journal evidence"
        ],
        "owner": "Payments and core-banking integration",
        "inputs": [
          "Posting intent"
        ],
        "outputs": [
          "Posting result and journal reference"
        ],
        "interfaceContracts": [
          "Idempotent posting API or message contract"
        ],
        "controls": [
          "Balanced accounting",
          "Posting uniqueness",
          "Unknown-outcome recovery"
        ],
        "failureModes": [
          "Timeout",
          "Rejected posting",
          "Already posted"
        ],
        "recovery": [
          "Query first",
          "Adopt the proven result",
          "Reverse through a separate authorised command"
        ],
        "lenses": [
          "applications",
          "interfaces",
          "ledger",
          "data",
          "controls",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment instruction and operational metadata"
        ],
        "nonFunctionalRequirements": [
          "Traceable processing with stable identifiers",
          "Capacity and availability matched to the supported payment service",
          "Auditable state changes and operator actions"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Component: Network adapter",
              "simplifications": "Component boundaries and product names vary between institutions."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-network-adapter",
        "title": "Network adapter",
        "kind": "gateway",
        "summary": "Owns one network connection and translates its transport events into payment evidence.",
        "responsibilities": [
          "Secure the connection",
          "Transmit",
          "Receive acknowledgements",
          "Expose service health"
        ],
        "owner": "Payments connectivity",
        "inputs": [
          "Released network message"
        ],
        "outputs": [
          "Transport, network, and settlement evidence"
        ],
        "interfaceContracts": [
          "Network protocol and operational contract"
        ],
        "controls": [
          "Network entitlement",
          "Signing",
          "Sequence",
          "Replay protection"
        ],
        "failureModes": [
          "Connection failure",
          "Negative acknowledgement",
          "Delivery ambiguity"
        ],
        "recovery": [
          "Use network enquiry and duplicate rules",
          "Fail over only under approved sequencing controls"
        ],
        "lenses": [
          "applications",
          "interfaces",
          "controls",
          "operations",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment instruction and operational metadata"
        ],
        "nonFunctionalRequirements": [
          "Traceable processing with stable identifiers",
          "Capacity and availability matched to the supported payment service",
          "Auditable state changes and operator actions"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Component: Repair and case workbench",
              "simplifications": "Component boundaries and product names vary between institutions."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-ops-case",
        "title": "Repair and case workbench",
        "kind": "operations",
        "summary": "Shows the payment’s facts and permits only controlled actions appropriate to its state.",
        "responsibilities": [
          "Explain the hold",
          "Collect evidence",
          "Apply authorised repair, release, return, or escalation"
        ],
        "owner": "Payment operations",
        "inputs": [
          "Exception, history, evidence, permissions"
        ],
        "outputs": [
          "Reasoned operator command and case outcome"
        ],
        "interfaceContracts": [
          "Command authorisation and audit contract"
        ],
        "controls": [
          "Segregation of duties",
          "Permitted-action matrix",
          "Reason and evidence capture"
        ],
        "failureModes": [
          "Unsafe action offered",
          "Stale screen",
          "Concurrent action"
        ],
        "recovery": [
          "Recheck current state before command",
          "Reject stale or unauthorised actions"
        ],
        "lenses": [
          "applications",
          "controls",
          "ownership",
          "operations",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment instruction and operational metadata"
        ],
        "nonFunctionalRequirements": [
          "Traceable processing with stable identifiers",
          "Capacity and availability matched to the supported payment service",
          "Auditable state changes and operator actions"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "bis-cpmi-pfmi",
              "label": "official-requirement",
              "locator": "Principle 17 — operational reliability, incident management, and capacity"
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "CPMI-IOSCO Principles for financial market infrastructures",
            "asOf": "2012-04-16"
          }
        ],
        "id": "hub-observability",
        "title": "Audit, metrics, traces, and reconciliation events",
        "shortTitle": "Evidence plane",
        "kind": "operations",
        "summary": "Makes every decision, command, dependency, and outcome observable without changing the payment.",
        "responsibilities": [
          "Correlate logs and traces",
          "Measure queues and latency",
          "Publish reconciliation evidence"
        ],
        "owner": "Platform operations and payment operations",
        "inputs": [
          "Events from every component"
        ],
        "outputs": [
          "Audit records, alerts, dashboards, reconciliation feeds"
        ],
        "interfaceContracts": [
          "Non-lossy event and telemetry contract"
        ],
        "controls": [
          "Sensitive-data minimisation",
          "Clock synchronisation",
          "Retention",
          "Access logging"
        ],
        "failureModes": [
          "Telemetry gap",
          "Uncorrelated trace",
          "Sensitive-data leakage"
        ],
        "recovery": [
          "Restore collection",
          "Reconstruct from authoritative journals",
          "Treat missing evidence as a control issue"
        ],
        "lenses": [
          "data",
          "controls",
          "ownership",
          "operations",
          "resilience"
        ]
      }
    ],
    "interfaces": [
      {
        "dataClassification": [
          "Payment and status data"
        ],
        "controls": [
          "Authentication",
          "Authorisation",
          "Integrity",
          "Correlation",
          "Audit"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Interface: Identify the request",
              "simplifications": "The transport and interface contract are illustrative; implementations select their own protocol."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-accept",
        "from": "hub-ingress",
        "to": "hub-dedup",
        "title": "Identify the request",
        "kind": "api",
        "mode": "synchronous",
        "purpose": "Decide whether the instruction is new, repeated, or conflicting.",
        "failureBehaviour": "Do not create a second payment for the same accepted identity.",
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls"
        ]
      },
      {
        "dataClassification": [
          "Payment and status data"
        ],
        "controls": [
          "Authentication",
          "Authorisation",
          "Integrity",
          "Correlation",
          "Audit"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Interface: Create or retrieve payment",
              "simplifications": "The transport and interface contract are illustrative; implementations select their own protocol."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-record",
        "from": "hub-dedup",
        "to": "hub-canonical",
        "title": "Create or retrieve payment",
        "kind": "event",
        "mode": "asynchronous",
        "purpose": "Persist one authoritative record and return its existing identity for safe repeats.",
        "failureBehaviour": "Reject conflicting reuse and preserve the original record.",
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment and status data"
        ],
        "controls": [
          "Authentication",
          "Authorisation",
          "Integrity",
          "Correlation",
          "Audit"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Interface: Validate and enrich",
              "simplifications": "The transport and interface contract are illustrative; implementations select their own protocol."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-validate",
        "from": "hub-canonical",
        "to": "hub-validation",
        "title": "Validate and enrich",
        "kind": "event",
        "mode": "asynchronous",
        "purpose": "Apply the correct product and profile rules.",
        "failureBehaviour": "Create a reasoned repair or reject outcome.",
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls",
          "operations"
        ]
      },
      {
        "dataClassification": [
          "Payment and status data"
        ],
        "controls": [
          "Authentication",
          "Authorisation",
          "Integrity",
          "Correlation",
          "Audit"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Interface: Start controlled processing",
              "simplifications": "The transport and interface contract are illustrative; implementations select their own protocol."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-start",
        "from": "hub-validation",
        "to": "hub-orchestrator",
        "title": "Start controlled processing",
        "kind": "event",
        "mode": "asynchronous",
        "purpose": "Advance only after validation succeeds.",
        "failureBehaviour": "Keep validation failure outside the released path.",
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls"
        ]
      },
      {
        "dataClassification": [
          "Payment and status data"
        ],
        "controls": [
          "Authentication",
          "Authorisation",
          "Integrity",
          "Correlation",
          "Audit"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Interface: Screen relevant data",
              "simplifications": "The transport and interface contract are illustrative; implementations select their own protocol."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-control",
        "from": "hub-orchestrator",
        "to": "hub-screening",
        "title": "Screen relevant data",
        "kind": "control",
        "mode": "synchronous",
        "purpose": "Obtain a governed control outcome.",
        "failureBehaviour": "Hold or stop under the documented failure posture.",
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment and status data"
        ],
        "controls": [
          "Authentication",
          "Authorisation",
          "Integrity",
          "Correlation",
          "Audit"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Interface: Choose the service",
              "simplifications": "The transport and interface contract are illustrative; implementations select their own protocol."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-route",
        "from": "hub-orchestrator",
        "to": "hub-routing",
        "title": "Choose the service",
        "kind": "api",
        "mode": "synchronous",
        "purpose": "Select and record a reachable route.",
        "failureBehaviour": "Queue, re-date, repair, or reject; never silently change the customer promise.",
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls",
          "operations"
        ]
      },
      {
        "dataClassification": [
          "Payment and status data"
        ],
        "controls": [
          "Authentication",
          "Authorisation",
          "Integrity",
          "Correlation",
          "Audit"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Interface: Reserve or post",
              "simplifications": "The transport and interface contract are illustrative; implementations select their own protocol."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-post",
        "from": "hub-orchestrator",
        "to": "hub-ledger-adapter",
        "title": "Reserve or post",
        "kind": "posting",
        "mode": "synchronous",
        "purpose": "Create the required balanced entries once.",
        "failureBehaviour": "Resolve unknown outcomes by posting key before retry.",
        "lenses": [
          "applications",
          "interfaces",
          "ledger",
          "data",
          "controls",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment and status data"
        ],
        "controls": [
          "Authentication",
          "Authorisation",
          "Integrity",
          "Correlation",
          "Audit"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Interface: Build target message",
              "simplifications": "The transport and interface contract are illustrative; implementations select their own protocol."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-build",
        "from": "hub-routing",
        "to": "hub-transform",
        "title": "Build target message",
        "kind": "message",
        "mode": "asynchronous",
        "purpose": "Apply the route’s exact profile and mapping.",
        "failureBehaviour": "Stop on data loss or profile failure.",
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls"
        ]
      },
      {
        "dataClassification": [
          "Payment and status data"
        ],
        "controls": [
          "Authentication",
          "Authorisation",
          "Integrity",
          "Correlation",
          "Audit"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Interface: Transmit released message",
              "simplifications": "The transport and interface contract are illustrative; implementations select their own protocol."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-send",
        "from": "hub-transform",
        "to": "hub-network-adapter",
        "title": "Transmit released message",
        "kind": "message",
        "mode": "asynchronous",
        "purpose": "Hand the secured network payload to its connection.",
        "messageIds": [
          "pacs-008",
          "mt103"
        ],
        "failureBehaviour": "Correlate transport evidence and prevent duplicate release.",
        "lenses": [
          "applications",
          "interfaces",
          "data",
          "controls",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment and status data"
        ],
        "controls": [
          "Authentication",
          "Authorisation",
          "Integrity",
          "Correlation",
          "Audit"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Interface: Controlled exception",
              "simplifications": "The transport and interface contract are illustrative; implementations select their own protocol."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-exception",
        "from": "hub-orchestrator",
        "to": "hub-ops-case",
        "title": "Controlled exception",
        "kind": "operator",
        "mode": "operator",
        "purpose": "Give operations the evidence and only the actions valid for the current state.",
        "failureBehaviour": "Reject stale or unauthorised operator commands.",
        "lenses": [
          "applications",
          "interfaces",
          "controls",
          "ownership",
          "operations"
        ]
      },
      {
        "dataClassification": [
          "Payment and status data"
        ],
        "controls": [
          "Authentication",
          "Authorisation",
          "Integrity",
          "Correlation",
          "Audit"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Interface: Lifecycle evidence",
              "simplifications": "The transport and interface contract are illustrative; implementations select their own protocol."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-evidence",
        "from": "hub-canonical",
        "to": "hub-observability",
        "title": "Lifecycle evidence",
        "kind": "event",
        "mode": "asynchronous",
        "purpose": "Publish state changes and correlation data for monitoring and reconciliation.",
        "failureBehaviour": "Repair the evidence pipeline without rewriting the authoritative payment record.",
        "lenses": [
          "interfaces",
          "data",
          "controls",
          "operations",
          "resilience"
        ]
      },
      {
        "dataClassification": [
          "Payment and status data"
        ],
        "controls": [
          "Authentication",
          "Authorisation",
          "Integrity",
          "Correlation",
          "Audit"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Interface: Network evidence",
              "simplifications": "The transport and interface contract are illustrative; implementations select their own protocol."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ],
        "id": "hub-adapter-evidence",
        "from": "hub-network-adapter",
        "to": "hub-observability",
        "title": "Network evidence",
        "kind": "event",
        "mode": "asynchronous",
        "purpose": "Publish delivery, acknowledgement, and service-health facts.",
        "failureBehaviour": "Surface evidence gaps and prevent premature reconciliation closure.",
        "lenses": [
          "interfaces",
          "data",
          "operations",
          "resilience"
        ]
      }
    ],
    "views": [
      {
        "id": "context",
        "label": "Context",
        "plainPurpose": "See the hub as the coordinator between channels, controls, books, networks, and operations.",
        "nodeIds": [
          "hub-ingress",
          "hub-validation",
          "hub-orchestrator",
          "hub-screening",
          "hub-ledger-adapter",
          "hub-transform",
          "hub-network-adapter",
          "hub-ops-case"
        ],
        "interfaceIds": [
          "hub-start",
          "hub-control",
          "hub-post",
          "hub-send",
          "hub-exception"
        ],
        "placements": {
          "hub-ingress": {
            "x": 60,
            "y": 280
          },
          "hub-validation": {
            "x": 380,
            "y": 280
          },
          "hub-orchestrator": {
            "x": 700,
            "y": 280
          },
          "hub-screening": {
            "x": 700,
            "y": 60
          },
          "hub-ledger-adapter": {
            "x": 700,
            "y": 540
          },
          "hub-transform": {
            "x": 1020,
            "y": 280
          },
          "hub-network-adapter": {
            "x": 1340,
            "y": 280
          },
          "hub-ops-case": {
            "x": 1340,
            "y": 540
          }
        }
      },
      {
        "id": "container",
        "label": "Container",
        "plainPurpose": "Separate the durable payment record, processing services, adapters, and evidence plane.",
        "nodeIds": [
          "hub-ingress",
          "hub-dedup",
          "hub-canonical",
          "hub-validation",
          "hub-orchestrator",
          "hub-screening",
          "hub-routing",
          "hub-transform",
          "hub-ledger-adapter",
          "hub-network-adapter",
          "hub-ops-case",
          "hub-observability"
        ],
        "interfaceIds": [
          "hub-accept",
          "hub-record",
          "hub-validate",
          "hub-start",
          "hub-control",
          "hub-route",
          "hub-post",
          "hub-build",
          "hub-send",
          "hub-exception",
          "hub-evidence",
          "hub-adapter-evidence"
        ],
        "placements": {
          "hub-ingress": {
            "x": 70,
            "y": 220
          },
          "hub-dedup": {
            "x": 380,
            "y": 40
          },
          "hub-canonical": {
            "x": 380,
            "y": 220
          },
          "hub-validation": {
            "x": 380,
            "y": 440
          },
          "hub-orchestrator": {
            "x": 700,
            "y": 220
          },
          "hub-screening": {
            "x": 700,
            "y": 40
          },
          "hub-routing": {
            "x": 1020,
            "y": 140
          },
          "hub-transform": {
            "x": 1340,
            "y": 140
          },
          "hub-ledger-adapter": {
            "x": 700,
            "y": 500
          },
          "hub-network-adapter": {
            "x": 1340,
            "y": 340
          },
          "hub-ops-case": {
            "x": 1020,
            "y": 500
          },
          "hub-observability": {
            "x": 380,
            "y": 560
          }
        },
        "boundaries": [
          {
            "id": "hub-core-boundary",
            "label": "PAYMENT PROCESSING CORE",
            "nodeIds": [
              "hub-canonical",
              "hub-orchestrator",
              "hub-routing"
            ],
            "kind": "ownership"
          },
          {
            "id": "hub-adapter-boundary",
            "label": "EDGE ADAPTERS",
            "nodeIds": [
              "hub-ledger-adapter",
              "hub-network-adapter"
            ],
            "kind": "trust"
          }
        ]
      },
      {
        "id": "component",
        "label": "Component",
        "plainPurpose": "Inspect the full command path, including identity, validation, mapping, and recovery evidence.",
        "nodeIds": [
          "hub-ingress",
          "hub-canonical",
          "hub-dedup",
          "hub-validation",
          "hub-orchestrator",
          "hub-screening",
          "hub-routing",
          "hub-transform",
          "hub-ledger-adapter",
          "hub-network-adapter",
          "hub-ops-case",
          "hub-observability"
        ],
        "interfaceIds": [
          "hub-accept",
          "hub-record",
          "hub-validate",
          "hub-start",
          "hub-control",
          "hub-route",
          "hub-post",
          "hub-build",
          "hub-send",
          "hub-exception",
          "hub-evidence",
          "hub-adapter-evidence"
        ],
        "placements": {
          "hub-ingress": {
            "x": 60,
            "y": 180
          },
          "hub-dedup": {
            "x": 340,
            "y": 70
          },
          "hub-canonical": {
            "x": 340,
            "y": 290
          },
          "hub-validation": {
            "x": 640,
            "y": 70
          },
          "hub-orchestrator": {
            "x": 640,
            "y": 290
          },
          "hub-screening": {
            "x": 940,
            "y": 40
          },
          "hub-routing": {
            "x": 940,
            "y": 230
          },
          "hub-ledger-adapter": {
            "x": 940,
            "y": 480
          },
          "hub-transform": {
            "x": 1240,
            "y": 150
          },
          "hub-network-adapter": {
            "x": 1540,
            "y": 150
          },
          "hub-ops-case": {
            "x": 1240,
            "y": 480
          },
          "hub-observability": {
            "x": 480,
            "y": 540
          }
        }
      },
      {
        "id": "deployment",
        "label": "Deployment",
        "plainPurpose": "See which capabilities require independent scale, isolation, durable state, and controlled failover.",
        "nodeIds": [
          "hub-ingress",
          "hub-dedup",
          "hub-canonical",
          "hub-validation",
          "hub-orchestrator",
          "hub-screening",
          "hub-routing",
          "hub-transform",
          "hub-ledger-adapter",
          "hub-network-adapter",
          "hub-ops-case",
          "hub-observability"
        ],
        "interfaceIds": [
          "hub-accept",
          "hub-record",
          "hub-validate",
          "hub-start",
          "hub-control",
          "hub-route",
          "hub-post",
          "hub-build",
          "hub-send",
          "hub-exception",
          "hub-evidence",
          "hub-adapter-evidence"
        ],
        "placements": {
          "hub-ingress": {
            "x": 70,
            "y": 160
          },
          "hub-dedup": {
            "x": 400,
            "y": 40
          },
          "hub-orchestrator": {
            "x": 400,
            "y": 160
          },
          "hub-canonical": {
            "x": 400,
            "y": 420
          },
          "hub-validation": {
            "x": 70,
            "y": 420
          },
          "hub-screening": {
            "x": 760,
            "y": 60
          },
          "hub-routing": {
            "x": 760,
            "y": 280
          },
          "hub-transform": {
            "x": 1100,
            "y": 160
          },
          "hub-ledger-adapter": {
            "x": 1100,
            "y": 420
          },
          "hub-network-adapter": {
            "x": 1440,
            "y": 160
          },
          "hub-ops-case": {
            "x": 1440,
            "y": 420
          },
          "hub-observability": {
            "x": 760,
            "y": 530
          }
        },
        "boundaries": [
          {
            "id": "hub-ingress-zone",
            "label": "INGRESS ZONE",
            "nodeIds": [
              "hub-ingress"
            ],
            "kind": "trust"
          },
          {
            "id": "hub-state-zone",
            "label": "STATEFUL CORE",
            "nodeIds": [
              "hub-orchestrator",
              "hub-canonical",
              "hub-routing"
            ],
            "kind": "data"
          },
          {
            "id": "hub-control-zone",
            "label": "CONTROL DEPENDENCY",
            "nodeIds": [
              "hub-screening"
            ],
            "kind": "trust"
          },
          {
            "id": "hub-edge-zone",
            "label": "EXTERNAL ADAPTER ZONE",
            "nodeIds": [
              "hub-transform",
              "hub-ledger-adapter",
              "hub-network-adapter"
            ],
            "kind": "trust"
          }
        ]
      }
    ],
    "traces": [
      {
        "id": "hub-credit-transfer",
        "label": "Process one new payment",
        "summary": "Follow a new instruction through identity, controls, posting, and network release.",
        "viewId": "component",
        "steps": [
          {
            "id": "ingress",
            "title": "Accept the request",
            "nodeId": "hub-ingress",
            "plainExplanation": "The hub authenticates the source and separates acceptance from completion.",
            "businessState": "RECEIVED"
          },
          {
            "id": "identity",
            "title": "Prove it is new",
            "nodeId": "hub-dedup",
            "interfaceId": "hub-accept",
            "plainExplanation": "Identity controls decide whether this is a new payment or a repeat.",
            "businessState": "IDENTIFIED"
          },
          {
            "id": "record",
            "title": "Create the payment record",
            "nodeId": "hub-canonical",
            "interfaceId": "hub-record",
            "plainExplanation": "One durable record now owns the lifecycle and its references.",
            "businessState": "ACCEPTED"
          },
          {
            "id": "validate",
            "title": "Validate and enrich",
            "nodeId": "hub-validation",
            "interfaceId": "hub-validate",
            "plainExplanation": "The hub checks profile and product rules and resolves authorised reference data.",
            "businessState": "VALIDATED"
          },
          {
            "id": "orchestrate",
            "title": "Start controlled processing",
            "nodeId": "hub-orchestrator",
            "interfaceId": "hub-start",
            "plainExplanation": "The state machine decides which commands are now permitted.",
            "businessState": "PROCESSING"
          },
          {
            "id": "screen",
            "title": "Obtain control decisions",
            "nodeId": "hub-screening",
            "interfaceId": "hub-control",
            "plainExplanation": "The screening adapter submits every governed field and records the result.",
            "businessState": "CONTROLLED",
            "controlEvidence": "Screening result, configuration version, and case reference if held"
          },
          {
            "id": "route",
            "title": "Choose the route",
            "nodeId": "hub-routing",
            "interfaceId": "hub-route",
            "plainExplanation": "The routing service records why this rail and profile fit the instruction.",
            "businessState": "ROUTED"
          },
          {
            "id": "post",
            "title": "Record value once",
            "nodeId": "hub-ledger-adapter",
            "interfaceId": "hub-post",
            "plainExplanation": "The adapter uses one posting key and returns journal evidence.",
            "businessState": "POSTED",
            "ledgerEffect": "Balanced entries with an immutable posting reference"
          },
          {
            "id": "transform",
            "title": "Build the network message",
            "nodeId": "hub-transform",
            "interfaceId": "hub-build",
            "plainExplanation": "Canonical data becomes the exact versioned profile required by the selected route.",
            "businessState": "ASSEMBLED",
            "messageIds": [
              "pacs-008"
            ]
          },
          {
            "id": "send",
            "title": "Release through the gateway",
            "nodeId": "hub-network-adapter",
            "interfaceId": "hub-send",
            "plainExplanation": "The secured connection transmits the message and returns network evidence.",
            "businessState": "SENT",
            "messageIds": [
              "pacs-008"
            ]
          },
          {
            "id": "evidence",
            "title": "Publish the evidence",
            "nodeId": "hub-observability",
            "interfaceId": "hub-adapter-evidence",
            "plainExplanation": "Operations can now trace the payment without changing it.",
            "businessState": "TRACKED"
          }
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Payment-hub trace",
              "simplifications": "The sequence is a vendor-neutral state model; real products may parallelise or combine steps."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          },
          {
            "ref": {
              "sourceId": "iso20022-catalogue",
              "label": "official-requirement",
              "locator": "Payments message definitions"
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "ISO 20022 catalogue — select the implementation community and message version in force"
          }
        ]
      }
    ],
    "stressCases": [
      {
        "id": "hub-conflicting-duplicate",
        "label": "Conflicting duplicate",
        "trigger": "The same idempotency key arrives with a changed amount or beneficiary.",
        "divergesAfterStepId": "identity",
        "traceId": "hub-credit-transfer",
        "affectedNodeIds": [
          "hub-ingress",
          "hub-dedup",
          "hub-canonical",
          "hub-ops-case"
        ],
        "affectedInterfaceIds": [
          "hub-accept",
          "hub-record"
        ],
        "lastConfirmedState": "The original payment remains authoritative; the new request is a conflict.",
        "settlementState": "The conflict creates no new settlement instruction.",
        "fundsState": "No second reservation or posting is permitted.",
        "owner": "Payment-platform operations",
        "safeAction": "Reject the changed reuse and return the original correlation reference without creating another payment.",
        "requiredEvidence": [
          "Idempotency key",
          "Original payload fingerprint",
          "New payload fingerprint",
          "Original payment state"
        ],
        "recoverySteps": [
          "Preserve the original",
          "Reject the conflict",
          "Investigate the caller if repeated"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Duplicate-control stress case",
              "simplifications": "Idempotency windows and economic-identity rules are institution-specific."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ]
      },
      {
        "id": "hub-control-timeout",
        "label": "Screening service timeout",
        "trigger": "The screening adapter receives no decision within its time budget.",
        "divergesAfterStepId": "screen",
        "traceId": "hub-credit-transfer",
        "affectedNodeIds": [
          "hub-orchestrator",
          "hub-screening",
          "hub-ops-case"
        ],
        "affectedInterfaceIds": [
          "hub-control",
          "hub-exception"
        ],
        "lastConfirmedState": "The payment is validated but has no control clearance.",
        "settlementState": "No network release or interbank settlement has occurred.",
        "fundsState": "Any reservation remains under the bank’s documented hold treatment.",
        "owner": "Financial-crime technology and payment operations",
        "safeAction": "Apply the approved failure posture and keep control evidence explicit.",
        "requiredEvidence": [
          "Control request",
          "Timeout timestamp",
          "Service health",
          "Fallback or hold authority"
        ],
        "recoverySteps": [
          "Hold or queue",
          "Restore the control service",
          "Re-screen",
          "Resume once under the same payment identity"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "bis-cpmi-pfmi",
              "label": "official-requirement",
              "locator": "Principle 17 — operational risk"
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "CPMI-IOSCO Principles for financial market infrastructures",
            "asOf": "2012-04-16"
          }
        ]
      },
      {
        "id": "hub-unknown-posting",
        "label": "Unknown ledger outcome",
        "trigger": "The ledger connection fails after it may have accepted the posting.",
        "divergesAfterStepId": "post",
        "traceId": "hub-credit-transfer",
        "affectedNodeIds": [
          "hub-orchestrator",
          "hub-ledger-adapter",
          "hub-ops-case",
          "hub-observability"
        ],
        "affectedInterfaceIds": [
          "hub-post",
          "hub-exception",
          "hub-evidence"
        ],
        "lastConfirmedState": "The payment passed controls; the posting response is unknown.",
        "settlementState": "Network release remains blocked.",
        "fundsState": "The ledger may contain the reservation or debit.",
        "owner": "Payment-platform and ledger operations",
        "safeAction": "Query by posting key and adopt the proven result before any retry.",
        "requiredEvidence": [
          "Posting command",
          "Idempotency key",
          "Ledger journal",
          "Payment event history"
        ],
        "recoverySteps": [
          "Query",
          "Correlate",
          "Adopt or retry",
          "Record the recovery decision"
        ],
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Unknown-posting stress case",
              "simplifications": "The exact query and reversal interfaces depend on the ledger."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ]
      }
    ],
    "overlays": [],
    "decisions": [
      {
        "id": "hub-canonical-model",
        "question": "Does the hub use a canonical internal model or keep each rail’s format end to end?",
        "options": [
          {
            "label": "Canonical model",
            "consequence": "Centralises orchestration and controls but requires explicit, versioned mappings and data-loss governance."
          },
          {
            "label": "Rail-native models",
            "consequence": "Preserves profile detail but duplicates logic and makes cross-rail operations harder to standardise."
          }
        ],
        "guidance": "Choose deliberately; if a canonical model is used, preserve original payloads and prove every transformation.",
        "evidence": [
          {
            "ref": {
              "sourceId": "iso20022-catalogue",
              "label": "official-requirement",
              "locator": "ISO 20022 Business Model and message definitions"
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "ISO 20022 catalogue — select the implementation community and message version in force"
          },
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Architecture decision: canonical model",
              "simplifications": "No standard mandates a bank’s internal data model."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ]
      },
      {
        "id": "hub-sync-async",
        "question": "Which processing steps block the caller and which continue asynchronously?",
        "options": [
          {
            "label": "Short synchronous acceptance",
            "consequence": "Protects channel latency and scales better, but customers need honest pending status and later updates."
          },
          {
            "label": "Synchronous completion",
            "consequence": "Can simplify selected instant journeys but couples the channel to every downstream dependency and timeout."
          }
        ],
        "guidance": "Define acceptance, processing, settlement, and beneficiary credit as separate promises.",
        "evidence": [
          {
            "ref": {
              "sourceId": "payments-signal-editorial",
              "label": "simplified-educational-illustration",
              "locator": "Architecture decision: interaction style",
              "simplifications": "Payment services have different time budgets and finality points."
            },
            "verifiedDate": "2026-07-23",
            "versionContext": "Payments Signal reference architecture v1"
          }
        ]
      }
    ],
    "targets": [
      {
        "type": "topic",
        "id": "ops.payment-hub-architecture"
      },
      {
        "type": "topic",
        "id": "foundations.payment-lifecycle"
      },
      {
        "type": "article",
        "id": "payment-engines"
      },
      {
        "type": "article",
        "id": "payment-hub-product-capabilities"
      },
      {
        "type": "article",
        "id": "payment-hub-reference-and-standing-data"
      },
      {
        "type": "article",
        "id": "payment-orchestration-and-routing"
      }
    ],
    "glossaryTermIds": [
      "payment-engine",
      "payment-hub",
      "gateway",
      "orchestration",
      "idempotency",
      "straight-through-processing"
    ],
    "evidence": [
      {
        "ref": {
          "sourceId": "iso20022-catalogue",
          "label": "official-requirement",
          "locator": "Payments business model and message definitions"
        },
        "verifiedDate": "2026-07-23",
        "versionContext": "ISO 20022 catalogue — select the implementation community and message version in force"
      },
      {
        "ref": {
          "sourceId": "bis-cpmi-pfmi",
          "label": "official-requirement",
          "locator": "Principle 17 — operational risk"
        },
        "verifiedDate": "2026-07-23",
        "versionContext": "CPMI-IOSCO Principles for financial market infrastructures",
        "asOf": "2012-04-16"
      },
      {
        "ref": {
          "sourceId": "payments-signal-editorial",
          "label": "simplified-educational-illustration",
          "locator": "Payment hub synthesis",
          "simplifications": "This is a capability architecture, not a description of one vendor product. Banks distribute the capabilities differently."
        },
        "verifiedDate": "2026-07-23",
        "versionContext": "Payments Signal reference architecture v1"
      }
    ],
    "simplifies": "The blueprint shows one processing core with one adapter per major dependency. Real estates may contain several payment engines, migration bridges, country platforms, shared services, and manual hand-offs."
  },
  "sources": [
    {
      "id": "iso20022-catalogue",
      "publisher": "ISO 20022 Registration Authority",
      "title": "ISO 20022 Catalogue of messages",
      "sourceType": "official-standard",
      "accessedDate": "2026-07-12",
      "url": "https://www.iso20022.org/catalogue-messages",
      "applicability": "Defines the current versions of all ISO 20022 message definitions, including the pain, pacs, and camt messages taught on this site.",
      "notes": "Each message set is described by a Message Definition Report; earlier versions remain available in the ISO 20022 messages archive."
    },
    {
      "id": "bis-cpmi-pfmi",
      "publisher": "CPMI and IOSCO (Bank for International Settlements)",
      "title": "Principles for financial market infrastructures",
      "sourceType": "industry-paper",
      "publicationDate": "2012-04-16",
      "accessedDate": "2026-07-12",
      "url": "https://www.bis.org/cpmi/publ/d101.htm",
      "applicability": "International risk-management standards for systemically important payment systems and other financial market infrastructures.",
      "notes": "Published by the CPSS (now CPMI) and IOSCO; contains 24 principles plus responsibilities for authorities. This site uses it only for high-level concepts such as settlement finality."
    },
    {
      "id": "payments-signal-editorial",
      "publisher": "Payments Signal",
      "title": "Payments Signal editorial teaching models",
      "sourceType": "educational-simplification",
      "accessedDate": "2026-07-12",
      "applicability": "This site's own simplified teaching models.",
      "notes": "Used wherever diagrams, scenarios, figures, or example values are didactic constructions rather than sourced facts; every such use carries a simplifications disclosure. All people, companies, banks, and list entries in examples are fictional."
    }
  ],
  "relatedContent": [
    {
      "type": "article",
      "label": "Accounting Entries in Payments",
      "href": "/2026/07/13/accounting-entries-in-payments",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Adverse media screening",
      "href": "/2026/07/13/adverse-media-screening",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Batch and file-based payments",
      "href": "/2026/07/13/batch-and-file-payments",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Book and On-Us Payments",
      "href": "/2026/07/13/book-and-on-us-payments",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Business Analyst Interview Question",
      "href": "/2026/07/13/business-analyst-interview-question",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Business email compromise and mandate fraud",
      "href": "/2026/07/13/business-email-compromise-and-mandate-fraud",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Confirmation of Payee and APP fraud",
      "href": "/2026/07/18/confirmation-of-payee-and-app-fraud",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Correspondent banking risk",
      "href": "/2026/07/13/correspondent-banking-risk",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Customer screening versus transaction screening",
      "href": "/2026/07/13/customer-versus-transaction-screening",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "How a fraud detection product works",
      "href": "/2026/07/13/how-a-fraud-detection-product-works",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "How a payment hub works: product capabilities",
      "href": "/2026/07/13/payment-hub-product-capabilities",
      "coverage": "direct"
    },
    {
      "type": "article",
      "label": "How a sanctions screening product works",
      "href": "/2026/07/13/how-a-sanctions-screening-product-works",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Misc Payment Concepts",
      "href": "/2026/07/13/misc-payment-concepts",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Name matching and fuzzy logic",
      "href": "/2026/07/13/screening-name-matching-and-fuzzy-logic",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "One corporate payment: the full MX lifecycle and its MT migration path",
      "href": "/2026/07/18/corporate-payment-full-message-lifecycle",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Payment Engines",
      "href": "/2026/07/13/payment-engines",
      "coverage": "direct"
    },
    {
      "type": "article",
      "label": "Payment exceptions and investigations",
      "href": "/2026/07/13/payment-exceptions-and-investigations",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Payment fraud typologies",
      "href": "/2026/07/13/payment-fraud-typologies",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Payment hub reference and standing data",
      "href": "/2026/07/13/payment-hub-reference-and-standing-data",
      "coverage": "direct"
    },
    {
      "type": "article",
      "label": "Payment message templates",
      "href": "/2026/07/13/payment-message-templates",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Payment Messages",
      "href": "/2026/07/13/messages",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Payment orchestration and routing",
      "href": "/2026/07/18/payment-orchestration-and-routing",
      "coverage": "direct"
    },
    {
      "type": "article",
      "label": "Payment transparency and wire stripping",
      "href": "/2026/07/13/payment-transparency-and-wire-stripping",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "PAYMENTS – BASIC TECHNICAL CONCEPTS – PART 1",
      "href": "/2026/07/13/payments-basic-technical-concepts-part-1",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Payments Interview Preparation",
      "href": "/2026/07/13/payments-interview-preparation",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Payments Interview Questions",
      "href": "/2026/07/13/payments-interview-question",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Payments Quiz – Basics 2",
      "href": "/2026/07/13/payments-quiz-basics-2",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Reconciliation in payments",
      "href": "/2026/07/13/payments-reconciliation",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Risks in Payment Systems",
      "href": "/2026/07/13/risks-in-payment-systems",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Sanctions evasion typologies",
      "href": "/2026/07/13/sanctions-evasion-typologies",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Sanctions screening system architecture",
      "href": "/2026/07/13/sanctions-screening-architecture",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Screening for politically exposed persons (PEPs)",
      "href": "/2026/07/13/pep-screening",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Screening the payment message",
      "href": "/2026/07/13/screening-the-payment-message",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Secondary identifiers and match confidence",
      "href": "/2026/07/13/secondary-identifiers-and-match-confidence",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Security and fraud controls in payment operations",
      "href": "/2026/07/13/payment-operations-security-and-fraud",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "SWIFT Cancellations and Investigation Messages",
      "href": "/2026/07/13/swift-cancellations-and-investigation-messages",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "SWIFT hosted compliance services",
      "href": "/2026/07/13/swift-hosted-compliance-services",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "SWIFT investigation and exception messages",
      "href": "/2026/07/13/swift-investigation-and-exception-messages",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "The Payment Engine Problem",
      "href": "/2026/07/13/the-payment-engine-problem",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "The real cost of payments",
      "href": "/2026/07/13/the-real-cost-of-payments",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "The sanctions screening lifecycle",
      "href": "/2026/07/13/the-sanctions-screening-lifecycle",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "The SWIFT Payment Controls Service",
      "href": "/2026/07/13/swift-payment-controls-service",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "The travel rule in payments",
      "href": "/2026/07/13/the-travel-rule-in-payments",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Trade-Based Money Laundering: Value Hidden in Trade",
      "href": "/2026/07/13/trade-based-money-laundering",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Treasury liquidity: pooling, sweeping, and virtual accounts",
      "href": "/2026/07/18/treasury-liquidity-pooling-sweeping-and-virtual-accounts",
      "coverage": "derived"
    },
    {
      "type": "article",
      "label": "Types of lists in a screening product",
      "href": "/2026/07/13/types-of-lists-in-a-screening-product",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Alert",
      "href": "/glossary#alert",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Alias",
      "href": "/glossary#alias",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Behavioural analytics",
      "href": "/glossary#behavioural-analytics",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Book payment",
      "href": "/glossary#book-payment",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Canonical format",
      "href": "/glossary#canonical-format",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Case management",
      "href": "/glossary#case-management",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Cash sweeping",
      "href": "/glossary#cash-sweeping",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Cut-off",
      "href": "/glossary#cut-off",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "False positive",
      "href": "/glossary#false-positive",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Fuzzy matching",
      "href": "/glossary#fuzzy-matching",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Good-guy list",
      "href": "/glossary#good-guy-list",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Input credit file",
      "href": "/glossary#input-credit-file",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "KYC Registry",
      "href": "/glossary#kyc-registry",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Message template",
      "href": "/glossary#message-template",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Money mule",
      "href": "/glossary#money-mule",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Nostro account",
      "href": "/glossary#nostro-account",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Notional cash pooling",
      "href": "/glossary#notional-cash-pooling",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "On-us payment",
      "href": "/glossary#on-us-payment",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Payment Controls Service (PCS)",
      "href": "/glossary#payment-controls-service",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Payment engine",
      "href": "/glossary#payment-engine",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Payment hub",
      "href": "/glossary#payment-hub",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Payment orchestration",
      "href": "/glossary#orchestration",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Physical cash pooling",
      "href": "/glossary#physical-cash-pooling",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Private list",
      "href": "/glossary#private-list",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Proxy addressing",
      "href": "/glossary#proxy-addressing",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Recall",
      "href": "/glossary#recall",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Reconciliation",
      "href": "/glossary#reconciliation",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Reference data",
      "href": "/glossary#reference-data",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Reject",
      "href": "/glossary#reject",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Rescreening",
      "href": "/glossary#rescreening",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Return",
      "href": "/glossary#return",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Rules engine",
      "href": "/glossary#rules-engine",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Scheme adapter",
      "href": "/glossary#scheme-adapter",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Screening",
      "href": "/glossary#screening",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Straight-through processing",
      "href": "/glossary#straight-through-processing",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Suspense account",
      "href": "/glossary#suspense-account",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Transliteration",
      "href": "/glossary#transliteration",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Travel rule",
      "href": "/glossary#travel-rule",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "True match",
      "href": "/glossary#true-match",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Value date",
      "href": "/glossary#value-date",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Virtual account",
      "href": "/glossary#virtual-account",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Virtual IBAN",
      "href": "/glossary#virtual-iban",
      "coverage": "derived"
    },
    {
      "type": "glossary",
      "label": "Wire stripping",
      "href": "/glossary#wire-stripping",
      "coverage": "derived"
    },
    {
      "type": "resource",
      "label": "Payment acceptance-criteria template",
      "href": "/downloads/assets/payment-acceptance-criteria-template",
      "coverage": "derived"
    },
    {
      "type": "resource",
      "label": "Payments BA delivery checklist",
      "href": "/downloads/assets/payments-ba-delivery-checklist",
      "coverage": "derived"
    },
    {
      "type": "topic",
      "label": "A day in payment operations",
      "href": "/learn/operations/a-day-in-payment-operations",
      "coverage": "direct"
    },
    {
      "type": "topic",
      "label": "Accounting entries and ledgers",
      "href": "/learn/operations/accounting-entries-and-ledgers",
      "coverage": "direct"
    },
    {
      "type": "topic",
      "label": "Customer vs transaction screening",
      "href": "/screening/execution/customer-vs-transaction-screening",
      "coverage": "derived"
    },
    {
      "type": "topic",
      "label": "Exceptions and investigations",
      "href": "/learn/operations/exceptions-and-investigations",
      "coverage": "direct"
    },
    {
      "type": "topic",
      "label": "Name matching and fuzzy logic",
      "href": "/screening/execution/name-matching-and-fuzzy-logic",
      "coverage": "derived"
    },
    {
      "type": "topic",
      "label": "Nostro reconciliation",
      "href": "/learn/operations/nostro-reconciliation",
      "coverage": "direct"
    },
    {
      "type": "topic",
      "label": "Payment engines and hub architecture",
      "href": "/learn/operations/payment-hub-architecture",
      "coverage": "direct"
    },
    {
      "type": "topic",
      "label": "Payment security and fraud basics",
      "href": "/learn/operations/payment-security-and-fraud-basics",
      "coverage": "derived"
    },
    {
      "type": "topic",
      "label": "Payment transparency and the travel rule",
      "href": "/screening/execution/payment-transparency-and-travel-rule",
      "coverage": "derived"
    },
    {
      "type": "topic",
      "label": "Screening payment messages",
      "href": "/screening/execution/screening-payment-messages",
      "coverage": "derived"
    },
    {
      "type": "topic",
      "label": "Screening system architecture",
      "href": "/screening/execution/screening-architecture",
      "coverage": "direct"
    },
    {
      "type": "topic",
      "label": "Secondary identifiers and confidence",
      "href": "/screening/execution/secondary-identifiers-and-confidence",
      "coverage": "derived"
    },
    {
      "type": "topic",
      "label": "The payment lifecycle",
      "href": "/learn/foundations/payment-lifecycle",
      "coverage": "direct"
    },
    {
      "type": "topic",
      "label": "The screening lifecycle",
      "href": "/screening/execution/screening-lifecycle",
      "coverage": "derived"
    },
    {
      "type": "topic",
      "label": "Treasury liquidity structures",
      "href": "/learn/operations/treasury-liquidity-structures",
      "coverage": "derived"
    }
  ]
}
