{
  "generatedFrom": "Payments Signal canonical architecture registry",
  "notice": "SYNTHETIC / TRAINING ONLY",
  "blueprintId": "architecture-open-banking",
  "versionLabel": "Payments Signal reference architecture v1",
  "reviewDate": "2026-07-23",
  "traces": [
    {
      "id": "ob-initiate-payment",
      "label": "Consent to merchant status",
      "summary": "Follow a payment initiation without exposing bank credentials to the PISP or merchant.",
      "viewId": "component",
      "steps": [
        {
          "id": "ob-initiate-payment-step-1",
          "title": "Choose account payment",
          "nodeId": "ob-user-merchant",
          "interfaceId": "ob-e1",
          "plainExplanation": "The merchant fixes order, amount, currency, and payee.",
          "businessState": "Merchant intent created"
        },
        {
          "id": "ob-initiate-payment-step-2",
          "title": "Create consent",
          "nodeId": "ob-pisp",
          "interfaceId": "ob-e3",
          "plainExplanation": "The PISP creates a scoped request under the bank's supported profile.",
          "businessState": "Consent requested"
        },
        {
          "id": "ob-initiate-payment-step-3",
          "title": "Protect the bank boundary",
          "nodeId": "ob-aspsp-api",
          "interfaceId": "ob-e4",
          "plainExplanation": "The bank validates the PISP, request, and consent context.",
          "businessState": "PISP authenticated"
        },
        {
          "id": "ob-initiate-payment-step-4",
          "title": "Authenticate and approve",
          "nodeId": "ob-auth-consent",
          "interfaceId": "ob-e5",
          "plainExplanation": "The customer authenticates with the bank and approves the bound payment details.",
          "businessState": "Customer authorised"
        },
        {
          "id": "ob-initiate-payment-step-5",
          "title": "Process the payment",
          "nodeId": "ob-payment-engine",
          "interfaceId": "ob-e6",
          "plainExplanation": "Normal account, fraud, sanctions, funds, limit, and rail controls apply.",
          "businessState": "Bank payment accepted or rejected",
          "messageIds": [
            "pain-001",
            "pacs-008"
          ]
        },
        {
          "id": "ob-initiate-payment-step-6",
          "title": "Publish the state",
          "nodeId": "ob-status-events",
          "interfaceId": "ob-e7",
          "plainExplanation": "The bank emits a correlated status and supports retrieval if delivery fails.",
          "businessState": "Authoritative status available"
        },
        {
          "id": "ob-initiate-payment-step-7",
          "title": "Reconcile the order",
          "nodeId": "ob-merchant-recon",
          "plainExplanation": "The merchant combines status with settlement or credit evidence before close.",
          "businessState": "Order and payment aligned"
        }
      ],
      "evidence": [
        {
          "ref": {
            "sourceId": "open-banking-pis",
            "locator": "End-to-end payment-initiation journey",
            "label": "official-requirement"
          },
          "verifiedDate": "2026-07-23",
          "versionContext": "Open Banking customer-experience guidelines, reviewed 2026-07-23"
        },
        {
          "ref": {
            "sourceId": "payments-signal-editorial",
            "locator": "Open-banking payment initiation and status",
            "label": "simplified-educational-illustration",
            "simplifications": "Authorisation protocol, consent, strong-customer-authentication, API, callback, status, refund, liability, and regulatory duties differ by jurisdiction, standard release, account provider, and payment-initiation service provider."
          },
          "verifiedDate": "2026-07-23",
          "versionContext": "Payments Signal reference architecture v1"
        }
      ]
    }
  ],
  "stressCases": [
    {
      "id": "ob-stress-abandon",
      "label": "Customer abandons authentication",
      "trigger": "The user closes the bank journey before a confirmed outcome.",
      "divergesAfterStepId": "ob-initiate-payment-step-4",
      "traceId": "ob-initiate-payment",
      "affectedNodeIds": [
        "ob-auth-consent",
        "ob-pisp",
        "ob-user-merchant"
      ],
      "affectedInterfaceIds": [
        "ob-e4",
        "ob-e5"
      ],
      "lastConfirmedState": "Consent exists; customer authorisation is not confirmed.",
      "settlementState": "No settlement has occurred.",
      "fundsState": "No payment debit is confirmed.",
      "owner": "PISP customer operations",
      "safeAction": "Show pending or abandoned accurately and query before offering a new attempt.",
      "requiredEvidence": [
        "Consent ID",
        "Bank authentication state",
        "Payment ID if created"
      ],
      "recoverySteps": [
        "Expire or resume under the bank rules",
        "Keep a later attempt distinct"
      ],
      "evidence": [
        {
          "ref": {
            "sourceId": "payments-signal-editorial",
            "locator": "Open-banking payment initiation and status",
            "label": "simplified-educational-illustration",
            "simplifications": "Authorisation protocol, consent, strong-customer-authentication, API, callback, status, refund, liability, and regulatory duties differ by jurisdiction, standard release, account provider, and payment-initiation service provider."
          },
          "verifiedDate": "2026-07-23",
          "versionContext": "Payments Signal reference architecture v1"
        }
      ]
    },
    {
      "id": "ob-stress-callback",
      "label": "Callback is lost",
      "trigger": "The bank payment advances but the PISP receives no callback.",
      "divergesAfterStepId": "ob-initiate-payment-step-6",
      "traceId": "ob-initiate-payment",
      "affectedNodeIds": [
        "ob-status-events",
        "ob-pisp",
        "ob-merchant-recon"
      ],
      "affectedInterfaceIds": [
        "ob-e6",
        "ob-e7",
        "ob-e8"
      ],
      "lastConfirmedState": "The bank payment has an authoritative state.",
      "settlementState": "Settlement depends on that state and the underlying rail.",
      "fundsState": "Funds may have moved even though the merchant page is pending.",
      "owner": "PISP platform operations",
      "safeAction": "Retrieve status by the original payment identifier; never submit another payment to discover the first outcome.",
      "requiredEvidence": [
        "Payment ID",
        "Event log",
        "Status response",
        "Merchant reference"
      ],
      "recoverySteps": [
        "Recover the authoritative status",
        "Redeliver or update the merchant once",
        "Reconcile settlement evidence"
      ],
      "evidence": [
        {
          "ref": {
            "sourceId": "payments-signal-editorial",
            "locator": "Open-banking payment initiation and status",
            "label": "simplified-educational-illustration",
            "simplifications": "Authorisation protocol, consent, strong-customer-authentication, API, callback, status, refund, liability, and regulatory duties differ by jurisdiction, standard release, account provider, and payment-initiation service provider."
          },
          "verifiedDate": "2026-07-23",
          "versionContext": "Payments Signal reference architecture v1"
        }
      ]
    },
    {
      "id": "ob-stress-return",
      "label": "Payment later returns",
      "trigger": "The merchant saw an accepted state but the bank payment returns.",
      "divergesAfterStepId": "ob-initiate-payment-step-7",
      "traceId": "ob-initiate-payment",
      "affectedNodeIds": [
        "ob-payment-engine",
        "ob-status-events",
        "ob-merchant-recon"
      ],
      "affectedInterfaceIds": [
        "ob-e6",
        "ob-e9"
      ],
      "lastConfirmedState": "The payment was accepted and later returned.",
      "settlementState": "Any earlier settlement must be considered separately from the return.",
      "fundsState": "The return is a new linked value movement.",
      "owner": "Merchant payment operations",
      "safeAction": "Update order and finance state from the linked return; do not rewrite the original accepted state.",
      "requiredEvidence": [
        "Original payment ID",
        "Return reference",
        "Credit or debit advice"
      ],
      "recoverySteps": [
        "Record the return",
        "Apply customer and order policy",
        "Reconcile both movements"
      ],
      "evidence": [
        {
          "ref": {
            "sourceId": "payments-signal-editorial",
            "locator": "Open-banking payment initiation and status",
            "label": "simplified-educational-illustration",
            "simplifications": "Authorisation protocol, consent, strong-customer-authentication, API, callback, status, refund, liability, and regulatory duties differ by jurisdiction, standard release, account provider, and payment-initiation service provider."
          },
          "verifiedDate": "2026-07-23",
          "versionContext": "Payments Signal reference architecture v1"
        }
      ]
    }
  ]
}
