{
  "documentationRevision": "2026-10-07",
  "notice": "Illustrative response fragments, not executable requests, signable payloads, current prices or live payment evidence. Addresses/calldata are placeholders; never sign these fixtures.",
  "fixtures": [
    {
      "name": "source-gas provisional preparation (candidate.preparation fragment)",
      "contract": "openapi.json",
      "schema": "#/components/schemas/QuotePreparation",
      "value": {
        "eligible": true,
        "deferredChecks": [
          "source-gas"
        ],
        "reason": "Prepare with the sender wallet to estimate the source transaction fee and check the total against policy. Cost ranking is provisional until this succeeds.",
        "enabled": true
      }
    },
    {
      "name": "ready protocol action",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ProtocolTransaction",
      "value": {
        "object": "payment_transaction",
        "id": "00000000-0000-4000-8000-000000000001",
        "sourceRecovery": null,
        "sequence": 1,
        "kind": "approval",
        "network": "ethereum",
        "sender": "0x1111111111111111111111111111111111111111",
        "cancellation": null,
        "state": "ready",
        "transaction": {
          "kind": "approval",
          "network": "ethereum",
          "family": "evm",
          "sender": "0x1111111111111111111111111111111111111111",
          "nonce": "1",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "feeMinor": "100000000000000",
          "feeCurrency": "ETH",
          "context": {
            "fixture": true
          },
          "transaction": {
            "from": "0x1111111111111111111111111111111111111111",
            "to": "0x2222222222222222222222222222222222222222",
            "data": "0x095ea7b3",
            "value": "0x0",
            "chainId": "0x1",
            "nonce": "0x1",
            "gas": "0x186a0",
            "gasPrice": "0x3b9aca00"
          }
        },
        "assessment": {
          "checkedAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "walletReady": true,
          "executionEnabled": true,
          "checks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "policyChecks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "blockers": [],
          "valuation": {
            "currency": "USD",
            "source": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "destination": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "gas": {
              "usd": "2000",
              "source": "CoinGecko",
              "assetId": "fixture-eth",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "inputUsd": "5",
            "reason": null
          },
          "costComplete": false,
          "estimatedCostUsd": "0.20",
          "eta": {
            "seconds": null,
            "scope": "Token approval only",
            "source": null
          },
          "unsignedTransaction": {
            "kind": "approval",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          },
          "approvalOnly": true,
          "notice": "Token approval only; no payment has been sent."
        },
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "originalExpiresAt": "2026-09-22T12:05:00.000Z",
        "review": null,
        "mintRenewalEnabled": false,
        "approvalRenewalEnabled": false,
        "sourceRenewalEnabled": false,
        "closeEnabled": false,
        "closureRequirement": null,
        "manualCloseEnabled": false,
        "closure": null,
        "reviewRefreshEnabled": true,
        "expired": false,
        "submissionStartedAt": null,
        "sourceHash": null,
        "receipt": null,
        "lastError": null,
        "walletBroadcastAvailable": true,
        "walletBroadcast": null,
        "canContinue": false,
        "signingEnabled": true,
        "submissionEnabled": false,
        "executionEnabled": true,
        "authorization": "transaction-signature",
        "intentApprovalRequired": false
      }
    },
    {
      "name": "approval included, not finalized; continuation allowed",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ProtocolTransaction",
      "value": {
        "object": "payment_transaction",
        "id": "00000000-0000-4000-8000-000000000001",
        "sourceRecovery": null,
        "sequence": 1,
        "kind": "approval",
        "network": "ethereum",
        "sender": "0x1111111111111111111111111111111111111111",
        "cancellation": null,
        "state": "submitted",
        "transaction": {
          "kind": "approval",
          "network": "ethereum",
          "family": "evm",
          "sender": "0x1111111111111111111111111111111111111111",
          "nonce": "1",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "feeMinor": "100000000000000",
          "feeCurrency": "ETH",
          "context": {
            "fixture": true
          },
          "transaction": {
            "from": "0x1111111111111111111111111111111111111111",
            "to": "0x2222222222222222222222222222222222222222",
            "data": "0x095ea7b3",
            "value": "0x0",
            "chainId": "0x1",
            "nonce": "0x1",
            "gas": "0x186a0",
            "gasPrice": "0x3b9aca00"
          }
        },
        "assessment": {
          "checkedAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "walletReady": true,
          "executionEnabled": true,
          "checks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "policyChecks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "blockers": [],
          "valuation": {
            "currency": "USD",
            "source": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "destination": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "gas": {
              "usd": "2000",
              "source": "CoinGecko",
              "assetId": "fixture-eth",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "inputUsd": "5",
            "reason": null
          },
          "costComplete": false,
          "estimatedCostUsd": "0.20",
          "eta": {
            "seconds": null,
            "scope": "Token approval only",
            "source": null
          },
          "unsignedTransaction": {
            "kind": "approval",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          },
          "approvalOnly": true,
          "notice": "Token approval only; no payment has been sent."
        },
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "originalExpiresAt": "2026-09-22T12:05:00.000Z",
        "review": null,
        "mintRenewalEnabled": false,
        "approvalRenewalEnabled": false,
        "sourceRenewalEnabled": false,
        "closeEnabled": false,
        "closureRequirement": null,
        "manualCloseEnabled": false,
        "closure": null,
        "reviewRefreshEnabled": false,
        "expired": false,
        "submissionStartedAt": null,
        "sourceHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "receipt": {
          "network": "ethereum",
          "hash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
          "included": true,
          "successful": true,
          "finalized": false,
          "evidence": {
            "approval": true
          },
          "canonical": true,
          "feeMinor": "1000"
        },
        "lastError": null,
        "walletBroadcastAvailable": false,
        "walletBroadcast": null,
        "canContinue": true,
        "signingEnabled": false,
        "submissionEnabled": false,
        "executionEnabled": true,
        "authorization": "transaction-signature",
        "intentApprovalRequired": false
      }
    },
    {
      "name": "signed hash exists before any broadcast",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ProtocolTransaction",
      "value": {
        "object": "payment_transaction",
        "id": "00000000-0000-4000-8000-000000000001",
        "sourceRecovery": null,
        "sequence": 1,
        "kind": "approval",
        "network": "ethereum",
        "sender": "0x1111111111111111111111111111111111111111",
        "cancellation": null,
        "state": "signed",
        "transaction": {
          "kind": "approval",
          "network": "ethereum",
          "family": "evm",
          "sender": "0x1111111111111111111111111111111111111111",
          "nonce": "1",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "feeMinor": "100000000000000",
          "feeCurrency": "ETH",
          "context": {
            "fixture": true
          },
          "transaction": {
            "from": "0x1111111111111111111111111111111111111111",
            "to": "0x2222222222222222222222222222222222222222",
            "data": "0x095ea7b3",
            "value": "0x0",
            "chainId": "0x1",
            "nonce": "0x1",
            "gas": "0x186a0",
            "gasPrice": "0x3b9aca00"
          }
        },
        "assessment": {
          "checkedAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "walletReady": true,
          "executionEnabled": true,
          "checks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "policyChecks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "blockers": [],
          "valuation": {
            "currency": "USD",
            "source": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "destination": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "gas": {
              "usd": "2000",
              "source": "CoinGecko",
              "assetId": "fixture-eth",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "inputUsd": "5",
            "reason": null
          },
          "costComplete": false,
          "estimatedCostUsd": "0.20",
          "eta": {
            "seconds": null,
            "scope": "Token approval only",
            "source": null
          },
          "unsignedTransaction": {
            "kind": "approval",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          },
          "approvalOnly": true,
          "notice": "Token approval only; no payment has been sent."
        },
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "originalExpiresAt": "2026-09-22T12:05:00.000Z",
        "review": null,
        "mintRenewalEnabled": false,
        "approvalRenewalEnabled": false,
        "sourceRenewalEnabled": false,
        "closeEnabled": false,
        "closureRequirement": null,
        "manualCloseEnabled": false,
        "closure": null,
        "reviewRefreshEnabled": true,
        "expired": false,
        "submissionStartedAt": null,
        "sourceHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "receipt": null,
        "lastError": null,
        "walletBroadcastAvailable": false,
        "walletBroadcast": null,
        "canContinue": false,
        "signingEnabled": false,
        "submissionEnabled": true,
        "executionEnabled": true,
        "authorization": "transaction-signature",
        "intentApprovalRequired": false
      }
    },
    {
      "name": "uncertain submission: track only",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ProtocolTransaction",
      "value": {
        "object": "payment_transaction",
        "id": "00000000-0000-4000-8000-000000000001",
        "sourceRecovery": null,
        "sequence": 1,
        "kind": "approval",
        "network": "ethereum",
        "sender": "0x1111111111111111111111111111111111111111",
        "cancellation": null,
        "state": "submission-unknown",
        "transaction": {
          "kind": "approval",
          "network": "ethereum",
          "family": "evm",
          "sender": "0x1111111111111111111111111111111111111111",
          "nonce": "1",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "feeMinor": "100000000000000",
          "feeCurrency": "ETH",
          "context": {
            "fixture": true
          },
          "transaction": {
            "from": "0x1111111111111111111111111111111111111111",
            "to": "0x2222222222222222222222222222222222222222",
            "data": "0x095ea7b3",
            "value": "0x0",
            "chainId": "0x1",
            "nonce": "0x1",
            "gas": "0x186a0",
            "gasPrice": "0x3b9aca00"
          }
        },
        "assessment": {
          "checkedAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "walletReady": true,
          "executionEnabled": true,
          "checks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "policyChecks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "blockers": [],
          "valuation": {
            "currency": "USD",
            "source": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "destination": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "gas": {
              "usd": "2000",
              "source": "CoinGecko",
              "assetId": "fixture-eth",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "inputUsd": "5",
            "reason": null
          },
          "costComplete": false,
          "estimatedCostUsd": "0.20",
          "eta": {
            "seconds": null,
            "scope": "Token approval only",
            "source": null
          },
          "unsignedTransaction": {
            "kind": "approval",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          },
          "approvalOnly": true,
          "notice": "Token approval only; no payment has been sent."
        },
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "originalExpiresAt": "2026-09-22T12:05:00.000Z",
        "review": null,
        "mintRenewalEnabled": false,
        "approvalRenewalEnabled": false,
        "sourceRenewalEnabled": false,
        "closeEnabled": false,
        "closureRequirement": null,
        "manualCloseEnabled": false,
        "closure": null,
        "reviewRefreshEnabled": false,
        "expired": false,
        "submissionStartedAt": null,
        "sourceHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "receipt": null,
        "lastError": null,
        "walletBroadcastAvailable": false,
        "walletBroadcast": null,
        "canContinue": false,
        "signingEnabled": false,
        "submissionEnabled": false,
        "executionEnabled": true,
        "authorization": "transaction-signature",
        "intentApprovalRequired": false
      }
    },
    {
      "name": "delivery verified while source finality remains pending",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ProtocolPreparation",
      "value": {
        "object": "payment_preparation",
        "id": "00000000-0000-4000-8000-000000000001",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "adapter": "circle",
        "network": "mainnet",
        "state": "prepared",
        "version": 2,
        "intent": {
          "input": {
            "source": "ethereum",
            "destination": "base",
            "amount": "5",
            "sourceAsset": {
              "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
              "symbol": "USDC",
              "decimals": 6
            },
            "destinationAsset": {
              "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "symbol": "USDC",
              "decimals": 6
            }
          },
          "destinationExecution": "managed"
        },
        "deposit": {
          "kind": "protocol"
        },
        "sourceHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "tracking": {
          "status": "destination-pending",
          "sourceVerified": true,
          "sourceFinalized": false,
          "destinationVerified": true,
          "destinationFinalized": true,
          "completed": false
        },
        "lastError": null,
        "events": [],
        "transaction": {
          "object": "payment_transaction",
          "id": "00000000-0000-4000-8000-000000000001",
          "sourceRecovery": null,
          "sequence": 1,
          "kind": "burn",
          "network": "ethereum",
          "sender": "0x1111111111111111111111111111111111111111",
          "cancellation": null,
          "state": "submitted",
          "transaction": {
            "kind": "burn",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          },
          "assessment": {
            "checkedAt": "2026-09-22T12:00:00.000Z",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "walletReady": true,
            "executionEnabled": true,
            "checks": [
              {
                "id": "wallet",
                "status": "pass",
                "message": "Illustrative passing check."
              }
            ],
            "policyChecks": [
              {
                "id": "wallet",
                "status": "pass",
                "message": "Illustrative passing check."
              }
            ],
            "blockers": [],
            "valuation": {
              "currency": "USD",
              "source": {
                "usd": "1",
                "source": "CoinGecko",
                "assetId": "fixture-usdc",
                "updatedAt": "2026-09-22T12:00:00.000Z",
                "expiresAt": "2026-09-22T12:05:00.000Z"
              },
              "destination": {
                "usd": "1",
                "source": "CoinGecko",
                "assetId": "fixture-usdc",
                "updatedAt": "2026-09-22T12:00:00.000Z",
                "expiresAt": "2026-09-22T12:05:00.000Z"
              },
              "gas": {
                "usd": "2000",
                "source": "CoinGecko",
                "assetId": "fixture-eth",
                "updatedAt": "2026-09-22T12:00:00.000Z",
                "expiresAt": "2026-09-22T12:05:00.000Z"
              },
              "inputUsd": "5",
              "reason": null
            },
            "costComplete": false,
            "estimatedCostUsd": "0.20",
            "eta": {
              "seconds": null,
              "scope": "Token approval only",
              "source": null
            },
            "unsignedTransaction": {
              "kind": "approval",
              "network": "ethereum",
              "family": "evm",
              "sender": "0x1111111111111111111111111111111111111111",
              "nonce": "1",
              "expiresAt": "2026-09-22T12:05:00.000Z",
              "feeMinor": "100000000000000",
              "feeCurrency": "ETH",
              "context": {
                "fixture": true
              },
              "transaction": {
                "from": "0x1111111111111111111111111111111111111111",
                "to": "0x2222222222222222222222222222222222222222",
                "data": "0x095ea7b3",
                "value": "0x0",
                "chainId": "0x1",
                "nonce": "0x1",
                "gas": "0x186a0",
                "gasPrice": "0x3b9aca00"
              }
            },
            "approvalOnly": true,
            "notice": "Token approval only; no payment has been sent."
          },
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "originalExpiresAt": "2026-09-22T12:05:00.000Z",
          "review": null,
          "mintRenewalEnabled": false,
          "approvalRenewalEnabled": false,
          "sourceRenewalEnabled": false,
          "closeEnabled": false,
          "closureRequirement": null,
          "manualCloseEnabled": false,
          "closure": null,
          "reviewRefreshEnabled": false,
          "expired": false,
          "submissionStartedAt": null,
          "sourceHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
          "receipt": {
            "network": "ethereum",
            "hash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
            "included": true,
            "successful": true,
            "finalized": false
          },
          "lastError": null,
          "walletBroadcastAvailable": false,
          "walletBroadcast": null,
          "canContinue": false,
          "signingEnabled": false,
          "submissionEnabled": false,
          "executionEnabled": true,
          "authorization": "transaction-signature",
          "intentApprovalRequired": false
        },
        "actions": [
          {
            "object": "payment_transaction",
            "id": "00000000-0000-4000-8000-000000000001",
            "sourceRecovery": null,
            "sequence": 1,
            "kind": "burn",
            "network": "ethereum",
            "sender": "0x1111111111111111111111111111111111111111",
            "cancellation": null,
            "state": "submitted",
            "transaction": {
              "kind": "burn",
              "network": "ethereum",
              "family": "evm",
              "sender": "0x1111111111111111111111111111111111111111",
              "nonce": "1",
              "expiresAt": "2026-09-22T12:05:00.000Z",
              "feeMinor": "100000000000000",
              "feeCurrency": "ETH",
              "context": {
                "fixture": true
              },
              "transaction": {
                "from": "0x1111111111111111111111111111111111111111",
                "to": "0x2222222222222222222222222222222222222222",
                "data": "0x095ea7b3",
                "value": "0x0",
                "chainId": "0x1",
                "nonce": "0x1",
                "gas": "0x186a0",
                "gasPrice": "0x3b9aca00"
              }
            },
            "assessment": {
              "checkedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z",
              "walletReady": true,
              "executionEnabled": true,
              "checks": [
                {
                  "id": "wallet",
                  "status": "pass",
                  "message": "Illustrative passing check."
                }
              ],
              "policyChecks": [
                {
                  "id": "wallet",
                  "status": "pass",
                  "message": "Illustrative passing check."
                }
              ],
              "blockers": [],
              "valuation": {
                "currency": "USD",
                "source": {
                  "usd": "1",
                  "source": "CoinGecko",
                  "assetId": "fixture-usdc",
                  "updatedAt": "2026-09-22T12:00:00.000Z",
                  "expiresAt": "2026-09-22T12:05:00.000Z"
                },
                "destination": {
                  "usd": "1",
                  "source": "CoinGecko",
                  "assetId": "fixture-usdc",
                  "updatedAt": "2026-09-22T12:00:00.000Z",
                  "expiresAt": "2026-09-22T12:05:00.000Z"
                },
                "gas": {
                  "usd": "2000",
                  "source": "CoinGecko",
                  "assetId": "fixture-eth",
                  "updatedAt": "2026-09-22T12:00:00.000Z",
                  "expiresAt": "2026-09-22T12:05:00.000Z"
                },
                "inputUsd": "5",
                "reason": null
              },
              "costComplete": false,
              "estimatedCostUsd": "0.20",
              "eta": {
                "seconds": null,
                "scope": "Token approval only",
                "source": null
              },
              "unsignedTransaction": {
                "kind": "approval",
                "network": "ethereum",
                "family": "evm",
                "sender": "0x1111111111111111111111111111111111111111",
                "nonce": "1",
                "expiresAt": "2026-09-22T12:05:00.000Z",
                "feeMinor": "100000000000000",
                "feeCurrency": "ETH",
                "context": {
                  "fixture": true
                },
                "transaction": {
                  "from": "0x1111111111111111111111111111111111111111",
                  "to": "0x2222222222222222222222222222222222222222",
                  "data": "0x095ea7b3",
                  "value": "0x0",
                  "chainId": "0x1",
                  "nonce": "0x1",
                  "gas": "0x186a0",
                  "gasPrice": "0x3b9aca00"
                }
              },
              "approvalOnly": true,
              "notice": "Token approval only; no payment has been sent."
            },
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "originalExpiresAt": "2026-09-22T12:05:00.000Z",
            "review": null,
            "mintRenewalEnabled": false,
            "approvalRenewalEnabled": false,
            "sourceRenewalEnabled": false,
            "closeEnabled": false,
            "closureRequirement": null,
            "manualCloseEnabled": false,
            "closure": null,
            "reviewRefreshEnabled": false,
            "expired": false,
            "submissionStartedAt": null,
            "sourceHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
            "receipt": {
              "network": "ethereum",
              "hash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
              "included": true,
              "successful": true,
              "finalized": false
            },
            "lastError": null,
            "walletBroadcastAvailable": false,
            "walletBroadcast": null,
            "canContinue": false,
            "signingEnabled": false,
            "submissionEnabled": false,
            "executionEnabled": true,
            "authorization": "transaction-signature",
            "intentApprovalRequired": false
          }
        ],
        "walletApproval": {
          "required": false,
          "method": "transaction-signature"
        },
        "destinationExecution": {
          "mode": "managed",
          "provider": "openzeppelin-channels",
          "customerSignatureRequired": false,
          "customerFee": {
            "amount": "0",
            "currency": "XLM"
          },
          "state": "waiting-for-source"
        },
        "readiness": {
          "checkedAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "walletReady": true,
          "executionEnabled": true,
          "checks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "policyChecks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "blockers": [],
          "valuation": {
            "currency": "USD",
            "source": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "destination": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "gas": {
              "usd": "2000",
              "source": "CoinGecko",
              "assetId": "fixture-eth",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "inputUsd": "5",
            "reason": null
          },
          "costComplete": false,
          "estimatedCostUsd": "0.20",
          "eta": {
            "seconds": null,
            "scope": "Token approval only",
            "source": null
          },
          "unsignedTransaction": {
            "kind": "approval",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          },
          "approvalOnly": true,
          "notice": "Token approval only; no payment has been sent."
        },
        "executionEnabled": true,
        "nextAction": "track"
      }
    },
    {
      "name": "testnet signed action uses its own wrapper",
      "contract": "testnet-openapi.json",
      "schema": "#/components/schemas/Transaction",
      "value": {
        "object": "payment_transaction",
        "id": "00000000-0000-4000-8000-000000000001",
        "network": "ethereum-sepolia",
        "sequence": 1,
        "kind": "burn",
        "sender": "0x1111111111111111111111111111111111111111",
        "state": "signed",
        "mintRenewalEnabled": false,
        "authorizationPrepared": true,
        "transaction": {
          "kind": "burn",
          "network": "ethereum-sepolia",
          "family": "evm",
          "sender": "0x1111111111111111111111111111111111111111",
          "nonce": "1",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "fee": "1000",
          "feeCurrency": "wei",
          "transaction": {
            "from": "0x1111111111111111111111111111111111111111",
            "to": "0x2222222222222222222222222222222222222222",
            "data": "0x095ea7b3",
            "value": "0x0",
            "chainId": "0x1",
            "nonce": "0x1",
            "gas": "0x186a0",
            "gasPrice": "0x3b9aca00"
          }
        },
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "expired": false,
        "submissionStartedAt": null,
        "sourceHash": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
        "walletBroadcastAvailable": false,
        "walletBroadcast": null,
        "signingEnabled": false,
        "submissionEnabled": true,
        "executionEnabled": true,
        "authorization": "transaction-signature",
        "intentApprovalRequired": false,
        "lastError": null
      }
    },
    {
      "name": "unreviewed provider deployment: signing blocked",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ProtocolTransaction",
      "value": {
        "object": "payment_transaction",
        "id": "00000000-0000-4000-8000-000000000001",
        "sourceRecovery": null,
        "sequence": 1,
        "kind": "approval",
        "network": "ethereum",
        "sender": "0x1111111111111111111111111111111111111111",
        "cancellation": null,
        "state": "ready",
        "transaction": {
          "kind": "approval",
          "network": "ethereum",
          "family": "evm",
          "sender": "0x1111111111111111111111111111111111111111",
          "nonce": "1",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "feeMinor": "100000000000000",
          "feeCurrency": "ETH",
          "context": {
            "adapter": "axelar",
            "quote": {
              "input": {
                "source": "ethereum",
                "destination": "base",
                "amount": "5",
                "sourceAsset": {
                  "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
                  "symbol": "USDC",
                  "decimals": 6
                },
                "destinationAsset": {
                  "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                  "symbol": "USDC",
                  "decimals": 6
                }
              }
            },
            "sourceContract": "0x2222222222222222222222222222222222222222",
            "destinationContract": "0x2222222222222222222222222222222222222222"
          },
          "transaction": {
            "from": "0x1111111111111111111111111111111111111111",
            "to": "0x2222222222222222222222222222222222222222",
            "data": "0x095ea7b3",
            "value": "0x0",
            "chainId": "0x1",
            "nonce": "0x1",
            "gas": "0x186a0",
            "gasPrice": "0x3b9aca00"
          }
        },
        "assessment": {
          "checkedAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "walletReady": true,
          "executionEnabled": true,
          "checks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "policyChecks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "blockers": [],
          "valuation": {
            "currency": "USD",
            "source": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "destination": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "gas": {
              "usd": "2000",
              "source": "CoinGecko",
              "assetId": "fixture-eth",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "inputUsd": "5",
            "reason": null
          },
          "costComplete": false,
          "estimatedCostUsd": "0.20",
          "eta": {
            "seconds": null,
            "scope": "Token approval only",
            "source": null
          },
          "unsignedTransaction": {
            "kind": "approval",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          },
          "approvalOnly": true,
          "notice": "Token approval only; no payment has been sent."
        },
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "originalExpiresAt": "2026-09-22T12:05:00.000Z",
        "review": null,
        "mintRenewalEnabled": false,
        "approvalRenewalEnabled": false,
        "sourceRenewalEnabled": false,
        "closeEnabled": false,
        "closureRequirement": null,
        "manualCloseEnabled": false,
        "closure": null,
        "reviewRefreshEnabled": false,
        "expired": false,
        "submissionStartedAt": null,
        "sourceHash": null,
        "receipt": null,
        "lastError": null,
        "walletBroadcastAvailable": false,
        "walletBroadcast": null,
        "canContinue": false,
        "signingEnabled": false,
        "submissionEnabled": false,
        "executionEnabled": false,
        "authorization": "transaction-signature",
        "intentApprovalRequired": false,
        "actionBlocker": {
          "code": "DEPLOYMENT_CHANGED",
          "message": "The provider deployment differs from Route’s reviewed mainnet addresses. Reconcile the saved action before continuing."
        }
      }
    },
    {
      "name": "normalized protocol: wallet signature needed",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "protocol",
        "adapter": "circle",
        "paymentVersion": 1,
        "preparationVersion": 2,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "action": {
          "type": "sign-transaction",
          "actor": "wallet",
          "message": "Sign the spending permission transaction.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/transaction/signature",
            "body": {
              "authorizationId": "00000000-0000-4000-8000-000000000001"
            },
            "idempotencyKeyRequired": false,
            "requiredInput": [
              "signedTransaction"
            ]
          },
          "payload": {
            "kind": "approval",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          }
        },
        "checks": [
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          }
        ],
        "blockers": [],
        "tracking": {},
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "normalized protocol: uncertain submission cannot repeat signing",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "protocol",
        "adapter": "circle",
        "paymentVersion": 1,
        "preparationVersion": 2,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "action": {
          "type": "track",
          "actor": "app",
          "message": "Refresh the saved transfer and verify its receipts. Do not create a replacement payment.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/refresh",
            "body": {},
            "idempotencyKeyRequired": false,
            "requiredInput": []
          },
          "payload": null
        },
        "checks": [
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          }
        ],
        "blockers": [],
        "tracking": {},
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "normalized testnet: authorization must exist before signing",
      "contract": "testnet-openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "testnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "testnet",
        "adapter": "circle",
        "paymentVersion": 2,
        "preparationVersion": null,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "action": {
          "type": "prepare-transaction",
          "actor": "app",
          "message": "Create the saved signing authorization before asking the wallet to sign.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/transaction",
            "body": {
              "version": 2
            },
            "idempotencyKeyRequired": true,
            "requiredInput": []
          },
          "payload": null
        },
        "checks": [],
        "blockers": [],
        "tracking": null,
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "normalized unknown action: operator review",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "protocol",
        "adapter": "circle",
        "paymentVersion": 1,
        "preparationVersion": 2,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "action": {
          "type": "review-required",
          "actor": "operator",
          "message": "The saved transaction state is not supported by this interface. Do not sign or replace it.",
          "operation": null,
          "payload": null
        },
        "checks": [
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          }
        ],
        "blockers": [],
        "tracking": {},
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "recovery: signed action is not proof of submission",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "outcome": "signed-not-submitted",
        "owner": "app",
        "summary": "A transaction signature and hash are saved. Route has no recorded submission attempt or verified receipt for this action.",
        "nextStep": {
          "type": "submit-transaction",
          "actor": "app",
          "message": "Submit the already saved signed transaction. Reuse this authorization after an uncertain response.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/execute",
            "body": {
              "authorizationId": "00000000-0000-4000-8000-000000000001"
            },
            "idempotencyKeyRequired": false,
            "requiredInput": []
          }
        },
        "evidence": {
          "source": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "base",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": null,
              "submissionObservation": null,
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "approval",
              "network": "ethereum",
              "state": "signed",
              "hash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
              "submissionAttempted": false,
              "receipt": {
                "observed": false,
                "included": null,
                "successful": null,
                "finalized": null
              },
              "expiresAt": "2026-09-22T12:05:00.000Z",
              "reviewExpired": false
            }
          ],
          "settlementDiscrepancies": [],
          "lastObservedAt": null
        },
        "requiredEvidence": [],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "recovery: a larger Bitcoin receipt still needs attribution",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "outcome": "settlement-discrepancy",
        "owner": "operator",
        "summary": "Provider settlement details conflict with the verified chain observation. A larger receipt does not prove the amount attributable to this payment.",
        "nextStep": {
          "type": "review-required",
          "actor": "operator",
          "message": "Preserve the existing payment and obtain matching provider and chain settlement evidence.",
          "operation": null
        },
        "evidence": {
          "source": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "btc",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": null,
              "submissionObservation": null,
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "approval",
              "network": "ethereum",
              "state": "ready",
              "hash": null,
              "submissionAttempted": false,
              "receipt": {
                "observed": false,
                "included": null,
                "successful": null,
                "finalized": null
              },
              "expiresAt": "2026-09-22T12:05:00.000Z",
              "reviewExpired": false
            }
          ],
          "settlementDiscrepancies": [
            {
              "code": "BITCOIN_SETTLEMENT_AMOUNT_MISMATCH",
              "network": "btc",
              "purpose": "delivery",
              "transactionHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
              "providerReportedAmountMinor": "9784",
              "observedRecipientAmountMinor": "10908",
              "differenceMinor": "1124",
              "minimumAmountMinor": "9734",
              "meetsMinimum": true,
              "finalized": true,
              "confirmations": 6,
              "blockHeight": 968115,
              "blockHash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
            }
          ],
          "lastObservedAt": null
        },
        "requiredEvidence": [
          "Obtain provider evidence binding this payment to the exact payout amount and transaction output.",
          "Reconcile the amount against canonical recipient receipts without substituting a different payment."
        ],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "recovery: a larger TRON receipt still needs attribution",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "outcome": "settlement-discrepancy",
        "owner": "operator",
        "summary": "Provider settlement details conflict with the verified chain observation. A larger receipt does not prove the amount attributable to this payment.",
        "nextStep": {
          "type": "review-required",
          "actor": "operator",
          "message": "Preserve the existing payment and obtain matching provider and chain settlement evidence.",
          "operation": null
        },
        "evidence": {
          "source": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "tron",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": null,
              "submissionObservation": null,
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "approval",
              "network": "ethereum",
              "state": "ready",
              "hash": null,
              "submissionAttempted": false,
              "receipt": {
                "observed": false,
                "included": null,
                "successful": null,
                "finalized": null
              },
              "expiresAt": "2026-09-22T12:05:00.000Z",
              "reviewExpired": false
            }
          ],
          "settlementDiscrepancies": [
            {
              "code": "TRON_SETTLEMENT_AMOUNT_MISMATCH",
              "network": "tron",
              "purpose": "delivery",
              "transactionHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
              "providerReportedAmountMinor": "9784",
              "observedRecipientAmountMinor": "10908",
              "differenceMinor": "1124",
              "minimumAmountMinor": "9734",
              "meetsMinimum": true,
              "finalized": true,
              "confirmations": 0,
              "blockHeight": 968115,
              "blockHash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
            }
          ],
          "lastObservedAt": null
        },
        "requiredEvidence": [
          "Obtain provider evidence binding this payment to the exact payout amount and transaction output.",
          "Reconcile the amount against canonical recipient receipts without substituting a different payment."
        ],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "recovery: testnet signing action without observed receipt",
      "contract": "testnet-openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "testnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": null,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "outcome": "awaiting-wallet-action",
        "owner": "app",
        "summary": "Continue only with the next action currently offered for this saved payment.",
        "nextStep": {
          "type": "prepare-transaction",
          "actor": "app",
          "message": "Create the saved signing authorization before asking the wallet to sign.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/transaction",
            "body": {
              "version": 2
            },
            "idempotencyKeyRequired": true,
            "requiredInput": []
          }
        },
        "evidence": {
          "source": {
            "network": "ethereum-sepolia",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "stellar-testnet",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": null,
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": null,
              "submissionObservation": null,
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "burn",
              "network": "ethereum-sepolia",
              "state": "ready",
              "hash": null,
              "submissionAttempted": false,
              "receipt": {
                "observed": false,
                "included": null,
                "successful": null,
                "finalized": null
              },
              "expiresAt": "2026-09-22T12:05:00.000Z",
              "reviewExpired": false
            }
          ],
          "settlementDiscrepancies": [],
          "lastObservedAt": null
        },
        "requiredEvidence": [],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "wallet handoff: transaction hash required",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ProtocolTransaction",
      "value": {
        "object": "payment_transaction",
        "id": "00000000-0000-4000-8000-000000000001",
        "sourceRecovery": null,
        "sequence": 1,
        "kind": "approval",
        "network": "ethereum",
        "sender": "0x1111111111111111111111111111111111111111",
        "cancellation": null,
        "state": "submission-unknown",
        "transaction": {
          "kind": "approval",
          "network": "ethereum",
          "family": "evm",
          "sender": "0x1111111111111111111111111111111111111111",
          "nonce": "1",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "feeMinor": "100000000000000",
          "feeCurrency": "ETH",
          "context": {
            "fixture": true
          },
          "transaction": {
            "from": "0x1111111111111111111111111111111111111111",
            "to": "0x2222222222222222222222222222222222222222",
            "data": "0x095ea7b3",
            "value": "0x0",
            "chainId": "0x1",
            "nonce": "0x1",
            "gas": "0x186a0",
            "gasPrice": "0x3b9aca00"
          }
        },
        "assessment": {
          "checkedAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "walletReady": true,
          "executionEnabled": true,
          "checks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "policyChecks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "blockers": [],
          "valuation": {
            "currency": "USD",
            "source": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "destination": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "gas": {
              "usd": "2000",
              "source": "CoinGecko",
              "assetId": "fixture-eth",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "inputUsd": "5",
            "reason": null
          },
          "costComplete": false,
          "estimatedCostUsd": "0.20",
          "eta": {
            "seconds": null,
            "scope": "Token approval only",
            "source": null
          },
          "unsignedTransaction": {
            "kind": "approval",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          },
          "approvalOnly": true,
          "notice": "Token approval only; no payment has been sent."
        },
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "originalExpiresAt": "2026-09-22T12:05:00.000Z",
        "review": null,
        "mintRenewalEnabled": false,
        "approvalRenewalEnabled": false,
        "sourceRenewalEnabled": false,
        "closeEnabled": false,
        "closureRequirement": null,
        "manualCloseEnabled": false,
        "closure": null,
        "reviewRefreshEnabled": false,
        "expired": false,
        "submissionStartedAt": null,
        "sourceHash": null,
        "receipt": null,
        "lastError": null,
        "walletBroadcastAvailable": false,
        "walletBroadcast": {
          "authorizationId": "00000000-0000-4000-8000-000000000001",
          "state": "awaiting-transaction",
          "createdAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "transactionHash": null,
          "verifiedAt": null,
          "cancellation": null,
          "method": "eth_sendTransaction",
          "params": [
            {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00",
              "type": "0x0"
            }
          ],
          "notice": "The wallet owns submission for this action. Persist its hash and report it to Route. Do not call /execute or automatically repeat a wallet send after an uncertain response."
        },
        "canContinue": false,
        "signingEnabled": false,
        "submissionEnabled": false,
        "executionEnabled": true,
        "authorization": "transaction-signature",
        "intentApprovalRequired": false
      }
    },
    {
      "name": "wallet handoff: normalized confirmation action",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "protocol",
        "adapter": "circle",
        "paymentVersion": 1,
        "preparationVersion": 2,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "WALLET_SUBMISSION_UNKNOWN",
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "action": {
          "type": "confirm-wallet-broadcast",
          "actor": "app",
          "message": "Recover the transaction hash from the wallet and report it to Route. Do not automatically send again.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/transaction/broadcast-confirm",
            "body": {
              "authorizationId": "00000000-0000-4000-8000-000000000001"
            },
            "idempotencyKeyRequired": false,
            "requiredInput": [
              "transactionHash"
            ]
          },
          "payload": null
        },
        "checks": [
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          }
        ],
        "blockers": [],
        "tracking": {},
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "wallet handoff: no hash does not establish cancellation",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "WALLET_SUBMISSION_UNKNOWN",
        "outcome": "submission-uncertain",
        "owner": "app",
        "summary": "Submission may have reached the network. Track the same saved action; do not create or fund a replacement.",
        "nextStep": {
          "type": "confirm-wallet-broadcast",
          "actor": "app",
          "message": "Recover the transaction hash from the wallet and report it to Route. Do not automatically send again.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/transaction/broadcast-confirm",
            "body": {
              "authorizationId": "00000000-0000-4000-8000-000000000001"
            },
            "idempotencyKeyRequired": false,
            "requiredInput": [
              "transactionHash"
            ]
          }
        },
        "evidence": {
          "source": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "base",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": null,
              "submissionObservation": null,
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "approval",
              "network": "ethereum",
              "state": "submission-unknown",
              "hash": null,
              "submissionAttempted": true,
              "receipt": {
                "observed": false,
                "included": null,
                "successful": null,
                "finalized": null
              },
              "expiresAt": "2026-09-22T12:05:00.000Z",
              "reviewExpired": false
            }
          ],
          "settlementDiscrepancies": [],
          "lastObservedAt": null
        },
        "requiredEvidence": [
          "Recover the wallet transaction hash and confirm it against the saved action. Route has not broadcast it."
        ],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "wallet-altered payment call: review evidence (409 details and lastError)",
      "contract": "openapi.json",
      "schema": "#/components/schemas/WalletAlteredTransaction",
      "value": {
        "code": "WALLET_TRANSACTION_REVIEW_REQUIRED",
        "message": "The wallet changed the transaction nonce, fees or envelope type while preserving the payment call. Review this transaction; Route has not attached it or released its reservations. Do not send replacement funds.",
        "transactionHash": "0x132d0d7996ec2885885959e01af4c6e27c11c83f5a59fc2ee27a1e1584296b9d",
        "network": "ethereum",
        "sender": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a",
        "nonce": "1",
        "observedNonce": "2",
        "observedType": "0",
        "observedGas": "100000",
        "observedGasPrice": "2000000000",
        "observedMaxFeePerGas": null,
        "checkedAt": "2026-09-22T12:00:00.000Z",
        "automaticAttachmentAllowed": false
      }
    },
    {
      "name": "wallet-altered payment call: recovery observation",
      "contract": "openapi.json",
      "schema": "#/components/schemas/WalletBroadcastRecovery",
      "value": {
        "object": "wallet_broadcast_recovery",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "state": "altered-payment",
        "message": "The wallet changed the payment envelope. Its exact payment call is identified, but Route has not attached it or released any reservations. Review the observed transaction; do not send replacement funds.",
        "transactionHash": "0x132d0d7996ec2885885959e01af4c6e27c11c83f5a59fc2ee27a1e1584296b9d",
        "network": "ethereum",
        "sender": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a",
        "nonce": "1",
        "checkedAt": "2026-09-22T12:00:00.000Z",
        "finalized": false,
        "blockNumber": null,
        "blockHash": null,
        "canClose": false,
        "paymentClosed": false,
        "automaticResubmissionAllowed": false
      }
    },
    {
      "name": "testnet wallet-altered payment call: recovery observation",
      "contract": "testnet-openapi.json",
      "schema": "#/components/schemas/WalletBroadcastRecovery",
      "value": {
        "object": "wallet_broadcast_recovery",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "state": "altered-payment",
        "message": "The wallet changed the payment envelope. Its exact payment call is identified, but Route has not attached it or released any reservations. Review the observed transaction; do not send replacement funds.",
        "transactionHash": "0x132d0d7996ec2885885959e01af4c6e27c11c83f5a59fc2ee27a1e1584296b9d",
        "network": "ethereum-sepolia",
        "sender": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a",
        "nonce": "1",
        "checkedAt": "2026-09-22T12:00:00.000Z",
        "finalized": false,
        "blockNumber": null,
        "blockHash": null,
        "canClose": false,
        "paymentClosed": false,
        "automaticResubmissionAllowed": false
      }
    },
    {
      "name": "unclassified sender transaction: review evidence (409 details and lastError)",
      "contract": "openapi.json",
      "schema": "#/components/schemas/WalletAlteredTransaction",
      "value": {
        "code": "WALLET_TRANSACTION_REVIEW_REQUIRED",
        "message": "This wallet signed another transaction that was reported for this payment, and Route cannot establish that it is not this payment (it is neither the saved transaction nor a recognized cancellation). It may be the payment sent or queued another way, so Route has not attached it or released its reservations, and will not submit the saved call or hand it to the wallet. Review the recorded transaction; do not send replacement funds.",
        "reason": "unclassified-sender-transaction",
        "contract": "0x9999999999999999999999999999999999999999",
        "transactionHash": "0xa877e4417b96cb552b1b5af67a5501aaea60f7a081910f7aa14dc80da92d70bc",
        "network": "ethereum",
        "sender": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a",
        "nonce": "1",
        "observedNonce": "2",
        "observedType": "0",
        "observedValue": "1",
        "pending": true,
        "transactionData": "0x",
        "checkedAt": "2026-09-22T12:00:00.000Z",
        "automaticAttachmentAllowed": false
      }
    },
    {
      "name": "testnet unclassified sender transaction: review evidence",
      "contract": "testnet-openapi.json",
      "schema": "#/components/schemas/WalletAlteredTransaction",
      "value": {
        "code": "WALLET_TRANSACTION_REVIEW_REQUIRED",
        "message": "This wallet signed another transaction that was reported for this payment, and Route cannot establish that it is not this payment (it is neither the saved transaction nor a recognized cancellation). It may be the payment sent or queued another way, so Route has not attached it or released its reservations, and will not submit the saved call or hand it to the wallet. Review the recorded transaction; do not send replacement funds.",
        "reason": "unclassified-sender-transaction",
        "contract": "0x9999999999999999999999999999999999999999",
        "transactionHash": "0xa877e4417b96cb552b1b5af67a5501aaea60f7a081910f7aa14dc80da92d70bc",
        "network": "ethereum-sepolia",
        "sender": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a",
        "nonce": "1",
        "observedNonce": "2",
        "observedType": "0",
        "observedValue": "1",
        "pending": true,
        "transactionData": "0x",
        "checkedAt": "2026-09-22T12:00:00.000Z",
        "automaticAttachmentAllowed": false
      }
    },
    {
      "name": "unclassified sender transaction: recovery observation",
      "contract": "openapi.json",
      "schema": "#/components/schemas/WalletBroadcastRecovery",
      "value": {
        "object": "wallet_broadcast_recovery",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "state": "unclassified-sender-transaction",
        "message": "This wallet signed the reported transaction, and it is neither the saved action nor a recognized cancellation, so it may be this payment sent another way. Route recorded it for review and will not submit the saved action or hand it to the wallet; its reservations are unchanged. Review the observed transaction; do not send replacement funds.",
        "transactionHash": "0xa877e4417b96cb552b1b5af67a5501aaea60f7a081910f7aa14dc80da92d70bc",
        "network": "ethereum",
        "sender": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a",
        "nonce": "1",
        "checkedAt": "2026-09-22T12:00:00.000Z",
        "finalized": false,
        "blockNumber": null,
        "blockHash": null,
        "canClose": false,
        "paymentClosed": false,
        "automaticResubmissionAllowed": false
      }
    },
    {
      "name": "testnet unclassified sender transaction: recovery observation",
      "contract": "testnet-openapi.json",
      "schema": "#/components/schemas/WalletBroadcastRecovery",
      "value": {
        "object": "wallet_broadcast_recovery",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "state": "unclassified-sender-transaction",
        "message": "This wallet signed the reported transaction, and it is neither the saved action nor a recognized cancellation, so it may be this payment sent another way. Route recorded it for review and will not submit the saved action or hand it to the wallet; its reservations are unchanged. Review the observed transaction; do not send replacement funds.",
        "transactionHash": "0xa877e4417b96cb552b1b5af67a5501aaea60f7a081910f7aa14dc80da92d70bc",
        "network": "ethereum-sepolia",
        "sender": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a",
        "nonce": "1",
        "checkedAt": "2026-09-22T12:00:00.000Z",
        "finalized": false,
        "blockNumber": null,
        "blockHash": null,
        "canClose": false,
        "paymentClosed": false,
        "automaticResubmissionAllowed": false
      }
    },
    {
      "name": "wallet-altered payment call: normalized review action",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "protocol",
        "adapter": "circle",
        "paymentVersion": 1,
        "preparationVersion": 2,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "REQUIRES_ATTENTION",
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "action": {
          "type": "review-required",
          "actor": "operator",
          "message": "The wallet changed the saved transaction. Review its recorded hash and call evidence; do not attach it automatically or send replacement funds.",
          "operation": null,
          "payload": null
        },
        "checks": [
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          }
        ],
        "blockers": [],
        "tracking": {},
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "testnet wallet-altered payment call: structured lastError",
      "contract": "testnet-openapi.json",
      "schema": "#/components/schemas/Transaction",
      "value": {
        "object": "payment_transaction",
        "id": "00000000-0000-4000-8000-000000000001",
        "network": "ethereum-sepolia",
        "sequence": 1,
        "kind": "burn",
        "sender": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a",
        "state": "submission-unknown",
        "mintRenewalEnabled": false,
        "authorizationPrepared": true,
        "transaction": {
          "kind": "burn",
          "network": "ethereum-sepolia",
          "family": "evm",
          "sender": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a",
          "nonce": "1",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "fee": "1000",
          "feeCurrency": "wei",
          "transaction": {
            "from": "0x1111111111111111111111111111111111111111",
            "to": "0x2222222222222222222222222222222222222222",
            "data": "0x095ea7b3",
            "value": "0x0",
            "chainId": "0x1",
            "nonce": "0x1",
            "gas": "0x186a0",
            "gasPrice": "0x3b9aca00"
          }
        },
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "expired": false,
        "submissionStartedAt": null,
        "sourceHash": null,
        "walletBroadcastAvailable": false,
        "walletBroadcast": {
          "authorizationId": "00000000-0000-4000-8000-000000000001",
          "state": "awaiting-transaction",
          "createdAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "transactionHash": null,
          "verifiedAt": null,
          "cancellation": null,
          "method": null,
          "params": [],
          "notice": "Route recorded a transaction that may be this payment. Do not send this action again; review the recorded transaction in lastError. Report a hash the wallet already returned at /transaction/broadcast-confirm."
        },
        "signingEnabled": false,
        "submissionEnabled": false,
        "executionEnabled": true,
        "authorization": "transaction-signature",
        "intentApprovalRequired": false,
        "lastError": {
          "code": "WALLET_TRANSACTION_REVIEW_REQUIRED",
          "message": "The wallet changed the transaction nonce, fees or envelope type while preserving the payment call. Review this transaction; Route has not attached it or released its reservations. Do not send replacement funds.",
          "transactionHash": "0x132d0d7996ec2885885959e01af4c6e27c11c83f5a59fc2ee27a1e1584296b9d",
          "network": "ethereum-sepolia",
          "sender": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a",
          "nonce": "1",
          "observedNonce": "2",
          "observedType": "0",
          "observedGas": "100000",
          "observedGasPrice": "2000000000",
          "observedMaxFeePerGas": null,
          "checkedAt": "2026-09-22T12:00:00.000Z",
          "automaticAttachmentAllowed": false
        }
      }
    },
    {
      "name": "wallet cancellation: no send payload or payment source hash",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ProtocolTransaction",
      "value": {
        "object": "payment_transaction",
        "id": "00000000-0000-4000-8000-000000000001",
        "sourceRecovery": null,
        "sequence": 1,
        "kind": "approval",
        "network": "ethereum",
        "sender": "0x1111111111111111111111111111111111111111",
        "cancellation": null,
        "state": "cancelled",
        "transaction": {
          "kind": "approval",
          "network": "ethereum",
          "family": "evm",
          "sender": "0x1111111111111111111111111111111111111111",
          "nonce": "1",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "feeMinor": "100000000000000",
          "feeCurrency": "ETH",
          "context": {
            "fixture": true
          },
          "transaction": {
            "from": "0x1111111111111111111111111111111111111111",
            "to": "0x2222222222222222222222222222222222222222",
            "data": "0x095ea7b3",
            "value": "0x0",
            "chainId": "0x1",
            "nonce": "0x1",
            "gas": "0x186a0",
            "gasPrice": "0x3b9aca00"
          }
        },
        "assessment": {
          "checkedAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "walletReady": true,
          "executionEnabled": true,
          "checks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "policyChecks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "blockers": [],
          "valuation": {
            "currency": "USD",
            "source": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "destination": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "gas": {
              "usd": "2000",
              "source": "CoinGecko",
              "assetId": "fixture-eth",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "inputUsd": "5",
            "reason": null
          },
          "costComplete": false,
          "estimatedCostUsd": "0.20",
          "eta": {
            "seconds": null,
            "scope": "Token approval only",
            "source": null
          },
          "unsignedTransaction": {
            "kind": "approval",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          },
          "approvalOnly": true,
          "notice": "Token approval only; no payment has been sent."
        },
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "originalExpiresAt": "2026-09-22T12:05:00.000Z",
        "review": null,
        "mintRenewalEnabled": false,
        "approvalRenewalEnabled": false,
        "sourceRenewalEnabled": false,
        "closeEnabled": false,
        "closureRequirement": null,
        "manualCloseEnabled": false,
        "closure": null,
        "reviewRefreshEnabled": false,
        "expired": false,
        "submissionStartedAt": null,
        "sourceHash": null,
        "receipt": null,
        "lastError": null,
        "walletBroadcastAvailable": false,
        "walletBroadcast": {
          "authorizationId": "00000000-0000-4000-8000-000000000001",
          "state": "cancelled",
          "createdAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "transactionHash": null,
          "verifiedAt": null,
          "cancellation": {
            "hash": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
            "finalized": true,
            "checkedAt": "2026-09-22T12:00:00.000Z"
          },
          "method": null,
          "params": [],
          "notice": "The cancellation is final and this payment is closed. Do not send this action."
        },
        "canContinue": false,
        "signingEnabled": false,
        "submissionEnabled": false,
        "executionEnabled": true,
        "authorization": "transaction-signature",
        "intentApprovalRequired": false
      }
    },
    {
      "name": "wallet cancellation: closed next action",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "protocol",
        "adapter": "circle",
        "paymentVersion": 1,
        "preparationVersion": 2,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "CANCELLED",
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "action": {
          "type": "cancelled",
          "actor": "none",
          "message": "The saved source action has a finalized wallet cancellation. This transfer attempt is closed.",
          "operation": null,
          "payload": null
        },
        "checks": [
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          }
        ],
        "blockers": [],
        "tracking": {},
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "wallet cancellation: closed recovery evidence",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "CANCELLED",
        "outcome": "closed",
        "owner": "none",
        "summary": "This payment is closed. Its historical evidence is retained.",
        "nextStep": {
          "type": "cancelled",
          "actor": "none",
          "message": "The saved source action has a finalized wallet cancellation. This transfer attempt is closed.",
          "operation": null
        },
        "evidence": {
          "source": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "base",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": null,
              "submissionObservation": null,
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "approval",
              "network": "ethereum",
              "state": "cancelled",
              "hash": null,
              "submissionAttempted": null,
              "receipt": {
                "observed": false,
                "included": null,
                "successful": null,
                "finalized": null
              },
              "expiresAt": "2026-09-22T12:05:00.000Z",
              "reviewExpired": false
            }
          ],
          "settlementDiscrepancies": [],
          "lastObservedAt": null
        },
        "requiredEvidence": [],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "Stellar expired missing receipt observation",
      "contract": "openapi.json",
      "schema": "#/components/schemas/StellarSubmissionObservation",
      "value": {
        "network": "stellar",
        "hash": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
        "state": "expired-unobserved",
        "checkedAt": "2026-09-22T12:00:00.000Z",
        "ledger": 1234,
        "closedAt": "2026-09-22T12:00:00.000Z",
        "accountSequence": "12",
        "transactionSequence": "13",
        "expiresAt": "2026-09-22T11:59:00.000Z"
      }
    },
    {
      "name": "testnet missing receipt sequence consumed",
      "contract": "testnet-openapi.json",
      "schema": "#/components/schemas/StellarSubmissionObservation",
      "value": {
        "network": "stellar-testnet",
        "hash": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
        "state": "sequence-consumed",
        "checkedAt": "2026-09-22T12:00:00.000Z",
        "ledger": 1234,
        "closedAt": "2026-09-22T12:00:00.000Z",
        "accountSequence": "13",
        "transactionSequence": "13",
        "expiresAt": "2026-09-22T11:59:00.000Z"
      }
    },
    {
      "name": "Stellar missing receipt requires review without releasing holds",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "outcome": "operator-review",
        "owner": "operator",
        "summary": "The saved Stellar transaction has passed its network time limit and its sequence is still unused. Preserve the payment and request recovery review; this observation does not authorize replacement or release funds.",
        "nextStep": {
          "type": "review-required",
          "actor": "operator",
          "message": "The saved Stellar transaction has passed its network time limit and its sequence is still unused. Preserve the payment and request recovery review; this observation does not authorize replacement or release funds.",
          "operation": null
        },
        "evidence": {
          "source": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "base",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": null,
              "submissionObservation": {
                "network": "stellar",
                "hash": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
                "state": "expired-unobserved",
                "checkedAt": "2026-09-22T12:00:00.000Z",
                "ledger": 1234,
                "closedAt": "2026-09-22T12:00:00.000Z",
                "accountSequence": "12",
                "transactionSequence": "13",
                "expiresAt": "2026-09-22T11:59:00.000Z"
              },
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "mint",
              "network": "stellar",
              "state": "submission-unknown",
              "hash": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
              "submissionAttempted": true,
              "receipt": {
                "observed": true,
                "included": false,
                "successful": null,
                "finalized": null
              },
              "expiresAt": "2026-09-22T12:05:00.000Z",
              "reviewExpired": false
            }
          ],
          "settlementDiscrepancies": [],
          "lastObservedAt": null
        },
        "requiredEvidence": [
          "Refresh the same payment to recheck the original transaction hash.",
          "Preserve wallet, credit and spending-limit reservations until an explicit recovery operation verifies the outcome."
        ],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "Bitcoin conflicting input observation",
      "contract": "openapi.json",
      "schema": "#/components/schemas/SourceSubmissionObservation",
      "value": {
        "network": "btc",
        "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "state": "inputs-conflicted",
        "checkedAt": "2026-09-22T12:00:00.000Z",
        "conflictingHashes": [
          "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
        ],
        "blockHeight": null,
        "lastValidBlockHeight": null
      }
    },
    {
      "name": "Solana expired blockhash observation",
      "contract": "openapi.json",
      "schema": "#/components/schemas/SourceSubmissionObservation",
      "value": {
        "network": "sol",
        "hash": "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333",
        "state": "blockhash-expired",
        "checkedAt": "2026-09-22T12:00:00.000Z",
        "conflictingHashes": [],
        "blockHeight": 501,
        "lastValidBlockHeight": 500
      }
    },
    {
      "name": "Bitcoin source review retains reservations",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "outcome": "operator-review",
        "owner": "operator",
        "summary": "A different Bitcoin transaction spends a reserved input. Review the reported transaction and canonical receipts; do not send replacement funds or release this payment’s reservations.",
        "nextStep": {
          "type": "review-required",
          "actor": "operator",
          "message": "A different Bitcoin transaction spends a reserved input. Review the reported transaction and canonical receipts; do not send replacement funds or release this payment’s reservations.",
          "operation": null
        },
        "evidence": {
          "source": {
            "network": "ethereum",
            "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "base",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": {
                "network": "btc",
                "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                "state": "inputs-conflicted",
                "checkedAt": "2026-09-22T12:00:00.000Z",
                "conflictingHashes": [
                  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
                ],
                "blockHeight": null,
                "lastValidBlockHeight": null
              },
              "submissionObservation": null,
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "transfer",
              "network": "btc",
              "state": "submission-unknown",
              "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
              "submissionAttempted": true,
              "receipt": {
                "observed": true,
                "included": false,
                "successful": null,
                "finalized": null
              },
              "expiresAt": "2026-09-22T12:05:00.000Z",
              "reviewExpired": false
            }
          ],
          "settlementDiscrepancies": [],
          "lastObservedAt": null
        },
        "requiredEvidence": [
          "Refresh the same payment to recheck the original transaction hash.",
          "Preserve wallet, credit and spending-limit reservations until an explicit recovery operation verifies the outcome."
        ],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "accepted continuation review",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ComposedAdvanceReview",
      "value": {
        "leg": 2,
        "sourceAmount": "5",
        "sourceReceiptHash": "0x1111111111111111111111111111111111111111111111111111111111111111",
        "adapter": "circle",
        "route": "CCTP fixture",
        "minimumReceived": "4.9",
        "maxEstimatedTotalFeeUsd": "1",
        "policyVersion": 2,
        "expiresAt": "2026-09-22T12:05:00.000Z"
      }
    },
    {
      "name": "intermediate receipt awaiting continuation",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ComposedIntermediateReceipt",
      "value": {
        "afterLeg": 1,
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "network": "base",
        "wallet": "0x1111111111111111111111111111111111111111",
        "asset": {
          "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "symbol": "USDC",
          "decimals": 6
        },
        "received": "5",
        "receiptHash": "0x2222222222222222222222222222222222222222222222222222222222222222",
        "verified": true,
        "nextPaymentId": null,
        "disposition": "awaiting-continuation",
        "balanceChecked": false
      }
    },
    {
      "name": "source cancellation retains original hash and disables sends",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ProtocolTransaction",
      "value": {
        "object": "payment_transaction",
        "id": "00000000-0000-4000-8000-000000000001",
        "sourceRecovery": null,
        "sequence": 1,
        "kind": "burn",
        "network": "ethereum",
        "sender": "0x1111111111111111111111111111111111111111",
        "cancellation": {
          "hash": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
          "finalized": true,
          "network": "ethereum",
          "checkedAt": "2026-09-22T12:00:00.000Z"
        },
        "state": "cancelled",
        "transaction": {
          "kind": "burn",
          "network": "ethereum",
          "family": "evm",
          "sender": "0x1111111111111111111111111111111111111111",
          "nonce": "1",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "feeMinor": "100000000000000",
          "feeCurrency": "ETH",
          "context": {
            "fixture": true
          },
          "transaction": {
            "from": "0x1111111111111111111111111111111111111111",
            "to": "0x2222222222222222222222222222222222222222",
            "data": "0x095ea7b3",
            "value": "0x0",
            "chainId": "0x1",
            "nonce": "0x1",
            "gas": "0x186a0",
            "gasPrice": "0x3b9aca00"
          }
        },
        "assessment": {
          "checkedAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "walletReady": true,
          "executionEnabled": true,
          "checks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "policyChecks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "blockers": [],
          "valuation": {
            "currency": "USD",
            "source": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "destination": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "gas": {
              "usd": "2000",
              "source": "CoinGecko",
              "assetId": "fixture-eth",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "inputUsd": "5",
            "reason": null
          },
          "costComplete": false,
          "estimatedCostUsd": "0.20",
          "eta": {
            "seconds": null,
            "scope": "Token approval only",
            "source": null
          },
          "unsignedTransaction": {
            "kind": "approval",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          },
          "approvalOnly": true,
          "notice": "Token approval only; no payment has been sent."
        },
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "originalExpiresAt": "2026-09-22T12:05:00.000Z",
        "review": null,
        "mintRenewalEnabled": false,
        "approvalRenewalEnabled": false,
        "sourceRenewalEnabled": false,
        "closeEnabled": false,
        "closureRequirement": null,
        "manualCloseEnabled": false,
        "closure": null,
        "reviewRefreshEnabled": false,
        "expired": false,
        "submissionStartedAt": null,
        "sourceHash": "0xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
        "receipt": null,
        "lastError": null,
        "walletBroadcastAvailable": false,
        "walletBroadcast": null,
        "canContinue": false,
        "signingEnabled": false,
        "submissionEnabled": false,
        "executionEnabled": false,
        "authorization": "transaction-signature",
        "intentApprovalRequired": false
      }
    },
    {
      "name": "cancellation-bound continuation review",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ComposedAdvanceReview",
      "value": {
        "leg": 2,
        "sourceAmount": "5",
        "sourceReceiptHash": "0x1111111111111111111111111111111111111111111111111111111111111111",
        "adapter": "circle",
        "route": "CCTP fixture",
        "minimumReceived": "4.9",
        "maxEstimatedTotalFeeUsd": "1",
        "policyVersion": 2,
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "cancellationHash": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
      }
    },
    {
      "name": "cancelled first transfer closes composed parent",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ComposedPayment",
      "value": {
        "paymentState": "CANCELLED",
        "object": "composed_payment",
        "id": "00000000-0000-4000-8000-000000000001",
        "projectId": "00000000-0000-4000-8000-000000000001",
        "atomic": false,
        "expectedLegs": 2,
        "minimumReceived": "4.9",
        "state": "cancelled",
        "completed": false,
        "activePaymentId": "00000000-0000-4000-8000-000000000002",
        "nextAction": "cancelled",
        "wallets": {
          "intermediate": "0x1111111111111111111111111111111111111111"
        },
        "legs": [
          {
            "number": 1,
            "attempt": 1,
            "paymentId": "00000000-0000-4000-8000-000000000002",
            "adapter": "circle",
            "input": {
              "source": "ethereum",
              "destination": "base",
              "amount": "5",
              "sourceAsset": {
                "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
                "symbol": "USDC",
                "decimals": 6
              },
              "destinationAsset": {
                "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                "symbol": "USDC",
                "decimals": 6
              }
            },
            "preparationId": "00000000-0000-4000-8000-000000000001",
            "cancellation": {
              "hash": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
              "finalized": true,
              "network": "ethereum",
              "checkedAt": "2026-09-22T12:00:00.000Z"
            }
          }
        ],
        "recovery": {
          "automaticResend": false,
          "attempts": [
            {
              "leg": 1,
              "attempt": 1,
              "paymentId": "00000000-0000-4000-8000-000000000002",
              "preparationId": "00000000-0000-4000-8000-000000000001",
              "resumesPaymentId": null,
              "refundEvidence": null,
              "cancellation": {
                "hash": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
                "finalized": true,
                "network": "ethereum",
                "checkedAt": "2026-09-22T12:00:00.000Z"
              },
              "recoveryEvidence": null
            }
          ],
          "intermediates": [],
          "preview": null,
          "intermediateNetwork": null,
          "intermediateWallet": null,
          "message": "The first source action was cancelled on-chain. This unfunded payment is closed and unused payment holds are released. Obtain a fresh quote for a new payment."
        }
      }
    },
    {
      "name": "first transfer final: funds held for the next transfer",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ComposedPayment",
      "value": {
        "paymentState": "INTERMEDIATE_HELD",
        "object": "composed_payment",
        "id": "00000000-0000-4000-8000-000000000001",
        "projectId": "00000000-0000-4000-8000-000000000001",
        "atomic": false,
        "expectedLegs": 2,
        "minimumReceived": "4.9",
        "state": "intermediate-held",
        "completed": false,
        "activePaymentId": "00000000-0000-4000-8000-000000000002",
        "nextAction": "advance",
        "wallets": {
          "intermediate": "0x1111111111111111111111111111111111111111"
        },
        "legs": [
          {
            "number": 1,
            "attempt": 1,
            "paymentId": "00000000-0000-4000-8000-000000000002",
            "adapter": "circle",
            "input": {
              "source": "ethereum",
              "destination": "base",
              "amount": "5",
              "sourceAsset": {
                "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
                "symbol": "USDC",
                "decimals": 6
              },
              "destinationAsset": {
                "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                "symbol": "USDC",
                "decimals": 6
              }
            },
            "preparationId": "00000000-0000-4000-8000-000000000001",
            "sourceHash": "0x1111111111111111111111111111111111111111111111111111111111111111",
            "tracking": {
              "completed": true,
              "sourceVerified": true,
              "sourceFinalized": true,
              "destinationVerified": true,
              "destinationFinalized": true,
              "destinationHash": "0x2222222222222222222222222222222222222222222222222222222222222222",
              "received": "5"
            },
            "cancellation": null
          }
        ],
        "recovery": {
          "automaticResend": false,
          "attempts": [
            {
              "leg": 1,
              "attempt": 1,
              "paymentId": "00000000-0000-4000-8000-000000000002",
              "preparationId": "00000000-0000-4000-8000-000000000001",
              "resumesPaymentId": null,
              "tracking": {
                "completed": true,
                "sourceVerified": true,
                "sourceFinalized": true,
                "destinationVerified": true,
                "destinationFinalized": true,
                "destinationHash": "0x2222222222222222222222222222222222222222222222222222222222222222",
                "received": "5"
              },
              "refundEvidence": null,
              "cancellation": null,
              "recoveryEvidence": null
            }
          ],
          "intermediates": [
            {
              "afterLeg": 1,
              "paymentId": "00000000-0000-4000-8000-000000000002",
              "network": "base",
              "wallet": "0x1111111111111111111111111111111111111111",
              "asset": {
                "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                "symbol": "USDC",
                "decimals": 6
              },
              "received": "5",
              "receiptHash": "0x2222222222222222222222222222222222222222222222222222222222222222",
              "verified": true,
              "nextPaymentId": null,
              "disposition": "awaiting-continuation",
              "balanceChecked": false
            }
          ],
          "preview": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/advance-preview",
            "body": {}
          },
          "intermediateNetwork": "base",
          "intermediateWallet": "0x1111111111111111111111111111111111111111",
          "message": "The transfers settle separately. If a later step cannot proceed, the intermediate asset remains in your wallet. Keep tracking any signed or submitted action; do not fund a replacement automatically."
        }
      }
    },
    {
      "name": "cancelled first transfer has a terminal next action",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000002",
        "flow": "composed",
        "adapter": "circle",
        "paymentVersion": 1,
        "preparationVersion": 2,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "action": {
          "type": "cancelled",
          "actor": "none",
          "message": "The first source action has a finalized cancellation. This unfunded payment is closed; obtain a fresh quote for a new payment.",
          "operation": null,
          "payload": null
        },
        "checks": [
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          }
        ],
        "blockers": [],
        "tracking": {},
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "standalone signed-source cancellation: terminal next action",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "protocol",
        "adapter": "circle",
        "paymentVersion": 1,
        "preparationVersion": 2,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "action": {
          "type": "cancelled",
          "actor": "none",
          "message": "The saved source action has a finalized wallet cancellation. This transfer attempt is closed.",
          "operation": null,
          "payload": null
        },
        "checks": [
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          }
        ],
        "blockers": [],
        "tracking": {},
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "standalone signed-source cancellation: closed recovery report",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "outcome": "closed",
        "owner": "none",
        "summary": "This payment is closed. Its historical evidence is retained.",
        "nextStep": {
          "type": "cancelled",
          "actor": "none",
          "message": "The saved source action has a finalized wallet cancellation. This transfer attempt is closed.",
          "operation": null
        },
        "evidence": {
          "source": {
            "network": "ethereum",
            "hash": "0xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "base",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": null,
              "submissionObservation": null,
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "burn",
              "network": "ethereum",
              "state": "cancelled",
              "hash": "0xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
              "submissionAttempted": null,
              "receipt": {
                "observed": false,
                "included": null,
                "successful": null,
                "finalized": null
              },
              "expiresAt": "2026-09-22T12:05:00.000Z",
              "reviewExpired": false
            }
          ],
          "settlementDiscrepancies": [],
          "lastObservedAt": null
        },
        "requiredEvidence": [],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "expired NEAR Stellar source: same-deposit renewal",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "near",
        "adapter": "near",
        "paymentVersion": 1,
        "preparationVersion": 1,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "REQUIRES_ATTENTION",
        "expiresAt": "2026-09-22T11:59:00.000Z",
        "action": {
          "type": "renew-source",
          "actor": "app",
          "message": "Verify that the expired source never executed, then renew the same deposit for fresh wallet signatures.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/transaction/renew",
            "body": {
              "authorizationId": "00000000-0000-4000-8000-000000000001"
            },
            "idempotencyKeyRequired": true,
            "requiredInput": []
          },
          "payload": null
        },
        "checks": [],
        "blockers": [],
        "tracking": {
          "status": "source-pending",
          "sourceVerified": false,
          "submissionObservation": {
            "network": "stellar",
            "hash": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
            "state": "expired-unobserved",
            "checkedAt": "2026-09-22T12:00:00.000Z",
            "ledger": 1234,
            "closedAt": "2026-09-22T12:00:00.000Z",
            "accountSequence": "12",
            "transactionSequence": "13",
            "expiresAt": "2026-09-22T11:59:00.000Z"
          }
        },
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "expired NEAR Stellar source: retained signature evidence",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "REQUIRES_ATTENTION",
        "outcome": "operator-review",
        "owner": "app",
        "summary": "The expired source transaction can be checked for renewal. Preserve the original signature and payment; a replacement requires fresh consent and a transaction signature.",
        "nextStep": {
          "type": "renew-source",
          "actor": "app",
          "message": "Verify that the expired source never executed, then renew the same deposit for fresh wallet signatures.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/transaction/renew",
            "body": {
              "authorizationId": "00000000-0000-4000-8000-000000000001"
            },
            "idempotencyKeyRequired": true,
            "requiredInput": []
          }
        },
        "evidence": {
          "source": {
            "network": "ethereum",
            "hash": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "base",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": null,
              "submissionObservation": null,
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "deposit",
              "network": "ethereum",
              "state": "submission-unknown",
              "hash": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
              "submissionAttempted": true,
              "receipt": {
                "observed": false,
                "included": null,
                "successful": null,
                "finalized": null
              },
              "expiresAt": "2026-09-22T11:59:00.000Z",
              "reviewExpired": true
            }
          ],
          "settlementDiscrepancies": [],
          "lastObservedAt": null
        },
        "requiredEvidence": [
          "Verify network expiry and non-execution using the source network’s recovery checks.",
          "Verify that the same provider deposit remains unfunded and within its funding deadline."
        ],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "expired Stellar CCTP approval: renewal eligibility",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ProtocolTransaction",
      "value": {
        "object": "payment_transaction",
        "id": "00000000-0000-4000-8000-000000000001",
        "sourceRecovery": null,
        "sequence": 1,
        "kind": "approval",
        "network": "stellar",
        "sender": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF",
        "cancellation": null,
        "state": "ready",
        "transaction": {
          "kind": "approval",
          "network": "stellar",
          "family": "stellar",
          "sender": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF",
          "nonce": "13",
          "expiresAt": "2026-09-22T11:59:00.000Z",
          "feeMinor": "2406",
          "feeCurrency": "XLM",
          "context": {
            "fixture": true
          },
          "transaction": {
            "xdr": "UNSIGNED_STELLAR_APPROVAL_XDR_PLACEHOLDER",
            "networkPassphrase": "Public Global Stellar Network ; September 2015",
            "hash": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
          }
        },
        "assessment": {
          "checkedAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "walletReady": true,
          "executionEnabled": true,
          "checks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "policyChecks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "blockers": [],
          "valuation": {
            "currency": "USD",
            "source": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "destination": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "gas": {
              "usd": "2000",
              "source": "CoinGecko",
              "assetId": "fixture-eth",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "inputUsd": "5",
            "reason": null
          },
          "costComplete": false,
          "estimatedCostUsd": "0.20",
          "eta": {
            "seconds": null,
            "scope": "Token approval only",
            "source": null
          },
          "unsignedTransaction": {
            "kind": "approval",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          },
          "approvalOnly": true,
          "notice": "Token approval only; no payment has been sent."
        },
        "expiresAt": "2026-09-22T11:59:00.000Z",
        "originalExpiresAt": "2026-09-22T11:59:00.000Z",
        "review": null,
        "mintRenewalEnabled": false,
        "approvalRenewalEnabled": true,
        "sourceRenewalEnabled": false,
        "closeEnabled": false,
        "closureRequirement": null,
        "manualCloseEnabled": false,
        "closure": null,
        "reviewRefreshEnabled": false,
        "expired": true,
        "submissionStartedAt": null,
        "sourceHash": null,
        "receipt": null,
        "lastError": null,
        "walletBroadcastAvailable": false,
        "walletBroadcast": null,
        "canContinue": false,
        "signingEnabled": false,
        "submissionEnabled": false,
        "executionEnabled": true,
        "authorization": "transaction-signature",
        "intentApprovalRequired": false
      }
    },
    {
      "name": "expired Stellar CCTP approval: same-payment renewal",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "protocol",
        "adapter": "circle",
        "paymentVersion": 1,
        "preparationVersion": 2,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "expiresAt": "2026-09-22T11:59:00.000Z",
        "action": {
          "type": "renew-approval",
          "actor": "app",
          "message": "Verify that the expired Stellar approval never executed and its wallet sequence is unused, then renew it for a fresh wallet signature.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/transaction/renew",
            "body": {
              "authorizationId": "00000000-0000-4000-8000-000000000001"
            },
            "idempotencyKeyRequired": true,
            "requiredInput": []
          },
          "payload": null
        },
        "checks": [
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          }
        ],
        "blockers": [],
        "tracking": {
          "status": "awaiting-action",
          "sourceVerified": false,
          "sourceFinalized": false,
          "completed": false
        },
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "expired Stellar CCTP approval: retained evidence and renewal requirements",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "outcome": "unsigned-review-expired",
        "owner": "app",
        "summary": "The expired Stellar spending approval can be checked for renewal. An approval grants spending permission and does not itself move funds. Renewal first checks the network; the original action and any signature are retained, and the replacement needs a fresh wallet signature.",
        "nextStep": {
          "type": "renew-approval",
          "actor": "app",
          "message": "Verify that the expired Stellar approval never executed and its wallet sequence is unused, then renew it for a fresh wallet signature.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/transaction/renew",
            "body": {
              "authorizationId": "00000000-0000-4000-8000-000000000001"
            },
            "idempotencyKeyRequired": true,
            "requiredInput": []
          }
        },
        "evidence": {
          "source": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "base",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": null,
              "submissionObservation": null,
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "approval",
              "network": "stellar",
              "state": "ready",
              "hash": null,
              "submissionAttempted": false,
              "receipt": {
                "observed": false,
                "included": null,
                "successful": null,
                "finalized": null
              },
              "expiresAt": "2026-09-22T11:59:00.000Z",
              "reviewExpired": true
            }
          ],
          "settlementDiscrepancies": [],
          "lastObservedAt": null
        },
        "requiredEvidence": [
          "Verify a closed Stellar ledger past the saved approval expiry.",
          "Verify the wallet sequence is still unused.",
          "Verify no receipt exists for the saved transaction hash; if the wallet broadcast it, Route tracks it instead."
        ],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "expired signed Stellar burn: closure eligibility",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ProtocolTransaction",
      "value": {
        "object": "payment_transaction",
        "id": "00000000-0000-4000-8000-000000000001",
        "sourceRecovery": null,
        "sequence": 1,
        "kind": "burn",
        "network": "stellar",
        "sender": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF",
        "cancellation": null,
        "state": "signed",
        "transaction": {
          "kind": "burn",
          "network": "stellar",
          "family": "stellar",
          "sender": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF",
          "nonce": "13",
          "expiresAt": "2026-09-22T11:59:00.000Z",
          "feeMinor": "2406",
          "feeCurrency": "XLM",
          "context": {
            "fixture": true
          },
          "transaction": {
            "xdr": "SIGNED_STELLAR_BURN_XDR_PLACEHOLDER",
            "networkPassphrase": "Public Global Stellar Network ; September 2015",
            "hash": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
          }
        },
        "assessment": {
          "checkedAt": "2026-09-22T12:00:00.000Z",
          "expiresAt": "2026-09-22T12:05:00.000Z",
          "walletReady": true,
          "executionEnabled": true,
          "checks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "policyChecks": [
            {
              "id": "wallet",
              "status": "pass",
              "message": "Illustrative passing check."
            }
          ],
          "blockers": [],
          "valuation": {
            "currency": "USD",
            "source": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "destination": {
              "usd": "1",
              "source": "CoinGecko",
              "assetId": "fixture-usdc",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "gas": {
              "usd": "2000",
              "source": "CoinGecko",
              "assetId": "fixture-eth",
              "updatedAt": "2026-09-22T12:00:00.000Z",
              "expiresAt": "2026-09-22T12:05:00.000Z"
            },
            "inputUsd": "5",
            "reason": null
          },
          "costComplete": false,
          "estimatedCostUsd": "0.20",
          "eta": {
            "seconds": null,
            "scope": "Token approval only",
            "source": null
          },
          "unsignedTransaction": {
            "kind": "approval",
            "network": "ethereum",
            "family": "evm",
            "sender": "0x1111111111111111111111111111111111111111",
            "nonce": "1",
            "expiresAt": "2026-09-22T12:05:00.000Z",
            "feeMinor": "100000000000000",
            "feeCurrency": "ETH",
            "context": {
              "fixture": true
            },
            "transaction": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "data": "0x095ea7b3",
              "value": "0x0",
              "chainId": "0x1",
              "nonce": "0x1",
              "gas": "0x186a0",
              "gasPrice": "0x3b9aca00"
            }
          },
          "approvalOnly": true,
          "notice": "Token approval only; no payment has been sent."
        },
        "expiresAt": "2026-09-22T11:59:00.000Z",
        "originalExpiresAt": "2026-09-22T11:59:00.000Z",
        "review": null,
        "mintRenewalEnabled": false,
        "approvalRenewalEnabled": false,
        "sourceRenewalEnabled": false,
        "closeEnabled": true,
        "closureRequirement": null,
        "manualCloseEnabled": false,
        "closure": null,
        "reviewRefreshEnabled": false,
        "expired": true,
        "submissionStartedAt": null,
        "sourceHash": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
        "receipt": null,
        "lastError": null,
        "walletBroadcastAvailable": false,
        "walletBroadcast": null,
        "canContinue": false,
        "signingEnabled": false,
        "submissionEnabled": false,
        "executionEnabled": true,
        "authorization": "transaction-signature",
        "intentApprovalRequired": false
      }
    },
    {
      "name": "expired signed Stellar burn: close the unfunded payment",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "protocol",
        "adapter": "circle",
        "paymentVersion": 1,
        "preparationVersion": 2,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "expiresAt": "2026-09-22T11:59:00.000Z",
        "action": {
          "type": "close-payment",
          "actor": "app",
          "message": "The expired signed Stellar transfer cannot be renewed. Verify that it never executed and its wallet sequence is unused, then close this unfunded payment to release the sequence and its holds.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/transaction/close",
            "body": {
              "authorizationId": "00000000-0000-4000-8000-000000000001"
            },
            "idempotencyKeyRequired": true,
            "requiredInput": []
          },
          "payload": null
        },
        "checks": [
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          }
        ],
        "blockers": [],
        "tracking": {
          "status": "source-pending",
          "sourceVerified": false,
          "sourceFinalized": false,
          "completed": false
        },
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "expired signed Stellar burn: closure requirements",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "outcome": "signed-not-submitted",
        "owner": "app",
        "summary": "The expired signed Stellar transfer cannot be renewed. Closing first proves the transaction can no longer execute, then closes this payment and releases its wallet sequence, API-key holds and credit hold.",
        "nextStep": {
          "type": "close-payment",
          "actor": "app",
          "message": "The expired signed Stellar transfer cannot be renewed. Verify that it never executed and its wallet sequence is unused, then close this unfunded payment to release the sequence and its holds.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/transaction/close",
            "body": {
              "authorizationId": "00000000-0000-4000-8000-000000000001"
            },
            "idempotencyKeyRequired": true,
            "requiredInput": []
          }
        },
        "evidence": {
          "source": {
            "network": "ethereum",
            "hash": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "base",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": null,
              "submissionObservation": null,
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "burn",
              "network": "stellar",
              "state": "signed",
              "hash": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
              "submissionAttempted": false,
              "receipt": {
                "observed": false,
                "included": null,
                "successful": null,
                "finalized": null
              },
              "expiresAt": "2026-09-22T11:59:00.000Z",
              "reviewExpired": true
            }
          ],
          "settlementDiscrepancies": [],
          "lastObservedAt": null
        },
        "requiredEvidence": [
          "Verify a closed Stellar ledger past the saved transaction expiry.",
          "Verify the wallet sequence is still unused.",
          "Verify no receipt exists for the saved transaction hash; if the wallet broadcast it, Route tracks it instead."
        ],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "expired unsigned Stellar burn after a settings change: close instead of renewal",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "protocol",
        "adapter": "circle",
        "paymentVersion": 1,
        "preparationVersion": 2,
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "expiresAt": "2026-09-22T11:59:00.000Z",
        "action": {
          "type": "close-payment",
          "actor": "app",
          "message": "The expired Stellar action cannot be renewed while execution is paused or after the payment’s saved settings changed. Verify that it never executed and its wallet sequence is unused, then close this unfunded payment to release the sequence and its holds.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/transaction/close",
            "body": {
              "authorizationId": "00000000-0000-4000-8000-000000000001"
            },
            "idempotencyKeyRequired": true,
            "requiredInput": []
          },
          "payload": null
        },
        "checks": [
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          },
          {
            "id": "wallet",
            "status": "pass",
            "message": "Illustrative passing check."
          }
        ],
        "blockers": [
          {
            "id": "settings-changed",
            "status": "fail",
            "message": "Owner policy or provider settings changed; signing requires another review. Tracking remains available."
          }
        ],
        "tracking": {
          "status": "awaiting-action",
          "sourceVerified": false,
          "sourceFinalized": false,
          "completed": false
        },
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "never-signed Stellar burn with a used wallet sequence: operator review",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentRecoveryReport",
      "value": {
        "object": "payment_recovery",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "preparationId": "00000000-0000-4000-8000-000000000001",
        "authorizationId": "00000000-0000-4000-8000-000000000001",
        "generatedAt": "2026-09-22T12:00:00.000Z",
        "status": "AWAITING_ACTION",
        "outcome": "operator-review",
        "owner": "operator",
        "summary": "The Stellar account sequence has been consumed, but the saved transaction receipt is unavailable. Recover the original receipt before continuing; do not resend funds.",
        "nextStep": {
          "type": "review-required",
          "actor": "operator",
          "message": "The Stellar account sequence has been consumed, but the saved transaction receipt is unavailable. Recover the original receipt before continuing; do not resend funds.",
          "operation": null
        },
        "evidence": {
          "source": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "destination": {
            "network": "base",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "refund": {
            "network": "ethereum",
            "hash": null,
            "verified": false,
            "finalized": false,
            "includedAt": null
          },
          "transactions": [
            {
              "sourceSubmissionObservation": null,
              "submissionObservation": {
                "network": "stellar",
                "hash": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
                "state": "sequence-consumed",
                "checkedAt": "2026-09-22T12:00:00.000Z",
                "ledger": 1234,
                "closedAt": "2026-09-22T12:00:00.000Z",
                "accountSequence": "13",
                "transactionSequence": "13",
                "expiresAt": "2026-09-22T11:59:00.000Z"
              },
              "id": "00000000-0000-4000-8000-000000000001",
              "kind": "burn",
              "network": "stellar",
              "state": "ready",
              "hash": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
              "submissionAttempted": false,
              "receipt": {
                "observed": true,
                "included": false,
                "successful": false,
                "finalized": false
              },
              "expiresAt": "2026-09-22T11:59:00.000Z",
              "reviewExpired": true
            }
          ],
          "settlementDiscrepancies": [],
          "lastObservedAt": null
        },
        "requiredEvidence": [
          "Refresh the same payment to recheck the original transaction hash.",
          "Preserve wallet, credit and spending-limit reservations until an explicit recovery operation verifies the outcome."
        ],
        "reservations": {
          "wallet": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Saved wallet sequences and Bitcoin inputs remain tied to their original actions. Bitcoin inputs are projected from immutable saved actions, whose creation reserves those inputs atomically. Review expiry or a missing receipt does not release them; only an explicit, proof-gated close of an expired Stellar action releases its sequence."
          },
          "apiLimit": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Spending-limit reservations remain reserved until source funding is verified and final. Committed source volume still counts when the payment is refunded."
          },
          "credits": {
            "observed": false,
            "items": [],
            "truncated": false,
            "note": "Route credits are separate from transfer amounts and network fees. Reserved payment credits are charged or released only by the existing verified-outcome rules."
          }
        },
        "safety": {
          "automaticReplacementAllowed": false,
          "reservationReleaseAllowed": false
        },
        "notice": "This report contains saved evidence only. It does not check the network or authorize recovery. A saved hash does not prove submission. Existing refresh operations may also perform previously authorized managed destination delivery."
      }
    },
    {
      "name": "SwapKit reservation held before its deposit is attached",
      "contract": "openapi.json",
      "schema": "#/components/schemas/ProtocolPreparation",
      "value": {
        "object": "payment_preparation",
        "id": "00000000-0000-4000-8000-000000000001",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "adapter": "swapkit",
        "network": "mainnet",
        "state": "preparing",
        "version": 1,
        "intent": {
          "input": {
            "source": "ethereum",
            "destination": "base",
            "amount": "5",
            "sourceAsset": {
              "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
              "symbol": "USDC",
              "decimals": 6
            },
            "destinationAsset": {
              "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "symbol": "USDC",
              "decimals": 6
            }
          }
        },
        "deposit": null,
        "sourceHash": null,
        "tracking": null,
        "lastError": null,
        "events": [],
        "transaction": null,
        "actions": [],
        "walletApproval": {
          "required": false,
          "method": "transaction-signature"
        },
        "destinationExecution": null,
        "readiness": {
          "blockers": [
            {
              "id": "preparation-pending",
              "status": "unknown",
              "message": "Deposit instructions are not attached yet. Resume this preparation with the same payment intent; Route does not build another deposit channel for it."
            }
          ],
          "executionEnabled": true
        },
        "executionEnabled": true,
        "nextAction": "review-required"
      }
    },
    {
      "name": "SwapKit reservation: resume the same saved channel",
      "contract": "openapi.json",
      "schema": "#/components/schemas/PaymentNextAction",
      "value": {
        "object": "payment_next_action",
        "schemaVersion": 1,
        "network": "mainnet",
        "paymentId": "00000000-0000-4000-8000-000000000001",
        "activePaymentId": "00000000-0000-4000-8000-000000000001",
        "flow": "protocol",
        "adapter": "swapkit",
        "paymentVersion": 1,
        "preparationVersion": 2,
        "authorizationId": null,
        "observedAt": "2026-09-22T12:00:00.000Z",
        "status": "REQUIRES_ATTENTION",
        "expiresAt": "2026-09-22T12:05:00.000Z",
        "action": {
          "type": "prepare-payment",
          "actor": "app",
          "message": "Resume the reserved preparation with its original wallets. Its credits and key budget are already held; Route reuses the saved deposit channel.",
          "operation": {
            "method": "POST",
            "path": "/v1/payments/00000000-0000-4000-8000-000000000001/prepare",
            "body": {
              "version": 1
            },
            "idempotencyKeyRequired": true,
            "requiredInput": [
              "paymentIntent"
            ]
          },
          "payload": null
        },
        "checks": [],
        "blockers": [
          {
            "id": "preparation-pending",
            "status": "unknown",
            "message": "Deposit instructions are not attached yet. Resume this preparation with the same payment intent; Route does not build another deposit channel for it."
          }
        ],
        "tracking": null,
        "links": {
          "payment": "/v1/payments/00000000-0000-4000-8000-000000000001",
          "nextAction": "/v1/payments/00000000-0000-4000-8000-000000000001/next-action"
        },
        "notice": "Saved-state guidance only. Every mutation revalidates current policy, wallet and receipt evidence. Persist operation IDs and signatures; never replace an uncertain transfer."
      }
    },
    {
      "name": "provider credential saved",
      "contract": "openapi.json",
      "schema": "#/components/schemas/CredentialUpdateResult",
      "value": {
        "ok": true,
        "version": 2,
        "credentialPresent": true,
        "warnings": []
      }
    },
    {
      "name": "provider credential removed with funded unsettled payments",
      "contract": "openapi.json",
      "schema": "#/components/schemas/CredentialUpdateResult",
      "value": {
        "ok": true,
        "version": 3,
        "credentialPresent": false,
        "warnings": [
          {
            "code": "UNSETTLED_PROVIDER_PAYMENTS",
            "count": 2,
            "message": "Payments that use this key have funding in flight and are not yet settled. Removing the key can interrupt their automatic tracking. Keep the payment records and reconnect the original provider connection to verify delivery or refunds. A SwapKit destination hash also requires provider attribution."
          }
        ]
      }
    },
    {
      "name": "policy-scoped webhook endpoint created by an API key",
      "contract": "openapi.json",
      "schema": "#/components/schemas/WebhookEndpoint",
      "value": {
        "id": "00000000-0000-4000-8000-000000000001",
        "name": "Payments backend",
        "url": "https://hooks.example.test/route",
        "enabled": true,
        "version": 1,
        "created_at": "2026-09-22T12:00:00.000Z",
        "policy_id": "00000000-0000-4000-8000-000000000003",
        "scope_review_required": false,
        "deliveryStatus": "ready"
      }
    },
    {
      "name": "legacy endpoint whose creator could not be established",
      "contract": "openapi.json",
      "schema": "#/components/schemas/WebhookEndpoint",
      "value": {
        "id": "00000000-0000-4000-8000-000000000004",
        "name": "Legacy receiver",
        "url": "https://hooks.example.test/legacy",
        "enabled": false,
        "version": 2,
        "created_at": "2026-09-22T12:00:00.000Z",
        "policy_id": null,
        "scope_review_required": true,
        "deliveryStatus": "disabled"
      }
    }
  ]
}
