{
    "componentChunkName": "component---src-templates-article-page-template-js",
    "path": "/concepts/payments-overview/",
    "result": {"data":{"markdownRemark":{"frontmatter":{"title":"Payments in Flex","slug":"payments-overview","updated":"2021-12-10T00:00:00.000Z","category":"concepts-payments","ingress":"This article introduces how payments work in Flex in general, and describes the default Stripe payment gateway integration","skills":null},"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Flex is a full-fledged marketplace solution, complete with payment\ncapabilities. In this article, you will learn about the Flex default\npayment integration, implemented with Stripe, as well as some\nalternatives in case the default integration does not fully serve your\nmarketplace needs."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"marketplace-payment-flow","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#marketplace-payment-flow","ariaLabel":"marketplace payment 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":"Marketplace payment flow"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In a nutshell, a basic payment flow in a marketplace contains five\nsignificant steps:"}]},{"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":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 86.79245283018868%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAACTElEQVQ4y31UXW/aQBD0//8jfQ4vUaVUihJRKY2apoQGCUhjQgP+uk/7zodJmWrPPgMN7cPK6znf7M3sniPT7HB/c4Uf376AcqENZGkhqxqitCdjv2ZQut+Yz0YY3V1C1VtE9g34MBjg7OITKOfaQHQblKlhXQO72QdhPak20M0Oq+EtlmfnULZBlHGFwTjBx0mKQuq+Oi8tjGvgnAMXEowLOLfxGK0FFbmu8OvuGcvrKZJCIkq5QpamSNMMudBHUlVVo7QO2tQ+KD9c94RcY5EXiBnDKueIlHEQlYM0Dj7XBsptoVzjc9rItPFxSCR7W6iggypraLtBJCsLptqPSYbZAdPLK8yuP/tcHTThkOiwOeR74IgIZKqCl841MlniaTLD02SOxGPKe0MbAgFJV2bTk/JOBeU9YcIUMqGRFAJrrnysMoaUa6wL2W+2botRvMbL6xqGrOlOfUzYvZAf0tQwdutDBV9L60mDisf4FU/xAilrsZQpFKp6T0hh7Bse8xkm+dznQSbJJjJ6pkwgYRKrXHiMSI8JlfFVaIEJg9v4O74uHlDw1tsg2SuoalT2DVW980MeMH7soWnlkIcko9DIita7gAUPTb3DeD3GeDn0xETaEtrTHrbD3EB1HwcPk05BLgwe4hEepxdIWekxKpjL8pSH1p/g5mWI8fM5jIPHiDDtpoAakbESGbd+IlpMIZd/ebjvYonpco6f8T2SgxMED/dR9/lpD6mKKLsxIN+qVkqHBRXvfmXdj+RoDnln+P9OIP5xBffXr23KH3rtC9aYAmfXAAAAAElFTkSuQmCC'); 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/746eb0b0a7de156abe410bca116882b1/82e29/payment-flow.webp 159w","/docs/legacy/static/746eb0b0a7de156abe410bca116882b1/ef33f/payment-flow.webp 318w","/docs/legacy/static/746eb0b0a7de156abe410bca116882b1/f1837/payment-flow.webp 635w","/docs/legacy/static/746eb0b0a7de156abe410bca116882b1/29549/payment-flow.webp 953w","/docs/legacy/static/746eb0b0a7de156abe410bca116882b1/6a68d/payment-flow.webp 968w"],"sizes":"(max-width: 635px) 100vw, 635px","type":"image/webp"},"children":[]},{"type":"text","value":"\n          "},{"type":"element","tagName":"source","properties":{"srcSet":["/docs/legacy/static/746eb0b0a7de156abe410bca116882b1/8b9b5/payment-flow.png 159w","/docs/legacy/static/746eb0b0a7de156abe410bca116882b1/fa108/payment-flow.png 318w","/docs/legacy/static/746eb0b0a7de156abe410bca116882b1/53fb6/payment-flow.png 635w","/docs/legacy/static/746eb0b0a7de156abe410bca116882b1/5a426/payment-flow.png 953w","/docs/legacy/static/746eb0b0a7de156abe410bca116882b1/7cb9f/payment-flow.png 968w"],"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/746eb0b0a7de156abe410bca116882b1/53fb6/payment-flow.png","alt":"Payment gateway logic","title":"Payment gateway logic","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":"element","tagName":"h3","properties":{"id":"step-1-provider-onboarding","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#step-1-provider-onboarding","ariaLabel":"step 1 provider onboarding 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: Provider onboarding"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In this step, the provider connects their Flex account with the payment\ngateway. This is where they provide the bank details that eventually\nreceive money from the customers. In addition, in this step, they\nprovide the necessary information and documents for the identity\nverification and "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Know Your Customer"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"a","properties":{"href":"https://en.wikipedia.org/wiki/Know_your_customer","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"(KYC)"}]},{"type":"text","value":" requirements.\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/connect/required-verification-information","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"These requirements vary"}]},{"type":"text","value":"\ndepending on the user’s country of residence."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"step-2-customer-checkout","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#step-2-customer-checkout","ariaLabel":"step 2 customer checkout 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: Customer checkout"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Customer checkout happens when the customer initiates a transaction. At\nthis stage, they also provide the payment information, such as their\ncredit card number. Also, the payment will be made at this point. The\npayment gateway will preauthorize the money, i.e. reserve the money on\nthe customer's credit card."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"step-3-provider-acceptance","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#step-3-provider-acceptance","ariaLabel":"step 3 provider acceptance 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: Provider acceptance"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"After the customer has checked out, the provider has the ability to\neither accept or reject the request. If the request is accepted, the\npayment will be captured, and the reserved money will be transferred\nfrom the customer's credit card to the payment gateway."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"This is a step that you can combine with the customer checkout. The flow\nwhere the “provider accept” happens instantly after customer checkout is\ncalled "},{"type":"element","tagName":"a","properties":{"href":"#instant-booking"},"children":[{"type":"text","value":"instant booking"}]},{"type":"text","value":" flow."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"step-4-customer-refund","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#step-4-customer-refund","ariaLabel":"step 4 customer refund 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 4: Customer refund"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Typically, the marketplace payment flow contains a delayed payment\nperiod. This is the time between when the money is captured from the\ncustomer's credit card and when it is transferred to the provider's bank\naccount. The payout in marketplaces usually happens after the provider\nhas successfully provided the agreed product or service."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Customer refund usually happens during this delayed payment period.\nThere are many reasons why a refund may be necessary. For example, the\nprovider or customer may not be able to make it to a booked event, or\nthe provided product or service was not what was agreed."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"step-5-provider-payout","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#step-5-provider-payout","ariaLabel":"step 5 provider payout 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 5: Provider payout"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If everything in the transaction went right and the customer received\nthe agreed product or service, the money from the payment gateway will\nbe eventually paid out to the provider."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"stripe-default-integration","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#stripe-default-integration","ariaLabel":"stripe default integration 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 default integration"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In the default Flex transaction process and FTW templates, the steps\ndescribed above are implemented using Stripe. The integration uses\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/connect/custom-accounts","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Stripe Custom Connect accounts"}]},{"type":"text","value":"\nfor providers. The customer can check out using a payment card or\n"},{"type":"element","tagName":"a","properties":{"href":"#payment-methods-and-currencies"},"children":[{"type":"text","value":"another supported method"}]},{"type":"text","value":", and they\ncan also save their payment method for future use. The integration uses\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/connect/destination-charges","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Stripe destination charges"}]},{"type":"text","value":"\n("},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/payments/connected-accounts","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"on behalf of the provider"}]},{"type":"text","value":")\nto collect the payment from the customer to the provider's Custom\nConnect account first, and the possible commission is then transferred\nto the platform account as an\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/connect/destination-charges#application-fee","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"application fee"}]},{"type":"text","value":".\nOnce the transaction is successfully over, the provider's share is paid\nout to the bank account that the provider gave upon onboarding."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"extrainfo","properties":{"title":"What does \"destination charge\" mean?"},"children":[{"type":"text","value":"\nThe Stripe on_behalf_of destination charge means that when the charge is created,\nthe money goes directly to the provider's Custom Connect account in Stripe, and\nthe provider's information is shown on the customer's payment method receipt.\nThis also means that a listing cannot be booked or purchased if the provider has\nnot onboarded to Stripe, because the charge cannot be created in Stripe without\nthe provider's Custom Connect account information.\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"default-payment-process-with-stripe","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#default-payment-process-with-stripe","ariaLabel":"default payment process with stripe 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":"Default payment process with Stripe"}]},{"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":"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":"Default payment flow in Flex","title":"Default payment flow in Flex","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":"element","tagName":"h4","properties":{"id":"1-provider-onboarding","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#1-provider-onboarding","ariaLabel":"1 provider onboarding 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":"1. Provider onboarding"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In the Flex default integration, users need to have a Stripe account\nwith a bank account set up before others can initiate transactions with\nthem successfully. This is done by\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#create-stripe-account","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"creating a Stripe account"}]},{"type":"text","value":"\nfor the authenticated user. The\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/how-to/provider-onboarding-and-identity-verification/"},"children":[{"type":"text","value":"FTW templates"}]},{"type":"text","value":"\nare configured to do this step out-of-the-box using\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/en-fi/connect/onboarding","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Stripe Connect Onboarding"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"To create the account, Stripe requires verification information from the\nprovider, and the specific types of verification information depend on\nthe provider's country. You can check the verification requirements for\nyour most likely marketplace provider demographics in\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/connect/required-verification-information","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Stripe's own documentation"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{"id":"2-customer-checkout","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#2-customer-checkout","ariaLabel":"2 customer checkout 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":"2. Customer checkout"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"When the customer initiates a transaction in the Flex default\ntransaction processes, Flex creates a\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/payment-intents/"},"children":[{"type":"text","value":"PaymentIntent"}]},{"type":"text","value":" for the total price of the\ntransaction. Once the PaymentIntent is confirmed, Stripe preauthorizes\nthe sum from the customer's payment method. In other words, even though\nthe sum is not paid out from the customer's card, it is reserved and not\navailable to be used by the customer."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The preauthorization is valid for 7 days, after which the\npreauthorization is automatically released by Stripe, and the funds are\nagain available to the customer."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In the FTW templates, creating and confirming the PaymentIntent are both\ntriggered at the same customer action."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Related Stripe 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":"/docs/legacy/references/transaction-process-actions/#actionstripe-create-payment-intent"},"children":[{"type":"text","value":":action/stripe-create-payment-intent"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/transaction-process-actions/#actionstripe-confirm-payment-intent"},"children":[{"type":"text","value":":action/stripe-confirm-payment-intent"}]}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{"id":"3-provider-acceptance","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#3-provider-acceptance","ariaLabel":"3 provider acceptance 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":"3. Provider acceptance"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"When a customer has requested to book a listing, a provider has 6 days\nto accept the booking until it expires automatically. This timeline\nensures that the Stripe preauthorization does not expire before the\nprovider has the opportunity to accept or reject the booking. Once the\nprovider accepts the booking, the PaymentIntent is captured and the\ntransaction sum is transferred from the customer's card to the\nprovider's Custom Connect account. If the transaction has any\ncommissions, those are then paid from the provider's Connect account to\nthe platform's account as an\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/api/application_fees","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"application fee"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Depending on how the\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/pricing/#line-items"},"children":[{"type":"text","value":"transaction's line items"}]},{"type":"text","value":" have been\ndefined, the platform can take a\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/commissions-and-monetizing-your-platform/"},"children":[{"type":"text","value":"commission of the price"}]},{"type":"text","value":"\nfrom either the provider, the customer, or both. The platform is also\nresponsible for paying all\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/en-fi/connect/pricing","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Stripe fees"}]},{"type":"text","value":" related to the\nCustom Connect account usage, so the commissions must be defined to\ncover those expenses as well."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In the\n"},{"type":"element","tagName":"a","properties":{"href":"https://github.com/sharetribe/ftw-product","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"FTW Product (Sneakertime)"}]},{"type":"text","value":"\ntemplate, the default process combines customer checkout and provider\nacceptance to all be triggered at the same customer action."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Related Stripe 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":"/docs/legacy/references/transaction-process-actions/#actionstripe-capture-payment-intent"},"children":[{"type":"text","value":":action/stripe-capture-payment-intent"}]}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{"id":"4-customer-refund","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#4-customer-refund","ariaLabel":"4 customer refund 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":"4. Customer refund"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If the customer requests a refund for one reason or another, the\noperator can refund the PaymentIntent. The Flex integration with Stripe\nonly supports full refunds. (Handling partial refunds is discussed\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/payments-overview/#can-i-partially-refund-transactions-in-my-flex-marketplace"},"children":[{"type":"text","value":"later in this article"}]},{"type":"text","value":".)\nThe default transaction process takes into account whether or not the\nPaymentIntent has already been captured from the customer's account."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Related Stripe 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":"/docs/legacy/references/transaction-process-actions/#actionstripe-refund-payment"},"children":[{"type":"text","value":":action/stripe-refund-payment"}]}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{"id":"5-provider-payout","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#5-provider-payout","ariaLabel":"5 provider payout 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":"5. Provider payout"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Once the booking has completed successfully, the provider's payout is\npaid to the bank account that is linked to their Custom Connect account."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"It is important to note that Stripe can\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/connect/account-balances#holding-funds","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"hold funds for up to 90 days (with some exceptions)"}]},{"type":"text","value":".\nIn other words, the payout must be triggered no more than 90 days after\nthe PaymentIntent is created. This means that for booking or purchase\ntimes exceeding 90 days, the process needs to be modified."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"extrainfo","properties":{"title":"Manual or automatic payout?"},"children":[{"type":"text","value":"\nIn Stripe terms, the Flex integration uses manual payouts. This means\nthat Stripe does not automatically pay out the funds from the Connect \naccounts e.g. daily or weekly, and instead the platform controls the payout\nschedule. Since the payouts are triggered by the transaction process, they happen\nautomatically from the marketplace operator's point of view. In other words, the operator should not pay out funds\nmanually through the Stripe Dashboard if the marketplace transaction\nprocess is using the Stripe payout action.\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Related Stripe 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":"/docs/legacy/references/transaction-process-actions/#actionstripe-create-payout"},"children":[{"type":"text","value":":action/stripe-create-payout"}]}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"modifications-to-the-default-process","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#modifications-to-the-default-process","ariaLabel":"modifications to the default process 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":"Modifications to the default process"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"One of the strengths of Flex is that you have complete control over the\ntransaction process. In terms of payments, you can make parallel paths\ndepending on your payment strategy, and you can fine-tune the timeline\nof different actions to suit your marketplace."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"You can edit the transaction processes on your marketplace with\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/how-to/edit-transaction-process-with-flex-cli/"},"children":[{"type":"text","value":"Flex CLI"}]},{"type":"text","value":". If you use\none of the FTW templates, you will also need to make some\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/how-to/change-transaction-process-in-ftw/"},"children":[{"type":"text","value":"changes in the template"}]},{"type":"text","value":" to\nenable it to use a different process. If you do make changes to a\ntransaction process when you already have transactions in your\nenvironment, it is good to note that a transaction will proceed with the\ntransaction process it was initiated with, and changing the transaction\nprocess of a single transaction is not possible. You can see the\ntransaction process related to each transaction in\n"},{"type":"element","tagName":"a","properties":{"href":"https://flex-console.sharetribe.com/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Flex Console"}]},{"type":"text","value":" > Manage >\nTransactions."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The transaction process also controls the automatic\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/email-templates/"},"children":[{"type":"text","value":"email notifications"}]},{"type":"text","value":" sent at different\nstages of the transaction flow. When you make changes to the transaction\nprocess, be sure to also update the wording and logic of the\nnotifications for a consistent user experience for your marketplace\ncustomers and providers."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{"id":"instant-booking","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#instant-booking","ariaLabel":"instant booking 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":"Instant booking"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"As mentioned, the\n"},{"type":"element","tagName":"a","properties":{"href":"https://github.com/sharetribe/ftw-product","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"FTW Product (Sneakertime)"}]},{"type":"text","value":"\ntemplate combines the customer checkout and provider acceptance steps\ninto a single customer action. In other words, the purchase is\nautomatically accepted and paid as soon as the customer clicks to pay\nfor the listing. The\n"},{"type":"element","tagName":"a","properties":{"href":"https://github.com/sharetribe/example-processes","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"example-processes Github repository"}]},{"type":"text","value":"\ncontains an example of a booking process called "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"instant-booking"}]},{"type":"text","value":" that\nyou can use to implement a similar flow for\n"},{"type":"element","tagName":"a","properties":{"href":"https://github.com/sharetribe/ftw-daily","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"FTW Daily (Saunatime)"}]},{"type":"text","value":" and\n"},{"type":"element","tagName":"a","properties":{"href":"https://github.com/sharetribe/ftw-hourly","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"FTW Hourly (Yogatime)"}]},{"type":"text","value":", as\nwell as any custom client application you may be using."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{"id":"automatic-off-session-payments","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#automatic-off-session-payments","ariaLabel":"automatic off session 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":"Automatic off-session payments"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Another notable approach to modifying the payment timeline in Flex is\nthe\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/off-session-payments-in-transaction-process/"},"children":[{"type":"text","value":"off-session payment pattern"}]},{"type":"text","value":".\nIn an off-session payment, the customer checkout and provider acceptance\nhappen when the customer books or purchases the listing, but the payment\ntakes place at a later date. That way, customers can, for instance, book\nlistings or purchase preorder products further in the future than the 90\nday Stripe limitation, and they will be charged closer to the moment of\nreceiving the product or service they purchased."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"payment-methods-and-currencies","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#payment-methods-and-currencies","ariaLabel":"payment methods and currencies 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":"Payment methods and currencies"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Flex supports multiple payment methods as a part of its Stripe\nintegration. The default payment method is a payment card, which is what\nthe FTW templates use. However, you can enable\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/payment-methods-overview/"},"children":[{"type":"text","value":"other payment methods"}]},{"type":"text","value":" as well\nwith moderate custom development work."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The user can save a default payment method in Flex. If your marketplace\nuses the\n"},{"type":"element","tagName":"a","properties":{"href":"#automatic-off-session-payments"},"children":[{"type":"text","value":"automatic off-session payment flow"}]},{"type":"text","value":",\nthe customer must save their payment method so that the transaction\nprocess can try to automatically charge them at the specified moment."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Flex does not determine a currency for listings. However, each listing\nneeds to have a currency specified in its "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"price"}]},{"type":"text","value":" attribute. The value\nfor "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"price.amount"}]},{"type":"text","value":" is given in the minor unit of "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"price.currency"}]},{"type":"text","value":" (e.g.\ncents for USD). Flex Console displays listing prices based on the\nlisting's currency. The FTW templates have a single currency defined by\ndefault, to facilitate e.g. price filtering and sorting."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"As the transaction progresses, the payment intent is created and charged\nfrom the customer's payment method in the listing's currency, or\nalternatively the\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/pricing/#line-items"},"children":[{"type":"text","value":"currency of the line items"}]},{"type":"text","value":" if different\nfrom the listing currency. The payout currency is determined by the\nprovider's bank account currency."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"extrainfo","properties":{"title":"Stripe currency terminology"},"children":[{"type":"text","value":"\nIn Stripe terminology, the "},{"type":"element","tagName":"b","properties":{},"children":[{"type":"text","value":"presentment currency"}]},{"type":"text","value":" is the currency\nof the charge, i.e. the currency at which the listing price is charged from the\ncustomer's card. The customer's card provider may charge a conversion\nfee if the presentment currency differs from the customer's card currency,\nor if the credit card and the marketplace platform are registered in\ndifferent countries regardless of currency."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\nThe "},{"type":"element","tagName":"b","properties":{},"children":[{"type":"text","value":"settlement currency"}]},{"type":"text","value":" is the currency of the payout, i.e.\nthe currency at which the provider's payout is paid to their bank account.\nIf the presentment currency differs from the settlement currency, Stripe\nconverts the charge to the settlement currency."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\nSee "},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/currencies"},"children":[{"type":"text","value":"Stripe's own documentation"}]},{"type":"text","value":"\nfor country-specific details on supported currencies.\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"ftw-and-stripe","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#ftw-and-stripe","ariaLabel":"ftw and stripe 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":"FTW and Stripe"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The default Stripe integration in Flex works with any client\napplication. However, the FTW templates are further configured to work\nhand in hand with Stripe:"}]},{"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/how-to/provider-onboarding-and-identity-verification/"},"children":[{"type":"text","value":"Provider onboarding"}]},{"type":"text","value":"\nis handled with Stripe Connect Onboarding. A provider cannot create\nlistings (i.e. receive money from customers) unless they have verified\ntheir identity with Stripe — this ensures that the platform is\nalways KYC compliant."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"CheckoutPage.js handles all Stripe actions related to customer\ncheckout, including creating and confirming the payment intent, with a\nsingle button click."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"The customer can save their payment method to Flex either when\npurchasing a listing, or on a separate Payment Methods page."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"frequently-asked-questions","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#frequently-asked-questions","ariaLabel":"frequently asked questions 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":"Frequently asked questions"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"where-can-i-use-stripe","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#where-can-i-use-stripe","ariaLabel":"where can i use stripe 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":"Where can I use Stripe?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In order to use Stripe for your marketplace, your platform account needs\nto be in a Stripe-supported country. (You can define your country in\nStripe Dashboard Account Settings.) The platform country then determines\nin which countries the platform can create Connect accounts, i.e. where\nyour marketplace's users can be from. Check\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/connect/custom-accounts#requirements","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Stripe's own documentation"}]},{"type":"text","value":"\nfor the most up-to-date requirements for your marketplace country."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"im-having-problems-with-the-stripe-integration-how-do-i-fix-it","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#im-having-problems-with-the-stripe-integration-how-do-i-fix-it","ariaLabel":"im having problems with the stripe integration how do i fix it 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":"I'm having problems with the Stripe integration, how do I fix it?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sometimes it takes a while to get Stripe to work. Here are some ideas to\ntroubleshoot the problem."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Double check that you have followed the\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/how-to/set-up-and-use-stripe/"},"children":[{"type":"text","value":"Stripe setup instructions"}]},{"type":"text","value":". Note that\nin your dev and test environments, you need to use the Stripe keys\nstarting with "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"sk_test"}]},{"type":"text","value":" and "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"pk_test"}]},{"type":"text","value":", and you will also need to use\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/connect/testing#payouts","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Stripe's test payout details"}]},{"type":"text","value":"\nand\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/testing#payment-intents-api","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"test payment methods"}]},{"type":"text","value":"\nwith those test keys. In the live environment with real payment\nmethods, you will need to use the keys starting with "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"sk_live"}]},{"type":"text","value":" and\n"},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"pk_live"}]},{"type":"text","value":". Also check that the keys you are using match the keys in\nStripe Dashboard. You can \"roll\" i.e. refresh the keys if necessary\nand enter the new keys — they will still be connected to the\nsame Stripe platform account."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If you get your Stripe integration working to the point that you get\nan error message from Stripe, it is useful to take a moment to check\n"},{"type":"element","tagName":"a","properties":{"href":"https://stripe.com/docs/error-codes","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"what the error code means"}]},{"type":"text","value":". It\nis also often useful to put the error code into a search engine and\ncheck if someone has already solved a similar problem."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In case of payout problem issues, you can check out our article about\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/solving-payout-problems/"},"children":[{"type":"text","value":"Stripe payout issues"}]},{"type":"text","value":" for advice\nor ideas."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If nothing seems to work, you can always contact Flex technical support\nthrough the chat widget in your\n"},{"type":"element","tagName":"a","properties":{"href":"https://flex-console.sharetribe.com/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Flex Console"}]},{"type":"text","value":" or\n"},{"type":"element","tagName":"a","properties":{"href":"mailto:flex-support@sharetribe.com","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"by email"}]},{"type":"text","value":" for further\ntroubleshooting."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"how-can-i-partially-refund-transactions-in-my-flex-marketplace","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#how-can-i-partially-refund-transactions-in-my-flex-marketplace","ariaLabel":"how can i partially refund transactions in my flex marketplace 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":"How can I partially refund transactions in my Flex marketplace?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The default Stripe integration in Flex only supports fully refunding\nPaymentIntents. If you have a use case where you would need to implement\npartial refunds, here are some options you can consider. All of these\nrequire some degree of custom development effort."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{"id":"multiple-transactions-for-one-purchase","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#multiple-transactions-for-one-purchase","ariaLabel":"multiple transactions for one purchase 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":"Multiple transactions for one purchase"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If you want to keep using the default Flex Stripe integration, you can\nlook into triggering two transactions in Flex for a single purchase\n— one for the main price, and one for the refundable part of the\nprice. Each transaction would have its own PaymentIntent towards Stripe,\nso you would need to implement separate transaction processes for each\ntype of transaction to handle the PaymentIntents, and the payments would\nshow up as two different charges on the customer's account. Furthermore,\nyou would need to coordinate commission amounts, as well as the\npossibility of a full refund, e.g. if the booking is cancelled by the\nprovider for one reason or another. Also bear in mind that if you\ntrigger two transactions for the same payment method in quick\nsuccession, some card providers may flag this as suspect behavior, so\nyou will need to consider the timing of the transactions carefully."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{"id":"partial-third-party-payment-integration","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#partial-third-party-payment-integration","ariaLabel":"partial third party payment integration 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":"Partial third party payment integration"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In this option, you would use the Flex default payment integration up to\nthe point where the payment gets captured onto the provider's Custom\nConnect account. You would then handle all payouts and refunds manually,\ni.e. outside the Flex transaction process — either in Stripe\nDashboard, or through the Stripe API with your own integration. This\nwould require you to keep track of the correct sums to be paid out for\neach transaction yourself. This option poses the risk of causing payout\nissues for completely unrelated transactions; Stripe does not separate\nfunds by PaymentIntent, so a miscalculated excessive refund on a\ntransaction between provider A and customer B may cause payout to fail\nfor customer C on a different transaction. You can read more on\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/solving-payout-problems/#why-payouts-fail"},"children":[{"type":"text","value":"payout issues on manual refunds"}]},{"type":"text","value":"\nto figure out what you would need to consider to implement this option\nsuccessfully."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h4","properties":{"id":"full-third-party-payment-integration","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#full-third-party-payment-integration","ariaLabel":"full third party payment integration 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":"Full third party payment integration"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Of course, you can create a fully separate third party payment\nintegration to handle creating and capturing the payments as well as\nmanaging payouts and refunds. This gives you the greatest flexibility\nwith your setup, and conversely it requires more customization and\ndevelopment. You can refer to our high-level instructions on\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/how-to/how-to-integrate-3rd-party-payment-gateway/"},"children":[{"type":"text","value":"integrating a 3rd-party payment gateway"}]},{"type":"text","value":"\nto find out whether this option would best suit your needs."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If you are contemplating partial refunds for your marketplace, you can\nalso contact Flex technical support through the chat widget in your\n"},{"type":"element","tagName":"a","properties":{"href":"https://flex-console.sharetribe.com/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Flex Console"}]},{"type":"text","value":" or\n"},{"type":"element","tagName":"a","properties":{"href":"mailto:flex-support@sharetribe.com","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"by email"}]},{"type":"text","value":". Let us know your\nspecific use case, and we may be able to recommend some avenues for you\nto explore."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"can-i-use-flex-and-not-use-stripe","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#can-i-use-flex-and-not-use-stripe","ariaLabel":"can i use flex and not use stripe 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":"Can I use Flex and not use Stripe?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"You can absolutely use Flex without using Stripe. You might not use\npayments at all in your marketplace, or your platform operates in a\nnon–Stripe supported country, or you may have some other reason."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Using the Flex backend without the Stripe integration is fairly simple.\nYou will need to remove references to all\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/transaction-process-actions/#stripe-integration"},"children":[{"type":"text","value":"Stripe-related transaction process actions"}]},{"type":"text","value":"\nfrom your transaction processes, and avoid using\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Stripe-related endpoints"}]},{"type":"text","value":".\nFor clarity, all references to Stripe's backend elements (endpoints,\ntransaction process actions etc.) are named with the prefix "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"stripe"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If you want to modify your FTW template to work without Stripe, the\neffort is more extensive, since each template is built around a logic\nthat uses Stripe actions and endpoints. You can use\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/how-to/removing-stripe-and-payments/"},"children":[{"type":"text","value":"this article"}]},{"type":"text","value":" as your starting\npoint."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"When removing the Stripe integration, you will want to consider whether\nor not you want to implement some other payment gateway in your\nmarketplace to handle payments. You can refer to our high-level\ninstructions on\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/how-to/how-to-integrate-3rd-party-payment-gateway/"},"children":[{"type":"text","value":"how to integrate a 3rd-party payment gateway"}]},{"type":"text","value":"\nwhen making the decision and when implementing any changes."}]}],"data":{"quirksMode":false}},"headings":[{"value":"Marketplace payment flow","depth":2},{"value":"Step 1: Provider onboarding","depth":3},{"value":"Step 2: Customer checkout","depth":3},{"value":"Step 3: Provider acceptance","depth":3},{"value":"Step 4: Customer refund","depth":3},{"value":"Step 5: Provider payout","depth":3},{"value":"Stripe default integration","depth":2},{"value":"Default payment process with Stripe","depth":3},{"value":"1. Provider onboarding","depth":4},{"value":"2. Customer checkout","depth":4},{"value":"3. Provider acceptance","depth":4},{"value":"4. Customer refund","depth":4},{"value":"5. Provider payout","depth":4},{"value":"Modifications to the default process","depth":3},{"value":"Instant booking","depth":4},{"value":"Automatic off-session payments","depth":4},{"value":"Payment methods and currencies","depth":3},{"value":"FTW and Stripe","depth":2},{"value":"Frequently asked questions","depth":2},{"value":"Where can I use Stripe?","depth":3},{"value":"I'm having problems with the Stripe integration, how do I fix it?","depth":3},{"value":"How can I partially refund transactions in my Flex marketplace?","depth":3},{"value":"Multiple transactions for one purchase","depth":4},{"value":"Partial third party payment integration","depth":4},{"value":"Full third party payment integration","depth":4},{"value":"Can I use Flex and not use Stripe?","depth":3}]}},"pageContext":{"slug":"payments-overview","category":"concepts-payments"}},
    "staticQueryHashes": ["3794076007","439097193","717698143"]}