<mxfile host="app.diagrams.net" agent="architecture-diagram" version="24.0.0">
  <diagram name="Critical Flow — Reserve, Pay, Confirm" id="14-checkout-and-payment-sequence">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1720" pageHeight="1060" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="n.s-usr" value="&lt;b&gt;Shopper&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#08427b;strokeColor=#073b6f;fontColor=#ffffff;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="60" y="80" width="180" height="860" as="geometry" />
        </mxCell>
        <mxCell id="_plate1" value="" style="rounded=1;arcSize=22;html=1;fillColor=#ffffff;strokeColor=none;movable=0;resizable=0;connectable=0;" vertex="1" parent="n.s-usr">
          <mxGeometry x="5" y="13" width="32" height="32" as="geometry" />
        </mxCell>
        <mxCell id="_ico2" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACWklEQVRoge3Zz4tNYRzH8dfIrwmJGcZMIgpJEjZsiA1pLGhK2VDEcpLFWCkrG3tr/8GQHRNWipRhocxmombIaESNjDFj8XTrNHPunXueOfec2zTv+m7Ovd9z3p/uvec8z/eyRLm05Hy+lTiBbuzEFvzGKF6hH0M5XzMXVuAaRjAzTz3BwXI002nHc/OLJ2sKfSW4zqELw7LJJ+te4cYJWoXvdax8pa4WLV7hdp2C89UEthbsrh0/FyierPvF6nM9J/FK/cKqGJFlkQHORvZVYy2OxzTGBtgX2Zf7OWMDdET21aIzpik2wHRkXy3+xTTFBhiN7KvFSExTbIB3kX21eN+Ac1blknxvo9+xvMgA6zGWY4BS1kQ3ImVn1zjaCnZH+MifZpSdXdO4ULR4ko3Cjy9W/lbxynNZh0eyyU/gYhmytTiPD2qLT+EBtuV10bw39XAIZ7BLWHL8wWe8xmPhlrnEoiH2K7RfGI10YgMm8RBv6uhtRY+wfJ7CV3zCC/zIKpIlwBr04oowtErjozD3GRSmFePCTqsNe3EUJ4U712z+4hnuCmOaXOlW39Aqr+oXnjG5cFNYqxclX6kh7Fmo/OUSxJM1jM2x8oeFe3iZAWYwEBtgoAnkK3Uuq/yxJpBO1ttqotW2lD1ZEzeYA9id9kK1AKcb5xLNqbSDaQFasL2xLlHsSDuYFqBN+Kuo2ehKO5gWYHWDRWJJ9YqdCzUNizLAZOEW9ZHqlRZgTGNmnwtlMMube5X/9E3WN2zKEqAFdzTHYm5IWFhWFa1FB44o77nwBS+FrecSTcl/+F0YjmstwYwAAAAASUVORK5CYII=;" vertex="1" parent="n.s-usr">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.s-bff" value="&lt;b&gt;Customer BFF&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#4a3200;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="260" y="80" width="180" height="860" as="geometry" />
        </mxCell>
        <mxCell id="_ico3" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,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;" vertex="1" parent="n.s-bff">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.s-chk" value="&lt;b&gt;Checkout&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="470" y="80" width="180" height="860" as="geometry" />
        </mxCell>
        <mxCell id="_ico4" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACpUlEQVRoge3YTYhNYRzH8Y+3iLzkbZoSdhJZkI1YUWzYWbCxJCU1ZShlpVhQKIoFG28pKxaKDUnyUtTQZJCExZSJEYMMFs+cXMe5955z7jn3jppf/evWfc7/+f6e5/+8nMOIWqsxJeWdhA3YhMUYQG9JfRWqZTiJfvyKxRPsxuyW0VXRHAGsx7/QSfED17ER41rACyYMAVwZAkoDnhTvhRlb2izwWiXSaJRWYvOxDy9yQOWZnW+4jPUaKLFGS+QBdmIGFuGgsAuVXmLTcUS+EnmDA1hQJff4oUG5mnNQ7mNdLfjJeJQx6QDOY61sZ0o7dqErY38/saVa0r0ZEt3BVkzLAF1Ny3EcfSn77sOUpEQ36zz4FkexpADoJI0XFu4lfK/DsjopwdOEhgO4INReWdeOJEUl9iSB6Rc2Rw1H10n0CS/RjcEySKuoF8/wOstDSTMQxaA/x//YIkljahcOs1c1WP6agbQG4mvhIOYWBD0aa6Sr/UIMRFF5KcuzPqYJh93zjP0WZqAyeoSpn5UCPLpPfWmgv8INRPEV57Aqljsa7ax9DDbbQGV0oQOn8Tnjs++wHwtbaSBP3Pb3i87EegbK3BLT6oOwAx0TDq5MaqWBhziFs8KCzqVmG+jHRZzA4yISNtPAGewQFnRhqncXKlLdCoanuQZK0YiBVuu/NzAcDrJqasOeeo0qDXwsjyWT2tCJbcJVIkkfoh+VJXSrRKg0asNh4RW2Q3X4r7iX9Mds4R20rItaZx3wtDfWvbVGYR6uNclAVvA+bMeoWgYirRC+i5ZhYKbwTp0WvH+ofa6PaCtxoyADh2Qf8X2Ymgc8rjJmpJQRb6WRUsHLNNJU8LgaMdJS8LiyGBlW4HHVMjKsweNaKXyW78Zd4atdIdvhiEZUsH4D+zfN9JHFLwAAAAAASUVORK5CYII=;" vertex="1" parent="n.s-chk">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.s-inv" value="&lt;b&gt;Inventory&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="670" y="80" width="180" height="860" as="geometry" />
        </mxCell>
        <mxCell id="_ico5" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAABUUlEQVRoge2Yv0oEMRCHP//0eoJoY+HDyIGloFgIYulD+CC2NhZiYeV1coVPcHCNlVvoWQjai2dxTQhj2M0kZI/MByl2dua3+QUyuxswjLpZUdTuAUNgVbj3BLx4sRNgU8j9AB4U84hmDMz/GWdC/jSQfxA7CWn12rKtqPXZiS3UGOgFZqA0OQ1sAdfAUcZnqAh1lRvgzbm+BV4D+VLXyk7IQNcRbcD2QGnMQGnMQGmqNjBLNgt4jy3U/NDsAofAukIDoAFGSg3DqBZ3E18Al8id6Qp49GJ3wL6QOwPOgU8vnlufCelOGU6F/Cz67mqsCSKxSK01i37Vb+Je0NXAIMssFPpdDByzOO8csTgXTY1aP7TrG+/6C/gO5HftKtH6bT/E/BXZaFnXlmj96jZx7zADpTEDpXENzBPq/gqxLPqugXvgJ4F4AzwL8dz6hmEsI39mg5hOq5Q85QAAAABJRU5ErkJggg==;" vertex="1" parent="n.s-inv">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.s-pay" value="&lt;b&gt;Payment orch&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="870" y="80" width="180" height="860" as="geometry" />
        </mxCell>
        <mxCell id="_ico6" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACpUlEQVRoge3YTYhNYRzH8Y+3iLzkbZoSdhJZkI1YUWzYWbCxJCU1ZShlpVhQKIoFG28pKxaKDUnyUtTQZJCExZSJEYMMFs+cXMe5955z7jn3jppf/evWfc7/+f6e5/+8nMOIWqsxJeWdhA3YhMUYQG9JfRWqZTiJfvyKxRPsxuyW0VXRHAGsx7/QSfED17ER41rACyYMAVwZAkoDnhTvhRlb2izwWiXSaJRWYvOxDy9yQOWZnW+4jPUaKLFGS+QBdmIGFuGgsAuVXmLTcUS+EnmDA1hQJff4oUG5mnNQ7mNdLfjJeJQx6QDOY61sZ0o7dqErY38/saVa0r0ZEt3BVkzLAF1Ny3EcfSn77sOUpEQ36zz4FkexpADoJI0XFu4lfK/DsjopwdOEhgO4INReWdeOJEUl9iSB6Rc2Rw1H10n0CS/RjcEySKuoF8/wOstDSTMQxaA/x//YIkljahcOs1c1WP6agbQG4mvhIOYWBD0aa6Sr/UIMRFF5KcuzPqYJh93zjP0WZqAyeoSpn5UCPLpPfWmgv8INRPEV57Aqljsa7ax9DDbbQGV0oQOn8Tnjs++wHwtbaSBP3Pb3i87EegbK3BLT6oOwAx0TDq5MaqWBhziFs8KCzqVmG+jHRZzA4yISNtPAGewQFnRhqncXKlLdCoanuQZK0YiBVuu/NzAcDrJqasOeeo0qDXwsjyWT2tCJbcJVIkkfoh+VJXSrRKg0asNh4RW2Q3X4r7iX9Mds4R20rItaZx3wtDfWvbVGYR6uNclAVvA+bMeoWgYirRC+i5ZhYKbwTp0WvH+ofa6PaCtxoyADh2Qf8X2Ymgc8rjJmpJQRb6WRUsHLNNJU8LgaMdJS8LiyGBlW4HHVMjKsweNaKXyW78Zd4atdIdvhiEZUsH4D+zfN9JHFLwAAAAAASUVORK5CYII=;" vertex="1" parent="n.s-pay">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.s-psp" value="&lt;b&gt;UPI / PSP&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#f5f5f5;strokeColor=#8c8c8c;fontColor=#333333;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1080" y="80" width="180" height="860" as="geometry" />
        </mxCell>
        <mxCell id="_ico7" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAB40lEQVRoge3Yz6sOURzH8dfjXlfuQkoW6ooiIUk2imRna+kvYCMLUlIsWNhYKFtZKUp3y80/YGOHKD+6RCGJErnyazF3MsbM85z73HnmTDnv+tQ0c2bm8znnzJyZL4lEIpH4n+k1dJ21mMJKfMFjvG7o2iNjChfwFL8q9ARnsTqWwTrGcE7W01XGy/qEo5ob7UWxAjPCjJd1DRPtW/7DOG4bznyuqyKOxPkAgyE6jD24IXtOPmMWV7B9VObX4WtDAb73OfYDZ4xglC41ZD5UJ5s038PLlgPMYUOIuSUBbTbJ3vltMoFDIQ1DArRtPmdvSKOQALFW0kXfdxlO4IV253+uOyEmx2v2b8U0tgTHbZ57w564Ex/E6fWynuE4loeaX4VXHTBe1kNsCwlwuQNm6/RuUIg1+NYBo/30SGk6FV+jB7G0X8IOsBlH6g5Oi9/DIZotmi6OQKwVd6Gsl33e4O8AUf+WFsjGfKMYoPNVhAKT+UYxwIMIRoblTdXO3eI/oCGakxUX/qGHux0wOEg3q8zn7JP9l8Y2Waef2NUvAJzqgNE6XRxknmwqnZ5PG9twUdfVf/5Xsh/3O2D8I46pKbUMqr+MzQc5gB2y1Xqy7xnN8BbPcUtWknzfwj0TiUQikWif37lJeEKjXHZHAAAAAElFTkSuQmCC;" vertex="1" parent="n.s-psp">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.s-ord" value="&lt;b&gt;Order&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1280" y="80" width="180" height="860" as="geometry" />
        </mxCell>
        <mxCell id="_ico8" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACOklEQVRoge3ZTYhNYRgH8N9lJoZhkqSUj8lCFkKZkA0WFrI2G02xZaOU7GZlN2RrPTVWIknJQnZW8rHARpQNY0Pjo4trcc7kdjvn3HufOXXcnH+9m/P+/8/7/Hu/Tu9DjX8bY7iJG1idw2ngPB7iZJd4K3EF97G/gHcQj3Chj1wzMYlW2m5hWUf/CObaOL9xOYMHm/C4jfsNpzJ42/Ex5XzH8qUYON02YAszBQm1t7uS2VvEHrzN4V5rS3IMLzr6h8s00MJZ7MW7nIQW23OMS2ZxoQv3HjbgQUZf6QaakukvSmixfZYsq164X3K+FxoYCpga6kO3po+4o4FcMjfbQKE2UDVqA1Vj4A1EjlG4iDdlJoIpnOhXFDVwVXKhlYlRAQPRJbQtqCvCeEQUnYHXQV3pGPhNXBuoGgNvILqJZ5S/kadwqF9R1MAl5d8DTQED0SW0PqgrPWZ0Bl5hPqjNQgNbI8KogbVpqxwDfwrVBqpGdA/MSR62ysRx7Co5ZubDVgsryh4IZ3LGKnzYii6hkaCuCKsiougSeoYPQW0edkZEUQOb01Y5Bv4Uqg1UjdpA1fgvDTzBnR651yV3Rjc0JeXXH4F8CtH5K/Fecv43MC2//tXEuTTGqKTWnFcb+4SjKXcyI2ZpRb4FTHT0Z1Ug53Gkg9eQPAh3JvcSOzq402UaOIBf+Cn/4XVCMjMtPFX8bjqJryn3tuwiYAOz/hpcMvZhdxfOOhzT20/eFhxWvP+G03gbe4hXo1L8AWIBvN4PnS5SAAAAAElFTkSuQmCC;" vertex="1" parent="n.s-ord">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.s-bus" value="&lt;b&gt;Kafka&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#4a3200;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1490" y="80" width="180" height="860" as="geometry" />
        </mxCell>
        <mxCell id="_ico9" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,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;" vertex="1" parent="n.s-bus">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_m10" value="1. POST /checkout" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.1070;exitDx=0;exitDy=0;entryX=0.5;entryY=0.1070;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-usr" target="n.s-bff">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m11" value="2. create intent + idem key" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.1535;exitDx=0;exitDy=0;entryX=0.5;entryY=0.1535;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-bff" target="n.s-chk">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m12" value="3. reserve(listing, qty, ttl 900s)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.2000;exitDx=0;exitDy=0;entryX=0.5;entryY=0.2000;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-chk" target="n.s-inv">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m13" value="4. Lua CAS on Redis counter" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.2465;exitDx=0;exitDy=0;entryX=0.5;entryY=0.2744;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.s-inv" target="n.s-inv">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="840" y="290" />
              <mxPoint x="840" y="320" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m14" value="5. reservation_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#5a6570;exitX=0.5;exitY=0.3070;exitDx=0;exitDy=0;entryX=0.5;entryY=0.3070;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-inv" target="n.s-chk">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m15" value="6. authorise(amount, idem key)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.3535;exitDx=0;exitDy=0;entryX=0.5;entryY=0.3535;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-chk" target="n.s-pay">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m16" value="7. collect request" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.4000;exitDx=0;exitDy=0;entryX=0.5;entryY=0.4000;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-pay" target="n.s-psp">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m17" value="8. approve in bank app" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.4465;exitDx=0;exitDy=0;entryX=0.5;entryY=0.4465;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-psp" target="n.s-usr">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m18" value="9. webhook: authorised" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#d79b00;exitX=0.5;exitY=0.4930;exitDx=0;exitDy=0;entryX=0.5;entryY=0.4930;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-psp" target="n.s-pay">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m19" value="10. dedupe on psp_ref" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.5395;exitDx=0;exitDy=0;entryX=0.5;entryY=0.5674;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.s-pay" target="n.s-pay">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1040" y="550" />
              <mxPoint x="1040" y="570" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m20" value="11. create order (Temporal saga)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.6000;exitDx=0;exitDy=0;entryX=0.5;entryY=0.6000;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-pay" target="n.s-ord">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m21" value="12. confirm(reservation_id)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.6465;exitDx=0;exitDy=0;entryX=0.5;entryY=0.6465;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-ord" target="n.s-inv">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m22" value="13. OrderCreated" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#d79b00;exitX=0.5;exitY=0.6930;exitDx=0;exitDy=0;entryX=0.5;entryY=0.6930;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-ord" target="n.s-bus">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m23" value="14. order_id, ETA" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#5a6570;exitX=0.5;exitY=0.7395;exitDx=0;exitDy=0;entryX=0.5;entryY=0.7395;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-ord" target="n.s-bff">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m24" value="15. confirmation screen" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#5a6570;exitX=0.5;exitY=0.7860;exitDx=0;exitDy=0;entryX=0.5;entryY=0.7860;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-bff" target="n.s-usr">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m25" value="16. no webhook in 90 s" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;dashed=1;strokeColor=#b85450;fontColor=#b85450;exitX=0.5;exitY=0.8326;exitDx=0;exitDy=0;entryX=0.5;entryY=0.8326;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-psp" target="n.s-pay">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m26" value="17. status poll, then void" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.8791;exitDx=0;exitDy=0;entryX=0.5;entryY=0.8791;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-pay" target="n.s-psp">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m27" value="18. release(reservation_id)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;dashed=1;strokeColor=#b85450;fontColor=#b85450;exitX=0.5;exitY=0.9256;exitDx=0;exitDy=0;entryX=0.5;entryY=0.9256;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.s-pay" target="n.s-inv">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="title" value="Critical Flow — Reserve, Pay, Confirm" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=20;fontStyle=1;fontColor=#16202c;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="20" width="1630" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#c9d3de;" vertex="1" parent="1">
          <mxGeometry x="40" y="50" width="1630" height="10" as="geometry" />
        </mxCell>
        <mxCell id="note" value="Stock is reserved before money is asked for, and the reservation expires on its own. Every step carries the same idempotency key, so a retried webhook cannot create a second order or a second debit." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="990" width="1630" height="20" as="geometry" />
        </mxCell>
        <mxCell id="foot-rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#e3e9ef;" vertex="1" parent="1">
          <mxGeometry x="40" y="1010" width="1630" height="10" as="geometry" />
        </mxCell>
        <mxCell id="foot" value="v 1.0   ·   owner Commerce Engineering   ·   date 2026-09" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=9;fontColor=#9aa7b4;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="1020" width="1630" height="10" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
