{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["img"]},"type":"markdown"},"seo":{"title":"Webhooks","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":"webhooks","__idx":0},"children":["Webhooks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["ChaChing Webhooks allow your system to receive ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["real-time notifications"]}," when events occur in your ChaChing account (e.g., customer updates, payments, subscriptions)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Webhooks are designed for clients using the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["public API"]},", which allows them to react to system changes without polling."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"how-webhooks-work","__idx":1},"children":["How Webhooks Work"]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","diagramType":"mermaid","diagramSource":"graph TD;\n  A[\"Event occurs in ChaChing (e.g. invoice.paid)\"] --> B[\"Generate event notification\"];\n  B --> C[\"Find active webhook destinations\"];\n  C --> D[\"Send HTTP POST request to webhook endpoint\"];\n  D --> E[\"Client processes request\"];\n  E --> F{\"Response is HTTP 2xx?\"};\n\n  F -- Yes --> G[\"Mark delivery as successful\"];\n  F -- No --> H[\"Retry delivery (according to retry policy)\"];\n  H --> I{\"Max retries reached?\"};\n\n  I -- No --> D;\n  I -- Yes --> J[\"Stop retries - Mark as failed\"];\n","diagramHtml":"<svg id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"flowchart\" style=\"max-width: 668.5px;\" viewBox=\"0 0 668.5 1418.03125\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4{font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .error-icon{fill:#552222;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .error-text{fill:#552222;stroke:#552222;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .edge-thickness-normal{stroke-width:1px;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .edge-thickness-thick{stroke-width:3.5px;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .edge-pattern-solid{stroke-dasharray:0;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .edge-pattern-dashed{stroke-dasharray:3;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .edge-pattern-dotted{stroke-dasharray:2;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .marker{fill:#333333;stroke:#333333;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .marker.cross{stroke:#333333;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 svg{font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:16px;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 p{margin:0;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .label{font-family:\"Redocly Mermaid Sans\",sans-serif;color:#333;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .cluster-label text{fill:#333;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .cluster-label span{color:#333;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .cluster-label span p{background-color:transparent;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .label text,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 span{fill:#333;color:#333;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .node rect,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .node circle,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .node ellipse,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .node polygon,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .rough-node .label text,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .node .label text,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .image-shape .label,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .icon-shape .label{text-anchor:middle;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .rough-node .label,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .node .label,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .image-shape .label,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .icon-shape .label{text-align:center;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .node.clickable{cursor:pointer;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .arrowheadPath{fill:#333333;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .edgePath .path{stroke:#333333;stroke-width:1px;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .flowchart-link{stroke:#333333;fill:none;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .cluster text{fill:#333;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .cluster span{color:#333;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 rect.text{fill:none;stroke-width:0;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .icon-shape,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .icon-shape p,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .icon-shape .label rect,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 .node .neo-node{stroke:#9370DB;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 [data-look=\"neo\"].node rect,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 [data-look=\"neo\"].cluster rect,#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",sans-serif;}#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",sans-serif;}</style><g><marker id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_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=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_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=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-pointEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"11.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"10.5\" markerHeight=\"14\" orient=\"auto\"><path d=\"M 0 0 L 11.5 7 L 0 14 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-pointStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"1\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11.5\" markerHeight=\"14\" orient=\"auto\"><polygon points=\"0,7 11.5,14 11.5,0\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></polygon></marker><marker id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_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=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_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=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-circleEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refY=\"5\" refX=\"12.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-circleStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-2\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_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=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_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><marker id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-crossEnd-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"17.7\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5;\"></path></marker><marker id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-crossStart-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"-3.5\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"><path d=\"M375.5,86L375.5,90.167C375.5,94.333,375.5,102.667,375.5,110.333C375.5,118,375.5,125,375.5,128.5L375.5,132\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-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=\"W3sieCI6Mzc1LjUsInkiOjg2fSx7IngiOjM3NS41LCJ5IjoxMTF9LHsieCI6Mzc1LjUsInkiOjEzNn1d\" data-look=\"classic\" marker-end=\"url(#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-pointEnd)\"></path><path d=\"M375.5,214L375.5,218.167C375.5,222.333,375.5,230.667,375.5,238.333C375.5,246,375.5,253,375.5,256.5L375.5,260\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-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=\"W3sieCI6Mzc1LjUsInkiOjIxNH0seyJ4IjozNzUuNSwieSI6MjM5fSx7IngiOjM3NS41LCJ5IjoyNjR9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-pointEnd)\"></path><path d=\"M375.5,342L375.5,346.167C375.5,350.333,375.5,358.667,375.5,366.333C375.5,374,375.5,381,375.5,384.5L375.5,388\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-L_C_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_C_D_0\" data-points=\"W3sieCI6Mzc1LjUsInkiOjM0Mn0seyJ4IjozNzUuNSwieSI6MzY3fSx7IngiOjM3NS41LCJ5IjozOTJ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-pointEnd)\"></path><path d=\"M325.227,470L319.855,474.167C314.484,478.333,303.742,486.667,298.371,494.333C293,502,293,509,293,512.5L293,516\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-L_D_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_D_E_0\" data-points=\"W3sieCI6MzI1LjIyNjU2MjUsInkiOjQ3MH0seyJ4IjoyOTMsInkiOjQ5NX0seyJ4IjoyOTMsInkiOjUyMH1d\" data-look=\"classic\" marker-end=\"url(#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-pointEnd)\"></path><path d=\"M293,574L293,578.167C293,582.333,293,590.667,293,598.333C293,606,293,613,293,616.5L293,620\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-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=\"W3sieCI6MjkzLCJ5Ijo1NzR9LHsieCI6MjkzLCJ5Ijo1OTl9LHsieCI6MjkzLCJ5Ijo2MjR9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-pointEnd)\"></path><path d=\"M236.089,789.886L219.741,805.538C203.393,821.189,170.696,852.493,154.348,873.645C138,894.797,138,905.797,138,911.297L138,916.797\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-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=\"W3sieCI6MjM2LjA4ODgzNzM4ODk1MzI3LCJ5Ijo3ODkuODg1NzEyMzg4OTUzM30seyJ4IjoxMzgsInkiOjg4My43OTY4NzV9LHsieCI6MTM4LCJ5Ijo5MjAuNzk2ODc1fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-pointEnd)\"></path><path d=\"M349.911,789.886L366.259,805.538C382.607,821.189,415.304,852.493,431.652,873.645C448,894.797,448,905.797,448,911.297L448,916.797\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-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=\"W3sieCI6MzQ5LjkxMTE2MjYxMTA0NjczLCJ5Ijo3ODkuODg1NzEyMzg4OTUzM30seyJ4Ijo0NDgsInkiOjg4My43OTY4NzV9LHsieCI6NDQ4LCJ5Ijo5MjAuNzk2ODc1fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-pointEnd)\"></path><path d=\"M448,998.797L448,1002.964C448,1007.13,448,1015.464,454.61,1030.016C461.221,1044.569,474.442,1065.34,481.052,1075.726L487.663,1086.112\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-L_H_I_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_H_I_0\" data-points=\"W3sieCI6NDQ4LCJ5Ijo5OTguNzk2ODc1fSx7IngiOjQ0OCwieSI6MTAyMy43OTY4NzV9LHsieCI6NDg5LjgxMDYxNDcxMDMyMzc2LCJ5IjoxMDg5LjQ4NjI2MDI4OTY3NjJ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-pointEnd)\"></path><path d=\"M571.189,1089.486L578.158,1078.538C585.126,1067.59,599.063,1045.693,606.032,1024.078C613,1002.464,613,981.13,613,957.797C613,934.464,613,909.13,613,871.73C613,834.331,613,784.865,613,737.398C613,689.932,613,644.466,613,613.066C613,581.667,613,564.333,613,547C613,529.667,613,512.333,595.727,499.012C578.454,485.691,543.908,476.382,526.635,471.727L509.362,467.072\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-L_I_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_I_D_0\" data-points=\"W3sieCI6NTcxLjE4OTM4NTI4OTY3NjIsInkiOjEwODkuNDg2MjYwMjg5Njc2Mn0seyJ4Ijo2MTMsInkiOjEwMjMuNzk2ODc1fSx7IngiOjYxMywieSI6OTU5Ljc5Njg3NX0seyJ4Ijo2MTMsInkiOjg4My43OTY4NzV9LHsieCI6NjEzLCJ5Ijo3MzUuMzk4NDM3NX0seyJ4Ijo2MTMsInkiOjU5OX0seyJ4Ijo2MTMsInkiOjU0N30seyJ4Ijo2MTMsInkiOjQ5NX0seyJ4Ijo1MDUuNSwieSI6NDY2LjAzMTU3ODk0NzM2ODR9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_flowchart-v2-pointEnd)\"></path><path d=\"M530.5,1258.031L530.5,1264.198C530.5,1270.365,530.5,1282.698,530.5,1294.365C530.5,1306.031,530.5,1317.031,530.5,1322.531L530.5,1328.031\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-L_I_J_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_I_J_0\" data-points=\"W3sieCI6NTMwLjUsInkiOjEyNTguMDMxMjV9LHsieCI6NTMwLjUsInkiOjEyOTUuMDMxMjV9LHsieCI6NTMwLjUsInkiOjEzMzIuMDMxMjV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4_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_C_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_D_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_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(138, 883.796875)\"><g class=\"label\" data-id=\"L_F_G_0\" transform=\"translate(-12.390625, -12)\"><foreignObject width=\"24.78125\" 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(448, 883.796875)\"><g class=\"label\" data-id=\"L_F_H_0\" transform=\"translate(-10.8671875, -12)\"><foreignObject width=\"21.734375\" 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\"><g class=\"label\" data-id=\"L_H_I_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(613, 735.3984375)\"><g class=\"label\" data-id=\"L_I_D_0\" transform=\"translate(-10.8671875, -12)\"><foreignObject width=\"21.734375\" 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(530.5, 1295.03125)\"><g class=\"label\" data-id=\"L_I_J_0\" transform=\"translate(-12.390625, -12)\"><foreignObject width=\"24.78125\" 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><g class=\"nodes\"><g class=\"node default\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-flowchart-A-0\" data-look=\"classic\" transform=\"translate(375.5, 47)\"><rect class=\"basic label-container\" style=\"\" 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>Event occurs in ChaChing (e.g. invoice.paid)</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-flowchart-B-1\" data-look=\"classic\" transform=\"translate(375.5, 175)\"><rect class=\"basic label-container\" style=\"\" 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>Generate event notification</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-flowchart-C-3\" data-look=\"classic\" transform=\"translate(375.5, 303)\"><rect class=\"basic label-container\" style=\"\" 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>Find active webhook destinations</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-flowchart-D-5\" data-look=\"classic\" transform=\"translate(375.5, 431)\"><rect class=\"basic label-container\" style=\"\" 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>Send HTTP POST request to webhook endpoint</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-flowchart-E-7\" data-look=\"classic\" transform=\"translate(293, 547)\"><rect class=\"basic label-container\" style=\"\" x=\"-121.0859375\" y=\"-27\" width=\"242.171875\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-91.0859375, -12)\"><rect></rect><foreignObject width=\"182.171875\" 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>Client processes request</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-flowchart-F-9\" data-look=\"classic\" transform=\"translate(293, 735.3984375)\"><polygon points=\"111.3984375,0 222.796875,-111.3984375 111.3984375,-222.796875 0,-111.3984375\" class=\"label-container\" transform=\"translate(-110.8984375, 111.3984375)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-84.3984375, -12)\"><rect></rect><foreignObject width=\"168.796875\" 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>Response is HTTP 2xx?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-flowchart-G-11\" data-look=\"classic\" transform=\"translate(138, 959.796875)\"><rect class=\"basic label-container\" style=\"\" 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>Mark delivery as successful</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-flowchart-H-13\" data-look=\"classic\" transform=\"translate(448, 959.796875)\"><rect class=\"basic label-container\" style=\"\" 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>Retry delivery (according to retry policy)</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-flowchart-I-15\" data-look=\"classic\" transform=\"translate(530.5, 1153.4140625)\"><polygon points=\"104.6171875,0 209.234375,-104.6171875 104.6171875,-209.234375 0,-104.6171875\" class=\"label-container\" transform=\"translate(-104.1171875, 104.6171875)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-77.6171875, -12)\"><rect></rect><foreignObject width=\"155.234375\" 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>Max retries reached?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-flowchart-J-19\" data-look=\"classic\" transform=\"translate(530.5, 1371.03125)\"><rect class=\"basic label-container\" style=\"\" 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>Stop retries - Mark as failed</p></span></div></foreignObject></g></g></g></g></g><defs><filter id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs><defs><filter id=\"diagram-fba7b44acfb52207322ecce0505fda8109fb7fb7951f168c8112ef159405c6d4-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs></svg>","diagramHtmlDark":"<svg id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"flowchart\" style=\"max-width: 668.5px;\" viewBox=\"0 0 668.5 1418.03125\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729{font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .error-icon{fill:#a44141;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .error-text{fill:#ddd;stroke:#ddd;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .edge-thickness-normal{stroke-width:1px;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .edge-thickness-thick{stroke-width:3.5px;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .edge-pattern-solid{stroke-dasharray:0;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .edge-pattern-dashed{stroke-dasharray:3;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .edge-pattern-dotted{stroke-dasharray:2;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .marker{fill:lightgrey;stroke:lightgrey;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .marker.cross{stroke:lightgrey;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 svg{font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:16px;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 p{margin:0;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .label{font-family:\"Redocly Mermaid Sans\",sans-serif;color:#ccc;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .cluster-label text{fill:#F9FFFE;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .cluster-label span{color:#F9FFFE;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .cluster-label span p{background-color:transparent;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .label text,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 span{fill:#ccc;color:#ccc;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .node rect,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .node circle,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .node ellipse,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .node polygon,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .rough-node .label text,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .node .label text,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .image-shape .label,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .icon-shape .label{text-anchor:middle;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .rough-node .label,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .node .label,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .image-shape .label,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .icon-shape .label{text-align:center;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .node.clickable{cursor:pointer;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .arrowheadPath{fill:lightgrey;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .edgePath .path{stroke:lightgrey;stroke-width:1px;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .flowchart-link{stroke:lightgrey;fill:none;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .cluster text{fill:#F9FFFE;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .cluster span{color:#F9FFFE;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 rect.text{fill:none;stroke-width:0;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .icon-shape,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .icon-shape p,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .icon-shape .label rect,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 .node .neo-node{stroke:#ccc;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 [data-look=\"neo\"].node rect,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 [data-look=\"neo\"].cluster rect,#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 [data-look=\"neo\"].node polygon{stroke:url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 [data-look=\"neo\"].node path{stroke:url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-gradient);stroke-width:1px;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 [data-look=\"neo\"].node circle{stroke:url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",sans-serif;}#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",sans-serif;}</style><g><marker id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_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=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_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=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-pointEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"11.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"10.5\" markerHeight=\"14\" orient=\"auto\"><path d=\"M 0 0 L 11.5 7 L 0 14 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-pointStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"1\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11.5\" markerHeight=\"14\" orient=\"auto\"><polygon points=\"0,7 11.5,14 11.5,0\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></polygon></marker><marker id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_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=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_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=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-circleEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refY=\"5\" refX=\"12.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-circleStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-2\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_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=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_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><marker id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-crossEnd-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"17.7\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5;\"></path></marker><marker id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-crossStart-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"-3.5\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"><path d=\"M375.5,86L375.5,90.167C375.5,94.333,375.5,102.667,375.5,110.333C375.5,118,375.5,125,375.5,128.5L375.5,132\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-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=\"W3sieCI6Mzc1LjUsInkiOjg2fSx7IngiOjM3NS41LCJ5IjoxMTF9LHsieCI6Mzc1LjUsInkiOjEzNn1d\" data-look=\"classic\" marker-end=\"url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-pointEnd)\"></path><path d=\"M375.5,214L375.5,218.167C375.5,222.333,375.5,230.667,375.5,238.333C375.5,246,375.5,253,375.5,256.5L375.5,260\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-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=\"W3sieCI6Mzc1LjUsInkiOjIxNH0seyJ4IjozNzUuNSwieSI6MjM5fSx7IngiOjM3NS41LCJ5IjoyNjR9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-pointEnd)\"></path><path d=\"M375.5,342L375.5,346.167C375.5,350.333,375.5,358.667,375.5,366.333C375.5,374,375.5,381,375.5,384.5L375.5,388\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-L_C_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_C_D_0\" data-points=\"W3sieCI6Mzc1LjUsInkiOjM0Mn0seyJ4IjozNzUuNSwieSI6MzY3fSx7IngiOjM3NS41LCJ5IjozOTJ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-pointEnd)\"></path><path d=\"M325.227,470L319.855,474.167C314.484,478.333,303.742,486.667,298.371,494.333C293,502,293,509,293,512.5L293,516\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-L_D_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_D_E_0\" data-points=\"W3sieCI6MzI1LjIyNjU2MjUsInkiOjQ3MH0seyJ4IjoyOTMsInkiOjQ5NX0seyJ4IjoyOTMsInkiOjUyMH1d\" data-look=\"classic\" marker-end=\"url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-pointEnd)\"></path><path d=\"M293,574L293,578.167C293,582.333,293,590.667,293,598.333C293,606,293,613,293,616.5L293,620\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-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=\"W3sieCI6MjkzLCJ5Ijo1NzR9LHsieCI6MjkzLCJ5Ijo1OTl9LHsieCI6MjkzLCJ5Ijo2MjR9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-pointEnd)\"></path><path d=\"M236.089,789.886L219.741,805.538C203.393,821.189,170.696,852.493,154.348,873.645C138,894.797,138,905.797,138,911.297L138,916.797\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-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=\"W3sieCI6MjM2LjA4ODgzNzM4ODk1MzI3LCJ5Ijo3ODkuODg1NzEyMzg4OTUzM30seyJ4IjoxMzgsInkiOjg4My43OTY4NzV9LHsieCI6MTM4LCJ5Ijo5MjAuNzk2ODc1fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-pointEnd)\"></path><path d=\"M349.911,789.886L366.259,805.538C382.607,821.189,415.304,852.493,431.652,873.645C448,894.797,448,905.797,448,911.297L448,916.797\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-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=\"W3sieCI6MzQ5LjkxMTE2MjYxMTA0NjczLCJ5Ijo3ODkuODg1NzEyMzg4OTUzM30seyJ4Ijo0NDgsInkiOjg4My43OTY4NzV9LHsieCI6NDQ4LCJ5Ijo5MjAuNzk2ODc1fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-pointEnd)\"></path><path d=\"M448,998.797L448,1002.964C448,1007.13,448,1015.464,454.61,1030.016C461.221,1044.569,474.442,1065.34,481.052,1075.726L487.663,1086.112\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-L_H_I_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_H_I_0\" data-points=\"W3sieCI6NDQ4LCJ5Ijo5OTguNzk2ODc1fSx7IngiOjQ0OCwieSI6MTAyMy43OTY4NzV9LHsieCI6NDg5LjgxMDYxNDcxMDMyMzc2LCJ5IjoxMDg5LjQ4NjI2MDI4OTY3NjJ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-pointEnd)\"></path><path d=\"M571.189,1089.486L578.158,1078.538C585.126,1067.59,599.063,1045.693,606.032,1024.078C613,1002.464,613,981.13,613,957.797C613,934.464,613,909.13,613,871.73C613,834.331,613,784.865,613,737.398C613,689.932,613,644.466,613,613.066C613,581.667,613,564.333,613,547C613,529.667,613,512.333,595.727,499.012C578.454,485.691,543.908,476.382,526.635,471.727L509.362,467.072\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-L_I_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_I_D_0\" data-points=\"W3sieCI6NTcxLjE4OTM4NTI4OTY3NjIsInkiOjEwODkuNDg2MjYwMjg5Njc2Mn0seyJ4Ijo2MTMsInkiOjEwMjMuNzk2ODc1fSx7IngiOjYxMywieSI6OTU5Ljc5Njg3NX0seyJ4Ijo2MTMsInkiOjg4My43OTY4NzV9LHsieCI6NjEzLCJ5Ijo3MzUuMzk4NDM3NX0seyJ4Ijo2MTMsInkiOjU5OX0seyJ4Ijo2MTMsInkiOjU0N30seyJ4Ijo2MTMsInkiOjQ5NX0seyJ4Ijo1MDUuNSwieSI6NDY2LjAzMTU3ODk0NzM2ODR9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_flowchart-v2-pointEnd)\"></path><path d=\"M530.5,1258.031L530.5,1264.198C530.5,1270.365,530.5,1282.698,530.5,1294.365C530.5,1306.031,530.5,1317.031,530.5,1322.531L530.5,1328.031\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-L_I_J_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_I_J_0\" data-points=\"W3sieCI6NTMwLjUsInkiOjEyNTguMDMxMjV9LHsieCI6NTMwLjUsInkiOjEyOTUuMDMxMjV9LHsieCI6NTMwLjUsInkiOjEzMzIuMDMxMjV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729_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_C_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_D_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_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(138, 883.796875)\"><g class=\"label\" data-id=\"L_F_G_0\" transform=\"translate(-12.390625, -12)\"><foreignObject width=\"24.78125\" 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(448, 883.796875)\"><g class=\"label\" data-id=\"L_F_H_0\" transform=\"translate(-10.8671875, -12)\"><foreignObject width=\"21.734375\" 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\"><g class=\"label\" data-id=\"L_H_I_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(613, 735.3984375)\"><g class=\"label\" data-id=\"L_I_D_0\" transform=\"translate(-10.8671875, -12)\"><foreignObject width=\"21.734375\" 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(530.5, 1295.03125)\"><g class=\"label\" data-id=\"L_I_J_0\" transform=\"translate(-12.390625, -12)\"><foreignObject width=\"24.78125\" 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><g class=\"nodes\"><g class=\"node default\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-flowchart-A-0\" data-look=\"classic\" transform=\"translate(375.5, 47)\"><rect class=\"basic label-container\" style=\"\" 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>Event occurs in ChaChing (e.g. invoice.paid)</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-flowchart-B-1\" data-look=\"classic\" transform=\"translate(375.5, 175)\"><rect class=\"basic label-container\" style=\"\" 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>Generate event notification</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-flowchart-C-3\" data-look=\"classic\" transform=\"translate(375.5, 303)\"><rect class=\"basic label-container\" style=\"\" 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>Find active webhook destinations</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-flowchart-D-5\" data-look=\"classic\" transform=\"translate(375.5, 431)\"><rect class=\"basic label-container\" style=\"\" 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>Send HTTP POST request to webhook endpoint</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-flowchart-E-7\" data-look=\"classic\" transform=\"translate(293, 547)\"><rect class=\"basic label-container\" style=\"\" x=\"-121.0859375\" y=\"-27\" width=\"242.171875\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-91.0859375, -12)\"><rect></rect><foreignObject width=\"182.171875\" 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>Client processes request</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-flowchart-F-9\" data-look=\"classic\" transform=\"translate(293, 735.3984375)\"><polygon points=\"111.3984375,0 222.796875,-111.3984375 111.3984375,-222.796875 0,-111.3984375\" class=\"label-container\" transform=\"translate(-110.8984375, 111.3984375)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-84.3984375, -12)\"><rect></rect><foreignObject width=\"168.796875\" 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>Response is HTTP 2xx?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-flowchart-G-11\" data-look=\"classic\" transform=\"translate(138, 959.796875)\"><rect class=\"basic label-container\" style=\"\" 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>Mark delivery as successful</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-flowchart-H-13\" data-look=\"classic\" transform=\"translate(448, 959.796875)\"><rect class=\"basic label-container\" style=\"\" 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>Retry delivery (according to retry policy)</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-flowchart-I-15\" data-look=\"classic\" transform=\"translate(530.5, 1153.4140625)\"><polygon points=\"104.6171875,0 209.234375,-104.6171875 104.6171875,-209.234375 0,-104.6171875\" class=\"label-container\" transform=\"translate(-104.1171875, 104.6171875)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-77.6171875, -12)\"><rect></rect><foreignObject width=\"155.234375\" 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>Max retries reached?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-flowchart-J-19\" data-look=\"classic\" transform=\"translate(530.5, 1371.03125)\"><rect class=\"basic label-container\" style=\"\" 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>Stop retries - Mark as failed</p></span></div></foreignObject></g></g></g></g></g><defs><filter id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><defs><filter id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><linearGradient id=\"diagram-858b90190d66b00079c0b3cca6058c3c8fb5f157beb446f7c29ef2b95facd729-gradient\" gradientUnits=\"objectBoundingBox\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\"><stop offset=\"0%\" stop-color=\"#cccccc\" stop-opacity=\"1\"></stop><stop offset=\"100%\" stop-color=\"hsl(180, 0%, 18.3529411765%)\" stop-opacity=\"1\"></stop></linearGradient></svg>"},"children":["graph TD;\n  A[\"Event occurs in ChaChing (e.g. invoice.paid)\"] --> B[\"Generate event notification\"];\n  B --> C[\"Find active webhook destinations\"];\n  C --> D[\"Send HTTP POST request to webhook endpoint\"];\n  D --> E[\"Client processes request\"];\n  E --> F{\"Response is HTTP 2xx?\"};\n\n  F -- Yes --> G[\"Mark delivery as successful\"];\n  F -- No --> H[\"Retry delivery (according to retry policy)\"];\n  H --> I{\"Max retries reached?\"};\n\n  I -- No --> D;\n  I -- Yes --> J[\"Stop retries - Mark as failed\"];\n"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An event occurs in ChaChing (e.g., customer details updated). For details related to the event types, refer to the section ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.notion.so/Webhook-API-326dc7fc0a9280d087a1fe916d21c46c?pvs=21"},"children":["Event Types"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["ChaChing generates an event notification."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["ChaChing identifies all ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["active webhook endpoints"]}," configured for the account."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["ChaChing sends the event with its payload as an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["HTTP POST request"]}," to each webhook endpoint."," ","Note: For payload details, refer to the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Event Structure"]}," section."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your system receives and processes the event."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your endpoint must return an HTTP ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2xx"]}," response:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2xx"]}," response is returned, the delivery is marked as ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["successful"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If a non-",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2xx"]}," response or no response is returned, the delivery is considered ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["failed"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"retry-behavior","__idx":2},"children":["Retry Behavior"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["ChaChing automatically retries failed webhook deliveries."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Retries are triggered when:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Network failure"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Timeout"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Non-",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2xx"]}," HTTP response"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Retry Flow:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If delivery fails, webhook is retried"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["max retries NOT reached,"]}," retry continues"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["max retries reached,"]}," marked as ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["failed"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Retry Policy:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Attempts: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["5 times"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Retry window: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["approximately 15 minutes"]}," (retries are spread across the retry window with increasing delays)"]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["⚠️ Webhooks may be delivered multiple times. Ensure your system handles duplicates (use event ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},")."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"key-concepts","__idx":3},"children":["Key Concepts"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"webhooks-are-account-level","__idx":4},"children":["Webhooks are account-level"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Webhooks are configured ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["per account"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Each account has its own webhook endpoints"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Events generated in one account are ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not shared"]}," with other accounts"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"multiple-webhook-endpoints","__idx":5},"children":["Multiple webhook endpoints"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You can create ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["multiple webhook endpoints"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Events are sent to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["all active endpoints within the account"]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"webhook-configuration","__idx":6},"children":["Webhook Configuration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Webhooks can be managed via the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["UI"]}," (Settings → Developer → Webhooks) or programmatically via the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REST API"]},". Both approaches support the full lifecycle: create, list, update, enable/disable, and delete endpoints."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Only users with the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Developer"]}," or ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["SuperAdmin"]}," role can manage webhooks. For user roles details, refer to the section Manage → Users in the left panel of the ChaChing application."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"via-the-ui","__idx":7},"children":["Via the UI"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In ChaChing, go to Settings → Developer settings."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In the Developer Settings, select the Webhooks tab to:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create webhook endpoints"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["View all endpoints"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enable / disable endpoints"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Edit/Delete endpoints"]}]}]}]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/webhookconfiguration.8b195e9266a8b388bd8927aab440c9b256442f20098e5dcb540a2f619fdcdc8c.9c1bb791.jpg","alt":"webhookConfiguration.jpg","framed":false,"withLightbox":true,"width":"","height":""},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"creating-a-webhook","__idx":8},"children":["Creating a Webhook"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Developer Settings → Webhooks."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create webhook."]}]}]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/creatingwebhook.242679ccc044a98fe5a68c6ed7d93db5063a34f153d047562b1f36529c773557.9c1bb791.jpg","alt":"creatingWebhook.jpg","framed":false,"withLightbox":true,"width":"","height":""},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":3},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enter endpoint URL and then select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create endpoint"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After creation:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Webhook becomes ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["active"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Events start being delivered immediately"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"via-the-rest-api","__idx":9},"children":["Via the REST API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All endpoints require authentication."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"endpoints","__idx":10},"children":["Endpoints"]},{"$$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":"Method"},"children":["Method"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Path"},"children":["Path"]},{"$$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":["POST"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/webhook/destination"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create a new webhook endpoint"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/webhook/destination"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["List all webhook endpoints"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/webhook/destination/:id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Update a webhook endpoint"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELETE"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/webhook/destination/:id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Delete a webhook endpoint"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PATCH"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/webhook/destination/:id/enable"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Enable a webhook endpoint"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PATCH"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/webhook/destination/:id/disable"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Disable a webhook endpoint"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/webhook/logs"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Retrieve webhook delivery logs"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"create-endpoint","__idx":11},"children":["Create Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /webhook/destination\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request body:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"url\": \"https://your-server.com/webhook\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response:"]}," the created webhook destination object, including its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," and active status."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"list-endpoints","__idx":12},"children":["List Endpoints"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"GET /webhook/destination\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response:"]}," array of all webhook destination objects for the account."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"update-endpoint","__idx":13},"children":["Update Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"PUT /webhook/destination/:id\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request body:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"url\": \"https://your-server.com/new-webhook\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"enable--disable-endpoint","__idx":14},"children":["Enable / Disable Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"PATCH /webhook/destination/:id/enable\nPATCH /webhook/destination/:id/disable\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["No request body required."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"delete-endpoint","__idx":15},"children":["Delete Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"DELETE /webhook/destination/:id\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"retrieve-delivery-logs","__idx":16},"children":["Retrieve Delivery Logs"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"GET /webhook/logs\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response:"]}," list of webhook delivery log entries. Each entry includes the event type, payload, and status (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["success"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["retry"]},")."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"event-types","__idx":17},"children":["Event Types"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["ChaChing generates webhook events for key system entities. Each event represents a specific change or action performed in the system."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Note: When you create a webhook you receive ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["ALL events without the ability to subscribe to a specific event type"]},"."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"customer-events","__idx":18},"children":["Customer Events"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customer.created"]}," — A new customer is created"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customer.updated"]}," — An existing customer is updated"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customer.deleted"]}," — A customer is deleted"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"payment-method-events","__idx":19},"children":["Payment Method Events"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_method.attached"]}," — A payment method is attached to a customer"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_method.detached"]}," — A payment method is detached from a customer"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"invoice-events","__idx":20},"children":["Invoice Events"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoice.created"]}," — A new invoice is created"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoice.deleted"]}," — An invoice is deleted"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoice.finalized"]}," — An invoice is finalized and ready for payment"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoice.sent"]}," — An invoice is sent to the customer"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoice.payment_succeeded"]}," — Invoice payment completed successfully"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoice.payment_failed"]}," — Invoice payment failed"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"subscription-events","__idx":21},"children":["Subscription Events"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscription.created"]}," — A subscription is created"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscription.updated"]}," — A subscription is updated"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscription.canceled"]}," — A subscription is canceled"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscription.paused"]}," — A subscription is paused"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscription.resumed"]}," — A paused subscription is resumed"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"product-events","__idx":22},"children":["Product Events"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product.created"]}," — A product is created"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product.updated"]}," — A product is updated"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product.deleted"]}," — A product is deleted"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"price-events","__idx":23},"children":["Price Events"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["price.created"]}," — A price is created"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["price.updated"]}," — A price is updated"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["price.deleted"]}," — A price is deleted"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"tax-events","__idx":24},"children":["Tax Events"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tax.created"]}," — A tax configuration is created"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tax.updated"]}," — A tax configuration is updated"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"summary","__idx":25},"children":["Summary"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["ChaChing currently supports ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["24 webhook event types"]}," across such entities as:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Customers"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Payment Methods"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Invoices"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Subscriptions"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Products"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Prices"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Taxes"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"event-status","__idx":26},"children":["Event Status"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Webhook delivery has the following internal states:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," → waiting to be sent"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["retry"]}," → retry in progress"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["success"]}," → delivered successfully"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failure"]}," → all retries exhausted"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"event-structure","__idx":27},"children":["Event Structure"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All ChaChing webhook events share a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["common envelope structure"]},", with the actual entity data contained inside the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," field."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"common-event-envelope","__idx":28},"children":["Common Event Envelope"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every webhook sent by ChaChing follows this structure:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"evt_123456\",\n  \"event\": \"customer.updated\", // specific to the event type \n  \"createdAt\": \"2026-03-13T11:15:00Z\",\n  \"data\": {\n    // Entity-specific payload\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"fields-description","__idx":29},"children":["Fields Description"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," — Unique event identifier (used for deduplication)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["event"]}," — Event type (see Event Types section)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["createdAt"]}," — Timestamp when the event was generated"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," — ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Entity payload"]}," (varies depending on event type)"]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["❗ Important: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," already contains the object. There is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.object"]}," nesting"]},"."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"customer-events-payload","__idx":30},"children":["Customer Events Payload"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Events:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customer.created"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customer.updated"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customer.deleted"]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"schema","__idx":31},"children":["Schema"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"cus_XXXXXXXX\",\n  \"object\": \"customer\",\n  \"name\": \"string\",\n  \"email\": \"string\",\n  \"description\": \"string | null\",\n  \"phone\": \"string | null\",\n  \"created\": 1672531200,\n  \"currency\": \"string\",\n  \"address\": [\n    {\n      \"city\": \"string\",\n      \"country\": \"string\",\n      \"line1\": \"string\",\n      \"line2\": \"string\",\n      \"postal_code\": \"string\",\n      \"state\": \"string\"\n    }\n  ],\n  \"shipping\": {\n    \"name\": \"string\",\n    \"phone\": \"string | null\",\n    \"address\": {\n      \"city\": \"string\",\n      \"country\": \"string\",\n      \"line1\": \"string\",\n      \"line2\": \"string\",\n      \"postal_code\": \"string\",\n      \"state\": \"string\"\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example","__idx":32},"children":["Example"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"evt_111\",\n  \"event\": \"customer.created\",\n  \"createdAt\": \"2026-03-13T11:15:00Z\",\n  \"data\": {\n    \"id\": \"cus_NffrFeUfNV2Hib\",\n    \"object\": \"customer\",\n    \"name\": \"John Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"description\": \"My First Test Customer\",\n    \"phone\": null,\n    \"created\": 1680893993,\n    \"currency\": \"USD\",\n    \"address\": [\n      {\n        \"city\": \"San Francisco\",\n        \"country\": \"US\",\n        \"line1\": \"123 Market St\",\n        \"line2\": \"Apt 4B\",\n        \"postal_code\": \"94103\",\n        \"state\": \"CA\"\n      }\n    ],\n    \"shipping\": {\n      \"name\": \"John Doe\",\n      \"phone\": \"+1 (555) 123-4567\",\n      \"address\": {\n        \"city\": \"San Francisco\",\n        \"country\": \"US\",\n        \"line1\": \"123 Market St\",\n        \"line2\": \"Apt 4B\",\n        \"postal_code\": \"94103\",\n        \"state\": \"CA\"\n      }\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"notes","__idx":33},"children":["Notes"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["address"]}," field is an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["array of address objects"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["shipping.address"]}," is a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["single object"]}," (not an array)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phone"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]}," fields may be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Timestamps are in Unix format (seconds)"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"payment-method-events-payload","__idx":34},"children":["Payment Method Events Payload"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Events:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_method.attached"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_method.detached"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"schema-1","__idx":35},"children":["Schema"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"pm_XXXXXXXX\",\n  \"object\": \"payment_method\",\n  \"allow_redisplay\": \"string\",\n  \"billing_details\": {\n    \"address\": {\n      \"city\": \"string | null\",\n      \"country\": \"string | null\",\n      \"line1\": \"string | null\",\n      \"line2\": \"string | null\",\n      \"postal_code\": \"string | null\",\n      \"state\": \"string | null\"\n    },\n    \"email\": \"string | null\",\n    \"name\": \"string | null\",\n    \"phone\": \"string | null\"\n  },\n  \"created\": 1672531200,\n  \"customer\": \"cus_XXXXXXXX | null\",\n  \"livemode\": false,\n  \"metadata\": {},\n  \"type\": \"string\",\n  \"us_bank_account\": {\n    \"account_holder_type\": \"individual | company\",\n    \"account_type\": \"checking | savings\",\n    \"bank_name\": \"string\",\n    \"financial_connections_account\": \"string | null\",\n    \"fingerprint\": \"string\",\n    \"last4\": \"string\",\n    \"networks\": {\n      \"preferred\": \"string\",\n      \"supported\": [\"string\"]\n    },\n    \"routing_number\": \"string\",\n    \"status_details\": {}\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-1","__idx":36},"children":["Example"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"evt_123\",\n  \"event\": \"payment_method.attached\",\n  \"createdAt\": \"2026-03-13T11:15:00Z\",\n  \"data\": {\n    \"id\": \"pm_1Q0PsIJvEtkwdCNYMSaVuRz6\",\n    \"object\": \"payment_method\",\n    \"allow_redisplay\": \"unspecified\",\n    \"billing_details\": {\n      \"address\": {\n        \"city\": null,\n        \"country\": null,\n        \"line1\": null,\n        \"line2\": null,\n        \"postal_code\": null,\n        \"state\": null\n      },\n      \"email\": null,\n      \"name\": \"John Doe\",\n      \"phone\": null\n    },\n    \"created\": 1726673582,\n    \"customer\": null,\n    \"livemode\": false,\n    \"metadata\": {},\n    \"type\": \"us_bank_account\",\n    \"us_bank_account\": {\n      \"account_holder_type\": \"individual\",\n      \"account_type\": \"checking\",\n      \"bank_name\": \"STRIPE TEST BANK\",\n      \"financial_connections_account\": null,\n      \"fingerprint\": \"LstWJFsCK7P349Bg\",\n      \"last4\": \"6789\",\n      \"networks\": {\n        \"preferred\": \"ach\",\n        \"supported\": [\n          \"ach\"\n        ]\n      },\n      \"routing_number\": \"110000000\",\n      \"status_details\": {}\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"notes-1","__idx":37},"children":["Notes"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," field defines the structure of the payment method (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["card"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["us_bank_account"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The corresponding object (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["us_bank_account"]},") is included based on the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Some fields may be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," depending on the payment method and available data"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"invoice-events-payload","__idx":38},"children":["Invoice Events Payload"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Events:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoice.created"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoice.deleted"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoice.finalized"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoice.sent"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoice.payment_succeeded"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoice.payment_failed"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"schema-2","__idx":39},"children":["Schema"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"string\",\n  \"object\": \"invoice\",\n  \"account_country\": \"string\",\n  \"account_name\": \"string\",\n  \"amount_due\": 0,\n  \"amount_paid\": 0,\n  \"amount_remaining\": 0,\n  \"attempt_count\": 0,\n  \"attempted\": true,\n  \"billing_reason\": \"string\",\n  \"collection_method\": \"string\",\n  \"created\": 1672531200,\n  \"currency\": \"string\",\n  \"customer\": \"cus_XXXXXXXX\",\n  \"customer_address\": {\n    \"city\": \"string\",\n    \"country\": \"string\",\n    \"line1\": \"string\",\n    \"line2\": \"string\",\n    \"postal_code\": \"string\",\n    \"state\": \"string\"\n  },\n  \"customer_email\": \"string\",\n  \"customer_name\": \"string\",\n  \"customer_phone\": \"string\",\n  \"lines\": [],\n  \"number\": \"string\",\n  \"paid\": true,\n  \"period_end\": 1672531200,\n  \"period_start\": 1672531200,\n  \"status\": \"draft | open | paid | void\",\n  \"status_transitions\": {\n    \"finalized_at\": 1672531200,\n    \"paid_at\": 1672531200,\n    \"voided_at\": 1672531200\n  },\n  \"subscription\": \"sub_XXXXXXXX\",\n  \"subtotal\": 0,\n  \"subtotal_excluding_tax\": 0,\n  \"tax\": 0,\n  \"total\": 0,\n  \"total_excluding_tax\": 0,\n  \"total_taxes\": {\n    \"amount\": 0,\n    \"tax_behavior\": \"inclusive | exclusive\",\n    \"tax_rate\": \"txr_XXXXXXXX\",\n    \"taxable_amount\": 0\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-2","__idx":40},"children":["Example"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"evt_456\",\n  \"event\": \"invoice.payment_succeeded\",\n  \"createdAt\": \"2026-03-13T11:15:00Z\",\n  \"data\": {\n    \"id\": \"a80baa67-1341-4184-b712-b6f9b85b5a2b\",\n    \"object\": \"invoice\",\n    \"account_country\": \"US\",\n    \"account_name\": \"Acme Corp\",\n    \"amount_due\": 1500,\n    \"amount_paid\": 500,\n    \"amount_remaining\": 1000,\n    \"attempt_count\": 1,\n    \"attempted\": true,\n    \"billing_reason\": \"subscription\",\n    \"collection_method\": \"charge_automatically\",\n    \"created\": 1680645568,\n    \"currency\": \"USD\",\n    \"customer\": \"cus_383fda0065594749023e8c8d\",\n    \"customer_address\": {\n      \"city\": \"San Francisco\",\n      \"country\": \"US\",\n      \"line1\": \"123 Market St\",\n      \"line2\": \"Apt 4B\",\n      \"postal_code\": \"94103\",\n      \"state\": \"CA\"\n    },\n    \"customer_email\": \"john.doe@example.com\",\n    \"customer_name\": \"John Doe\",\n    \"customer_phone\": \"+1234567890\",\n    \"lines\": [],\n    \"number\": \"INV-1001\",\n    \"paid\": true,\n    \"period_end\": 1680645568,\n    \"period_start\": 1680645568,\n    \"status\": \"paid\",\n    \"status_transitions\": {\n      \"finalized_at\": 1680645568,\n      \"paid_at\": 1680645568,\n      \"voided_at\": 1680645568\n    },\n    \"subscription\": \"sub_Wm45f5PGQvv67azFeH1z7PO3\",\n    \"subtotal\": 1500,\n    \"subtotal_excluding_tax\": 1500,\n    \"tax\": 150,\n    \"total\": 1650,\n    \"total_excluding_tax\": 1500,\n    \"total_taxes\": {\n      \"amount\": 150,\n      \"tax_behavior\": \"exclusive\",\n      \"tax_rate\": \"txr_1S2tlWDZYOQH9uHkltYEi1ap\",\n      \"taxable_amount\": 1500\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"notes-2","__idx":41},"children":["Notes"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}," field reflects the current lifecycle state of the invoice"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status_transitions"]}," shows timestamps for key lifecycle changes"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Monetary values are represented in the smallest currency unit (e.g., cents)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["lines"]}," field contains invoice line items (structure may vary)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Some fields may be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," depending on invoice state and configuration"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"subscription-events-payload","__idx":42},"children":["Subscription Events Payload"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Events:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscription.created"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscription.updated"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscription.canceled"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscription.paused"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscription.resumed"]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"schema-3","__idx":43},"children":["Schema"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"sub_XXXXXXXX\",\n  \"object\": \"subscription\",\n  \"billing_cycle_anchor\": 1672531200,\n  \"cancel_at\": 1672531200,\n  \"cancel_at_period_end\": false,\n  \"canceled_at\": 1672531200,\n  \"collection_method\": \"string\",\n  \"created\": 1672531200,\n  \"currency\": \"string\",\n  \"customer\": \"cus_XXXXXXXX\",\n  \"ended_at\": 1672531200,\n  \"items\": {\n    \"object\": \"list\",\n    \"data\": [\n      []\n    ],\n    \"total_count\": 0\n  },\n  \"latest_invoice\": \"string\",\n  \"start_date\": 1672531200,\n  \"status\": \"active | canceled | paused\",\n  \"trial_end\": 1672531200,\n  \"trial_start\": 1672531200\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-3","__idx":44},"children":["Example"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"evt_789\",\n  \"event\": \"subscription.created\",\n  \"createdAt\": \"2026-03-13T11:15:00Z\",\n  \"data\": {\n    \"id\": \"sub_2FdhgypnsJQn9mZlY5qGaElL\",\n    \"object\": \"subscription\",\n    \"billing_cycle_anchor\": 1679609767,\n    \"cancel_at\": null,\n    \"cancel_at_period_end\": false,\n    \"canceled_at\": null,\n    \"collection_method\": \"charge_automatically\",\n    \"created\": 1679609767,\n    \"currency\": \"USD\",\n    \"customer\": \"cus_739c07713fd4b68565a969cd\",\n    \"ended_at\": null,\n    \"items\": {\n      \"object\": \"list\",\n      \"data\": [\n        []\n      ],\n      \"total_count\": 1\n    },\n    \"latest_invoice\": \"58d0f1c9-ca00-4998-8e89-d74a290b4df6\",\n    \"start_date\": 1679609767,\n    \"status\": \"active\",\n    \"trial_end\": null,\n    \"trial_start\": null\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"notes-3","__idx":45},"children":["Notes"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}," field represents the current subscription state (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["canceled"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paused"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Fields like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cancel_at"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["canceled_at"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ended_at"]}," may be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," depending on lifecycle state"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["items.data"]}," contains subscription items (structure depends on pricing configuration)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["latest_invoice"]}," links the most recent invoice associated with the subscription"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Timestamps are in Unix format (seconds)"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"product-events-payload","__idx":46},"children":["Product Events Payload"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Events:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product.created"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product.updated"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product.deleted"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"schema-4","__idx":47},"children":["Schema"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"prod_XXXXXXXX\",\n  \"object\": \"product\",\n  \"active\": true,\n  \"created\": 1672531200,\n  \"default_price\": \"price_XXXXXXXX\",\n  \"description\": \"string | null\",\n  \"name\": \"string\",\n  \"tax_code\": \"string\",\n  \"updated\": 1672531200\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-4","__idx":48},"children":["Example"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"evt_321\",\n  \"event\": \"product.updated\",\n  \"createdAt\": \"2026-03-13T11:15:00Z\",\n  \"data\": {\n    \"id\": \"prod_xT4LfvxLMQb4s9uFNIbXf9pm\",\n    \"object\": \"product\",\n    \"active\": true,\n    \"created\": 1760018761,\n    \"default_price\": \"price_1SGKTmDZYOQH9uHk1vaSxPKa\",\n    \"description\": null,\n    \"name\": \"Gold Plan\",\n    \"tax_code\": \"txcd_10000000\",\n    \"updated\": 1753181495\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"notes-4","__idx":49},"children":["Notes"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["default_price"]}," field references the default price associated with the product"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]}," field may be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," if not provided"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}," field indicates whether the product is available for use"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Timestamps are in Unix format (seconds)"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"price-events-payload","__idx":50},"children":["Price Events Payload"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Events:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["price.created"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["price.updated"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["price.deleted"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"schema-5","__idx":51},"children":["Schema"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"price_XXXXXXXX\",\n  \"object\": \"price\",\n  \"active\": true,\n  \"created\": 1672531200,\n  \"currency\": \"string\",\n  \"description\": \"string | null\",\n  \"product\": \"prod_XXXXXXXX | null\",\n  \"recurring\": {\n    \"interval\": \"day | week | month | year\",\n    \"interval_count\": 0\n  },\n  \"tax_behavior\": \"inclusive | exclusive\",\n  \"type\": \"one_time | recurring\",\n  \"unit_amount\": 0,\n  \"unit_amount_decimal\": \"string\",\n  \"link\": \"string\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-5","__idx":52},"children":["Example"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"evt_654\",\n  \"event\": \"price.created\",\n  \"createdAt\": \"2026-03-13T11:15:00Z\",\n  \"data\": {\n    \"id\": \"price_1SGKTmDZYOQH9uHk1vaSxPKa\",\n    \"object\": \"price\",\n    \"active\": true,\n    \"created\": 1760018761,\n    \"currency\": \"USD\",\n    \"description\": \"Premium Plan - Monthly\",\n    \"product\": null,\n    \"recurring\": {\n      \"interval\": \"month\",\n      \"interval_count\": 1\n    },\n    \"tax_behavior\": \"exclusive\",\n    \"type\": \"one_time\",\n    \"unit_amount\": 1000,\n    \"unit_amount_decimal\": \"1000\",\n    \"link\": \"string\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"notes-5","__idx":53},"children":["Notes"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," field defines whether the price is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["one-time"]}," or ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["recurring"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recurring"]}," object is relevant for subscription-based pricing"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["unit_amount"]}," is represented in the smallest currency unit (e.g., cents)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product"]}," may be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," if not linked"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["unit_amount_decimal"]}," provides a precise representation of the amount"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tax_behavior"]}," defines how taxes are applied (inclusive or exclusive)"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"tax-events-payload","__idx":54},"children":["Tax Events Payload"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Events:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tax.created"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tax.updated"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"schema-6","__idx":55},"children":["Schema"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"txr_XXXXXXXX\",\n  \"object\": \"tax_rate\",\n  \"active\": true,\n  \"country\": \"string\",\n  \"created\": 1672531200,\n  \"description\": \"string | null\",\n  \"display_name\": \"string\",\n  \"inclusive\": true,\n  \"percentage\": 0,\n  \"tax_type\": \"string\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-6","__idx":56},"children":["Example"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"evt_987\",\n  \"event\": \"tax.created\",\n  \"createdAt\": \"2026-03-13T11:15:00Z\",\n  \"data\": {\n    \"id\": \"txr_inQ4hbLZPyljDXFRCEnjtEqK\",\n    \"object\": \"tax_rate\",\n    \"active\": true,\n    \"country\": \"US\",\n    \"created\": 1678833149,\n    \"description\": \"State sales tax\",\n    \"display_name\": \"Sales Tax\",\n    \"inclusive\": true,\n    \"percentage\": 7.25,\n    \"tax_type\": \"Custom\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"notes-6","__idx":57},"children":["Notes"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["percentage"]}," field represents the tax rate (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["7.25"]}," = 7.25%)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["inclusive"]}," field indicates whether the tax is included in the price"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tax_type"]}," defines the type of tax configuration (e.g., custom)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]}," field may be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," depending on configuration"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"important-notes","__idx":58},"children":["Important Notes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The data object is contained inside the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," field."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," field contains the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["full entity object"]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Deleted events"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["May contain limited data (e.g., only ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Should not be assumed to contain full object"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Always rely on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["event"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["event"]}," field to determine how to parse ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"payload-behavior","__idx":59},"children":["Payload Behavior"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The payload reflects the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["entity after change"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Example:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Customer updated → full updated customer data is sent"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Subscription created → full subscription object is sent"]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"example-event","__idx":60},"children":["Example Event"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"evt_789\",\n  \"event\": \"customer.updated\",\n  \"createdAt\": \"2026-03-13T11:15:00Z\",\n  \"data\": {\n    \"id\": \"cus_123\",\n    \"email\": \"user@example.com\",\n    \"status\": \"active\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"webhook-delivery","__idx":61},"children":["Webhook Delivery"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Method: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Content-Type: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["application/json"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Sent to: configured endpoint URL in ChaChing application."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"webhook-signatures","__idx":62},"children":["Webhook Signatures"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["ChaChing signs every webhook delivery with an HMAC-SHA256 signature. Verify this signature to confirm the request originated from ChaChing and that the payload has not been tampered with."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"signature-header","__idx":63},"children":["Signature Header"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each request includes a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Chaching-Signature"]}," header in the following format:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Chaching-Signature: t=<unix_timestamp>,v1=<hex_hmac_sha256>\n"},"children":[]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["t"]}," — Unix timestamp of when the request was sent"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v1"]}," — HMAC-SHA256 hex digest of the signed payload"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"signing-algorithm","__idx":64},"children":["Signing Algorithm"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The signature is computed as:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"HMAC-SHA256(secretKey, \"{timestamp}.{raw_json_body}\")\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Where:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["secretKey"]}," is your account's secret key, retrieved via ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /account/keys"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timestamp"]}," is the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["t"]}," value from the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Chaching-Signature"]}," header"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["raw_json_body"]}," is the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["raw, unparsed"]}," request body"]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["⚠️ Always compute the signature against the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["raw request body"]},", before any JSON parsing. Re-serializing a parsed object may alter whitespace or key ordering and cause signature verification to fail."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"obtaining-your-secret-key","__idx":65},"children":["Obtaining Your Secret Key"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"GET /account/keys\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"verification-examples","__idx":66},"children":["Verification Examples"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"nodejs","__idx":67},"children":["Node.js"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"const crypto = require('crypto');\n\nfunction verifyWebhookSignature(rawBody, signatureHeader, secretKey) {\n  const parts = {};\n  signatureHeader.split(',').forEach(part => {\n    const idx = part.indexOf('=');\n    parts[part.slice(0, idx)] = part.slice(idx + 1);\n  });\n\n  const timestamp = parts['t'];\n  const expectedSig = parts['v1'];\n\n  const payload = `${timestamp}.${rawBody}`;\n  const computedSig = crypto\n    .createHmac('sha256', secretKey)\n    .update(payload)\n    .digest('hex');\n\n  return crypto.timingSafeEqual(\n    Buffer.from(computedSig),\n    Buffer.from(expectedSig)\n  );\n}\n","lang":"javascript"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"python","__idx":68},"children":["Python"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"import hmac\nimport hashlib\n\ndef verify_webhook_signature(raw_body: str, signature_header: str, secret_key: str) -> bool:\n    parts = dict(part.split('=', 1) for part in signature_header.split(','))\n    timestamp = parts['t']\n    expected_sig = parts['v1']\n\n    payload = f\"{timestamp}.{raw_body}\"\n    computed_sig = hmac.new(\n        secret_key.encode('utf-8'),\n        payload.encode('utf-8'),\n        hashlib.sha256\n    ).hexdigest()\n\n    return hmac.compare_digest(computed_sig, expected_sig)\n","lang":"python"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["ℹ️ Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["crypto.timingSafeEqual"]}," (Node.js) or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hmac.compare_digest"]}," (Python) to prevent timing-based attacks when comparing signatures."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"webhook-logs","__idx":69},"children":["Webhook Logs"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["ChaChing stores webhook delivery history."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Logs include:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Event type"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Payload"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Status (success / failed / retry)"]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Logs reflect actual data sent from the database"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"handling-webhooks-client-side","__idx":70},"children":["Handling Webhooks (Client Side)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When receiving a webhook:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Accept HTTP POST request"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Parse JSON payload"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Read ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Process ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Return HTTP ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["200 OK"]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"important-notes-for-integrators","__idx":71},"children":["Important Notes for Integrators"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No event filtering"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You will receive ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["all events"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["➡ You must filter by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," in your system"]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Payload varies per event"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," structure depends on event type"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["➡ You must handle multiple schemas"]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Retries may cause duplicates"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["➡ Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," to deduplicate events"]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Endpoint must be stable"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["➡ If your endpoint fails → events may be lost after retries"]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]}]},"headings":[{"value":"Webhooks","id":"webhooks","depth":1},{"value":"How Webhooks Work","id":"how-webhooks-work","depth":1},{"value":"Retry Behavior","id":"retry-behavior","depth":1},{"value":"Key Concepts","id":"key-concepts","depth":1},{"value":"Webhooks are account-level","id":"webhooks-are-account-level","depth":2},{"value":"Multiple webhook endpoints","id":"multiple-webhook-endpoints","depth":2},{"value":"Webhook Configuration","id":"webhook-configuration","depth":1},{"value":"Via the UI","id":"via-the-ui","depth":2},{"value":"Creating a Webhook","id":"creating-a-webhook","depth":3},{"value":"Via the REST API","id":"via-the-rest-api","depth":2},{"value":"Endpoints","id":"endpoints","depth":3},{"value":"Create Endpoint","id":"create-endpoint","depth":3},{"value":"List Endpoints","id":"list-endpoints","depth":3},{"value":"Update Endpoint","id":"update-endpoint","depth":3},{"value":"Enable / Disable Endpoint","id":"enable--disable-endpoint","depth":3},{"value":"Delete Endpoint","id":"delete-endpoint","depth":3},{"value":"Retrieve Delivery Logs","id":"retrieve-delivery-logs","depth":3},{"value":"Event Types","id":"event-types","depth":1},{"value":"Customer Events","id":"customer-events","depth":2},{"value":"Payment Method Events","id":"payment-method-events","depth":2},{"value":"Invoice Events","id":"invoice-events","depth":2},{"value":"Subscription Events","id":"subscription-events","depth":2},{"value":"Product Events","id":"product-events","depth":2},{"value":"Price Events","id":"price-events","depth":2},{"value":"Tax Events","id":"tax-events","depth":2},{"value":"Summary","id":"summary","depth":2},{"value":"Event Status","id":"event-status","depth":1},{"value":"Event Structure","id":"event-structure","depth":1},{"value":"Common Event Envelope","id":"common-event-envelope","depth":2},{"value":"Fields Description","id":"fields-description","depth":2},{"value":"Customer Events Payload","id":"customer-events-payload","depth":2},{"value":"Schema","id":"schema","depth":3},{"value":"Example","id":"example","depth":3},{"value":"Notes","id":"notes","depth":3},{"value":"Payment Method Events Payload","id":"payment-method-events-payload","depth":2},{"value":"Schema","id":"schema-1","depth":3},{"value":"Example","id":"example-1","depth":3},{"value":"Notes","id":"notes-1","depth":3},{"value":"Invoice Events Payload","id":"invoice-events-payload","depth":2},{"value":"Schema","id":"schema-2","depth":3},{"value":"Example","id":"example-2","depth":3},{"value":"Notes","id":"notes-2","depth":3},{"value":"Subscription Events Payload","id":"subscription-events-payload","depth":2},{"value":"Schema","id":"schema-3","depth":3},{"value":"Example","id":"example-3","depth":3},{"value":"Notes","id":"notes-3","depth":3},{"value":"Product Events Payload","id":"product-events-payload","depth":2},{"value":"Schema","id":"schema-4","depth":3},{"value":"Example","id":"example-4","depth":3},{"value":"Notes","id":"notes-4","depth":3},{"value":"Price Events Payload","id":"price-events-payload","depth":2},{"value":"Schema","id":"schema-5","depth":3},{"value":"Example","id":"example-5","depth":3},{"value":"Notes","id":"notes-5","depth":3},{"value":"Tax Events Payload","id":"tax-events-payload","depth":2},{"value":"Schema","id":"schema-6","depth":3},{"value":"Example","id":"example-6","depth":3},{"value":"Notes","id":"notes-6","depth":3},{"value":"Important Notes","id":"important-notes","depth":1},{"value":"Payload Behavior","id":"payload-behavior","depth":1},{"value":"Example Event","id":"example-event","depth":1},{"value":"Webhook Delivery","id":"webhook-delivery","depth":1},{"value":"Webhook Signatures","id":"webhook-signatures","depth":1},{"value":"Signature Header","id":"signature-header","depth":2},{"value":"Signing Algorithm","id":"signing-algorithm","depth":2},{"value":"Obtaining Your Secret Key","id":"obtaining-your-secret-key","depth":2},{"value":"Verification Examples","id":"verification-examples","depth":2},{"value":"Node.js","id":"nodejs","depth":3},{"value":"Python","id":"python","depth":3},{"value":"Webhook Logs","id":"webhook-logs","depth":1},{"value":"Handling Webhooks (Client Side)","id":"handling-webhooks-client-side","depth":1},{"value":"Important Notes for Integrators","id":"important-notes-for-integrators","depth":1}],"frontmatter":{"seo":{"title":"Webhooks"}},"lastModified":"2026-04-26T14:36:28.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/developer-guide/webhook","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}