{
  "generatedFrom": "Payments Signal canonical architecture registry",
  "notice": "SYNTHETIC / TRAINING ONLY",
  "blueprintId": "architecture-wallet-tokenisation",
  "versionLabel": "Payments Signal reference architecture v1",
  "reviewDate": "2026-07-23",
  "traces": [
    {
      "id": "wallet-tokenized-payment",
      "label": "Provision and spend a token",
      "summary": "Follow a card from wallet enrolment to one authenticated, tokenised authorisation.",
      "viewId": "component",
      "steps": [
        {
          "id": "wallet-tokenized-payment-step-1",
          "title": "Start enrolment",
          "nodeId": "wallet-user",
          "interfaceId": "wallet-e1",
          "plainExplanation": "The wallet binds the request to the authenticated user and device.",
          "businessState": "Provisioning requested"
        },
        {
          "id": "wallet-tokenized-payment-step-2",
          "title": "Ask the issuer",
          "nodeId": "wallet-provisioning",
          "interfaceId": "wallet-e2",
          "plainExplanation": "The wallet requests issuer eligibility and any required verification.",
          "businessState": "Eligibility under review"
        },
        {
          "id": "wallet-tokenized-payment-step-3",
          "title": "Approve token issuance",
          "nodeId": "wallet-issuer",
          "interfaceId": "wallet-e3",
          "plainExplanation": "The issuer records the verification and assurance decision.",
          "businessState": "Provisioning approved"
        },
        {
          "id": "wallet-tokenized-payment-step-4",
          "title": "Issue a constrained token",
          "nodeId": "wallet-token-service",
          "interfaceId": "wallet-e4",
          "plainExplanation": "The token service creates a token with domain and lifecycle controls.",
          "businessState": "Token active"
        },
        {
          "id": "wallet-tokenized-payment-step-5",
          "title": "Bind the purchase",
          "nodeId": "wallet-merchant",
          "interfaceId": "wallet-e6",
          "plainExplanation": "The merchant binds amount, merchant, and channel before authentication.",
          "businessState": "Payment context fixed"
        },
        {
          "id": "wallet-tokenized-payment-step-6",
          "title": "Authenticate when required",
          "nodeId": "wallet-3ds",
          "interfaceId": "wallet-e7",
          "plainExplanation": "3-D Secure returns an outcome; it does not approve the payment.",
          "businessState": "Authentication outcome recorded"
        },
        {
          "id": "wallet-tokenized-payment-step-7",
          "title": "Authorise the tokenised payment",
          "nodeId": "wallet-card-rail",
          "plainExplanation": "The issuer decides the card payment using token and transaction context.",
          "businessState": "Card authorisation decided"
        }
      ],
      "evidence": [
        {
          "ref": {
            "sourceId": "payments-signal-editorial",
            "locator": "Wallet, tokenisation, and cardholder-data boundaries",
            "label": "simplified-educational-illustration",
            "simplifications": "Wallet provisioning, token service, cryptogram, lifecycle, and liability rules differ by wallet, token service provider, card network, issuer, device platform, merchant channel, and applicable specification."
          },
          "verifiedDate": "2026-07-23",
          "versionContext": "Payments Signal reference architecture v1"
        },
        {
          "ref": {
            "sourceId": "emvco-3ds",
            "locator": "Three-domain architecture",
            "label": "official-requirement"
          },
          "verifiedDate": "2026-07-23",
          "versionContext": "EMV 3-D Secure public documentation"
        }
      ]
    }
  ],
  "stressCases": [
    {
      "id": "wallet-stress-provision",
      "label": "Provisioning outcome is lost",
      "trigger": "The token service response is lost after issuer approval.",
      "divergesAfterStepId": "wallet-tokenized-payment-step-3",
      "traceId": "wallet-tokenized-payment",
      "affectedNodeIds": [
        "wallet-issuer",
        "wallet-token-service",
        "wallet-provisioning"
      ],
      "affectedInterfaceIds": [
        "wallet-e3",
        "wallet-e4"
      ],
      "lastConfirmedState": "Issuer approval exists; token state is uncertain.",
      "settlementState": "No purchase settlement has occurred.",
      "fundsState": "No purchase funds moved.",
      "owner": "Issuer digital-card operations",
      "safeAction": "Query the token lifecycle by the original provisioning reference before retry.",
      "requiredEvidence": [
        "Issuer decision",
        "Token request ID",
        "Token-service lifecycle state"
      ],
      "recoverySteps": [
        "Confirm or cancel the existing token",
        "Synchronise wallet and issuer status"
      ],
      "evidence": [
        {
          "ref": {
            "sourceId": "payments-signal-editorial",
            "locator": "Wallet, tokenisation, and cardholder-data boundaries",
            "label": "simplified-educational-illustration",
            "simplifications": "Wallet provisioning, token service, cryptogram, lifecycle, and liability rules differ by wallet, token service provider, card network, issuer, device platform, merchant channel, and applicable specification."
          },
          "verifiedDate": "2026-07-23",
          "versionContext": "Payments Signal reference architecture v1"
        }
      ]
    },
    {
      "id": "wallet-stress-auth",
      "label": "3-D Secure is unavailable",
      "trigger": "Authentication cannot return a conclusive outcome.",
      "divergesAfterStepId": "wallet-tokenized-payment-step-6",
      "traceId": "wallet-tokenized-payment",
      "affectedNodeIds": [
        "wallet-merchant",
        "wallet-3ds",
        "wallet-issuer"
      ],
      "affectedInterfaceIds": [
        "wallet-e6",
        "wallet-e7"
      ],
      "lastConfirmedState": "The purchase context exists; authentication is unavailable.",
      "settlementState": "No card settlement has occurred.",
      "fundsState": "No issuer authorisation hold is confirmed.",
      "owner": "Merchant payment operations",
      "safeAction": "Apply the merchant, issuer, regulatory, and scheme fallback policy; do not label unavailable as authenticated.",
      "requiredEvidence": [
        "Protocol error",
        "Transaction reference",
        "Fallback rule"
      ],
      "recoverySteps": [
        "Return a clear outcome",
        "Retry only if the protocol permits",
        "Keep the new attempt distinct"
      ],
      "evidence": [
        {
          "ref": {
            "sourceId": "emvco-3ds",
            "locator": "Authentication outcomes and error handling",
            "label": "official-requirement"
          },
          "verifiedDate": "2026-07-23",
          "versionContext": "EMV 3-D Secure public documentation"
        }
      ]
    },
    {
      "id": "wallet-stress-replay",
      "label": "Token credential is replayed",
      "trigger": "A transaction credential is reused outside its intended context.",
      "divergesAfterStepId": "wallet-tokenized-payment-step-7",
      "traceId": "wallet-tokenized-payment",
      "affectedNodeIds": [
        "wallet-token-service",
        "wallet-card-rail",
        "wallet-operations"
      ],
      "affectedInterfaceIds": [
        "wallet-e8",
        "wallet-e9"
      ],
      "lastConfirmedState": "The original payment attempt is already known.",
      "settlementState": "Settlement state of the original attempt must be checked separately.",
      "fundsState": "A second hold or posting must not be assumed valid.",
      "owner": "Issuer fraud operations",
      "safeAction": "Decline the replay, contain the token if policy requires, and correlate the original transaction.",
      "requiredEvidence": [
        "Token reference",
        "Credential and domain checks",
        "Original authorisation"
      ],
      "recoverySteps": [
        "Block repeated use",
        "Investigate compromise",
        "Replace or resume the token under controlled lifecycle rules"
      ],
      "evidence": [
        {
          "ref": {
            "sourceId": "payments-signal-editorial",
            "locator": "Wallet, tokenisation, and cardholder-data boundaries",
            "label": "simplified-educational-illustration",
            "simplifications": "Wallet provisioning, token service, cryptogram, lifecycle, and liability rules differ by wallet, token service provider, card network, issuer, device platform, merchant channel, and applicable specification."
          },
          "verifiedDate": "2026-07-23",
          "versionContext": "Payments Signal reference architecture v1"
        }
      ]
    }
  ]
}
