{
    "componentChunkName": "component---src-templates-article-page-template-js",
    "path": "/concepts/payment-intents/",
    "result": {"data":{"markdownRemark":{"frontmatter":{"title":"How PaymentIntents work","slug":"payment-intents","updated":"2021-10-14T00:00:00.000Z","category":"concepts-payments","ingress":"Overview of how Stripe PaymentIntents work with Sharetribe Flex, and how you can build your transaction process with support for Strong Customer Authentication (SCA).","skills":null},"htmlAst":{"type":"root","children":[{"type":"element","tagName":"h2","properties":{"id":"introduction","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#introduction","ariaLabel":"introduction permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Introduction"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/payment-intents","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"PaymentIntents"}]},{"type":"text","value":" are a\nmechanism provided by Stripe to track the lifecycle of customer checkout\nflow. In addition, PaymentIntents provide tools for\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/strong-customer-authentication/"},"children":[{"type":"text","value":"Strong Customer Authentication (SCA)"}]},{"type":"text","value":"\nwhere required. Flex has built-in support for PaymentIntents and Strong\nCustomer Authentication."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In September 2019\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/en-fi/payments/strong-customer-authentication","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"new European regulation"}]},{"type":"text","value":"\nwill begin requiring SCA for online payments from European customers. In\norder to conform to these regulatory changes, Stripe encourages users to\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/strong-customer-authentication/migration","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"migrate or use PaymentIntents"}]},{"type":"text","value":"\ninstead of directly creating Charges."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In the future, PaymentIntents can be required in other countries outside\nEurope due to local regulatory changes but they can already be used\noutside Europe. And if needed, they can provide fraud prevention with\nthings like\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/3d-secure","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"3D Secure Card Payments"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"PaymentIntents also allow a variety of payment methods to be used when\nmaking a payment in Flex. See the\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/payment-methods-overview/"},"children":[{"type":"text","value":"overview of supported payment methods in Flex"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"This article will describe how PaymentIntents relate to Flex transaction\nprocesses and the general principles of implementing a checkout flow\nwith PaymentIntents."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"transaction-process-with-paymentintents","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#transaction-process-with-paymentintents","ariaLabel":"transaction process with paymentintents permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Transaction process with PaymentIntents"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"On high level, the payment flow with PaymentIntents has the following\nsteps:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Customer initiates (or transitions) a transaction with a transition\ncontaining action that creates a PaymentIntent."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Customer uses the PaymentIntent data to complete any steps necessary\nto authenticate and authorize the payment."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"The transaction can proceed only after customer has authorized (if\nrequired) the payment. The PaymentIntent is confirmed, resulting in a\nCharge being preauthorized (in the case of\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/payment-methods-overview/#card-payment-flow"},"children":[{"type":"text","value":"card payments"}]},{"type":"text","value":")\nor fully captured (in the case of\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/payment-methods-overview/#push-payment-flow"},"children":[{"type":"text","value":"push payment methods"}]},{"type":"text","value":")."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Transaction flow continues as usual onwards."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"example-transaction-process-with-card-payments","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#example-transaction-process-with-card-payments","ariaLabel":"example transaction process with card payments permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Example transaction process with card payments"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 635px; "},"children":[{"type":"text","value":"\n      "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/9bc77/automatic_confirmation_flow.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n    "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 106.28930817610063%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC5klEQVQ4y31V2ZLbOAzM/39aqjbZPMzsJh4fsizroEiKpyTq6BTIscbjuKKqNimTBIFuAPrS2R43SOO3kSC03+bP1mleMoGibrf3L882K9vDDQH9OMEPAcr9aUySE8bjfNoje/sPUplk8NONpo9ehWkGsEJ2Css8Y16WzeC236b9+5cCv77lkN2Dh51PkK6HDwHrCoQQsKwr+jH8YfA2/tgd8fX1F1pl7zzUHs1Bo95p1G8a7GzQSI3qWqAR6q8c7s5XvB7OEDcO6ae9WlSvCuWLQvW/isYLJnDa73B5J/wZyAhXFm1nILT7CDne5voNbhgR5gXBW4RpicLQ/8on3EIn4YYwR8Q9j6Ik9BjDhJYLNFyCc4FhDCgqgeOxwuFQIisbMKnh+x6s5RHGWvhxSgbvvaN0GMKEmTwcxziO8wyWG1z+ESi+C9RvKqYMXUQZEaYpOkHpFUPmlUVbvuNq0VYWFe9Q5DmuTCTPOw/OXEJto5CUOo+8RoNC3kG4eLgRGtfzCVUrsUXh78ZbERC3btjeP0K2t5A9xmmKyTwOA6Z5xhjmO2UdpPLodB/DpVDHMcR92g0fKqdKSfU7LyuMMWBcQGuDZVnBjgbFT0qlGk2mISsHerSxsaLosf1456H/8JQW/Bhg1QgTQ/JgF4Pim8T1X4lqp2LZcWVg/BBrns50Nw55nYimhC5fOtR7jVZb7H+WuDYSWcmQlxznnOFwrJBlDJeK43RtUAsdo0qd6V1lwZN6onXgrYPqUtI6EeCHdLvxI0yfQO/EF837MEfQ+mdRbnnoPOZ1wbIs4FLGBkECZS1HxlpcGo4jYyiETLxZh04pUDeJHH4WJUlP6pERIjyECdO64JILHL83yH4w5GeBptNxj+8HWHJiXqD98O7hXSchUKETmsiPS6nCPNjBRLXbk42Xd9ZHIxTu5zx8aEnUYU5Fjd3pEse8ZKmh9nd980mVbM3h8btCmU+k10LFOeFZ+3p29jf9U0fI1zBGwQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n  "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n          "},{"type":"element","tagName":"source","properties":{"srcSet":["/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/82e29/automatic_confirmation_flow.webp 159w","/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/ef33f/automatic_confirmation_flow.webp 318w","/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/f1837/automatic_confirmation_flow.webp 635w","/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/29549/automatic_confirmation_flow.webp 953w","/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/c5420/automatic_confirmation_flow.webp 1270w","/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/d2988/automatic_confirmation_flow.webp 1672w"],"sizes":"(max-width: 635px) 100vw, 635px","type":"image/webp"},"children":[]},{"type":"text","value":"\n          "},{"type":"element","tagName":"source","properties":{"srcSet":["/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/8b9b5/automatic_confirmation_flow.png 159w","/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/fa108/automatic_confirmation_flow.png 318w","/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/53fb6/automatic_confirmation_flow.png 635w","/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/5a426/automatic_confirmation_flow.png 953w","/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/91155/automatic_confirmation_flow.png 1270w","/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/9bc77/automatic_confirmation_flow.png 1672w"],"sizes":"(max-width: 635px) 100vw, 635px","type":"image/png"},"children":[]},{"type":"text","value":"\n          "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/docs/legacy/static/fee41fb8c89b33320b11582d49475fd2/53fb6/automatic_confirmation_flow.png","alt":"Automatic PaymentIntent flow","title":"Automatic PaymentIntent flow","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n        "}]},{"type":"text","value":"\n  "}]},{"type":"text","value":"\n    "}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For technical implementation of PaymentIntents, Stripe offers two\napproaches -\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/payment-intents#one-time-payments","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"manual or automatic confirmation flow"}]},{"type":"text","value":".\nFlex uses the automatic flow. In practice, the Flex transaction engine\nmodels the automatic flow with two transitions. First transition creates\nthe PaymentIntent (Step 1.) and second transition will validate and mark\nit confirmed in Flex (Step 3.). Between these steps, the automatic flow\npushes the responsibility of authenticating, authorizing and confirming\nthe payment in Stripe to the client application (Step 2.). More\ninformation on the Step 2. can be found in this\n"},{"type":"element","tagName":"a","properties":{"href":"#required-actions-in-the-client"},"children":[{"type":"text","value":"section"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"example-transaction-process-with-both-card-and-push-payments","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#example-transaction-process-with-both-card-and-push-payments","ariaLabel":"example transaction process with both card and push payments permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Example transaction process with both card and push payments"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 635px; "},"children":[{"type":"text","value":"\n      "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/0d005/push-payment-process.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n    "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 93.08176100628931%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAACXBIWXMAAAsTAAALEwEAmpwYAAAC4UlEQVQ4y32UiW4jNxBE9f8fl2wQxFhDXsvWNRfvezQSXkCOVmuvkQzQwznI6q5isTfaJ0zI1PH3MPdR3ePx/T7fxkI/CfbHA9qF9n3zmBQzJt0jZnQo6JBxsZDnC3leiHl+JPkJ2B17dk9btPG/ACuA6ALjzjG9R1SvsbJHjT3zPHO73YgxUS+XyyNxfX7fC56ejkiT7oA2IfrA8MMxbC2n74bTy5FhmhDG41MhlZkUI7FcWuLp4FsYk9n1A39st4hPlF1Ch7XS0XhOxz2nfkTYiLCBt8OZt92O46hb0u4fQ/9kmfaeSXt6YZE2roD11iKuYdMF6zxWDOipJ4ZIqRqm2HR0pWBLweTcqp+XK5fl2nR+AFbacoooGVD9AS169NShpzNlzvgQMdaTc2aaHK8vHe/7sYEsSy3ANX1tzGyGF8fwbDn/ZRieNWrskLImCEgRMSohlGEcp7YR05vn9KdqtLVK+FzwseBSaTu/0Sa1CqsFbEiNqtEzSqxVS5GYpGboO6Rbda5zP3rRpflhpZVySAzS0o2S7nykkwZhfVtcNcqlEEJkWRaszfTCME6OnBfmy6X9u95uK2Xj10wNcJL05xOd+AB4XUgl41xoi/V75PC3ZHi15LSQ57lpvFxv2IexQ6UxPyjbMKNlRAyB6d0znTxDZ+mV5bRTHL4LjlvFsVMMyuK/UK4vbbcDutrFX5BTQo4Z1dWTE5BjNW5CmMBkfGNQjV9pVsPX8RPgOkb0cEQrgdECrSaW68z1dm206iVDoDOGk9KkZpsF70M7nvXcbz52mtWTDq0VWmuUUuRcyOXSfLhcF4becXiWHN7V2jjKjPORcllWDR8n5VFpwcRfUaVQLiG0Q8sBcXD0T4bxxSN7iZFjO11fNfyPvlgN+3ro+Pa0RY49Rvb8OJ05Dz12OjcmtdWZ+/pPFf4eP417HhXPr/u16lDuyfLKps79UMzm/8A+PisX+byBXzt4rfBfq4uq7ZidbRgAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n  "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n          "},{"type":"element","tagName":"source","properties":{"srcSet":["/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/82e29/push-payment-process.webp 159w","/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/ef33f/push-payment-process.webp 318w","/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/f1837/push-payment-process.webp 635w","/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/29549/push-payment-process.webp 953w","/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/c5420/push-payment-process.webp 1270w","/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/712c5/push-payment-process.webp 2040w"],"sizes":"(max-width: 635px) 100vw, 635px","type":"image/webp"},"children":[]},{"type":"text","value":"\n          "},{"type":"element","tagName":"source","properties":{"srcSet":["/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/8b9b5/push-payment-process.png 159w","/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/fa108/push-payment-process.png 318w","/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/53fb6/push-payment-process.png 635w","/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/5a426/push-payment-process.png 953w","/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/91155/push-payment-process.png 1270w","/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/0d005/push-payment-process.png 2040w"],"sizes":"(max-width: 635px) 100vw, 635px","type":"image/png"},"children":[]},{"type":"text","value":"\n          "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/docs/legacy/static/47cb36cd5e21952edf1409a0db93d095/53fb6/push-payment-process.png","alt":"PaymentIntent process with card and push payments","title":"PaymentIntent process with card and push payments","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n        "}]},{"type":"text","value":"\n  "}]},{"type":"text","value":"\n    "}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Since push payments\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/payment-methods-overview/#push-payment-flow"},"children":[{"type":"text","value":"do not have a preauthorization stage"}]},{"type":"text","value":",\nthis process allows an instant-booking type of flow, where the booking\ndoes not need acceptance from the provider."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"You can find another example process with only an "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"instant booking"}]},{"type":"text","value":" flow\nand support for both card and push payments in the\n"},{"type":"element","tagName":"a","properties":{"href":"https://github.com/sharetribe/example-processes#instant-booking","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Instant booking process"}]},{"type":"text","value":"\nin the\n"},{"type":"element","tagName":"a","properties":{"href":"https://github.com/sharetribe/example-processes","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Flex example transaction processes repository"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"actions-related-to-paymentintents","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#actions-related-to-paymentintents","ariaLabel":"actions related to paymentintents permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Actions related to PaymentIntents"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The following actions can be attached to a transaction process in order\nto implement PaymentIntent flow and are already present in the default\nflows."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"stripe-create-payment-intent","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#stripe-create-payment-intent","ariaLabel":"stripe create payment intent permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"stripe-create-payment-intent"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Creates a PaymentIntent for use with card payments (or payment methods\nthat are similar, such as Google Pay or Apple Pay). You can optionally\npass in a\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/payment-methods","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"PaymentMethod"}]},{"type":"text","value":" ID, or\nattach a PaymentMethod later to the transaction during the validation\nand confirmation in the client by using Stripe Elements. The latter is\nthe recommended way and is covered in the\n"},{"type":"element","tagName":"a","properties":{"href":"#implementing-the-paymentintent-flow"},"children":[{"type":"text","value":"implementation guide"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For detailed reference, see\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/transaction-process-actions/#actionstripe-create-payment-intent"},"children":[{"type":"text","value":"here"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"stripe-create-payment-intent-push","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#stripe-create-payment-intent-push","ariaLabel":"stripe create payment intent push permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"stripe-create-payment-intent-push"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Creates a PaymentIntent for use with push payments. You can optionally\npass in a\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/payment-methods","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"PaymentMethod"}]},{"type":"text","value":" ID, or\nattach a PaymentMethod later to the transaction during the validation\nand confirmation in the client by using Stripe Elements. The latter is\nthe recommended way and is covered in the\n"},{"type":"element","tagName":"a","properties":{"href":"#implementing-the-paymentintent-flow"},"children":[{"type":"text","value":"implementation guide"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For detailed reference, see\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/transaction-process-actions/#actionstripe-create-payment-intent-push"},"children":[{"type":"text","value":"here"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"stripe-confirm-payment-intent","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#stripe-confirm-payment-intent","ariaLabel":"stripe confirm payment intent permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"stripe-confirm-payment-intent"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Validates that the transaction has a PaymentIntent created and verifies\nvia Stripe API that the PaymentIntent status is "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"requires_capture"}]},{"type":"text","value":",\n"},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"requires_confirmation"}]},{"type":"text","value":" or "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"succeeded"}]},{"type":"text","value":" (only allowed for push payment\nmethods). Confirms the PaymentIntent in Stripe, if needed."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If the payment intent was created with "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"stripe-create-payment-intent"}]},{"type":"text","value":" (a\ncard payment), a preauthorization is placed on the card. The payment\nthen can be captured in full by using "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"stripe-capture-payment-intent"}]},{"type":"text","value":"\nwithin 7 days of creating the payment intent, or the preauthorization\ncan be released by using "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"stripe-refund-payment"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"On the other hand, if the payment intent was created with\n"},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"stripe-create-payment-intent-push"}]},{"type":"text","value":", there is no preauthorization, the\npayment is captured in full and there is no need to use the\n"},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"stripe-capture-payment-intent"}]},{"type":"text","value":" action. The payment can be refunded in\nfull using the "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"stripe-refund-payment"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For detailed reference, see\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/transaction-process-actions/#actionstripe-confirm-payment-intent"},"children":[{"type":"text","value":"here"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"stripe-capture-payment-intent","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#stripe-capture-payment-intent","ariaLabel":"stripe capture payment intent permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"stripe-capture-payment-intent"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Captures a confirmed PaymentIntent. In case of PaymentIntents created\nthrough "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"stripe-create-payment-intent-push"}]},{"type":"text","value":", the PaymentIntent is\nautomatically captured already when confirmed and this action has no\neffect. Note that uncaptured payment intents are valid for seven days,\nafter which they are automatically canceled by Stripe."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For detailed reference, see\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/transaction-process-actions/#actionstripe-capture-payment-intent"},"children":[{"type":"text","value":"here"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"stripe-refund-payment","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#stripe-refund-payment","ariaLabel":"stripe refund payment permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"stripe-refund-payment"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Either cancels an unconfirmed PaymentIntent or refunds the related\ncaptured charge."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For detailed reference, see\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/transaction-process-actions/#actionstripe-refund-payment"},"children":[{"type":"text","value":"here"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"required-actions-in-the-client","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#required-actions-in-the-client","ariaLabel":"required actions in the client permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Required actions in the client"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The required actions in the client are related to authentication and\nconfirmation. You need to be able to handle potential authentication\nsteps required by the customer's card issuing bank. After\nauthentication, the client needs to\n"},{"type":"element","tagName":"a","properties":{"href":"#implementing-the-automatic-paymentintent-flow"},"children":[{"type":"text","value":"obtain PaymentIntent data from the transaction's protected data"}]},{"type":"text","value":"\nand use that to confirm the payment."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In case you wish to enforce\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/3d-secure","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"3D Secure Card Payments"}]},{"type":"text","value":"\nfor cards that support 3DS, in addition to supporting payment\nauthentication in your client app, you may need to update your\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/3d-secure#three-ds-radar","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Stripe Radar rules"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"handling-strong-customer-authentication","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#handling-strong-customer-authentication","ariaLabel":"handling strong customer authentication permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Handling Strong Customer Authentication"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/en-fi/payments/strong-customer-authentication","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Strong Customer Authentication"}]},{"type":"text","value":"\nis a potential step enforced by governmental regulation. Not every\nPaymentIntent for card payments will require customer authentication.\nFor instance, authentication may not be required for:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"transactions out of scope of SCA"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"e.g. when card issuing bank is outside of EEA"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"merchant initiated transactions"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"transactions that fall under an SCA exemption"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"low value or low risk transactions"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"recurring payments for fixed amount"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"other"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In addition, PaymentIntents for push payment methods also require\ncustomer action. Typically, the customer needs to be redirected to their\nbank website or app where they can complete the payment, after which\nthey get redirected back to the marketplace."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"This means that Flex implementation of PaymentIntents supports payment\nflows that require authentication and those that do not. When\nimplementing the PaymentIntent flow in the client you need to be\nprepared for handling both cases - payments requiring SCA and payments\nthat do not. It might be impossible to know in advance whether the\npayment will require authentication, unless the marketplace and all its\ncustomers are outside of EEA."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The recommended way of implementing support for SCA is to use\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/payment-intents/quickstart","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Stripe Elements"}]},{"type":"text","value":"\nthat can provide you with ready modals for handling e.g. 3D Secure Card\nPayments. The next section will provide high level instructions on how\nto do this in the client."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"implementing-the-paymentintent-flow","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#implementing-the-paymentintent-flow","ariaLabel":"implementing the paymentintent flow permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Implementing the PaymentIntent flow"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For implementing the PaymentIntent flow, you can use the following\nguides as a reference:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/accept-a-payment","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"card payments"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"push payment methods:\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/alipay/accept-a-payment","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Alipay"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/bancontact/accept-a-payment","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Bancontact"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/eps/accept-a-payment","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"EPS"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/giropay/accept-a-payment","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"giropay"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/ideal/accept-a-payment","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"iDEAL"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/p24/accept-a-payment","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Przelewy24"}]}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Below we outline the concrete steps and how they work in combination\nwith the Flex transaction process."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{"id":"step-1-initiate-or-transition-a-flex-transaction","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#step-1-initiate-or-transition-a-flex-transaction","ariaLabel":"step 1 initiate or transition a flex transaction permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Step 1: Initiate or transition a Flex transaction"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"With Flex, the step to create a PaymentIntent in handled by the\ntransaction engine when a transaction transitions with a transition\nusing one of the following actions:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"#stripe-create-payment-intent"},"children":[{"type":"text","value":"stripe-create-payment-intent"}]},{"type":"text","value":" - use\nthis action for card payments"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"#stripe-create-payment-intent-push"},"children":[{"type":"text","value":"stripe-create-payment-intent-push"}]},{"type":"text","value":" -\nuse this action for payments with push payment methods"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If we assume that your transaction process follows\n"},{"type":"element","tagName":"a","properties":{"href":"#example-transaction-process-with-both-card-and-push-payments"},"children":[{"type":"text","value":"this example"}]},{"type":"text","value":",\nyou would use the "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"request-card-payment"}]},{"type":"text","value":" transition for card payments\nand the "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"request-push-payment"}]},{"type":"text","value":" transition for push payments."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{"id":"step-2-collect-payment-information-and-handle-customer-actions","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#step-2-collect-payment-information-and-handle-customer-actions","ariaLabel":"step 2 collect payment information and handle customer actions permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Step 2: Collect payment information and handle customer actions"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/stripe-js","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Stripe Elements"}]},{"type":"text","value":" provides ready\ntools and a reference for implementing the automatic PaymentIntent flow.\nIt is useful for both collecting payment details, attaching the\nPaymentMethod to the PaymentIntent, as well as handling any customer\npayment authentication or confirmation steps. It's the recommended way\nto support PaymentIntents in the client."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For card payments, your implementation will typically invoke a call to\nStripe.js\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/js/payment_intents/confirm_card_payment","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"stripe.confirmCardPayment"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For push payments, the correct Stripe.js method depends on the concrete\npayment system. See "},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/js/payment_intents","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":"\nfor a full list of Stripe.js methods."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In either case, you need the PaymentIntent's ID and client secret. Both\nof those values are exposed in the transaction's protectedData map under\na key "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"stripePaymentIntents"}]},{"type":"text","value":" after the PaymentIntent has been created.\nThe value of "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"stripePaymentIntents"}]},{"type":"text","value":" is an object in the form of:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"json"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-json"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-json"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"\n  "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"default\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"\n    "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"stripePaymentIntentId\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pi_1EXSEzLSea1GQQ9x5PnNTeuS\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n    "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"stripePaymentIntentClientSecret\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pi_1EXSEzLSea1GQQ9x5PnNTeuS_secret_Qau2uE5J5L6baPs8eLPMa2Swb\""}]},{"type":"text","value":"\n  "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"This data is only exposed to the customer in the transaction. The\nprovider can not access neither the PaymentIntent ID nor the client\nsecret."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{"id":"step-3-transition-the-flex-transaction-further","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#step-3-transition-the-flex-transaction-further","ariaLabel":"step 3 transition the flex transaction further permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Step 3: Transition the Flex transaction further"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Once any customer authentication or payment confirmation is handled in\nthe UI, you need to transition the Flex transaction further in order for\nFlex to record the payment details correctly. Make sure that the\ntransition includes the\n"},{"type":"element","tagName":"a","properties":{"href":"#stripe-confirm-payment-intent"},"children":[{"type":"text","value":"stripe-confirm-payment-intent"}]},{"type":"text","value":" action."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If we assume that your transaction process follows\n"},{"type":"element","tagName":"a","properties":{"href":"#example-transaction-process-with-both-card-and-push-payments"},"children":[{"type":"text","value":"this example"}]},{"type":"text","value":",\nyou would use the "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"confirm-payment"}]},{"type":"text","value":" transition for card payments and the\n"},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"confirm-payment-instant-booking"}]},{"type":"text","value":" transition for push payments."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"using-paymentintents-in-flex","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#using-paymentintents-in-flex","ariaLabel":"using paymentintents in flex permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Using PaymentIntents in Flex"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The latest version of Flex Template for Web supports card payments with\nPaymentIntents by default. If you need to adjust the default\nimplementation, or if you're currently using an older version of Flex\nTemplate for Web,\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/how-to/enable-payment-intents/"},"children":[{"type":"text","value":"learn more about how to take PaymentIntents into use"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"further-reading","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#further-reading","ariaLabel":"further reading permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Further reading"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/payment-methods-overview/"},"children":[{"type":"text","value":"Payment methods overview"}]}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/transaction-process/"},"children":[{"type":"text","value":"Transaction process"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/transaction-process-actions/#stripe-integration"},"children":[{"type":"text","value":"Action reference for Stripe integration"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/how-to/edit-transaction-process-with-flex-cli/"},"children":[{"type":"text","value":"Editing transaction process"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/how-to/change-transaction-process-in-ftw/"},"children":[{"type":"text","value":"Changing transaction process setup in FTW"}]}]},{"type":"text","value":"\n"}]}],"data":{"quirksMode":false}},"headings":[{"value":"Introduction","depth":2},{"value":"Transaction process with PaymentIntents","depth":2},{"value":"Example transaction process with card payments","depth":3},{"value":"Example transaction process with both card and push payments","depth":3},{"value":"Actions related to PaymentIntents","depth":2},{"value":"stripe-create-payment-intent","depth":3},{"value":"stripe-create-payment-intent-push","depth":3},{"value":"stripe-confirm-payment-intent","depth":3},{"value":"stripe-capture-payment-intent","depth":3},{"value":"stripe-refund-payment","depth":3},{"value":"Required actions in the client","depth":2},{"value":"Handling Strong Customer Authentication","depth":3},{"value":"Implementing the PaymentIntent flow","depth":3},{"value":"Step 1: Initiate or transition a Flex transaction","depth":4},{"value":"Step 2: Collect payment information and handle customer actions","depth":4},{"value":"Step 3: Transition the Flex transaction further","depth":4},{"value":"Using PaymentIntents in Flex","depth":2},{"value":"Further reading","depth":2}]}},"pageContext":{"slug":"payment-intents","category":"concepts-payments"}},
    "staticQueryHashes": ["3794076007","439097193","717698143"]}