{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-products/wallet/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Policy concepts","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com/products/custody","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"policy-concepts","__idx":0},"children":["Policy concepts"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Transaction policies are the security rules that control what funds can leave your wallets. Every wallet in Wallet-as-a-Service (Palisade) is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["deposit-only by default"]},". You must create at least one policy for an asset before you can send that asset from the wallet."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Think of policies as programmable spending limits. They automatically evaluate every outgoing transaction and block any that would exceed your configured limits. This protects your assets even if someone gains unauthorized access to your API credentials or user accounts."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Policies answer these questions:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["How much can leave in a single transaction?"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["How much can leave over a period of time?"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["What is the maximum that can ever leave?"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Who can initiate transactions, and to where?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This page explains the core concepts you need to understand before creating and managing policies."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"policy-scope","__idx":1},"children":["Policy scope"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Policies operate at the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["wallet level only"]},". Each policy applies to a single wallet and controls transactions for a specific asset within that wallet."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"No vault-level or organization-level policies"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You cannot create a policy that applies to multiple wallets simultaneously. If you need the same limit across ten wallets, you must create ten separate policies—one for each wallet."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Multi-chain EVM wallets"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your organization uses separate wallets for different EVM chains (for example, one Ethereum wallet and one Arbitrum wallet), policies on one wallet do ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not"]}," apply to the other—even if both wallets hold the same asset (ETH). You must create policies independently on each wallet."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"limit-types","__idx":2},"children":["Limit types"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Wallet-as-a-Service (Palisade) supports three limit types:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Per transaction (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PER_TX"]},")"]}," – Maximum amount for any single transaction"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Rolling duration (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ROLLING_DURATION"]},")"]}," – Maximum cumulative amount within a sliding time window"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Max total value (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CONSTANT"]},")"]}," – Lifetime cap on total withdrawals"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can combine multiple limit types on the same wallet for layered protection."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"How rolling windows work"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you attempt a transaction, the system calculates how much has already left the wallet within the current window. If your new transaction would push the total over the limit, the system rejects it immediately. As older transactions \"roll off\" the window, capacity becomes available again."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/policies/policies-reference#limit-types"},"children":["Policy reference"]}," for complete limit type documentation, duration values, and examples."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"policy-uniqueness","__idx":3},"children":["Policy uniqueness"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each policy must be unique within its wallet. The system identifies a policy by four attributes:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Attribute"},"children":["Attribute"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Wallet ID"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The wallet the policy belongs to"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Limit type"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PER_TX"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ROLLING_DURATION"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CONSTANT"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Symbol"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The asset symbol (for example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ETH"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BTC"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["USDC"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Matchers"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional filters that narrow when the policy applies"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can create multiple policies with the same limit type and symbol ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["if they have different matchers"]},". For example:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PER_TX"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ETH"]}," + no matchers → Applies to all ETH transactions"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PER_TX"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ETH"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TRANSACTION_TYPE: WITHDRAWAL"]}," → Applies only to ETH withdrawals"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both policies can coexist because their matcher configurations differ."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Duplicate policy error"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you try to create a policy that matches an existing policy's wallet, limit type, symbol, and matchers, the API returns error ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PAL006.023: limit policy already exists"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"policy-immutability","__idx":4},"children":["Policy immutability"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Policies are immutable. You cannot edit an existing policy's limit amount, duration, or matchers."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To modify a policy:"]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Delete the existing policy (see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/policies/policies-manage#delete-a-policy"},"children":["Manage policies"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create a new policy with the updated values."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Why policies are immutable"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Immutability provides a clear audit trail. Every policy change creates a new record with its own approval history, making it easy to track who authorized what and when."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"policy-lifecycle","__idx":5},"children":["Policy lifecycle"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every policy moves through a series of states from creation to deletion."]},{"$$mdtype":"Tag","name":"Mermaid","attributes":{"data-language":"mermaid","diagramSource":"stateDiagram-v2\n    direction TB\n\n    [*] --> LIMIT_CREATION_APPROVAL_PENDING: Create policy\n\n    LIMIT_CREATION_APPROVAL_PENDING --> LIMIT_ENABLED: Approved\n    LIMIT_CREATION_APPROVAL_PENDING --> LIMIT_REJECTED: Rejected\n\n    LIMIT_ENABLED --> LIMIT_DELETION_APPROVAL_PENDING: Request deletion\n\n    LIMIT_DELETION_APPROVAL_PENDING --> LIMIT_DELETED: Approved\n\n    LIMIT_REJECTED --> [*]\n    LIMIT_DELETED --> [*]\n\n    note right of LIMIT_ENABLED: active: true\n    note right of LIMIT_DELETION_APPROVAL_PENDING: Still enforcing\n    note right of LIMIT_REJECTED: Terminal state\n    note right of LIMIT_DELETED: Terminal state\n","diagramHtml":"[object Object]"},"children":["stateDiagram-v2\n    direction TB\n\n    [*] --> LIMIT_CREATION_APPROVAL_PENDING: Create policy\n\n    LIMIT_CREATION_APPROVAL_PENDING --> LIMIT_ENABLED: Approved\n    LIMIT_CREATION_APPROVAL_PENDING --> LIMIT_REJECTED: Rejected\n\n    LIMIT_ENABLED --> LIMIT_DELETION_APPROVAL_PENDING: Request deletion\n\n    LIMIT_DELETION_APPROVAL_PENDING --> LIMIT_DELETED: Approved\n\n    LIMIT_REJECTED --> [*]\n    LIMIT_DELETED --> [*]\n\n    note right of LIMIT_ENABLED: active: true\n    note right of LIMIT_DELETION_APPROVAL_PENDING: Still enforcing\n    note right of LIMIT_REJECTED: Terminal state\n    note right of LIMIT_DELETED: Terminal state\n"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Policies move through five statuses: pending approval, enabled, rejected, pending deletion, and deleted. A policy in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["LIMIT_DELETION_APPROVAL_PENDING"]}," status continues to enforce transactions until the deletion is approved—this prevents gaps in protection."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/policies/policies-reference#policy-statuses"},"children":["Policy reference"]}," for the complete status reference."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"approval-requirements","__idx":6},"children":["Approval requirements"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Whether a policy requires approval depends on your organization's approval group configuration."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"with-approval-groups-configured","__idx":7},"children":["With approval groups configured"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your organization has an approval group for ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Policy rules"]},", new policies enter ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["LIMIT_CREATION_APPROVAL_PENDING"]}," status. Designated approvers must authorize the policy before it takes effect."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The policy activates after the required number of approvers authorize it (for example, 2 of 3 approvers). If the approval threshold becomes mathematically impossible to reach (for example, too many approvers skip), the policy moves to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["LIMIT_REJECTED"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"without-approval-groups-configured","__idx":8},"children":["Without approval groups configured"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If no approval group exists for Policy rules, the policy ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["automatically activates"]}," immediately after creation. It transitions directly to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["LIMIT_ENABLED"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active: true"]},"."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Security consideration"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Without approval groups, anyone with API credentials that include ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["keylimit:create"]}," scope can instantly enable policies. Consider configuring approval groups to add human oversight."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/security-controls/approvals"},"children":["Approvals"]}," to configure approval groups for your organization."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"policy-evaluation","__idx":9},"children":["Policy evaluation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you submit a transaction, the policy engine evaluates it against all active policies for that wallet and asset. Policy checks are one stage in the full transaction pipeline."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"where-policies-fit-in-the-transaction-pipeline","__idx":10},"children":["Where policies fit in the transaction pipeline"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Policy evaluation is the first check after a transaction is created. The full pipeline is:"]},{"$$mdtype":"Tag","name":"Mermaid","attributes":{"data-language":"mermaid","diagramSource":"flowchart TD\n    TX[Transaction created] --> PC[Policy check]\n    PC -->|Pass| AP{Approvals required?}\n    PC -->|Fail| REJ[Transaction rejected]\n    AP -->|Yes| AG[Approval group review]\n    AP -->|No| SIG[MPC signing]\n    AG -->|Approved| SIG\n    AG -->|Rejected| REJ\n    SIG --> BC[Blockchain submission]\n    BC --> CONF[Confirmed]\n\n    style REJ fill:#ffcccc\n    style CONF fill:#ccffcc\n","diagramHtml":"<div class=\"mermaid\" data-processed=\"true\"><svg id=\"mermaid-1774347594198\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" class=\"flowchart\" style=\"max-width: 507.22265625px;\" viewBox=\"0 0 507.22265625 915.953125\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>#mermaid-1774347594198{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-1774347594198 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-1774347594198 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-1774347594198 .error-icon{fill:#552222;}#mermaid-1774347594198 .error-text{fill:#552222;stroke:#552222;}#mermaid-1774347594198 .edge-thickness-normal{stroke-width:1px;}#mermaid-1774347594198 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1774347594198 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1774347594198 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-1774347594198 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1774347594198 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1774347594198 .marker{fill:#333333;stroke:#333333;}#mermaid-1774347594198 .marker.cross{stroke:#333333;}#mermaid-1774347594198 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-1774347594198 p{margin:0;}#mermaid-1774347594198 .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-1774347594198 .cluster-label text{fill:#333;}#mermaid-1774347594198 .cluster-label span{color:#333;}#mermaid-1774347594198 .cluster-label span p{background-color:transparent;}#mermaid-1774347594198 .label text,#mermaid-1774347594198 span{fill:#333;color:#333;}#mermaid-1774347594198 .node rect,#mermaid-1774347594198 .node circle,#mermaid-1774347594198 .node ellipse,#mermaid-1774347594198 .node polygon,#mermaid-1774347594198 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-1774347594198 .rough-node .label text,#mermaid-1774347594198 .node .label text,#mermaid-1774347594198 .image-shape .label,#mermaid-1774347594198 .icon-shape .label{text-anchor:middle;}#mermaid-1774347594198 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-1774347594198 .rough-node .label,#mermaid-1774347594198 .node .label,#mermaid-1774347594198 .image-shape .label,#mermaid-1774347594198 .icon-shape .label{text-align:center;}#mermaid-1774347594198 .node.clickable{cursor:pointer;}#mermaid-1774347594198 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-1774347594198 .arrowheadPath{fill:#333333;}#mermaid-1774347594198 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-1774347594198 .flowchart-link{stroke:#333333;fill:none;}#mermaid-1774347594198 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-1774347594198 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-1774347594198 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-1774347594198 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-1774347594198 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-1774347594198 .cluster text{fill:#333;}#mermaid-1774347594198 .cluster span{color:#333;}#mermaid-1774347594198 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-1774347594198 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-1774347594198 rect.text{fill:none;stroke-width:0;}#mermaid-1774347594198 .icon-shape,#mermaid-1774347594198 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-1774347594198 .icon-shape p,#mermaid-1774347594198 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-1774347594198 .icon-shape rect,#mermaid-1774347594198 .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-1774347594198 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-1774347594198 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-1774347594198 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}</style><g><marker id=\"mermaid-1774347594198_flowchart-v2-pointEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"mermaid-1774347594198_flowchart-v2-pointStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"4.5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 5 L 10 10 L 10 0 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"mermaid-1774347594198_flowchart-v2-circleEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"11\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"mermaid-1774347594198_flowchart-v2-circleStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-1\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"mermaid-1774347594198_flowchart-v2-crossEnd\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"12\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"mermaid-1774347594198_flowchart-v2-crossStart\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"-1\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"><path d=\"M194.172,62L194.172,66.167C194.172,70.333,194.172,78.667,194.172,86.333C194.172,94,194.172,101,194.172,104.5L194.172,108\" id=\"L_TX_PC_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_TX_PC_0\" data-points=\"W3sieCI6MTk0LjE3MTg3NSwieSI6NjJ9LHsieCI6MTk0LjE3MTg3NSwieSI6ODd9LHsieCI6MTk0LjE3MTg3NSwieSI6MTEyfV0=\" marker-end=\"url(#mermaid-1774347594198_flowchart-v2-pointEnd)\"></path><path d=\"M225.653,166L232.843,172.167C240.033,178.333,254.413,190.667,261.603,202.333C268.793,214,268.793,225,268.793,230.5L268.793,236\" id=\"L_PC_AP_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_PC_AP_0\" data-points=\"W3sieCI6MjI1LjY1MjY0ODkyNTc4MTI1LCJ5IjoxNjZ9LHsieCI6MjY4Ljc5Mjk2ODc1LCJ5IjoyMDN9LHsieCI6MjY4Ljc5Mjk2ODc1LCJ5IjoyNDB9XQ==\" marker-end=\"url(#mermaid-1774347594198_flowchart-v2-pointEnd)\"></path><path d=\"M128.925,166L114.022,172.167C99.12,178.333,69.316,190.667,54.414,219.996C39.512,249.326,39.512,295.651,39.512,341.977C39.512,388.302,39.512,434.628,39.512,468.457C39.512,502.286,39.512,523.62,39.512,544.953C39.512,566.286,39.512,587.62,46.196,604.019C52.88,620.418,66.248,631.884,72.932,637.616L79.616,643.349\" id=\"L_PC_REJ_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_PC_REJ_0\" data-points=\"W3sieCI6MTI4LjkyNDYyMTU4MjAzMTI1LCJ5IjoxNjZ9LHsieCI6MzkuNTExNzE4NzUsInkiOjIwM30seyJ4IjozOS41MTE3MTg3NSwieSI6MzQxLjk3NjU2MjV9LHsieCI6MzkuNTExNzE4NzUsInkiOjQ4MC45NTMxMjV9LHsieCI6MzkuNTExNzE4NzUsInkiOjU0NC45NTMxMjV9LHsieCI6MzkuNTExNzE4NzUsInkiOjYwOC45NTMxMjV9LHsieCI6ODIuNjUyMDM4NTc0MjE4NzUsInkiOjY0NS45NTMxMjV9XQ==\" marker-end=\"url(#mermaid-1774347594198_flowchart-v2-pointEnd)\"></path><path d=\"M231.526,406.686L224.397,419.064C217.268,431.442,203.011,456.197,195.883,474.075C188.754,491.953,188.754,502.953,188.754,508.453L188.754,513.953\" id=\"L_AP_AG_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_AP_AG_0\" data-points=\"W3sieCI6MjMxLjUyNTcyNjAxNTczMDksInkiOjQwNi42ODU4ODIyNjU3MzA5fSx7IngiOjE4OC43NTM5MDYyNSwieSI6NDgwLjk1MzEyNX0seyJ4IjoxODguNzUzOTA2MjUsInkiOjUxNy45NTMxMjV9XQ==\" marker-end=\"url(#mermaid-1774347594198_flowchart-v2-pointEnd)\"></path><path d=\"M306.06,406.686L313.189,419.064C320.317,431.442,334.575,456.197,341.703,479.242C348.832,502.286,348.832,523.62,348.832,544.953C348.832,566.286,348.832,587.62,351.953,603.871C355.074,620.123,361.316,631.292,364.437,636.877L367.558,642.461\" id=\"L_AP_SIG_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_AP_SIG_0\" data-points=\"W3sieCI6MzA2LjA2MDIxMTQ4NDI2OTEsInkiOjQwNi42ODU4ODIyNjU3MzA5fSx7IngiOjM0OC44MzIwMzEyNSwieSI6NDgwLjk1MzEyNX0seyJ4IjozNDguODMyMDMxMjUsInkiOjU0NC45NTMxMjV9LHsieCI6MzQ4LjgzMjAzMTI1LCJ5Ijo2MDguOTUzMTI1fSx7IngiOjM2OS41MDkwMzMyMDMxMjUsInkiOjY0NS45NTMxMjV9XQ==\" marker-end=\"url(#mermaid-1774347594198_flowchart-v2-pointEnd)\"></path><path d=\"M283.254,571.953L304.837,578.12C326.421,584.286,369.587,596.62,388.726,608.343C407.865,620.066,402.976,631.179,400.531,636.735L398.087,642.292\" id=\"L_AG_SIG_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_AG_SIG_0\" data-points=\"W3sieCI6MjgzLjI1MzkwNjI1LCJ5Ijo1NzEuOTUzMTI1fSx7IngiOjQxMi43NTM5MDYyNSwieSI6NjA4Ljk1MzEyNX0seyJ4IjozOTYuNDc2MDc0MjE4NzUsInkiOjY0NS45NTMxMjV9XQ==\" marker-end=\"url(#mermaid-1774347594198_flowchart-v2-pointEnd)\"></path><path d=\"M188.754,571.953L188.754,578.12C188.754,584.286,188.754,596.62,182.07,608.519C175.386,620.418,162.018,631.884,155.334,637.616L148.65,643.349\" id=\"L_AG_REJ_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_AG_REJ_0\" data-points=\"W3sieCI6MTg4Ljc1MzkwNjI1LCJ5Ijo1NzEuOTUzMTI1fSx7IngiOjE4OC43NTM5MDYyNSwieSI6NjA4Ljk1MzEyNX0seyJ4IjoxNDUuNjEzNTg2NDI1NzgxMjUsInkiOjY0NS45NTMxMjV9XQ==\" marker-end=\"url(#mermaid-1774347594198_flowchart-v2-pointEnd)\"></path><path d=\"M384.598,699.953L384.598,704.12C384.598,708.286,384.598,716.62,384.598,724.286C384.598,731.953,384.598,738.953,384.598,742.453L384.598,745.953\" id=\"L_SIG_BC_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_SIG_BC_0\" data-points=\"W3sieCI6Mzg0LjU5NzY1NjI1LCJ5Ijo2OTkuOTUzMTI1fSx7IngiOjM4NC41OTc2NTYyNSwieSI6NzI0Ljk1MzEyNX0seyJ4IjozODQuNTk3NjU2MjUsInkiOjc0OS45NTMxMjV9XQ==\" marker-end=\"url(#mermaid-1774347594198_flowchart-v2-pointEnd)\"></path><path d=\"M384.598,803.953L384.598,808.12C384.598,812.286,384.598,820.62,384.598,828.286C384.598,835.953,384.598,842.953,384.598,846.453L384.598,849.953\" id=\"L_BC_CONF_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_BC_CONF_0\" data-points=\"W3sieCI6Mzg0LjU5NzY1NjI1LCJ5Ijo4MDMuOTUzMTI1fSx7IngiOjM4NC41OTc2NTYyNSwieSI6ODI4Ljk1MzEyNX0seyJ4IjozODQuNTk3NjU2MjUsInkiOjg1My45NTMxMjV9XQ==\" marker-end=\"url(#mermaid-1774347594198_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_TX_PC_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(268.79296875, 203)\"><g class=\"label\" data-id=\"L_PC_AP_0\" transform=\"translate(-16.8828125, -12)\"><foreignObject width=\"33.765625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Pass</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(39.51171875, 480.953125)\"><g class=\"label\" data-id=\"L_PC_REJ_0\" transform=\"translate(-12.6171875, -12)\"><foreignObject width=\"25.234375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Fail</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(188.75390625, 480.953125)\"><g class=\"label\" data-id=\"L_AP_AG_0\" transform=\"translate(-12.78125, -12)\"><foreignObject width=\"25.5625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Yes</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(348.83203125, 544.953125)\"><g class=\"label\" data-id=\"L_AP_SIG_0\" transform=\"translate(-10.8359375, -12)\"><foreignObject width=\"21.671875\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>No</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(367.43744, 596.00556)\"><g class=\"label\" data-id=\"L_AG_SIG_0\" transform=\"translate(-36.3125, -12)\"><foreignObject width=\"72.625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Approved</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(188.75390625, 608.953125)\"><g class=\"label\" data-id=\"L_AG_REJ_0\" transform=\"translate(-32.015625, -12)\"><foreignObject width=\"64.03125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Rejected</p></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_SIG_BC_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_BC_CONF_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"flowchart-TX-0\" transform=\"translate(194.171875, 35)\"><rect class=\"basic label-container\" style=\"\" x=\"-104.0625\" y=\"-27\" width=\"208.125\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-74.0625, -12)\"><rect></rect><foreignObject width=\"148.125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Transaction created</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-PC-1\" transform=\"translate(194.171875, 139)\"><rect class=\"basic label-container\" style=\"\" x=\"-74.8515625\" y=\"-27\" width=\"149.703125\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-44.8515625, -12)\"><rect></rect><foreignObject width=\"89.703125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Policy check</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-AP-3\" transform=\"translate(268.79296875, 341.9765625)\"><polygon points=\"101.9765625,0 203.953125,-101.9765625 101.9765625,-203.953125 0,-101.9765625\" class=\"label-container\" transform=\"translate(-101.4765625, 101.9765625)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-74.9765625, -12)\"><rect></rect><foreignObject width=\"149.953125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Approvals required?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-REJ-5\" transform=\"translate(114.1328125, 672.953125)\"><rect class=\"basic label-container\" style=\"fill:#ffcccc !important\" x=\"-106.1328125\" y=\"-27\" width=\"212.265625\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-76.1328125, -12)\"><rect></rect><foreignObject width=\"152.265625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Transaction rejected</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-AG-7\" transform=\"translate(188.75390625, 544.953125)\"><rect class=\"basic label-container\" style=\"\" x=\"-114.2421875\" y=\"-27\" width=\"228.484375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-84.2421875, -12)\"><rect></rect><foreignObject width=\"168.484375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Approval group review</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-SIG-9\" transform=\"translate(384.59765625, 672.953125)\"><rect class=\"basic label-container\" style=\"\" x=\"-75.4765625\" y=\"-27\" width=\"150.953125\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-45.4765625, -12)\"><rect></rect><foreignObject width=\"90.953125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>MPC signing</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-BC-15\" transform=\"translate(384.59765625, 776.953125)\"><rect class=\"basic label-container\" style=\"\" x=\"-114.625\" y=\"-27\" width=\"229.25\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-84.625, -12)\"><rect></rect><foreignObject width=\"169.25\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Blockchain submission</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-CONF-17\" transform=\"translate(384.59765625, 880.953125)\"><rect class=\"basic label-container\" style=\"fill:#ccffcc !important\" x=\"-69.53125\" y=\"-27\" width=\"139.0625\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-39.53125, -12)\"><rect></rect><foreignObject width=\"79.0625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Confirmed</p></span></div></foreignObject></g></g></g></g></g></svg></div>"},"children":["flowchart TD\n    TX[Transaction created] --> PC[Policy check]\n    PC -->|Pass| AP{Approvals required?}\n    PC -->|Fail| REJ[Transaction rejected]\n    AP -->|Yes| AG[Approval group review]\n    AP -->|No| SIG[MPC signing]\n    AG -->|Approved| SIG\n    AG -->|Rejected| REJ\n    SIG --> BC[Blockchain submission]\n    BC --> CONF[Confirmed]\n\n    style REJ fill:#ffcccc\n    style CONF fill:#ccffcc\n"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Policy check"]}," – The engine evaluates the transaction against all matching policies. If any policy rejects, the transaction is rejected immediately and never reaches approvers."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Approval check"]}," – If approval groups are configured for transactions, designated approvers must authorize the transaction."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["MPC signing"]}," – The transaction is signed by the wallet's MPC quorum."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Blockchain submission"]}," – The signed transaction is published to the network."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/security-controls/security-controls-overview"},"children":["Signing & approvals overview"]}," for details on approvals and MPC quorums."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"evaluation-order","__idx":11},"children":["Evaluation order"]},{"$$mdtype":"Tag","name":"Mermaid","attributes":{"data-language":"mermaid","diagramSource":"flowchart TD\n    A[Transaction submitted] --> B{Find matching policies}\n    B --> C[Policy 1: Check limit]\n    B --> D[Policy 2: Check limit]\n    B --> E[Policy N: Check limit]\n\n    C --> F{All policies pass?}\n    D --> F\n    E --> F\n\n    F -->|Yes| G[Proceed to approvals/signing]\n    F -->|No| H[Transaction rejected]\n\n    style H fill:#ffcccc\n    style G fill:#ccffcc\n","diagramHtml":"<div class=\"mermaid\" data-processed=\"true\"><svg id=\"mermaid-1774295955275\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" class=\"flowchart\" style=\"max-width: 738.125px;\" viewBox=\"0 0 738.125 822.59375\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>#mermaid-1774295955275{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-1774295955275 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-1774295955275 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-1774295955275 .error-icon{fill:#552222;}#mermaid-1774295955275 .error-text{fill:#552222;stroke:#552222;}#mermaid-1774295955275 .edge-thickness-normal{stroke-width:1px;}#mermaid-1774295955275 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1774295955275 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1774295955275 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-1774295955275 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1774295955275 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1774295955275 .marker{fill:#333333;stroke:#333333;}#mermaid-1774295955275 .marker.cross{stroke:#333333;}#mermaid-1774295955275 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-1774295955275 p{margin:0;}#mermaid-1774295955275 .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-1774295955275 .cluster-label text{fill:#333;}#mermaid-1774295955275 .cluster-label span{color:#333;}#mermaid-1774295955275 .cluster-label span p{background-color:transparent;}#mermaid-1774295955275 .label text,#mermaid-1774295955275 span{fill:#333;color:#333;}#mermaid-1774295955275 .node rect,#mermaid-1774295955275 .node circle,#mermaid-1774295955275 .node ellipse,#mermaid-1774295955275 .node polygon,#mermaid-1774295955275 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-1774295955275 .rough-node .label text,#mermaid-1774295955275 .node .label text,#mermaid-1774295955275 .image-shape .label,#mermaid-1774295955275 .icon-shape .label{text-anchor:middle;}#mermaid-1774295955275 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-1774295955275 .rough-node .label,#mermaid-1774295955275 .node .label,#mermaid-1774295955275 .image-shape .label,#mermaid-1774295955275 .icon-shape .label{text-align:center;}#mermaid-1774295955275 .node.clickable{cursor:pointer;}#mermaid-1774295955275 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-1774295955275 .arrowheadPath{fill:#333333;}#mermaid-1774295955275 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-1774295955275 .flowchart-link{stroke:#333333;fill:none;}#mermaid-1774295955275 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-1774295955275 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-1774295955275 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-1774295955275 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-1774295955275 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-1774295955275 .cluster text{fill:#333;}#mermaid-1774295955275 .cluster span{color:#333;}#mermaid-1774295955275 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-1774295955275 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-1774295955275 rect.text{fill:none;stroke-width:0;}#mermaid-1774295955275 .icon-shape,#mermaid-1774295955275 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-1774295955275 .icon-shape p,#mermaid-1774295955275 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-1774295955275 .icon-shape rect,#mermaid-1774295955275 .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-1774295955275 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-1774295955275 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-1774295955275 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}</style><g><marker id=\"mermaid-1774295955275_flowchart-v2-pointEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"mermaid-1774295955275_flowchart-v2-pointStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"4.5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 5 L 10 10 L 10 0 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"mermaid-1774295955275_flowchart-v2-circleEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"11\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"mermaid-1774295955275_flowchart-v2-circleStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-1\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"mermaid-1774295955275_flowchart-v2-crossEnd\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"12\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"mermaid-1774295955275_flowchart-v2-crossStart\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"-1\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"><path d=\"M367.609,62L367.609,66.167C367.609,70.333,367.609,78.667,367.609,86.333C367.609,94,367.609,101,367.609,104.5L367.609,108\" id=\"L_A_B_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_A_B_0\" data-points=\"W3sieCI6MzY3LjYwOTM3NSwieSI6NjJ9LHsieCI6MzY3LjYwOTM3NSwieSI6ODd9LHsieCI6MzY3LjYwOTM3NSwieSI6MTEyfV0=\" marker-end=\"url(#mermaid-1774295955275_flowchart-v2-pointEnd)\"></path><path d=\"M295.682,259.51L264.936,275.665C234.189,291.819,172.696,324.128,141.95,343.783C111.203,363.438,111.203,370.438,111.203,373.938L111.203,377.438\" id=\"L_B_C_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_B_C_0\" data-points=\"W3sieCI6Mjk1LjY4MjA1NDQ3MDI3ODA1LCJ5IjoyNTkuNTEwMTc5NDcwMjc4MDV9LHsieCI6MTExLjIwMzEyNSwieSI6MzU2LjQzNzV9LHsieCI6MTExLjIwMzEyNSwieSI6MzgxLjQzNzV9XQ==\" marker-end=\"url(#mermaid-1774295955275_flowchart-v2-pointEnd)\"></path><path d=\"M367.609,331.438L367.609,335.604C367.609,339.771,367.609,348.104,367.609,355.771C367.609,363.438,367.609,370.438,367.609,373.938L367.609,377.438\" id=\"L_B_D_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_B_D_0\" data-points=\"W3sieCI6MzY3LjYwOTM3NSwieSI6MzMxLjQzNzV9LHsieCI6MzY3LjYwOTM3NSwieSI6MzU2LjQzNzV9LHsieCI6MzY3LjYwOTM3NSwieSI6MzgxLjQzNzV9XQ==\" marker-end=\"url(#mermaid-1774295955275_flowchart-v2-pointEnd)\"></path><path d=\"M439.677,259.37L470.642,275.548C501.607,291.726,563.538,324.082,594.503,343.76C625.469,363.438,625.469,370.438,625.469,373.938L625.469,377.438\" id=\"L_B_E_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_B_E_0\" data-points=\"W3sieCI6NDM5LjY3NjU4MDIyMzg4MDYsInkiOjI1OS4zNzAyOTQ3NzYxMTk0fSx7IngiOjYyNS40Njg3NSwieSI6MzU2LjQzNzV9LHsieCI6NjI1LjQ2ODc1LCJ5IjozODEuNDM3NX1d\" marker-end=\"url(#mermaid-1774295955275_flowchart-v2-pointEnd)\"></path><path d=\"M111.203,435.438L111.203,439.604C111.203,443.771,111.203,452.104,143.097,470.399C174.991,488.693,238.778,516.948,270.672,531.076L302.566,545.204\" id=\"L_C_F_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_C_F_0\" data-points=\"W3sieCI6MTExLjIwMzEyNSwieSI6NDM1LjQzNzV9LHsieCI6MTExLjIwMzEyNSwieSI6NDYwLjQzNzV9LHsieCI6MzA2LjIyMzAzOTc5NzkyMjIsInkiOjU0Ni44MjM4MzUyMDIwNzc4fV0=\" marker-end=\"url(#mermaid-1774295955275_flowchart-v2-pointEnd)\"></path><path d=\"M367.609,435.438L367.609,439.604C367.609,443.771,367.609,452.104,367.609,459.771C367.609,467.438,367.609,474.438,367.609,477.938L367.609,481.438\" id=\"L_D_F_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_D_F_0\" data-points=\"W3sieCI6MzY3LjYwOTM3NSwieSI6NDM1LjQzNzV9LHsieCI6MzY3LjYwOTM3NSwieSI6NDYwLjQzNzV9LHsieCI6MzY3LjYwOTM3NSwieSI6NDg1LjQzNzV9XQ==\" marker-end=\"url(#mermaid-1774295955275_flowchart-v2-pointEnd)\"></path><path d=\"M625.469,435.438L625.469,439.604C625.469,443.771,625.469,452.104,593.351,470.418C561.233,488.731,496.998,517.024,464.88,531.171L432.763,545.318\" id=\"L_E_F_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_E_F_0\" data-points=\"W3sieCI6NjI1LjQ2ODc1LCJ5Ijo0MzUuNDM3NX0seyJ4Ijo2MjUuNDY4NzUsInkiOjQ2MC40Mzc1fSx7IngiOjQyOS4xMDIwODg5ODU5OTE5NCwieSI6NTQ2LjkzMDIxMzk4NTk5MTl9XQ==\" marker-end=\"url(#mermaid-1774295955275_flowchart-v2-pointEnd)\"></path><path d=\"M320.549,615.534L304.669,629.544C288.789,643.554,257.03,671.574,241.15,691.084C225.27,710.594,225.27,721.594,225.27,727.094L225.27,732.594\" id=\"L_F_G_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_F_G_0\" data-points=\"W3sieCI6MzIwLjU0OTQ2MTM1OTI5NTUsInkiOjYxNS41MzM4MzYzNTkyOTU1fSx7IngiOjIyNS4yNjk1MzEyNSwieSI6Njk5LjU5Mzc1fSx7IngiOjIyNS4yNjk1MzEyNSwieSI6NzM2LjU5Mzc1fV0=\" marker-end=\"url(#mermaid-1774295955275_flowchart-v2-pointEnd)\"></path><path d=\"M414.893,615.31L430.978,629.357C447.063,643.404,479.233,671.499,495.317,693.046C511.402,714.594,511.402,729.594,511.402,737.094L511.402,744.594\" id=\"L_F_H_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_F_H_0\" data-points=\"W3sieCI6NDE0Ljg5MzI1OTAzNzk3OTEsInkiOjYxNS4zMDk4NjU5NjIwMjA5fSx7IngiOjUxMS40MDIzNDM3NSwieSI6Njk5LjU5Mzc1fSx7IngiOjUxMS40MDIzNDM3NSwieSI6NzQ4LjU5Mzc1fV0=\" marker-end=\"url(#mermaid-1774295955275_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_A_B_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_B_C_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_B_D_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_B_E_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_C_F_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_D_F_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_E_F_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(225.26953125, 699.59375)\"><g class=\"label\" data-id=\"L_F_G_0\" transform=\"translate(-12.78125, -12)\"><foreignObject width=\"25.5625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Yes</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(511.40234375, 699.59375)\"><g class=\"label\" data-id=\"L_F_H_0\" transform=\"translate(-10.8359375, -12)\"><foreignObject width=\"21.671875\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>No</p></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"flowchart-A-0\" transform=\"translate(367.609375, 35)\"><rect class=\"basic label-container\" style=\"\" x=\"-113.9140625\" y=\"-27\" width=\"227.828125\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-83.9140625, -12)\"><rect></rect><foreignObject width=\"167.828125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Transaction submitted</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-B-1\" transform=\"translate(367.609375, 221.71875)\"><polygon points=\"109.71875,0 219.4375,-109.71875 109.71875,-219.4375 0,-109.71875\" class=\"label-container\" transform=\"translate(-109.21875, 109.71875)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-82.71875, -12)\"><rect></rect><foreignObject width=\"165.4375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Find matching policies</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-C-3\" transform=\"translate(111.203125, 408.4375)\"><rect class=\"basic label-container\" style=\"\" x=\"-103.203125\" y=\"-27\" width=\"206.40625\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-73.203125, -12)\"><rect></rect><foreignObject width=\"146.40625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Policy 1: Check limit</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-D-5\" transform=\"translate(367.609375, 408.4375)\"><rect class=\"basic label-container\" style=\"\" x=\"-103.203125\" y=\"-27\" width=\"206.40625\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-73.203125, -12)\"><rect></rect><foreignObject width=\"146.40625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Policy 2: Check limit</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-E-7\" transform=\"translate(625.46875, 408.4375)\"><rect class=\"basic label-container\" style=\"\" x=\"-104.65625\" y=\"-27\" width=\"209.3125\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-74.65625, -12)\"><rect></rect><foreignObject width=\"149.3125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Policy N: Check limit</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-F-9\" transform=\"translate(367.609375, 574.015625)\"><polygon points=\"88.578125,0 177.15625,-88.578125 88.578125,-177.15625 0,-88.578125\" class=\"label-container\" transform=\"translate(-88.078125, 88.578125)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-61.578125, -12)\"><rect></rect><foreignObject width=\"123.15625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>All policies pass?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-G-15\" transform=\"translate(225.26953125, 775.59375)\"><rect class=\"basic label-container\" style=\"fill:#ccffcc !important\" x=\"-130\" y=\"-39\" width=\"260\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -24)\"><rect></rect><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Proceed to approvals/signing</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-H-17\" transform=\"translate(511.40234375, 775.59375)\"><rect class=\"basic label-container\" style=\"fill:#ffcccc !important\" x=\"-106.1328125\" y=\"-27\" width=\"212.265625\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-76.1328125, -12)\"><rect></rect><foreignObject width=\"152.265625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Transaction rejected</p></span></div></foreignObject></g></g></g></g></g></svg></div>"},"children":["flowchart TD\n    A[Transaction submitted] --> B{Find matching policies}\n    B --> C[Policy 1: Check limit]\n    B --> D[Policy 2: Check limit]\n    B --> E[Policy N: Check limit]\n\n    C --> F{All policies pass?}\n    D --> F\n    E --> F\n\n    F -->|Yes| G[Proceed to approvals/signing]\n    F -->|No| H[Transaction rejected]\n\n    style H fill:#ffcccc\n    style G fill:#ccffcc\n"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The engine finds all ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["LIMIT_ENABLED"]}," policies that match the transaction's wallet, asset, and attributes."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For each matching policy, the engine checks whether the transaction would exceed the limit."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["any"]}," policy rejects the transaction, the entire transaction fails."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["all"]}," matching policies pass, the transaction proceeds to the next stage (approvals or signing)."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"network-fees-and-policy-limits","__idx":12},"children":["Network fees and policy limits"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Policy limits are checked against the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["transaction amount only"]},". Network fees (gas on EVM chains, transaction fees on XRP Ledger) are ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not"]}," included in the limit calculation. For example, if you have a PER_TX limit of 10 ETH and send exactly 10 ETH, the policy check passes — the gas cost does not push the transaction over the limit."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"operations-that-bypass-policies","__idx":13},"children":["Operations that bypass policies"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Not all outgoing fund movements are subject to policy checks. ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Asset sweeping bypasses policies entirely."]}," A wallet does not need any policies in place to be swept, and sweep transactions are not evaluated against existing policies."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This means policies alone do not prevent all fund movement from a wallet. If you need to restrict sweeping, manage sweep configurations separately through ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings > Workflows"]},". Only owners and administrators can configure sweeping operations."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/wallets/asset-sweeping"},"children":["Asset sweeping"]}," for details on sweep configuration."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Transaction freeze is separate from policies"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/transactions/manage-transactions#freeze-and-unfreeze-transactions"},"children":["Transaction freeze controls"]}," apply to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["inbound"]}," transactions only (holding incoming funds for compliance review). Policies apply to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["outbound"]}," transactions only. These two controls operate on different transaction directions and do not interact with each other."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"matcher-evaluation","__idx":14},"children":["Matcher evaluation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Matchers filter which transactions a policy applies to. A transaction must match ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["all"]}," matchers on a policy for that policy to apply. If a policy has no matchers, it applies to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["all"]}," transactions for that asset."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Matcher types include: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TRANSACTION_TYPE"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["USER"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["API_CREDENTIAL"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ADDRESS_ID"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["COUNTERPARTY_ID"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WALLET_ID"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SIGN_FOR"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/policies/policies-reference#matchers"},"children":["Policy reference"]}," for detailed matcher documentation and examples."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"monitoring-policy-checks-with-webhooks","__idx":15},"children":["Monitoring policy checks with webhooks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you have webhooks configured for the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["TRANSACTION"]}," domain, you receive notifications as transactions move through the policy check stage. The relevant statuses are:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POLICY_CHECK_PENDING"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transaction is being evaluated against policies"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POLICY_CHECK_PASSED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transaction passed all policy checks"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REJECTED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transaction was rejected (by policy or approval)"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These webhooks allow you to build automated monitoring for policy enforcement — for example, alerting on rejected transactions or tracking policy check latency."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"No policy lifecycle webhooks"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Webhook notifications cover ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["transaction"]}," status changes only. There are no webhook events for policy creation, approval, or deletion. To track policy lifecycle changes, use the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/integrations/overview#approval-domain"},"children":["Approval domain"]}," webhooks, which notify when approval requests for policy rules are created or resolved."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/integrations/overview"},"children":["Webhooks overview"]}," for setup instructions and payload format."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-to-read-next","__idx":16},"children":["What to read next"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/policies/policies-reference"},"children":["Policy reference"]}," – Complete reference for all limit types, matchers, and configuration options"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/policies/policies-manage"},"children":["Manage policies"]}," – Step-by-step guide to create, modify, and delete policies"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/wallet/user-interface/policies/policies-best-practices"},"children":["Policy best practices"]}," – Recommended patterns and common configurations"]}]}]},"headings":[{"value":"Policy concepts","id":"policy-concepts","depth":1},{"value":"Policy scope","id":"policy-scope","depth":2},{"value":"Limit types","id":"limit-types","depth":2},{"value":"Policy uniqueness","id":"policy-uniqueness","depth":2},{"value":"Policy immutability","id":"policy-immutability","depth":2},{"value":"Policy lifecycle","id":"policy-lifecycle","depth":2},{"value":"Approval requirements","id":"approval-requirements","depth":2},{"value":"With approval groups configured","id":"with-approval-groups-configured","depth":3},{"value":"Without approval groups configured","id":"without-approval-groups-configured","depth":3},{"value":"Policy evaluation","id":"policy-evaluation","depth":2},{"value":"Where policies fit in the transaction pipeline","id":"where-policies-fit-in-the-transaction-pipeline","depth":3},{"value":"Evaluation order","id":"evaluation-order","depth":3},{"value":"Network fees and policy limits","id":"network-fees-and-policy-limits","depth":3},{"value":"Operations that bypass policies","id":"operations-that-bypass-policies","depth":3},{"value":"Matcher evaluation","id":"matcher-evaluation","depth":3},{"value":"Monitoring policy checks with webhooks","id":"monitoring-policy-checks-with-webhooks","depth":2},{"value":"What to read next","id":"what-to-read-next","depth":2}],"frontmatter":{"title":"Policy concepts","seo":{"title":"Policy concepts"}},"lastModified":"2026-04-07T14:25:06.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/wallet/user-interface/policies/policies-concepts","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}