[{"data":1,"prerenderedAt":1102},["ShallowReactive",2],{"navigation_docs":3,"-guides-selling-workflow":167,"-guides-selling-workflow-surround":1097},[4,8,50,91,163],{"title":5,"path":6,"stem":7},"Introduction","/introduction","0.introduction",{"title":9,"path":10,"stem":11,"children":12,"page":49},"Guides","/guides","1.guides",[13,17,21,25,29,33,37,41,45],{"title":14,"path":15,"stem":16},"Quickstart","/guides/quickstart","1.guides/1.quickstart",{"title":18,"path":19,"stem":20},"Selling Workflow","/guides/selling-workflow","1.guides/2.selling-workflow",{"title":22,"path":23,"stem":24},"Vatly SDKs","/guides/sdks","1.guides/3.sdks",{"title":26,"path":27,"stem":28},"Authentication","/guides/authentication","1.guides/4.authentication",{"title":30,"path":31,"stem":32},"Pagination","/guides/pagination","1.guides/5.pagination",{"title":34,"path":35,"stem":36},"Errors","/guides/errors","1.guides/6.errors",{"title":38,"path":39,"stem":40},"Webhooks","/guides/webhooks","1.guides/7.webhooks",{"title":42,"path":43,"stem":44},"Idempotency","/guides/idempotency","1.guides/8.idempotency",{"title":46,"path":47,"stem":48},"Testing","/guides/testing","1.guides/9.testing",false,{"title":51,"path":52,"stem":53,"children":54,"page":49},"Api Reference","/api-reference","2.api-reference",[55,59,63,67,71,75,79,83,87],{"title":56,"path":57,"stem":58},"Customers","/api-reference/customers","2.api-reference/1.customers",{"title":60,"path":61,"stem":62},"Checkouts","/api-reference/checkouts","2.api-reference/2.checkouts",{"title":64,"path":65,"stem":66},"Subscriptions","/api-reference/subscriptions","2.api-reference/3.subscriptions",{"title":68,"path":69,"stem":70},"Subscription Plans","/api-reference/subscription-plans","2.api-reference/4.subscription-plans",{"title":72,"path":73,"stem":74},"Orders","/api-reference/orders","2.api-reference/5.orders",{"title":76,"path":77,"stem":78},"Order Refunds","/api-reference/refunds","2.api-reference/6.refunds",{"title":80,"path":81,"stem":82},"Refunds","/api-reference/global-refunds","2.api-reference/7.global-refunds",{"title":84,"path":85,"stem":86},"Chargebacks","/api-reference/chargebacks","2.api-reference/8.chargebacks",{"title":88,"path":89,"stem":90},"One-off Products","/api-reference/one-off-products","2.api-reference/9.one-off-products",{"title":92,"path":93,"stem":94,"children":95},"Packages","/packages","3.packages",[96,99,136],{"title":97,"path":93,"stem":98},"","3.packages/index",{"title":100,"path":101,"stem":102,"children":103,"page":49},"Php","/packages/php","3.packages/1.php",[104,108,111,114,117,120,123,126,130,133],{"title":105,"path":106,"stem":107},"Getting Started","/packages/php/readme","3.packages/1.php/0.readme",{"title":56,"path":109,"stem":110},"/packages/php/customers","3.packages/1.php/1.customers",{"title":60,"path":112,"stem":113},"/packages/php/checkouts","3.packages/1.php/2.checkouts",{"title":64,"path":115,"stem":116},"/packages/php/subscriptions","3.packages/1.php/3.subscriptions",{"title":68,"path":118,"stem":119},"/packages/php/subscriptionplans","3.packages/1.php/4.subscriptionplans",{"title":72,"path":121,"stem":122},"/packages/php/orders","3.packages/1.php/5.orders",{"title":80,"path":124,"stem":125},"/packages/php/refunds","3.packages/1.php/6.refunds",{"title":127,"path":128,"stem":129},"One-Off Products","/packages/php/oneoffproducts","3.packages/1.php/7.oneoffproducts",{"title":84,"path":131,"stem":132},"/packages/php/chargebacks","3.packages/1.php/8.chargebacks",{"title":38,"path":134,"stem":135},"/packages/php/webhooks","3.packages/1.php/9.webhooks",{"title":137,"path":138,"stem":139,"children":140,"page":49},"Laravel","/packages/laravel","3.packages/2.laravel",[141,144,147,150,153,156,159],{"title":105,"path":142,"stem":143},"/packages/laravel/readme","3.packages/2.laravel/0.readme",{"title":56,"path":145,"stem":146},"/packages/laravel/customers","3.packages/2.laravel/1.customers",{"title":60,"path":148,"stem":149},"/packages/laravel/checkouts","3.packages/2.laravel/2.checkouts",{"title":64,"path":151,"stem":152},"/packages/laravel/subscriptions","3.packages/2.laravel/3.subscriptions",{"title":72,"path":154,"stem":155},"/packages/laravel/orders","3.packages/2.laravel/4.orders",{"title":38,"path":157,"stem":158},"/packages/laravel/webhooks","3.packages/2.laravel/5.webhooks",{"title":160,"path":161,"stem":162},"configuration","/packages/laravel/configuration","3.packages/2.laravel/99.configuration",{"title":164,"path":165,"stem":166},"Integrations","/integrations","4.integrations",{"id":168,"title":18,"body":169,"description":1091,"extension":1092,"links":1093,"meta":1094,"navigation":482,"path":19,"seo":1095,"stem":20,"__hash__":1096},"docs/1.guides/2.selling-workflow.md",{"type":170,"value":171,"toc":1080},"minimark",[172,177,181,206,209,213,216,233,241,244,247,254,258,261,264,278,281,285,288,291,306,309,314,318,321,332,335,746,753,960,965,969,972,975,978,982,985,988,1002,1009,1013,1016,1019,1031,1034,1037,1041,1076],[173,174,176],"h2",{"id":175},"the-typical-vatly-flow","The typical Vatly flow",[178,179,180],"p",{},"For most use cases, the Vatly integration follows the same happy path:",[182,183,184,188,191,194,197,200,203],"ol",{},[185,186,187],"li",{},"Create your Vatly account and collect your API key.",[185,189,190],{},"Configure the products you want to sell in the Vatly dashboard.",[185,192,193],{},"Register a webhook endpoint that Vatly can reach.",[185,195,196],{},"Create a checkout with the product IDs you want to sell.",[185,198,199],{},"Redirect the customer to the hosted checkout URL.",[185,201,202],{},"Listen for the payment webhook and fulfill the order in your app.",[185,204,205],{},"Stay prepared to handle refunds and chargebacks after the sale.",[178,207,208],{},"This guide ties those steps together so you can see the full flow before diving into each API endpoint.",[173,210,212],{"id":211},"_1-finish-the-initial-setup","1. Finish the initial setup",[178,214,215],{},"Start with the basics:",[217,218,219,222,230],"ul",{},[185,220,221],{},"Create your Vatly account.",[185,223,224,225,229],{},"Grab your API keys from the dashboard under ",[226,227,228],"strong",{},"Settings > API",".",[185,231,232],{},"For live payments, connect your Mollie account and complete onboarding with both Mollie and Vatly.",[178,234,235,236,240],{},"Most merchants and developers should begin in test mode. In test mode, the customers, products, and checkouts you create stay in your test environment so you can validate the full flow safely before you start accepting real payments. The online Vatly dashboard has a testmode toggle. For API calls, use your dedicated test API key (starting with ",[237,238,239],"code",{},"test_",").",[178,242,243],{},"When you are ready to sell for real, switch to live mode. Each product you want to sell must be verified by Vatly before it can be used in a live selling flow.",[178,245,246],{},"Do not wait until the last minute to create your products in the dashboard. Product verification can take some time because Vatly needs to review them for compliance before they can be used in a live selling flow.",[178,248,249,250,229],{},"If you have not made your first authenticated request yet, start with the ",[251,252,253],"a",{"href":15},"Quickstart guide",[173,255,257],{"id":256},"_2-set-up-the-products-you-want-to-sell","2. Set up the products you want to sell",[178,259,260],{},"Before you can create a checkout, you need at least one product in Vatly.",[178,262,263],{},"You can sell two kinds of products:",[217,265,266,272],{},[185,267,268,271],{},[251,269,270],{"href":89},"One-off products"," for a single purchase such as a digital download, license, or one-time service.",[185,273,274,277],{},[251,275,276],{"href":69},"Subscription plans"," for recurring access such as a SaaS plan.",[178,279,280],{},"Products are configured in the Vatly dashboard. After creating them, keep track of their product IDs because you will need those IDs when you create a checkout through the API.",[173,282,284],{"id":283},"_3-register-your-webhook-before-going-live","3. Register your webhook before going live",[178,286,287],{},"Set up your webhook endpoint before you send customers to checkout. That endpoint is how Vatly tells your application that something important happened, such as a checkout being paid, a subscription changing, or a refund being created.",[178,289,290],{},"Configure the webhook in the dashboard and make sure the endpoint is:",[217,292,293,296,299],{},[185,294,295],{},"Reachable from the public internet",[185,297,298],{},"Served over HTTPS",[185,300,301,302,305],{},"Able to verify the ",[237,303,304],{},"x-vatly-signature"," header",[178,307,308],{},"This is a critical part of the integration. Use webhooks to confirm what happened instead of relying only on the customer's browser returning to your site.",[178,310,311],{},[251,312,313],{"href":39},"Read the webhook guide",[173,315,317],{"id":316},"_4-create-a-checkout-for-the-right-products","4. Create a checkout for the right products",[178,319,320],{},"When a customer is ready to buy, your app creates a checkout with the product IDs you configured earlier. A checkout can contain:",[217,322,323,326,329],{},[185,324,325],{},"A single one-off product",[185,327,328],{},"A single subscription plan",[185,330,331],{},"A list of products, depending on what your flow allows",[178,333,334],{},"The API request is made from your backend using your secret API key.",[336,337,338,447],"code-group",{},[339,340,345],"pre",{"className":341,"code":342,"filename":343,"language":344,"meta":97,"style":97},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl https://api.vatly.com/v1/checkouts \\\n  -H \"Authorization: Bearer live_your_api_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"products\": [\n      { \"id\": \"one_off_product_Vr8kQdFhSrG4Y3DnfsdqH\", \"quantity\": 1 }\n    ],\n    \"redirectUrlSuccess\": \"https://example.com/success\",\n    \"redirectUrlCanceled\": \"https://example.com/canceled\"\n  }'\n","cURL","bash",[237,346,347,364,382,396,408,414,420,426,432,438],{"__ignoreMap":97},[348,349,352,356,360],"span",{"class":350,"line":351},"line",1,[348,353,355],{"class":354},"sBMFI","curl",[348,357,359],{"class":358},"sfazB"," https://api.vatly.com/v1/checkouts",[348,361,363],{"class":362},"sTEyZ"," \\\n",[348,365,367,370,374,377,380],{"class":350,"line":366},2,[348,368,369],{"class":358},"  -H",[348,371,373],{"class":372},"sMK4o"," \"",[348,375,376],{"class":358},"Authorization: Bearer live_your_api_key_here",[348,378,379],{"class":372},"\"",[348,381,363],{"class":362},[348,383,385,387,389,392,394],{"class":350,"line":384},3,[348,386,369],{"class":358},[348,388,373],{"class":372},[348,390,391],{"class":358},"Content-Type: application/json",[348,393,379],{"class":372},[348,395,363],{"class":362},[348,397,399,402,405],{"class":350,"line":398},4,[348,400,401],{"class":358},"  -d",[348,403,404],{"class":372}," '",[348,406,407],{"class":358},"{\n",[348,409,411],{"class":350,"line":410},5,[348,412,413],{"class":358},"    \"products\": [\n",[348,415,417],{"class":350,"line":416},6,[348,418,419],{"class":358},"      { \"id\": \"one_off_product_Vr8kQdFhSrG4Y3DnfsdqH\", \"quantity\": 1 }\n",[348,421,423],{"class":350,"line":422},7,[348,424,425],{"class":358},"    ],\n",[348,427,429],{"class":350,"line":428},8,[348,430,431],{"class":358},"    \"redirectUrlSuccess\": \"https://example.com/success\",\n",[348,433,435],{"class":350,"line":434},9,[348,436,437],{"class":358},"    \"redirectUrlCanceled\": \"https://example.com/canceled\"\n",[348,439,441,444],{"class":350,"line":440},10,[348,442,443],{"class":358},"  }",[348,445,446],{"class":372},"'\n",[339,448,453],{"className":449,"code":450,"filename":451,"language":452,"meta":97,"style":97},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use Vatly\\Api\\VatlyApiClient;\n\n$vatly = new VatlyApiClient();\n$vatly->setApiKey('live_your_api_key_here');\n\n$checkout = $vatly->checkouts->create([\n    'products' => [\n        [\n            'id' => 'one_off_product_Vr8kQdFhSrG4Y3DnfsdqH',\n            'quantity' => 1,\n        ],\n    ],\n    'redirectUrlSuccess' => 'https://example.com/success',\n    'redirectUrlCanceled' => 'https://example.com/canceled',\n]);\n\n$checkoutUrl = $checkout->links->checkoutUrl->href;\n\nreturn redirect()->away($checkoutUrl);\n","PHP","php",[237,454,455,478,484,504,532,536,563,579,584,606,622,628,633,654,675,681,686,718,723],{"__ignoreMap":97},[348,456,457,461,464,467,470,472,475],{"class":350,"line":351},[348,458,460],{"class":459},"sbssI","use",[348,462,463],{"class":362}," Vatly",[348,465,466],{"class":372},"\\",[348,468,469],{"class":362},"Api",[348,471,466],{"class":372},[348,473,474],{"class":362},"VatlyApiClient",[348,476,477],{"class":372},";\n",[348,479,480],{"class":350,"line":366},[348,481,483],{"emptyLinePlaceholder":482},true,"\n",[348,485,486,489,492,495,498,501],{"class":350,"line":384},[348,487,488],{"class":372},"$",[348,490,491],{"class":362},"vatly ",[348,493,494],{"class":372},"=",[348,496,497],{"class":459}," new",[348,499,500],{"class":354}," VatlyApiClient",[348,502,503],{"class":372},"();\n",[348,505,506,508,511,514,518,521,524,527,529],{"class":350,"line":398},[348,507,488],{"class":372},[348,509,510],{"class":362},"vatly",[348,512,513],{"class":372},"->",[348,515,517],{"class":516},"s2Zo4","setApiKey",[348,519,520],{"class":372},"(",[348,522,523],{"class":372},"'",[348,525,526],{"class":358},"live_your_api_key_here",[348,528,523],{"class":372},[348,530,531],{"class":372},");\n",[348,533,534],{"class":350,"line":410},[348,535,483],{"emptyLinePlaceholder":482},[348,537,538,540,543,545,548,550,552,555,557,560],{"class":350,"line":416},[348,539,488],{"class":372},[348,541,542],{"class":362},"checkout ",[348,544,494],{"class":372},[348,546,547],{"class":372}," $",[348,549,510],{"class":362},[348,551,513],{"class":372},[348,553,554],{"class":362},"checkouts",[348,556,513],{"class":372},[348,558,559],{"class":516},"create",[348,561,562],{"class":372},"([\n",[348,564,565,568,571,573,576],{"class":350,"line":422},[348,566,567],{"class":372},"    '",[348,569,570],{"class":358},"products",[348,572,523],{"class":372},[348,574,575],{"class":372}," =>",[348,577,578],{"class":372}," [\n",[348,580,581],{"class":350,"line":428},[348,582,583],{"class":372},"        [\n",[348,585,586,589,592,594,596,598,601,603],{"class":350,"line":434},[348,587,588],{"class":372},"            '",[348,590,591],{"class":358},"id",[348,593,523],{"class":372},[348,595,575],{"class":372},[348,597,404],{"class":372},[348,599,600],{"class":358},"one_off_product_Vr8kQdFhSrG4Y3DnfsdqH",[348,602,523],{"class":372},[348,604,605],{"class":372},",\n",[348,607,608,610,613,615,617,620],{"class":350,"line":440},[348,609,588],{"class":372},[348,611,612],{"class":358},"quantity",[348,614,523],{"class":372},[348,616,575],{"class":372},[348,618,619],{"class":459}," 1",[348,621,605],{"class":372},[348,623,625],{"class":350,"line":624},11,[348,626,627],{"class":372},"        ],\n",[348,629,631],{"class":350,"line":630},12,[348,632,425],{"class":372},[348,634,636,638,641,643,645,647,650,652],{"class":350,"line":635},13,[348,637,567],{"class":372},[348,639,640],{"class":358},"redirectUrlSuccess",[348,642,523],{"class":372},[348,644,575],{"class":372},[348,646,404],{"class":372},[348,648,649],{"class":358},"https://example.com/success",[348,651,523],{"class":372},[348,653,605],{"class":372},[348,655,657,659,662,664,666,668,671,673],{"class":350,"line":656},14,[348,658,567],{"class":372},[348,660,661],{"class":358},"redirectUrlCanceled",[348,663,523],{"class":372},[348,665,575],{"class":372},[348,667,404],{"class":372},[348,669,670],{"class":358},"https://example.com/canceled",[348,672,523],{"class":372},[348,674,605],{"class":372},[348,676,678],{"class":350,"line":677},15,[348,679,680],{"class":372},"]);\n",[348,682,684],{"class":350,"line":683},16,[348,685,483],{"emptyLinePlaceholder":482},[348,687,689,691,694,696,698,701,703,706,708,711,713,716],{"class":350,"line":688},17,[348,690,488],{"class":372},[348,692,693],{"class":362},"checkoutUrl ",[348,695,494],{"class":372},[348,697,547],{"class":372},[348,699,700],{"class":362},"checkout",[348,702,513],{"class":372},[348,704,705],{"class":362},"links",[348,707,513],{"class":372},[348,709,710],{"class":362},"checkoutUrl",[348,712,513],{"class":372},[348,714,715],{"class":362},"href",[348,717,477],{"class":372},[348,719,721],{"class":350,"line":720},18,[348,722,483],{"emptyLinePlaceholder":482},[348,724,726,730,733,736,739,742,744],{"class":350,"line":725},19,[348,727,729],{"class":728},"s7zQu","return",[348,731,732],{"class":516}," redirect",[348,734,735],{"class":372},"()->",[348,737,738],{"class":516},"away",[348,740,741],{"class":372},"($",[348,743,710],{"class":362},[348,745,531],{"class":372},[178,747,748,749,752],{},"The response includes a hosted checkout URL in ",[237,750,751],{},"links.checkoutUrl.href",". That is the URL your customer should visit to complete payment.",[339,754,759],{"className":755,"code":756,"filename":757,"language":758,"meta":97,"style":97},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"id\": \"checkout_QGQ0qDrQ2B4O1yXVTr6Wc\",\n  \"status\": \"open\",\n  \"products\": [\n    {\n      \"id\": \"one_off_product_Vr8kQdFhSrG4Y3DnfsdqH\",\n      \"quantity\": 1\n    }\n  ],\n  \"redirectUrlSuccess\": \"https://example.com/success\",\n  \"redirectUrlCanceled\": \"https://example.com/canceled\",\n  \"links\": {\n    \"checkoutUrl\": {\n      \"href\": \"https://checkout.vatly.com/chk_test_123456789\"\n    }\n  }\n}\n","Response","json",[237,760,761,765,787,807,819,824,843,856,861,866,884,902,915,928,946,950,955],{"__ignoreMap":97},[348,762,763],{"class":350,"line":351},[348,764,407],{"class":372},[348,766,767,770,773,775,778,780,783,785],{"class":350,"line":366},[348,768,769],{"class":372},"  \"",[348,771,591],{"class":772},"spNyl",[348,774,379],{"class":372},[348,776,777],{"class":372},":",[348,779,373],{"class":372},[348,781,782],{"class":358},"checkout_QGQ0qDrQ2B4O1yXVTr6Wc",[348,784,379],{"class":372},[348,786,605],{"class":372},[348,788,789,791,794,796,798,800,803,805],{"class":350,"line":384},[348,790,769],{"class":372},[348,792,793],{"class":772},"status",[348,795,379],{"class":372},[348,797,777],{"class":372},[348,799,373],{"class":372},[348,801,802],{"class":358},"open",[348,804,379],{"class":372},[348,806,605],{"class":372},[348,808,809,811,813,815,817],{"class":350,"line":398},[348,810,769],{"class":372},[348,812,570],{"class":772},[348,814,379],{"class":372},[348,816,777],{"class":372},[348,818,578],{"class":372},[348,820,821],{"class":350,"line":410},[348,822,823],{"class":372},"    {\n",[348,825,826,829,831,833,835,837,839,841],{"class":350,"line":416},[348,827,828],{"class":372},"      \"",[348,830,591],{"class":354},[348,832,379],{"class":372},[348,834,777],{"class":372},[348,836,373],{"class":372},[348,838,600],{"class":358},[348,840,379],{"class":372},[348,842,605],{"class":372},[348,844,845,847,849,851,853],{"class":350,"line":422},[348,846,828],{"class":372},[348,848,612],{"class":354},[348,850,379],{"class":372},[348,852,777],{"class":372},[348,854,855],{"class":459}," 1\n",[348,857,858],{"class":350,"line":428},[348,859,860],{"class":372},"    }\n",[348,862,863],{"class":350,"line":434},[348,864,865],{"class":372},"  ],\n",[348,867,868,870,872,874,876,878,880,882],{"class":350,"line":440},[348,869,769],{"class":372},[348,871,640],{"class":772},[348,873,379],{"class":372},[348,875,777],{"class":372},[348,877,373],{"class":372},[348,879,649],{"class":358},[348,881,379],{"class":372},[348,883,605],{"class":372},[348,885,886,888,890,892,894,896,898,900],{"class":350,"line":624},[348,887,769],{"class":372},[348,889,661],{"class":772},[348,891,379],{"class":372},[348,893,777],{"class":372},[348,895,373],{"class":372},[348,897,670],{"class":358},[348,899,379],{"class":372},[348,901,605],{"class":372},[348,903,904,906,908,910,912],{"class":350,"line":630},[348,905,769],{"class":372},[348,907,705],{"class":772},[348,909,379],{"class":372},[348,911,777],{"class":372},[348,913,914],{"class":372}," {\n",[348,916,917,920,922,924,926],{"class":350,"line":635},[348,918,919],{"class":372},"    \"",[348,921,710],{"class":354},[348,923,379],{"class":372},[348,925,777],{"class":372},[348,927,914],{"class":372},[348,929,930,932,934,936,938,940,943],{"class":350,"line":656},[348,931,828],{"class":372},[348,933,715],{"class":459},[348,935,379],{"class":372},[348,937,777],{"class":372},[348,939,373],{"class":372},[348,941,942],{"class":358},"https://checkout.vatly.com/chk_test_123456789",[348,944,945],{"class":372},"\"\n",[348,947,948],{"class":350,"line":677},[348,949,860],{"class":372},[348,951,952],{"class":350,"line":683},[348,953,954],{"class":372},"  }\n",[348,956,957],{"class":350,"line":688},[348,958,959],{"class":372},"}\n",[178,961,962],{},[251,963,964],{"href":61},"Read the Checkouts API reference",[173,966,968],{"id":967},"_5-redirect-the-customer-to-the-checkout-url","5. Redirect the customer to the checkout URL",[178,970,971],{},"After creating the checkout, redirect the customer to the URL returned by Vatly.",[178,973,974],{},"At that point, Vatly handles the hosted payment flow. The customer completes payment on the Vatly checkout page and is then redirected back to your success or cancellation URL.",[178,976,977],{},"The browser redirect is helpful for user experience, but your backend should still wait for the relevant webhook event before treating the order as paid.",[173,979,981],{"id":980},"_6-fulfill-the-order-after-payment","6. Fulfill the order after payment",[178,983,984],{},"Once the checkout is paid, Vatly notifies your webhook endpoint. That is the point where your application should decide what to deliver.",[178,986,987],{},"Typical fulfillment actions include:",[217,989,990,993,996,999],{},[185,991,992],{},"Granting access to your SaaS",[185,994,995],{},"Sending an email with access instructions",[185,997,998],{},"Providing a download link for a digital product",[185,1000,1001],{},"Activating a subscription in your own application",[178,1003,1004,1005,1008],{},"The exact webhook event you handle depends on your setup, but ",[237,1006,1007],{},"checkout.paid"," and the related order or subscription events are the key signals that the sale completed.",[173,1010,1012],{"id":1011},"_7-prepare-for-post-payment-events","7. Prepare for post-payment events",[178,1014,1015],{},"The happy path ends with a successful sale and fulfillment, but a production integration also needs to handle post-payment scenarios.",[178,1017,1018],{},"At minimum, merchants and developers should be prepared for:",[217,1020,1021,1026],{},[185,1022,1023,1025],{},[251,1024,80],{"href":77},", whether partial or full",[185,1027,1028,1030],{},[251,1029,84],{"href":85},", which are created when a payment dispute is initiated",[178,1032,1033],{},"These events should also flow through your webhook handling so your application can revoke access, update account state, notify staff, or trigger follow-up support processes when needed.",[178,1035,1036],{},"Vatly actively prevents and disputes chargebacks. If extra evidence is needed, Vatly will check in with you for details such as proof of delivery or proof that the customer received access to the product.",[173,1038,1040],{"id":1039},"where-to-go-next","Where to go next",[217,1042,1043,1047,1051,1056,1061,1066,1071],{},[185,1044,1045],{},[251,1046,14],{"href":15},[185,1048,1049],{},[251,1050,38],{"href":39},[185,1052,1053],{},[251,1054,1055],{"href":61},"Checkouts API",[185,1057,1058],{},[251,1059,1060],{"href":89},"One-off Products API",[185,1062,1063],{},[251,1064,1065],{"href":69},"Subscription Plans API",[185,1067,1068],{},[251,1069,1070],{"href":77},"Refunds API",[185,1072,1073],{},[251,1074,1075],{"href":85},"Chargebacks API",[1077,1078,1079],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":97,"searchDepth":366,"depth":366,"links":1081},[1082,1083,1084,1085,1086,1087,1088,1089,1090],{"id":175,"depth":366,"text":176},{"id":211,"depth":366,"text":212},{"id":256,"depth":366,"text":257},{"id":283,"depth":366,"text":284},{"id":316,"depth":366,"text":317},{"id":967,"depth":366,"text":968},{"id":980,"depth":366,"text":981},{"id":1011,"depth":366,"text":1012},{"id":1039,"depth":366,"text":1040},"Follow the typical Vatly happy path from account setup to product delivery, and prepare for refunds and chargebacks.","md",null,{},{"title":18,"description":1091},"cJg0GwdQeZcNFZMSadjBRMvVkbeBJbbKot8Abg6pKtE",[1098,1100],{"title":14,"path":15,"stem":16,"description":1099,"children":-1},"This guide will get you all set up and ready to use the Vatly API. We’ll cover how to get started an API client and how to make your first API request.",{"title":22,"path":23,"stem":24,"description":1101,"children":-1},"Vatly offers official SDKs to make integrating the API into your application quick and easy.",1775731052363]