{
  "notice": "SYNTHETIC / TRAINING ONLY. Apply the governing scheme, market-infrastructure, bank, and product rules before implementation.",
  "reviewedOn": "2026-07-19",
  "cases": [
    {
      "id": "TC-VAL-001",
      "area": "validation",
      "title": "Reject malformed instructed amount",
      "precondition": "A pain.001 is received before booking.",
      "input": "InstdAmt contains a non-numeric value.",
      "expected": "Schema or parser validation fails; no payment instruction is created; the error is traceable without exposing customer data.",
      "messageIds": [
        "pain-001"
      ],
      "flowIds": [
        "flow-cbpr-corporate-lifecycle"
      ]
    },
    {
      "id": "TC-REJ-002",
      "area": "rejection",
      "title": "Correlate an interbank rejection",
      "precondition": "A pacs.008 has been sent with stable message and transaction identifiers.",
      "input": "A pacs.002 reports RJCT with an applicable reason.",
      "expected": "The payment is marked rejected, the reason and original identifiers are preserved, and downstream posting is prevented.",
      "messageIds": [
        "pacs-008",
        "pacs-002"
      ],
      "flowIds": [
        "flow-cbpr-corporate-lifecycle"
      ]
    },
    {
      "id": "TC-RET-003",
      "area": "return",
      "title": "Return after settlement",
      "precondition": "The original pacs.008 has settled.",
      "input": "A pacs.004 references the original transaction and provides a return reason.",
      "expected": "A distinct return transaction is created; the original remains historically settled; reconciliation links both legs.",
      "messageIds": [
        "pacs-008",
        "pacs-004"
      ],
      "flowIds": [
        "flow-cbpr-corporate-lifecycle"
      ]
    },
    {
      "id": "TC-RCL-004",
      "area": "recall",
      "title": "Do not confuse a recall request with a completed return",
      "precondition": "The payment may already have been forwarded or credited.",
      "input": "A camt.056 cancellation request arrives.",
      "expected": "The request enters investigation; funds are not assumed recovered until the response and any return are received.",
      "messageIds": [
        "camt-056",
        "camt-029",
        "pacs-004"
      ],
      "flowIds": [
        "flow-cbpr-corporate-lifecycle"
      ]
    },
    {
      "id": "TC-REV-005",
      "area": "reversal",
      "title": "Reverse the correct clearing transaction",
      "precondition": "A pacs.008 was processed in a context that permits reversal.",
      "input": "A pacs.007 references an unknown transaction identifier.",
      "expected": "The reversal is rejected or routed to investigation; no unrelated posting is changed.",
      "messageIds": [
        "pacs-008",
        "pacs-007"
      ],
      "flowIds": [
        "flow-cbpr-corporate-lifecycle"
      ]
    },
    {
      "id": "TC-INV-006",
      "area": "investigation",
      "title": "Preserve structured investigation correlation",
      "precondition": "An exception case is open.",
      "input": "camt.110 and camt.111 carry the case and original payment references.",
      "expected": "The case timeline links request and response to one payment without relying on narrative-only matching.",
      "messageIds": [
        "camt-110",
        "camt-111"
      ],
      "flowIds": [
        "flow-cbpr-corporate-lifecycle"
      ]
    },
    {
      "id": "TC-REC-007",
      "area": "reconciliation",
      "title": "Reconcile notification, intraday report, and statement",
      "precondition": "The account-servicing institution issues camt reporting.",
      "input": "camt.054, camt.052, and camt.053 contain the same booking with their profile-specific identifiers.",
      "expected": "The booking is not counted three times; notification, intraday visibility, and end-of-day statement are linked to one account entry.",
      "messageIds": [
        "camt-054",
        "camt-052",
        "camt-053"
      ],
      "flowIds": [
        "flow-cbpr-corporate-lifecycle"
      ]
    },
    {
      "id": "TC-MIG-008",
      "area": "migration",
      "title": "Detect MX-to-MT structured-address loss",
      "precondition": "A translated payment must traverse an MT leg.",
      "input": "The MX party contains structured address data beyond the MT field capacity.",
      "expected": "The translation flags truncation or rejects according to policy; no silent loss is treated as a successful semantic conversion.",
      "messageIds": [
        "pacs-008",
        "mt103"
      ],
      "flowIds": [
        "flow-mt-corporate-lifecycle"
      ]
    },
    {
      "id": "TC-INS-009",
      "area": "instant-payments",
      "title": "Handle an instant-payment timeout without double paying",
      "precondition": "The scheme response is not received before the client timeout.",
      "input": "A retry is attempted with the same business instruction.",
      "expected": "Idempotency and status enquiry prevent a duplicate transfer; the uncertain first attempt is resolved before a new economic instruction is accepted.",
      "messageIds": [
        "pacs-008",
        "pacs-002"
      ],
      "flowIds": [
        "flow-sct-inst"
      ]
    },
    {
      "id": "TC-SCR-010",
      "area": "screening",
      "title": "Hold a potential sanctions match before release",
      "precondition": "Screening runs before irreversible release.",
      "input": "A party produces a potential match requiring review.",
      "expected": "The payment is held, the alert and decision evidence are recorded, and only authorised disposition resumes or rejects processing.",
      "messageIds": [
        "pacs-008"
      ],
      "flowIds": [
        "flow-cbpr-pacs008"
      ]
    }
  ]
}
