{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Booking and ticketing","meta":[{"name":"robots","content":"noindex"}],"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":"booking-and-ticketing","__idx":0},"children":["Booking and ticketing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These operations cover the initial booking flow from airline confirmation through payment processing and ticket issuance."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhook used:"]}," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/openapi/webhookeventapi/webhooks/paths/pnr_v3/post"},"children":["PNR_V3"]}]},{"$$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":"Step"},"children":["Step"]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"25%","data-label":"Operation"},"children":["Operation "]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event trigger"},"children":["Event trigger"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Context"},"children":["Context"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BOOKING_CREATED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["When the airline confirms the flight reservation."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["This is the first notification in the booking flow."," ","The airline has accepted the reservation and created a PNR in their system."," ","At this point, the traveler's payment card is authorized. The funds may be held or debited depending on the supplier's policy."," ","The ticketing will happen later in the booking lifecycle."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PAYMENT_DECLINED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["When the payment card is declined before ticket issuance."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The payment method used for booking has been declined (e.g., due to incorrect card information)."," ","The airline reservation made at step 1 still exists, but no ticket has been issued."," ","The traveler or the agent can manually retry the payment by using a new payment method."," ","Each failed manual retry generates a new ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PAYMENT_DECLINED"]}," notification."," ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"Spotnana does not automatically cancel the booking due to payment failure. However,"," ","the airline may independently cancel the unticketed reservation based on its own ticketing deadline policies."," ","If the airline cancels the reservation before it is ticketed, a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FLIGHT_CANCELED"]}," event is generated."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["3"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BOOKING_TICKETED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["When an airline ticket is issued for the booking."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The payment is successful and the booking is ticketed. The traveler now has a confirmed e-ticket."," ","This notification includes the issued ticket number(s)."," ","This operation is also triggered when a new ticket is issued during an exchange."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["4"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SPLIT_PNR_CREATED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["When a multi-traveler booking is split into separate PNRs."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["If a group booking needs to be split so each traveler has their own PNR,"," ","this operation is triggered for each new child PNR created from the split.",{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," For the child PNRs created the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BOOKING_CREATED"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BOOKING_TICKETED"]}," events will be replaced by the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SPLIT_PNR_CREATED"]}," event."]}]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"booking-and-ticketing-flow-diagram","__idx":1},"children":["Booking and ticketing flow diagram"]},{"$$mdtype":"Tag","name":"Mermaid","attributes":{"data-language":"mermaid","diagramSource":"flowchart TD\n    subgraph booking[\"Booking phase\"]\n        A[\"Traveler searches for flights\"] --> B[\"Traveler selects and books a flight\"]\n        B --> C{\"Airline confirms<br>reservation?\"}\n        C -->|Yes| D[\"<b>BOOKING_CREATED</b><br>―――――――――――<br>Airline confirms the booking.<br>Card is authorized and a hold is placed.\"]\n        C -->|\"No (rare)\"| Z1[\"No webhook<br>(booking remains pending)\"]\n    end\n\n    subgraph ticketing[\"Ticketing and payment phase\"]\n        D --> E{\"Payment capture<br>attempt\"}\n        E -->|\"All retries fail\"| F[\"<b>PAYMENT_DECLINED</b><br>―――――――――――<br>Card charge failed.<br>Booking stays active indefinitely.<br>Airline may cancel per its own policy.\"]\n        F -->|\"Traveler/agent<br>retries with a<br>new or the same card\"| E\n        E -->|Succeeds| G{\"Ticket<br>issuance\"}\n        G -->|Normal| H[\"<b>BOOKING_TICKETED</b><br>―――――――――――<br>The payment method is charged and a ticket is issued.\"]\n        G -->|\"Split PNR\"| I[\"<b>SPLIT_PNR_CREATED</b><br>―――――――――――<br>Child PNR created from<br>multi-traveler booking split.\"]\n    end\n\n    style A fill:#f0f0f0,stroke:#999\n    style B fill:#f0f0f0,stroke:#999\n    style D fill:#4CAF50,color:#fff\n    style F fill:#F44336,color:#fff\n    style H fill:#4CAF50,color:#fff\n    style I fill:#2196F3,color:#fff\n    style Z1 fill:#9E9E9E,color:#fff\n","diagramHtml":"<div class=\"mermaid\" data-processed=\"true\"><svg id=\"mermaid-1773178624953\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" class=\"flowchart\" style=\"max-width: 798.48828125px;\" viewBox=\"0 0 798.48828125 1614.625\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>#mermaid-1773178624953{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-1773178624953 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-1773178624953 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-1773178624953 .error-icon{fill:#552222;}#mermaid-1773178624953 .error-text{fill:#552222;stroke:#552222;}#mermaid-1773178624953 .edge-thickness-normal{stroke-width:1px;}#mermaid-1773178624953 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1773178624953 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1773178624953 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-1773178624953 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1773178624953 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1773178624953 .marker{fill:#333333;stroke:#333333;}#mermaid-1773178624953 .marker.cross{stroke:#333333;}#mermaid-1773178624953 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-1773178624953 p{margin:0;}#mermaid-1773178624953 .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-1773178624953 .cluster-label text{fill:#333;}#mermaid-1773178624953 .cluster-label span{color:#333;}#mermaid-1773178624953 .cluster-label span p{background-color:transparent;}#mermaid-1773178624953 .label text,#mermaid-1773178624953 span{fill:#333;color:#333;}#mermaid-1773178624953 .node rect,#mermaid-1773178624953 .node circle,#mermaid-1773178624953 .node ellipse,#mermaid-1773178624953 .node polygon,#mermaid-1773178624953 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-1773178624953 .rough-node .label text,#mermaid-1773178624953 .node .label text,#mermaid-1773178624953 .image-shape .label,#mermaid-1773178624953 .icon-shape .label{text-anchor:middle;}#mermaid-1773178624953 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-1773178624953 .rough-node .label,#mermaid-1773178624953 .node .label,#mermaid-1773178624953 .image-shape .label,#mermaid-1773178624953 .icon-shape .label{text-align:center;}#mermaid-1773178624953 .node.clickable{cursor:pointer;}#mermaid-1773178624953 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-1773178624953 .arrowheadPath{fill:#333333;}#mermaid-1773178624953 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-1773178624953 .flowchart-link{stroke:#333333;fill:none;}#mermaid-1773178624953 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-1773178624953 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-1773178624953 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-1773178624953 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-1773178624953 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-1773178624953 .cluster text{fill:#333;}#mermaid-1773178624953 .cluster span{color:#333;}#mermaid-1773178624953 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-1773178624953 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-1773178624953 rect.text{fill:none;stroke-width:0;}#mermaid-1773178624953 .icon-shape,#mermaid-1773178624953 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-1773178624953 .icon-shape p,#mermaid-1773178624953 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-1773178624953 .icon-shape rect,#mermaid-1773178624953 .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-1773178624953 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-1773178624953 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-1773178624953 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}</style><g><marker id=\"mermaid-1773178624953_flowchart-v2-pointEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"mermaid-1773178624953_flowchart-v2-pointStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"4.5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 5 L 10 10 L 10 0 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"mermaid-1773178624953_flowchart-v2-circleEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"11\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"mermaid-1773178624953_flowchart-v2-circleStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-1\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"mermaid-1773178624953_flowchart-v2-crossEnd\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"12\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"mermaid-1773178624953_flowchart-v2-crossStart\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"-1\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"><g class=\"cluster\" id=\"ticketing\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"807.234375\" width=\"782.48828125\" height=\"799.390625\"></rect><g class=\"cluster-label\" transform=\"translate(299.244140625, 807.234375)\"><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>Ticketing and payment phase</p></span></div></foreignObject></g></g><g class=\"cluster\" id=\"booking\" data-look=\"classic\"><rect style=\"\" x=\"61.125\" y=\"8\" width=\"639.6796875\" height=\"749.234375\"></rect><g class=\"cluster-label\" transform=\"translate(326.06640625, 8)\"><foreignObject width=\"109.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>Booking phase</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M429.145,111L429.145,115.167C429.145,119.333,429.145,127.667,429.145,135.333C429.145,143,429.145,150,429.145,153.5L429.145,157\" id=\"L_A_B_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_A_B_0\" data-points=\"W3sieCI6NDI5LjE0NDUzMTI1LCJ5IjoxMTF9LHsieCI6NDI5LjE0NDUzMTI1LCJ5IjoxMzZ9LHsieCI6NDI5LjE0NDUzMTI1LCJ5IjoxNjF9XQ==\" marker-end=\"url(#mermaid-1773178624953_flowchart-v2-pointEnd)\"></path><path d=\"M429.145,239L429.145,243.167C429.145,247.333,429.145,255.667,429.145,263.333C429.145,271,429.145,278,429.145,281.5L429.145,285\" id=\"L_B_C_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_B_C_0\" data-points=\"W3sieCI6NDI5LjE0NDUzMTI1LCJ5IjoyMzl9LHsieCI6NDI5LjE0NDUzMTI1LCJ5IjoyNjR9LHsieCI6NDI5LjE0NDUzMTI1LCJ5IjoyODl9XQ==\" marker-end=\"url(#mermaid-1773178624953_flowchart-v2-pointEnd)\"></path><path d=\"M370.448,425.538L346.394,441.487C322.34,457.437,274.233,489.335,250.179,510.785C226.125,532.234,226.125,543.234,226.125,548.734L226.125,554.234\" id=\"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=\"W3sieCI6MzcwLjQ0NzcyOTE5MTM3MjEsInkiOjQyNS41Mzc1NzI5NDEzNzIxfSx7IngiOjIyNi4xMjUsInkiOjUyMS4yMzQzNzV9LHsieCI6MjI2LjEyNSwieSI6NTU4LjIzNDM3NX1d\" marker-end=\"url(#mermaid-1773178624953_flowchart-v2-pointEnd)\"></path><path d=\"M472.298,441.081L482.882,454.44C493.467,467.799,514.636,494.517,525.22,521.376C535.805,548.234,535.805,575.234,535.805,588.734L535.805,602.234\" id=\"L_C_Z1_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_Z1_0\" data-points=\"W3sieCI6NDcyLjI5NzYyNzYzOTQ1NTUsInkiOjQ0MS4wODEyNzg2MTA1NDQ1fSx7IngiOjUzNS44MDQ2ODc1LCJ5Ijo1MjEuMjM0Mzc1fSx7IngiOjUzNS44MDQ2ODc1LCJ5Ijo2MDYuMjM0Mzc1fV0=\" marker-end=\"url(#mermaid-1773178624953_flowchart-v2-pointEnd)\"></path><path d=\"M226.125,732.234L226.125,736.401C226.125,740.568,226.125,748.901,226.125,757.234C226.125,765.568,226.125,773.901,226.125,782.234C226.125,790.568,226.125,798.901,226.125,806.568C226.125,814.234,226.125,821.234,226.125,824.734L226.125,828.234\" id=\"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=\"W3sieCI6MjI2LjEyNSwieSI6NzMyLjIzNDM3NX0seyJ4IjoyMjYuMTI1LCJ5Ijo3NTcuMjM0Mzc1fSx7IngiOjIyNi4xMjUsInkiOjc4Mi4yMzQzNzV9LHsieCI6MjI2LjEyNSwieSI6ODA3LjIzNDM3NX0seyJ4IjoyMjYuMTI1LCJ5Ijo4MzIuMjM0Mzc1fV0=\" marker-end=\"url(#mermaid-1773178624953_flowchart-v2-pointEnd)\"></path><path d=\"M186.866,998.366L176.525,1015.076C166.184,1031.786,145.502,1065.205,138.031,1091.444C130.559,1117.682,136.297,1136.738,139.166,1146.267L142.035,1155.795\" id=\"L_E_F_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_E_F_0\" data-points=\"W3sieCI6MTg2Ljg2NjQ0NzAxNjg3Nzk0LCJ5Ijo5OTguMzY2NDQ3MDE2ODc3OX0seyJ4IjoxMjQuODIwMzEyNSwieSI6MTA5OC42MjV9LHsieCI6MTQzLjE4ODgxODM1OTM3NSwieSI6MTE1OS42MjV9XQ==\" marker-end=\"url(#mermaid-1773178624953_flowchart-v2-pointEnd)\"></path><path d=\"M235.682,1159.625L242.119,1149.458C248.556,1139.292,261.431,1118.958,263.918,1095.372C266.405,1071.787,258.506,1044.948,254.557,1031.529L250.607,1018.11\" id=\"L_F_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_F_E_0\" data-points=\"W3sieCI6MjM1LjY4MjI3NTM5MDYyNSwieSI6MTE1OS42MjV9LHsieCI6Mjc0LjMwNDY4NzUsInkiOjEwOTguNjI1fSx7IngiOjI0OS40Nzc1ODA4MzI4NzI0LCJ5IjoxMDE0LjI3MjQxOTE2NzEyNzZ9XQ==\" marker-end=\"url(#mermaid-1773178624953_flowchart-v2-pointEnd)\"></path><path d=\"M286.32,977.43L314.93,997.629C343.539,1017.828,400.758,1058.227,429.367,1092.555C457.977,1126.883,457.977,1155.141,457.977,1169.27L457.977,1183.398\" id=\"L_E_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_E_G_0\" data-points=\"W3sieCI6Mjg2LjMyMDMxNDgxNDU4NjIsInkiOjk3Ny40Mjk2ODUxODU0MTM3fSx7IngiOjQ1Ny45NzY1NjI1LCJ5IjoxMDk4LjYyNX0seyJ4Ijo0NTcuOTc2NTYyNSwieSI6MTE4Ny4zOTg0Mzc1fV0=\" marker-end=\"url(#mermaid-1773178624953_flowchart-v2-pointEnd)\"></path><path d=\"M421.534,1293.409L403.859,1310.278C386.185,1327.147,350.837,1360.886,333.162,1383.256C315.488,1405.625,315.488,1416.625,315.488,1422.125L315.488,1427.625\" id=\"L_G_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_G_H_0\" data-points=\"W3sieCI6NDIxLjUzMzU1NTE4Nzc0NjM0LCJ5IjoxMjkzLjQwODU1NTE4Nzc0NjN9LHsieCI6MzE1LjQ4ODI4MTI1LCJ5IjoxMzk0LjYyNX0seyJ4IjozMTUuNDg4MjgxMjUsInkiOjE0MzEuNjI1fV0=\" marker-end=\"url(#mermaid-1773178624953_flowchart-v2-pointEnd)\"></path><path d=\"M497.287,1290.541L518.654,1307.888C540.021,1325.236,582.755,1359.93,604.121,1382.778C625.488,1405.625,625.488,1416.625,625.488,1422.125L625.488,1427.625\" id=\"L_G_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_G_I_0\" data-points=\"W3sieCI6NDk3LjI4NzM0NzQ0ODE2NTM1LCJ5IjoxMjkwLjU0MDc3NzU1MTgzNDd9LHsieCI6NjI1LjQ4ODI4MTI1LCJ5IjoxMzk0LjYyNX0seyJ4Ijo2MjUuNDg4MjgxMjUsInkiOjE0MzEuNjI1fV0=\" marker-end=\"url(#mermaid-1773178624953_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\" transform=\"translate(226.125, 521.234375)\"><g class=\"label\" data-id=\"L_C_D_0\" transform=\"translate(-12.78125, -12)\"><foreignObject width=\"25.5625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Yes</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(535.8046875, 521.234375)\"><g class=\"label\" data-id=\"L_C_Z1_0\" transform=\"translate(-33.109375, -12)\"><foreignObject width=\"66.21875\" 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 (rare)</p></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\" transform=\"translate(139.08116, 1075.5813)\"><g class=\"label\" data-id=\"L_E_F_0\" transform=\"translate(-48.640625, -12)\"><foreignObject width=\"97.28125\" 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>All retries fail</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(272.08381, 1091.07936)\"><g class=\"label\" data-id=\"L_F_E_0\" transform=\"translate(-80.84375, -36)\"><foreignObject width=\"161.6875\" height=\"72\"><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>Traveler/agent<br>retries with a<br>new or the same card</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(457.9765625, 1098.625)\"><g class=\"label\" data-id=\"L_E_G_0\" transform=\"translate(-34.6484375, -12)\"><foreignObject width=\"69.296875\" 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>Succeeds</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(315.48828125, 1394.625)\"><g class=\"label\" data-id=\"L_G_H_0\" transform=\"translate(-27.9765625, -12)\"><foreignObject width=\"55.953125\" 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>Normal</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(625.48828125, 1394.625)\"><g class=\"label\" data-id=\"L_G_I_0\" transform=\"translate(-34.0234375, -12)\"><foreignObject width=\"68.046875\" 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>Split PNR</p></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"flowchart-A-0\" transform=\"translate(429.14453125, 72)\"><rect class=\"basic label-container\" style=\"fill:#f0f0f0 !important;stroke:#999 !important\" x=\"-130\" y=\"-39\" width=\"260\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -24)\"><rect></rect><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Traveler searches for flights</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-B-1\" transform=\"translate(429.14453125, 200)\"><rect class=\"basic label-container\" style=\"fill:#f0f0f0 !important;stroke:#999 !important\" x=\"-130\" y=\"-39\" width=\"260\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -24)\"><rect></rect><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Traveler selects and books a flight</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-C-3\" transform=\"translate(429.14453125, 386.6171875)\"><polygon points=\"97.6171875,0 195.234375,-97.6171875 97.6171875,-195.234375 0,-97.6171875\" class=\"label-container\" transform=\"translate(-97.1171875, 97.6171875)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-58.6171875, -24)\"><rect></rect><foreignObject width=\"117.234375\" height=\"48\"><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>Airline confirms<br>reservation?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-D-5\" transform=\"translate(226.125, 645.234375)\"><rect class=\"basic label-container\" style=\"fill:#4CAF50 !important\" x=\"-130\" y=\"-87\" width=\"260\" height=\"174\"></rect><g class=\"label\" style=\"color:#fff !important\" transform=\"translate(-100, -72)\"><rect></rect><foreignObject width=\"200\" height=\"144\"><div style=\"color: rgb(255, 255, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\" xmlns=\"http://www.w3.org/1999/xhtml\"><span style=\"color:#fff !important\" class=\"nodeLabel\"><p><b>BOOKING_CREATED</b><br>―――――――――――<br>Airline confirms the booking.<br>Card is authorized and a hold is placed.</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-Z1-7\" transform=\"translate(535.8046875, 645.234375)\"><rect class=\"basic label-container\" style=\"fill:#9E9E9E !important\" x=\"-129.6796875\" y=\"-39\" width=\"259.359375\" height=\"78\"></rect><g class=\"label\" style=\"color:#fff !important\" transform=\"translate(-99.6796875, -24)\"><rect></rect><foreignObject width=\"199.359375\" height=\"48\"><div style=\"color: rgb(255, 255, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\" xmlns=\"http://www.w3.org/1999/xhtml\"><span style=\"color:#fff !important\" class=\"nodeLabel\"><p>No webhook<br>(booking remains pending)</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-E-9\" transform=\"translate(226.125, 934.9296875)\"><polygon points=\"102.6953125,0 205.390625,-102.6953125 102.6953125,-205.390625 0,-102.6953125\" class=\"label-container\" transform=\"translate(-102.1953125, 102.6953125)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-63.6953125, -24)\"><rect></rect><foreignObject width=\"127.390625\" height=\"48\"><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>Payment capture<br>attempt</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-F-11\" transform=\"translate(173, 1258.625)\"><rect class=\"basic label-container\" style=\"fill:#F44336 !important\" x=\"-130\" y=\"-99\" width=\"260\" height=\"198\"></rect><g class=\"label\" style=\"color:#fff !important\" transform=\"translate(-100, -84)\"><rect></rect><foreignObject width=\"200\" height=\"168\"><div style=\"color: rgb(255, 255, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\" xmlns=\"http://www.w3.org/1999/xhtml\"><span style=\"color:#fff !important\" class=\"nodeLabel\"><p><b>PAYMENT_DECLINED</b><br>―――――――――――<br>Card charge failed.<br>Booking stays active indefinitely.<br>Airline may cancel per its own policy.</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-G-15\" transform=\"translate(457.9765625, 1258.625)\"><polygon points=\"71.2265625,0 142.453125,-71.2265625 71.2265625,-142.453125 0,-71.2265625\" class=\"label-container\" transform=\"translate(-70.7265625, 71.2265625)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-32.2265625, -24)\"><rect></rect><foreignObject width=\"64.453125\" height=\"48\"><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>Ticket<br>issuance</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-H-17\" transform=\"translate(315.48828125, 1506.625)\"><rect class=\"basic label-container\" style=\"fill:#4CAF50 !important\" x=\"-130\" y=\"-75\" width=\"260\" height=\"150\"></rect><g class=\"label\" style=\"color:#fff !important\" transform=\"translate(-100, -60)\"><rect></rect><foreignObject width=\"200\" height=\"120\"><div style=\"color: rgb(255, 255, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\" xmlns=\"http://www.w3.org/1999/xhtml\"><span style=\"color:#fff !important\" class=\"nodeLabel\"><p><b>BOOKING_TICKETED</b><br>―――――――――――<br>The payment method is charged and a ticket is issued.</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"flowchart-I-19\" transform=\"translate(625.48828125, 1506.625)\"><rect class=\"basic label-container\" style=\"fill:#2196F3 !important\" x=\"-130\" y=\"-75\" width=\"260\" height=\"150\"></rect><g class=\"label\" style=\"color:#fff !important\" transform=\"translate(-100, -60)\"><rect></rect><foreignObject width=\"200\" height=\"120\"><div style=\"color: rgb(255, 255, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\" xmlns=\"http://www.w3.org/1999/xhtml\"><span style=\"color:#fff !important\" class=\"nodeLabel\"><p><b>SPLIT_PNR_CREATED</b><br>―――――――――――<br>Child PNR created from<br>multi-traveler booking split.</p></span></div></foreignObject></g></g></g></g></g></svg></div>"},"children":["flowchart TD\n    subgraph booking[\"Booking phase\"]\n        A[\"Traveler searches for flights\"] --> B[\"Traveler selects and books a flight\"]\n        B --> C{\"Airline confirms<br>reservation?\"}\n        C -->|Yes| D[\"<b>BOOKING_CREATED</b><br>―――――――――――<br>Airline confirms the booking.<br>Card is authorized and a hold is placed.\"]\n        C -->|\"No (rare)\"| Z1[\"No webhook<br>(booking remains pending)\"]\n    end\n\n    subgraph ticketing[\"Ticketing and payment phase\"]\n        D --> E{\"Payment capture<br>attempt\"}\n        E -->|\"All retries fail\"| F[\"<b>PAYMENT_DECLINED</b><br>―――――――――――<br>Card charge failed.<br>Booking stays active indefinitely.<br>Airline may cancel per its own policy.\"]\n        F -->|\"Traveler/agent<br>retries with a<br>new or the same card\"| E\n        E -->|Succeeds| G{\"Ticket<br>issuance\"}\n        G -->|Normal| H[\"<b>BOOKING_TICKETED</b><br>―――――――――――<br>The payment method is charged and a ticket is issued.\"]\n        G -->|\"Split PNR\"| I[\"<b>SPLIT_PNR_CREATED</b><br>―――――――――――<br>Child PNR created from<br>multi-traveler booking split.\"]\n    end\n\n    style A fill:#f0f0f0,stroke:#999\n    style B fill:#f0f0f0,stroke:#999\n    style D fill:#4CAF50,color:#fff\n    style F fill:#F44336,color:#fff\n    style H fill:#4CAF50,color:#fff\n    style I fill:#2196F3,color:#fff\n    style Z1 fill:#9E9E9E,color:#fff\n"]}]},"headings":[{"value":"Booking and ticketing","id":"booking-and-ticketing","depth":1},{"value":"Booking and ticketing flow diagram","id":"booking-and-ticketing-flow-diagram","depth":2}],"frontmatter":{"seo":{"title":"Booking and ticketing"}},"lastModified":"2026-03-11T17:17:12.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/webhooks/booking-lifecycle/air-booking-lifecycle/air-booking-ticketing-lifecycle","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}