{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["tabs","tab","admonition"]},"type":"markdown"},"seo":{"title":"Reefpay Docs","description":"Reefpay is the groundbreaking payment gateway that lets you integrate with the future of payments.","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":"recipe-authorize-and-capture","__idx":0},"children":["Recipe: Authorize and capture"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"when-to-use-two-step-payments","__idx":1},"children":["When to use two-step payments"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["E-commerce"]}," — authorize at checkout, capture when the order ships"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Hotels / car rentals"]}," — authorize an estimated amount, capture the final charge"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Subscriptions"]}," — authorize a recurring amount, capture after usage is calculated"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For a comparison of one-step vs. two-step flows, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/transactions/sale-vs-auth"},"children":["Sale vs. authorization"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"payment-state-lifecycle","__idx":2},"children":["Payment state lifecycle"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"https://files.modern-mermaid.live/images/1776276907982-mermaid-diagram-1776276908167.png","alt":"image"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":3},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A valid API key — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/how-tos/setup/obtain-credentials"},"children":["Obtain API credentials"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A TSYS integration configured for card processing"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-1-authorize","__idx":4},"children":["Step 1: Authorize"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Send a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["card_auth"]}," transaction to place a hold on the customer's card."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"curl","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  https://api.dev.paradisegateway.net/v1/transactions \\\n  -H \"Content-Type: application/json\" \\\n  -H \"APIKEY: YOUR-API-KEY\" \\\n  -d '{\n    \"type\": \"card_auth\",\n    \"amount\": 4995,\n    \"card\": {\n      \"pan\": \"4111111111111111\",\n      \"expiry_month\": \"12\",\n      \"expiry_year\": \"2027\",\n      \"cvv\": \"123\",\n      \"cardholder_name\": \"Jane Smith\",\n      \"address\": { \"line1\": \"123 Main St\", \"zip\": \"62704\" }\n    }\n  }'\n","lang":"shell"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"import os, requests\n\nAPI_KEY = os.environ[\"PARADISE_API_KEY\"]\nBASE = os.environ.get(\"PARADISE_BASE_URL\", \"https://api.dev.paradisegateway.net\")\nHEADERS = {\"Content-Type\": \"application/json\", \"APIKEY\": API_KEY}\n\nauth_resp = requests.post(f\"{BASE}/v1/transactions\", headers=HEADERS, json={\n    \"type\": \"card_auth\",\n    \"amount\": 4995,\n    \"card\": {\n        \"pan\": \"4111111111111111\",\n        \"expiry_month\": \"12\",\n        \"expiry_year\": \"2027\",\n        \"cvv\": \"123\",\n        \"cardholder_name\": \"Jane Smith\",\n        \"address\": {\"line1\": \"123 Main St\", \"zip\": \"62704\"},\n    },\n})\nauth = auth_resp.json()\ntxn_id = auth[\"id\"]\nprint(f\"Authorized: {txn_id} — state: {auth['transaction_state']}\")\n","lang":"python"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"JavaScript","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"const API_KEY = process.env.PARADISE_API_KEY;\nconst BASE = process.env.PARADISE_BASE_URL || \"https://api.dev.paradisegateway.net\";\nconst headers = { \"Content-Type\": \"application/json\", \"APIKEY\": API_KEY };\n\nconst authResp = await fetch(`${BASE}/v1/transactions`, {\n  method: \"POST\",\n  headers,\n  body: JSON.stringify({\n    type: \"card_auth\",\n    amount: 4995,\n    card: {\n      pan: \"4111111111111111\",\n      expiry_month: \"12\",\n      expiry_year: \"2027\",\n      cvv: \"123\",\n      cardholder_name: \"Jane Smith\",\n      address: { line1: \"123 Main St\", zip: \"62704\" },\n    },\n  }),\n});\nconst auth = await authResp.json();\nconsole.log(`Authorized: ${auth.id} — state: ${auth.transaction_state}`);\n","lang":"javascript"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"csharp","header":{"controls":{"copy":{}}},"source":"using var client = new HttpClient();\nvar baseUrl = Environment.GetEnvironmentVariable(\"PARADISE_BASE_URL\") ?? \"https://api.dev.paradisegateway.net\";\nclient.DefaultRequestHeaders.Add(\"APIKEY\", Environment.GetEnvironmentVariable(\"PARADISE_API_KEY\"));\n\nvar authResp = await client.PostAsJsonAsync($\"{baseUrl}/v1/transactions\", new {\n    type = \"card_auth\",\n    amount = 4995,\n    card = new {\n        pan = \"4111111111111111\",\n        expiry_month = \"12\",\n        expiry_year = \"2027\",\n        cvv = \"123\",\n        cardholder_name = \"Jane Smith\",\n        address = new { line1 = \"123 Main St\", zip = \"62704\" },\n    },\n});\nvar auth = await authResp.Content.ReadAsStringAsync();\nConsole.WriteLine(auth);\n","lang":"csharp"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Java","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"HttpClient client = HttpClient.newHttpClient();\nString baseUrl = System.getenv().getOrDefault(\"PARADISE_BASE_URL\", \"https://api.dev.paradisegateway.net\");\n\nHttpRequest authReq = HttpRequest.newBuilder()\n    .uri(URI.create(baseUrl + \"/v1/transactions\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"APIKEY\", System.getenv(\"PARADISE_API_KEY\"))\n    .POST(HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"type\": \"card_auth\",\n          \"amount\": 4995,\n          \"card\": {\n            \"pan\": \"4111111111111111\",\n            \"expiry_month\": \"12\",\n            \"expiry_year\": \"2027\",\n            \"cvv\": \"123\",\n            \"cardholder_name\": \"Jane Smith\",\n            \"address\": { \"line1\": \"123 Main St\", \"zip\": \"62704\" }\n          }\n        }\"\"\"))\n    .build();\nHttpResponse<String> authResp = client.send(authReq, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(authResp.body());\n","lang":"java"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Go","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"go","header":{"controls":{"copy":{}}},"source":"payload := `{\n  \"type\": \"card_auth\",\n  \"amount\": 4995,\n  \"card\": {\n    \"pan\": \"4111111111111111\",\n    \"expiry_month\": \"12\",\n    \"expiry_year\": \"2027\",\n    \"cvv\": \"123\",\n    \"cardholder_name\": \"Jane Smith\",\n    \"address\": {\"line1\": \"123 Main St\", \"zip\": \"62704\"}\n  }\n}`\nreq, _ := http.NewRequest(\"POST\", base+\"/v1/transactions\", strings.NewReader(payload))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nreq.Header.Set(\"APIKEY\", apiKey)\nresp, _ := http.DefaultClient.Do(req)\ndefer resp.Body.Close()\nbody, _ := io.ReadAll(resp.Body)\nfmt.Println(string(body))\n","lang":"go"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"PHP","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"php","header":{"controls":{"copy":{}}},"source":"$payload = json_encode([\n    \"type\" => \"card_auth\",\n    \"amount\" => 4995,\n    \"card\" => [\n        \"pan\" => \"4111111111111111\",\n        \"expiry_month\" => \"12\",\n        \"expiry_year\" => \"2027\",\n        \"cvv\" => \"123\",\n        \"cardholder_name\" => \"Jane Smith\",\n        \"address\" => [\"line1\" => \"123 Main St\", \"zip\" => \"62704\"],\n    ],\n]);\n$ch = curl_init(\"{$base}/v1/transactions\");\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_POST => true,\n    CURLOPT_HTTPHEADER => [\"Content-Type: application/json\", \"APIKEY: {$apiKey}\"],\n    CURLOPT_POSTFIELDS => $payload,\n]);\necho curl_exec($ch);\n","lang":"php"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Ruby","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ruby","header":{"controls":{"copy":{}}},"source":"uri = URI(\"#{base}/v1/transactions\")\nreq = Net::HTTP::Post.new(uri)\nreq[\"Content-Type\"] = \"application/json\"\nreq[\"APIKEY\"] = api_key\nreq.body = { type: \"card_auth\", amount: 4995, card: {\n  pan: \"4111111111111111\", expiry_month: \"12\", expiry_year: \"2027\",\n  cvv: \"123\", cardholder_name: \"Jane Smith\",\n  address: { line1: \"123 Main St\", zip: \"62704\" }\n} }.to_json\nres = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }\nputs res.body\n","lang":"ruby"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"authorization-response","__idx":5},"children":["Authorization response"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"TRANSACTION-01KEW32V6YNV11T33XGDR7TGWC\",\n  \"type\": \"card_auth\",\n  \"amount\": 4995,\n  \"transaction_state\": \"authorized\",\n  \"response_status\": \"approved\",\n  \"response_code\": \"00\",\n  \"avs_result_code\": \"Y\",\n  \"cvv_result\": \"M\",\n  \"correlation_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Save the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," — you need it for capture or cancel."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Check fraud signals"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Review ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["avs_result_code"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cvv_result"]}," before fulfilling. If AVS or CVV fails, consider canceling the authorization. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/security-compliance/fraud-protection"},"children":["Fraud prevention"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-2-capture","__idx":6},"children":["Step 2: Capture"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you are ready to charge (for example, when the order ships), capture the authorized amount."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"curl","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  https://api.dev.paradisegateway.net/v1/transactions/TRANSACTION-01KEW32V6YNV11T33XGDR7TGWC/capture \\\n  -H \"Content-Type: application/json\" \\\n  -H \"APIKEY: YOUR-API-KEY\" \\\n  -d '{ \"amount\": 4995 }'\n","lang":"shell"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"cap_resp = requests.post(\n    f\"{BASE}/v1/transactions/{txn_id}/capture\",\n    headers=HEADERS,\n    json={\"amount\": 4995},\n)\ncap = cap_resp.json()\nprint(f\"Captured: {cap['transaction_state']}\")\n","lang":"python"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"JavaScript","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"const capResp = await fetch(`${BASE}/v1/transactions/${auth.id}/capture`, {\n  method: \"POST\",\n  headers,\n  body: JSON.stringify({ amount: 4995 }),\n});\nconst cap = await capResp.json();\nconsole.log(`Captured: ${cap.transaction_state}`);\n","lang":"javascript"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"partial-capture","__idx":7},"children":["Partial capture"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To capture less than the authorized amount (for example, partial shipment), specify a smaller ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]},". The remaining hold is released."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  https://api.dev.paradisegateway.net/v1/transactions/TRANSACTION-01KEW32V6YNV11T33XGDR7TGWC/capture \\\n  -H \"Content-Type: application/json\" \\\n  -H \"APIKEY: YOUR-API-KEY\" \\\n  -d '{ \"amount\": 2500 }'\n","lang":"shell"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-3-handle-edge-cases","__idx":8},"children":["Step 3: Handle edge cases"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"cancel-before-capture","__idx":9},"children":["Cancel before capture"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the order is canceled before capture, void the authorization to release the hold."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  https://api.dev.paradisegateway.net/v1/transactions/TRANSACTION-01KEW32V6YNV11T33XGDR7TGWC/cancel \\\n  -H \"Content-Type: application/json\" \\\n  -H \"APIKEY: YOUR-API-KEY\"\n","lang":"shell"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"authorization-expired","__idx":10},"children":["Authorization expired"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Authorization holds typically expire after 7–10 days. If the hold expires before capture, you must create a new authorization."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"timing-rules","__idx":11},"children":["Timing rules"]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","diagramType":"mermaid","diagramSource":"gantt\n    title Auth/capture timeline\n    dateFormat X\n    axisFormat %s\n    section Authorization\n    Hold placed           : 0, 1\n    section Window\n    Capture window (7-10 days) : 1, 10\n    section Capture\n    Capture or cancel     : 10, 11\n","diagramHtml":"<svg id=\"diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1904 172\" style=\"max-width: 1904px;\" role=\"graphics-document document\" aria-roledescription=\"gantt\"><style>#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .error-icon{fill:#552222;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .error-text{fill:#552222;stroke:#552222;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .edge-thickness-normal{stroke-width:1px;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .edge-thickness-thick{stroke-width:3.5px;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .edge-pattern-solid{stroke-dasharray:0;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .edge-pattern-dashed{stroke-dasharray:3;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .edge-pattern-dotted{stroke-dasharray:2;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .marker{fill:#333333;stroke:#333333;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .marker.cross{stroke:#333333;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 svg{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 p{margin:0;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .mermaid-main-font{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .exclude-range{fill:#eeeeee;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .section{stroke:none;opacity:0.2;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .section0{fill:rgba(102, 102, 255, 0.49);}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .section2{fill:#fff400;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .section1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .section3{fill:white;opacity:0.2;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .sectionTitle0{fill:#333;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .sectionTitle1{fill:#333;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .sectionTitle2{fill:#333;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .sectionTitle3{fill:#333;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .sectionTitle{text-anchor:start;font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .grid .tick{stroke:lightgrey;opacity:0.8;shape-rendering:crispEdges;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .grid .tick text{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;fill:#333;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .grid path{stroke-width:0;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .today{fill:none;stroke:red;stroke-width:2px;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .task{stroke-width:2;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskText{text-anchor:middle;font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskTextOutsideRight{fill:black;text-anchor:start;font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskTextOutsideLeft{fill:black;text-anchor:end;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .task.clickable{cursor:pointer;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskText.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskText0,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskText1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskText2,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskText3{fill:white;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .task0,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .task1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .task2,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .task3{fill:#8a90dd;stroke:#534fbc;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskTextOutside0,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskTextOutside2{fill:black;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskTextOutside1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .taskTextOutside3{fill:black;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .active0,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .active1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .active2,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .active3{fill:#bfc7ff;stroke:#534fbc;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .activeText0,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .activeText1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .activeText2,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .activeText3{fill:black!important;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .done0,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .done1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .done2,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .done3{stroke:grey;fill:lightgrey;stroke-width:2;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneText0,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneText1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneText2,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneText3{fill:black!important;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneText0.taskTextOutsideLeft,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneText0.taskTextOutsideRight,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneText1.taskTextOutsideLeft,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneText1.taskTextOutsideRight,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneText2.taskTextOutsideLeft,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneText2.taskTextOutsideRight,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneText3.taskTextOutsideLeft,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneText3.taskTextOutsideRight{fill:black!important;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .crit0,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .crit1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .crit2,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .crit3{stroke:#ff8888;fill:red;stroke-width:2;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .activeCrit0,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .activeCrit1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .activeCrit2,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .activeCrit3{stroke:#ff8888;fill:#bfc7ff;stroke-width:2;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCrit0,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCrit1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCrit2,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCrit3{stroke:#ff8888;fill:lightgrey;stroke-width:2;cursor:pointer;shape-rendering:crispEdges;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .milestone{transform:rotate(45deg) scale(0.8,0.8);}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .milestoneText{font-style:italic;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCritText0,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCritText1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCritText2,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCritText3{fill:black!important;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCritText0.taskTextOutsideLeft,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCritText0.taskTextOutsideRight,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCritText1.taskTextOutsideLeft,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCritText1.taskTextOutsideRight,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCritText2.taskTextOutsideLeft,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCritText2.taskTextOutsideRight,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCritText3.taskTextOutsideLeft,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .doneCritText3.taskTextOutsideRight{fill:black!important;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .vert{stroke:navy;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .vertText{font-size:15px;text-anchor:middle;fill:navy!important;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .activeCritText0,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .activeCritText1,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .activeCritText2,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .activeCritText3{fill:black!important;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 .node .neo-node{stroke:#9370DB;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 [data-look=\"neo\"].node rect,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 [data-look=\"neo\"].cluster rect,#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}</style><g></g><g class=\"grid\" transform=\"translate(75, 122)\" fill=\"none\" font-size=\"10\" font-family=\"sans-serif\" text-anchor=\"middle\"><path class=\"domain\" stroke=\"currentColor\" d=\"M0.5,-87V0.5H1754.5V-87\"></path><g class=\"tick\" opacity=\"1\" transform=\"translate(0.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">0</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(159.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">1</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(319.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">2</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(478.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">3</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(638.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">4</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(797.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">5</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(957.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">6</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(1116.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">7</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(1276.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">8</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(1435.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">9</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(1595.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">10</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(1754.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">11</text></g></g><g><rect x=\"0\" y=\"48\" width=\"1866.5\" height=\"24\" class=\"section section0\"></rect><rect x=\"0\" y=\"72\" width=\"1866.5\" height=\"24\" class=\"section section1\"></rect><rect x=\"0\" y=\"96\" width=\"1866.5\" height=\"24\" class=\"section section2\"></rect></g><g><rect id=\"diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687-task1\" rx=\"3\" ry=\"3\" x=\"75\" y=\"50\" width=\"159\" height=\"20\" transform-origin=\"154.5px 60px\" class=\"task task0\"></rect><rect id=\"diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687-task2\" rx=\"3\" ry=\"3\" x=\"75\" y=\"74\" width=\"1595\" height=\"20\" transform-origin=\"872.5px 84px\" class=\"task task1\"></rect><rect id=\"diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687-task3\" rx=\"3\" ry=\"3\" x=\"77\" y=\"98\" width=\"1752\" height=\"20\" transform-origin=\"953px 108px\" class=\"task task2\"></rect><text id=\"diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687-task1-text\" font-size=\"11\" x=\"154.5\" y=\"63.5\" class=\"taskText taskText0  width-60.9375\">Hold placed           </text><text id=\"diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687-task2-text\" font-size=\"11\" x=\"872.5\" y=\"87.5\" class=\"taskText taskText1  width-141.828125\">Capture window (7-10 days) </text><text id=\"diagram-c948db0f162adc56e50324e9a0e0208e9531d4feffdd191cf664ba338befe687-task3-text\" font-size=\"11\" x=\"953\" y=\"111.5\" class=\"taskText taskText2  width-90.03125\">Capture or cancel     </text></g><g><text dy=\"0em\" x=\"10\" y=\"62\" font-size=\"11\" class=\"sectionTitle sectionTitle0\"><tspan alignment-baseline=\"central\" x=\"10\">Authorization</tspan></text><text dy=\"0em\" x=\"10\" y=\"86\" font-size=\"11\" class=\"sectionTitle sectionTitle1\"><tspan alignment-baseline=\"central\" x=\"10\">Window</tspan></text><text dy=\"0em\" x=\"10\" y=\"110\" font-size=\"11\" class=\"sectionTitle sectionTitle2\"><tspan alignment-baseline=\"central\" x=\"10\">Capture</tspan></text></g><g class=\"today\"><line x1=\"284725409447\" x2=\"284725409447\" y1=\"25\" y2=\"147\" class=\"today\"></line></g><text x=\"952\" y=\"25\" class=\"titleText\">Auth/capture timeline</text></svg>","diagramHtmlDark":"<svg id=\"diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1904 172\" style=\"max-width: 1904px;\" role=\"graphics-document document\" aria-roledescription=\"gantt\"><style>#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .error-icon{fill:#a44141;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .error-text{fill:#ddd;stroke:#ddd;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .edge-thickness-normal{stroke-width:1px;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .edge-thickness-thick{stroke-width:3.5px;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .edge-pattern-solid{stroke-dasharray:0;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .edge-pattern-dashed{stroke-dasharray:3;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .edge-pattern-dotted{stroke-dasharray:2;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .marker{fill:lightgrey;stroke:lightgrey;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .marker.cross{stroke:lightgrey;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f svg{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f p{margin:0;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .mermaid-main-font{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .exclude-range{fill:hsl(52.9411764706, 28.813559322%, 48.431372549%);}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .section{stroke:none;opacity:0.2;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .section0{fill:hsl(52.9411764706, 28.813559322%, 58.431372549%);}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .section2{fill:#EAE8D9;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .section1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .section3{fill:#333;opacity:0.2;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .sectionTitle0{fill:#F9FFFE;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .sectionTitle1{fill:#F9FFFE;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .sectionTitle2{fill:#F9FFFE;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .sectionTitle3{fill:#F9FFFE;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .sectionTitle{text-anchor:start;font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .grid .tick{stroke:lightgrey;opacity:0.8;shape-rendering:crispEdges;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .grid .tick text{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;fill:#ccc;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .grid path{stroke-width:0;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .today{fill:none;stroke:#DB5757;stroke-width:2px;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .task{stroke-width:2;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskText{text-anchor:middle;font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskTextOutsideRight{fill:#2c2c2c;text-anchor:start;font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskTextOutsideLeft{fill:#2c2c2c;text-anchor:end;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .task.clickable{cursor:pointer;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskText.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskText0,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskText1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskText2,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskText3{fill:hsl(28.5714285714, 17.3553719008%, 86.2745098039%);}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .task0,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .task1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .task2,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .task3{fill:hsl(180, 1.5873015873%, 35.3529411765%);stroke:#ffffff;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskTextOutside0,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskTextOutside2{fill:lightgrey;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskTextOutside1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .taskTextOutside3{fill:lightgrey;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .active0,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .active1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .active2,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .active3{fill:#81B1DB;stroke:#ffffff;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .activeText0,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .activeText1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .activeText2,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .activeText3{fill:#2c2c2c!important;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .done0,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .done1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .done2,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .done3{stroke:grey;fill:lightgrey;stroke-width:2;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneText0,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneText1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneText2,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneText3{fill:#2c2c2c!important;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneText0.taskTextOutsideLeft,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneText0.taskTextOutsideRight,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneText1.taskTextOutsideLeft,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneText1.taskTextOutsideRight,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneText2.taskTextOutsideLeft,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneText2.taskTextOutsideRight,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneText3.taskTextOutsideLeft,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneText3.taskTextOutsideRight{fill:lightgrey!important;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .crit0,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .crit1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .crit2,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .crit3{stroke:#E83737;fill:#E83737;stroke-width:2;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .activeCrit0,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .activeCrit1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .activeCrit2,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .activeCrit3{stroke:#E83737;fill:#81B1DB;stroke-width:2;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCrit0,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCrit1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCrit2,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCrit3{stroke:#E83737;fill:lightgrey;stroke-width:2;cursor:pointer;shape-rendering:crispEdges;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .milestone{transform:rotate(45deg) scale(0.8,0.8);}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .milestoneText{font-style:italic;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCritText0,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCritText1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCritText2,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCritText3{fill:#2c2c2c!important;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCritText0.taskTextOutsideLeft,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCritText0.taskTextOutsideRight,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCritText1.taskTextOutsideLeft,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCritText1.taskTextOutsideRight,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCritText2.taskTextOutsideLeft,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCritText2.taskTextOutsideRight,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCritText3.taskTextOutsideLeft,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .doneCritText3.taskTextOutsideRight{fill:lightgrey!important;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .vert{stroke:#00BFFF;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .vertText{font-size:15px;text-anchor:middle;fill:#00BFFF!important;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .activeCritText0,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .activeCritText1,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .activeCritText2,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .activeCritText3{fill:#2c2c2c!important;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .titleText{text-anchor:middle;font-size:18px;fill:#F9FFFE;font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f .node .neo-node{stroke:#ccc;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f [data-look=\"neo\"].node rect,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f [data-look=\"neo\"].cluster rect,#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f [data-look=\"neo\"].node polygon{stroke:url(#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f [data-look=\"neo\"].node path{stroke:url(#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f-gradient);stroke-width:1px;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f [data-look=\"neo\"].node circle{stroke:url(#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f :root{--mermaid-font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f :root{--mermaid-font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}</style><g></g><g class=\"grid\" transform=\"translate(75, 122)\" fill=\"none\" font-size=\"10\" font-family=\"sans-serif\" text-anchor=\"middle\"><path class=\"domain\" stroke=\"currentColor\" d=\"M0.5,-87V0.5H1754.5V-87\"></path><g class=\"tick\" opacity=\"1\" transform=\"translate(0.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">0</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(159.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">1</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(319.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">2</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(478.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">3</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(638.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">4</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(797.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">5</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(957.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">6</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(1116.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">7</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(1276.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">8</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(1435.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">9</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(1595.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">10</text></g><g class=\"tick\" opacity=\"1\" transform=\"translate(1754.5,0)\"><line stroke=\"currentColor\" y2=\"-87\"></line><text fill=\"#000\" y=\"3\" dy=\"1em\" stroke=\"none\" font-size=\"10\" style=\"text-anchor: middle;\">11</text></g></g><g><rect x=\"0\" y=\"48\" width=\"1866.5\" height=\"24\" class=\"section section0\"></rect><rect x=\"0\" y=\"72\" width=\"1866.5\" height=\"24\" class=\"section section1\"></rect><rect x=\"0\" y=\"96\" width=\"1866.5\" height=\"24\" class=\"section section2\"></rect></g><g><rect id=\"diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f-task1\" rx=\"3\" ry=\"3\" x=\"75\" y=\"50\" width=\"159\" height=\"20\" transform-origin=\"154.5px 60px\" class=\"task task0\"></rect><rect id=\"diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f-task2\" rx=\"3\" ry=\"3\" x=\"75\" y=\"74\" width=\"1595\" height=\"20\" transform-origin=\"872.5px 84px\" class=\"task task1\"></rect><rect id=\"diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f-task3\" rx=\"3\" ry=\"3\" x=\"77\" y=\"98\" width=\"1752\" height=\"20\" transform-origin=\"953px 108px\" class=\"task task2\"></rect><text id=\"diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f-task1-text\" font-size=\"11\" x=\"154.5\" y=\"63.5\" class=\"taskText taskText0  width-60.9375\">Hold placed           </text><text id=\"diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f-task2-text\" font-size=\"11\" x=\"872.5\" y=\"87.5\" class=\"taskText taskText1  width-141.828125\">Capture window (7-10 days) </text><text id=\"diagram-4dfd929b73651be3a361605b6d7a57d7c3ca7cbc0a62390f4f9946d75b72819f-task3-text\" font-size=\"11\" x=\"953\" y=\"111.5\" class=\"taskText taskText2  width-90.03125\">Capture or cancel     </text></g><g><text dy=\"0em\" x=\"10\" y=\"62\" font-size=\"11\" class=\"sectionTitle sectionTitle0\"><tspan alignment-baseline=\"central\" x=\"10\">Authorization</tspan></text><text dy=\"0em\" x=\"10\" y=\"86\" font-size=\"11\" class=\"sectionTitle sectionTitle1\"><tspan alignment-baseline=\"central\" x=\"10\">Window</tspan></text><text dy=\"0em\" x=\"10\" y=\"110\" font-size=\"11\" class=\"sectionTitle sectionTitle2\"><tspan alignment-baseline=\"central\" x=\"10\">Capture</tspan></text></g><g class=\"today\"><line x1=\"284725409452\" x2=\"284725409452\" y1=\"25\" y2=\"147\" class=\"today\"></line></g><text x=\"952\" y=\"25\" class=\"titleText\">Auth/capture timeline</text></svg>"},"children":["gantt\n    title Auth/capture timeline\n    dateFormat X\n    axisFormat %s\n    section Authorization\n    Hold placed           : 0, 1\n    section Window\n    Capture window (7-10 days) : 1, 10\n    section Capture\n    Capture or cancel     : 10, 11\n"]},{"$$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":{"align":"left","data-label":"Event"},"children":["Event"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Timing"},"children":["Timing"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Authorization created"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Immediate"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Hold placed on card"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Immediate"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Capture window"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["7–10 days (processor-dependent)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Settlement after capture"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Next batch close"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"best-practices","__idx":12},"children":["Best practices"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Capture promptly"]}," — don't let authorization holds expire. Capture as soon as you're ready."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Check AVS/CVV"]}," — review fraud signals on the auth response before fulfilling."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use metadata"]}," — attach your order ID to the transaction for reconciliation."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Include idempotency keys"]}," — safe to retry if the capture request times out."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Log ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["correlation_id"]}]}," — include it in your order records for support requests."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"further-reading","__idx":13},"children":["Further reading"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/tutorials/payment-cookbook/auth-capture-ecommerce"},"children":["Auth/capture for e-commerce"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/how-tos/process-payments/handle-partial-capture"},"children":["Handle partial captures"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/how-tos/manage-transactions/cancel-auth"},"children":["Cancel an authorized transaction"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/transactions/sale-vs-auth"},"children":["Sale vs. authorization"]}]}]}]},"headings":[{"value":"Recipe: Authorize and capture","id":"recipe-authorize-and-capture","depth":1},{"value":"When to use two-step payments","id":"when-to-use-two-step-payments","depth":2},{"value":"Payment state lifecycle","id":"payment-state-lifecycle","depth":2},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"Step 1: Authorize","id":"step-1-authorize","depth":2},{"value":"Authorization response","id":"authorization-response","depth":3},{"value":"Step 2: Capture","id":"step-2-capture","depth":2},{"value":"Partial capture","id":"partial-capture","depth":3},{"value":"Step 3: Handle edge cases","id":"step-3-handle-edge-cases","depth":2},{"value":"Cancel before capture","id":"cancel-before-capture","depth":3},{"value":"Authorization expired","id":"authorization-expired","depth":3},{"value":"Timing rules","id":"timing-rules","depth":2},{"value":"Best practices","id":"best-practices","depth":2},{"value":"Further reading","id":"further-reading","depth":2}],"frontmatter":{"title":"Recipe: Authorize and capture","shortTitle":"Authorize and capture","intro":"Walk through the two-step payment flow — authorize to hold funds, then capture when ready to charge. Includes the full state lifecycle, edge cases, and timing considerations.","type":"tutorial","seo":{"title":""}},"lastModified":"2026-06-05T02:46:44.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/tutorials/payment-cookbook/authorize-and-capture","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}