[{"data":1,"prerenderedAt":1143},["ShallowReactive",2],{"navigation_docs":3,"-packages-fluent-python-configuration":465,"-packages-fluent-python-configuration-surround":1138},[4,8,62,115,450],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","0.introduction",{"title":9,"path":10,"stem":11,"children":12,"page":61},"Guides","\u002Fguides","1.guides",[13,17,21,25,29,33,37,41,45,49,53,57],{"title":14,"path":15,"stem":16},"Quickstart","\u002Fguides\u002Fquickstart","1.guides\u002F1.quickstart",{"title":18,"path":19,"stem":20},"Payouts & Settlement","\u002Fguides\u002Fpayouts","1.guides\u002F10.payouts",{"title":22,"path":23,"stem":24},"Customer Emails","\u002Fguides\u002Fcustomer-emails","1.guides\u002F11.customer-emails",{"title":26,"path":27,"stem":28},"Build your own integration","\u002Fguides\u002Fbuild-your-own-integration","1.guides\u002F2.build-your-own-integration",{"title":30,"path":31,"stem":32},"Selling Workflow","\u002Fguides\u002Fselling-workflow","1.guides\u002F2.selling-workflow",{"title":34,"path":35,"stem":36},"Vatly SDKs","\u002Fguides\u002Fsdks","1.guides\u002F3.sdks",{"title":38,"path":39,"stem":40},"Authentication","\u002Fguides\u002Fauthentication","1.guides\u002F4.authentication",{"title":42,"path":43,"stem":44},"Pagination","\u002Fguides\u002Fpagination","1.guides\u002F5.pagination",{"title":46,"path":47,"stem":48},"Errors","\u002Fguides\u002Ferrors","1.guides\u002F6.errors",{"title":50,"path":51,"stem":52},"Webhooks","\u002Fguides\u002Fwebhooks","1.guides\u002F7.webhooks",{"title":54,"path":55,"stem":56},"Idempotency","\u002Fguides\u002Fidempotency","1.guides\u002F8.idempotency",{"title":58,"path":59,"stem":60},"Testing","\u002Fguides\u002Ftesting","1.guides\u002F9.testing",false,{"title":63,"path":64,"stem":65,"children":66,"page":61},"Api Reference","\u002Fapi-reference","2.api-reference",[67,71,75,79,83,87,91,95,99,103,107,111],{"title":68,"path":69,"stem":70},"Customers","\u002Fapi-reference\u002Fcustomers","2.api-reference\u002F1.customers",{"title":72,"path":73,"stem":74},"Webhook Endpoints","\u002Fapi-reference\u002Fwebhook-endpoints","2.api-reference\u002F10.webhook-endpoints",{"title":76,"path":77,"stem":78},"Test helpers","\u002Fapi-reference\u002Ftest-helpers","2.api-reference\u002F11.test-helpers",{"title":80,"path":81,"stem":82},"Checkouts","\u002Fapi-reference\u002Fcheckouts","2.api-reference\u002F2.checkouts",{"title":84,"path":85,"stem":86},"One-off Products","\u002Fapi-reference\u002Fone-off-products","2.api-reference\u002F3.one-off-products",{"title":88,"path":89,"stem":90},"Subscriptions","\u002Fapi-reference\u002Fsubscriptions","2.api-reference\u002F4.subscriptions",{"title":92,"path":93,"stem":94},"Subscription Plans","\u002Fapi-reference\u002Fsubscription-plans","2.api-reference\u002F5.subscription-plans",{"title":96,"path":97,"stem":98},"Orders","\u002Fapi-reference\u002Forders","2.api-reference\u002F6.orders",{"title":100,"path":101,"stem":102},"Order Refunds","\u002Fapi-reference\u002Frefunds","2.api-reference\u002F7.refunds",{"title":104,"path":105,"stem":106},"Refunds","\u002Fapi-reference\u002Fglobal-refunds","2.api-reference\u002F8.global-refunds",{"title":108,"path":109,"stem":110},"Chargebacks","\u002Fapi-reference\u002Fchargebacks","2.api-reference\u002F9.chargebacks",{"title":112,"path":113,"stem":114},"Webhook Events","\u002Fapi-reference\u002Fwebhook-events","2.api-reference\u002F99.webhook-events",{"title":116,"path":117,"stem":118,"children":119},"Packages","\u002Fpackages","3.packages",[120,122,164,210,244,283,318,366,408],{"title":116,"path":117,"stem":121},"3.packages\u002Findex",{"title":123,"path":124,"stem":125,"children":126,"page":61},"PHP SDK","\u002Fpackages\u002Fphp","3.packages\u002F1.php",[127,131,134,137,140,144,147,151,154,157,160],{"title":128,"path":129,"stem":130},"Getting started","\u002Fpackages\u002Fphp\u002Freadme","3.packages\u002F1.php\u002F00.readme",{"title":68,"path":132,"stem":133},"\u002Fpackages\u002Fphp\u002Fcustomers","3.packages\u002F1.php\u002F02.customers",{"title":80,"path":135,"stem":136},"\u002Fpackages\u002Fphp\u002Fcheckouts","3.packages\u002F1.php\u002F03.checkouts",{"title":88,"path":138,"stem":139},"\u002Fpackages\u002Fphp\u002Fsubscriptions","3.packages\u002F1.php\u002F04.subscriptions",{"title":141,"path":142,"stem":143},"Subscription plans","\u002Fpackages\u002Fphp\u002Fsubscriptionplans","3.packages\u002F1.php\u002F05.subscriptionplans",{"title":96,"path":145,"stem":146},"\u002Fpackages\u002Fphp\u002Forders","3.packages\u002F1.php\u002F06.orders",{"title":148,"path":149,"stem":150},"One-off products","\u002Fpackages\u002Fphp\u002Foneoffproducts","3.packages\u002F1.php\u002F07.oneoffproducts",{"title":104,"path":152,"stem":153},"\u002Fpackages\u002Fphp\u002Frefunds","3.packages\u002F1.php\u002F08.refunds",{"title":108,"path":155,"stem":156},"\u002Fpackages\u002Fphp\u002Fchargebacks","3.packages\u002F1.php\u002F09.chargebacks",{"title":50,"path":158,"stem":159},"\u002Fpackages\u002Fphp\u002Fwebhooks","3.packages\u002F1.php\u002F10.webhooks",{"title":161,"path":162,"stem":163},"Webhook URLs","\u002Fpackages\u002Fphp\u002Fwebhookendpoints","3.packages\u002F1.php\u002F11.webhookendpoints",{"title":165,"path":166,"stem":167,"children":168,"page":61},"PHP Fluent","\u002Fpackages\u002Ffluent-php","3.packages\u002F2.fluent-php",[169,172,176,180,183,186,189,192,196,199,203,207],{"title":128,"path":170,"stem":171},"\u002Fpackages\u002Ffluent-php\u002Freadme","3.packages\u002F2.fluent-php\u002F00.readme",{"title":173,"path":174,"stem":175},"Configuration","\u002Fpackages\u002Ffluent-php\u002Fconfiguration","3.packages\u002F2.fluent-php\u002F01.configuration",{"title":177,"path":178,"stem":179},"Core concepts","\u002Fpackages\u002Ffluent-php\u002Fcoreconcepts","3.packages\u002F2.fluent-php\u002F02.coreconcepts",{"title":68,"path":181,"stem":182},"\u002Fpackages\u002Ffluent-php\u002Fcustomers","3.packages\u002F2.fluent-php\u002F03.customers",{"title":80,"path":184,"stem":185},"\u002Fpackages\u002Ffluent-php\u002Fcheckouts","3.packages\u002F2.fluent-php\u002F04.checkouts",{"title":88,"path":187,"stem":188},"\u002Fpackages\u002Ffluent-php\u002Fsubscriptions","3.packages\u002F2.fluent-php\u002F05.subscriptions",{"title":96,"path":190,"stem":191},"\u002Fpackages\u002Ffluent-php\u002Forders","3.packages\u002F2.fluent-php\u002F06.orders",{"title":193,"path":194,"stem":195},"Customer portal","\u002Fpackages\u002Ffluent-php\u002Fcustomerportal","3.packages\u002F2.fluent-php\u002F07.customerportal",{"title":50,"path":197,"stem":198},"\u002Fpackages\u002Ffluent-php\u002Fwebhooks","3.packages\u002F2.fluent-php\u002F08.webhooks",{"title":200,"path":201,"stem":202},"Webhook event flow","\u002Fpackages\u002Ffluent-php\u002Fwebhook-flow","3.packages\u002F2.fluent-php\u002F09.webhook-flow",{"title":204,"path":205,"stem":206},"Existing tables","\u002Fpackages\u002Ffluent-php\u002Fhost-owns-its-tables","3.packages\u002F2.fluent-php\u002F10.host-owns-its-tables",{"title":58,"path":208,"stem":209},"\u002Fpackages\u002Ffluent-php\u002Ftesting","3.packages\u002F2.fluent-php\u002F11.testing",{"title":211,"path":212,"stem":213,"children":214,"page":61},"Laravel","\u002Fpackages\u002Flaravel","3.packages\u002F3.laravel",[215,218,221,224,227,230,233,236,240],{"title":128,"path":216,"stem":217},"\u002Fpackages\u002Flaravel\u002Freadme","3.packages\u002F3.laravel\u002F00.readme",{"title":173,"path":219,"stem":220},"\u002Fpackages\u002Flaravel\u002Fconfiguration","3.packages\u002F3.laravel\u002F01.configuration",{"title":68,"path":222,"stem":223},"\u002Fpackages\u002Flaravel\u002Fcustomers","3.packages\u002F3.laravel\u002F02.customers",{"title":80,"path":225,"stem":226},"\u002Fpackages\u002Flaravel\u002Fcheckouts","3.packages\u002F3.laravel\u002F03.checkouts",{"title":88,"path":228,"stem":229},"\u002Fpackages\u002Flaravel\u002Fsubscriptions","3.packages\u002F3.laravel\u002F04.subscriptions",{"title":96,"path":231,"stem":232},"\u002Fpackages\u002Flaravel\u002Forders","3.packages\u002F3.laravel\u002F05.orders",{"title":50,"path":234,"stem":235},"\u002Fpackages\u002Flaravel\u002Fwebhooks","3.packages\u002F3.laravel\u002F06.webhooks",{"title":237,"path":238,"stem":239},"Comparison","\u002Fpackages\u002Flaravel\u002Fcomparison","3.packages\u002F3.laravel\u002F07.comparison",{"title":241,"path":242,"stem":243},"Migrating from Cashier","\u002Fpackages\u002Flaravel\u002Fmigrating-to-vatly","3.packages\u002F3.laravel\u002F08.migrating-to-vatly",{"title":245,"path":246,"stem":247,"children":248,"page":61},"JavaScript SDK","\u002Fpackages\u002Fjavascript","3.packages\u002F4.javascript",[249,252,255,258,261,264,267,270,273,276,279],{"title":128,"path":250,"stem":251},"\u002Fpackages\u002Fjavascript\u002Freadme","3.packages\u002F4.javascript\u002F00.readme",{"title":68,"path":253,"stem":254},"\u002Fpackages\u002Fjavascript\u002Fcustomers","3.packages\u002F4.javascript\u002F02.customers",{"title":80,"path":256,"stem":257},"\u002Fpackages\u002Fjavascript\u002Fcheckouts","3.packages\u002F4.javascript\u002F03.checkouts",{"title":88,"path":259,"stem":260},"\u002Fpackages\u002Fjavascript\u002Fsubscriptions","3.packages\u002F4.javascript\u002F04.subscriptions",{"title":141,"path":262,"stem":263},"\u002Fpackages\u002Fjavascript\u002Fsubscriptionplans","3.packages\u002F4.javascript\u002F05.subscriptionplans",{"title":96,"path":265,"stem":266},"\u002Fpackages\u002Fjavascript\u002Forders","3.packages\u002F4.javascript\u002F06.orders",{"title":148,"path":268,"stem":269},"\u002Fpackages\u002Fjavascript\u002Foneoffproducts","3.packages\u002F4.javascript\u002F07.oneoffproducts",{"title":104,"path":271,"stem":272},"\u002Fpackages\u002Fjavascript\u002Frefunds","3.packages\u002F4.javascript\u002F08.refunds",{"title":108,"path":274,"stem":275},"\u002Fpackages\u002Fjavascript\u002Fchargebacks","3.packages\u002F4.javascript\u002F09.chargebacks",{"title":50,"path":277,"stem":278},"\u002Fpackages\u002Fjavascript\u002Fwebhooks","3.packages\u002F4.javascript\u002F10.webhooks",{"title":280,"path":281,"stem":282},"API reference","\u002Fpackages\u002Fjavascript\u002Fapi","3.packages\u002F4.javascript\u002F12.api",{"title":284,"path":285,"stem":286,"children":287,"page":61},"JavaScript Fluent","\u002Fpackages\u002Ffluent-js","3.packages\u002F5.fluent-js",[288,291,294,297,300,303,306,309,312,315],{"title":128,"path":289,"stem":290},"\u002Fpackages\u002Ffluent-js\u002Freadme","3.packages\u002F5.fluent-js\u002F00.readme",{"title":173,"path":292,"stem":293},"\u002Fpackages\u002Ffluent-js\u002Fconfiguration","3.packages\u002F5.fluent-js\u002F01.configuration",{"title":177,"path":295,"stem":296},"\u002Fpackages\u002Ffluent-js\u002Fcoreconcepts","3.packages\u002F5.fluent-js\u002F02.coreconcepts",{"title":68,"path":298,"stem":299},"\u002Fpackages\u002Ffluent-js\u002Fcustomers","3.packages\u002F5.fluent-js\u002F03.customers",{"title":80,"path":301,"stem":302},"\u002Fpackages\u002Ffluent-js\u002Fcheckouts","3.packages\u002F5.fluent-js\u002F04.checkouts",{"title":88,"path":304,"stem":305},"\u002Fpackages\u002Ffluent-js\u002Fsubscriptions","3.packages\u002F5.fluent-js\u002F05.subscriptions",{"title":96,"path":307,"stem":308},"\u002Fpackages\u002Ffluent-js\u002Forders","3.packages\u002F5.fluent-js\u002F06.orders",{"title":193,"path":310,"stem":311},"\u002Fpackages\u002Ffluent-js\u002Fcustomerportal","3.packages\u002F5.fluent-js\u002F07.customerportal",{"title":50,"path":313,"stem":314},"\u002Fpackages\u002Ffluent-js\u002Fwebhooks","3.packages\u002F5.fluent-js\u002F08.webhooks",{"title":58,"path":316,"stem":317},"\u002Fpackages\u002Ffluent-js\u002Ftesting","3.packages\u002F5.fluent-js\u002F11.testing",{"title":319,"path":320,"stem":321,"children":322,"page":61},"Python SDK","\u002Fpackages\u002Fpython","3.packages\u002F6.python",[323,326,329,332,335,338,341,344,347,350,353,356,359,362],{"title":128,"path":324,"stem":325},"\u002Fpackages\u002Fpython\u002Freadme","3.packages\u002F6.python\u002F00.readme",{"title":173,"path":327,"stem":328},"\u002Fpackages\u002Fpython\u002Fconfiguration","3.packages\u002F6.python\u002F01.configuration",{"title":68,"path":330,"stem":331},"\u002Fpackages\u002Fpython\u002Fcustomers","3.packages\u002F6.python\u002F02.customers",{"title":80,"path":333,"stem":334},"\u002Fpackages\u002Fpython\u002Fcheckouts","3.packages\u002F6.python\u002F03.checkouts",{"title":88,"path":336,"stem":337},"\u002Fpackages\u002Fpython\u002Fsubscriptions","3.packages\u002F6.python\u002F04.subscriptions",{"title":141,"path":339,"stem":340},"\u002Fpackages\u002Fpython\u002Fsubscriptionplans","3.packages\u002F6.python\u002F05.subscriptionplans",{"title":96,"path":342,"stem":343},"\u002Fpackages\u002Fpython\u002Forders","3.packages\u002F6.python\u002F06.orders",{"title":148,"path":345,"stem":346},"\u002Fpackages\u002Fpython\u002Foneoffproducts","3.packages\u002F6.python\u002F07.oneoffproducts",{"title":104,"path":348,"stem":349},"\u002Fpackages\u002Fpython\u002Frefunds","3.packages\u002F6.python\u002F08.refunds",{"title":108,"path":351,"stem":352},"\u002Fpackages\u002Fpython\u002Fchargebacks","3.packages\u002F6.python\u002F09.chargebacks",{"title":50,"path":354,"stem":355},"\u002Fpackages\u002Fpython\u002Fwebhooks","3.packages\u002F6.python\u002F10.webhooks",{"title":161,"path":357,"stem":358},"\u002Fpackages\u002Fpython\u002Fwebhookendpoints","3.packages\u002F6.python\u002F11.webhookendpoints",{"title":280,"path":360,"stem":361},"\u002Fpackages\u002Fpython\u002Fapi","3.packages\u002F6.python\u002F12.api",{"title":363,"path":364,"stem":365},"Development","\u002Fpackages\u002Fpython\u002Fdevelopment","3.packages\u002F6.python\u002F13.development",{"title":367,"path":368,"stem":369,"children":370,"page":61},"Python Fluent","\u002Fpackages\u002Ffluent-python","3.packages\u002F7.fluent-python",[371,374,377,380,383,386,389,392,395,398,401,405],{"title":128,"path":372,"stem":373},"\u002Fpackages\u002Ffluent-python\u002Freadme","3.packages\u002F7.fluent-python\u002F00.readme",{"title":173,"path":375,"stem":376},"\u002Fpackages\u002Ffluent-python\u002Fconfiguration","3.packages\u002F7.fluent-python\u002F01.configuration",{"title":177,"path":378,"stem":379},"\u002Fpackages\u002Ffluent-python\u002Fcoreconcepts","3.packages\u002F7.fluent-python\u002F02.coreconcepts",{"title":68,"path":381,"stem":382},"\u002Fpackages\u002Ffluent-python\u002Fcustomers","3.packages\u002F7.fluent-python\u002F03.customers",{"title":80,"path":384,"stem":385},"\u002Fpackages\u002Ffluent-python\u002Fcheckouts","3.packages\u002F7.fluent-python\u002F04.checkouts",{"title":88,"path":387,"stem":388},"\u002Fpackages\u002Ffluent-python\u002Fsubscriptions","3.packages\u002F7.fluent-python\u002F05.subscriptions",{"title":96,"path":390,"stem":391},"\u002Fpackages\u002Ffluent-python\u002Forders","3.packages\u002F7.fluent-python\u002F06.orders",{"title":193,"path":393,"stem":394},"\u002Fpackages\u002Ffluent-python\u002Fcustomerportal","3.packages\u002F7.fluent-python\u002F07.customerportal",{"title":50,"path":396,"stem":397},"\u002Fpackages\u002Ffluent-python\u002Fwebhooks","3.packages\u002F7.fluent-python\u002F08.webhooks",{"title":58,"path":399,"stem":400},"\u002Fpackages\u002Ffluent-python\u002Ftesting","3.packages\u002F7.fluent-python\u002F11.testing",{"title":402,"path":403,"stem":404},"Porting","\u002Fpackages\u002Ffluent-python\u002Fporting","3.packages\u002F7.fluent-python\u002F12.porting",{"title":363,"path":406,"stem":407},"\u002Fpackages\u002Ffluent-python\u002Fdevelopment","3.packages\u002F7.fluent-python\u002F13.development",{"title":409,"path":410,"stem":411,"children":412,"page":61},"Django","\u002Fpackages\u002Fdjango","3.packages\u002F8.django",[413,416,420,423,427,431,434,437,440,444,447],{"title":128,"path":414,"stem":415},"\u002Fpackages\u002Fdjango\u002Freadme","3.packages\u002F8.django\u002F00.readme",{"title":417,"path":418,"stem":419},"Installation","\u002Fpackages\u002Fdjango\u002Finstallation","3.packages\u002F8.django\u002F01.installation",{"title":173,"path":421,"stem":422},"\u002Fpackages\u002Fdjango\u002Fconfiguration","3.packages\u002F8.django\u002F02.configuration",{"title":424,"path":425,"stem":426},"Billable models","\u002Fpackages\u002Fdjango\u002Fbillablemodels","3.packages\u002F8.django\u002F03.billablemodels",{"title":428,"path":429,"stem":430},"Checkout","\u002Fpackages\u002Fdjango\u002Fcheckout","3.packages\u002F8.django\u002F04.checkout",{"title":88,"path":432,"stem":433},"\u002Fpackages\u002Fdjango\u002Fbilling","3.packages\u002F8.django\u002F05.billing",{"title":193,"path":435,"stem":436},"\u002Fpackages\u002Fdjango\u002Fcustomerportal","3.packages\u002F8.django\u002F06.customerportal",{"title":50,"path":438,"stem":439},"\u002Fpackages\u002Fdjango\u002Fwebhooks","3.packages\u002F8.django\u002F07.webhooks",{"title":441,"path":442,"stem":443},"Admin","\u002Fpackages\u002Fdjango\u002Fadmin","3.packages\u002F8.django\u002F08.admin",{"title":58,"path":445,"stem":446},"\u002Fpackages\u002Fdjango\u002Ftesting","3.packages\u002F8.django\u002F09.testing",{"title":363,"path":448,"stem":449},"\u002Fpackages\u002Fdjango\u002Fdevelopment","3.packages\u002F8.django\u002F10.development",{"title":451,"path":452,"stem":453,"children":454},"Integrations","\u002Fintegrations","4.integrations",[455,457,461],{"title":451,"path":452,"stem":456},"4.integrations\u002Findex",{"title":458,"path":459,"stem":460},"Lovable payments with Vatly","\u002Fintegrations\u002Flovable","4.integrations\u002F1.lovable",{"title":462,"path":463,"stem":464},"Bolt payments with Vatly","\u002Fintegrations\u002Fbolt","4.integrations\u002F2.bolt",{"id":466,"title":467,"body":468,"description":1131,"extension":1132,"links":1133,"meta":1134,"navigation":1135,"path":375,"seo":1136,"stem":376,"__hash__":1137},"docs\u002F3.packages\u002F7.fluent-python\u002F01.configuration.md","Configure Fluent",{"type":469,"value":470,"toc":1127},"minimark",[471,480,485,501,818,821,911,914,918,1109,1116,1123],[472,473,474,475,479],"p",{},"Keep the SDK client open for your application or worker lifespan. Fluent reuses\nit; the caller remains responsible for closing it. See ",[476,477,478],"a",{"href":372},"installation",".",[481,482,484],"h2",{"id":483},"add-your-storage-driver","Add your storage driver",[472,486,487,488,492,493,496,497,500],{},"The ",[489,490,491],"code",{},"driver"," below is your implementation of the ",[476,494,495],{"href":378},"storage contracts",".\nUse one scope per tenant, storefront and test\u002Flive mode. Django users can use\n",[489,498,499],{},"vatly-django"," instead of implementing this adapter.",[502,503,508],"pre",{"className":504,"code":505,"language":506,"meta":507,"style":507},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from vatly import AsyncVatlyClient\nfrom vatly_fluent import Vatly, Wiring\n\n\ndef example(api: AsyncVatlyClient, driver):\n    return Vatly(\n        Wiring(\n            api=api,\n            redirect_url_success=\"https:\u002F\u002Fapp.example.com\u002Fbilling\u002Fsuccess\",\n            redirect_url_canceled=\"https:\u002F\u002Fapp.example.com\u002Fbilling\u002Fcanceled\",\n            webhook_secret=\"replace-with-your-endpoint-secret\",\n            checkouts=driver.checkouts,\n            bindings=driver.bindings,\n            orders=driver.orders,\n            subscriptions=driver.subscriptions,\n            refunds=driver.refunds,\n            chargebacks=driver.chargebacks,\n            webhook_calls=driver,\n            events=driver,\n        )\n    )\n","python","",[489,509,510,529,549,556,561,593,604,612,626,645,662,679,697,714,731,748,765,782,794,806,812],{"__ignoreMap":507},[511,512,515,519,523,526],"span",{"class":513,"line":514},"line",1,[511,516,518],{"class":517},"s7zQu","from",[511,520,522],{"class":521},"sTEyZ"," vatly ",[511,524,525],{"class":517},"import",[511,527,528],{"class":521}," AsyncVatlyClient\n",[511,530,532,534,537,539,542,546],{"class":513,"line":531},2,[511,533,518],{"class":517},[511,535,536],{"class":521}," vatly_fluent ",[511,538,525],{"class":517},[511,540,541],{"class":521}," Vatly",[511,543,545],{"class":544},"sMK4o",",",[511,547,548],{"class":521}," Wiring\n",[511,550,552],{"class":513,"line":551},3,[511,553,555],{"emptyLinePlaceholder":554},true,"\n",[511,557,559],{"class":513,"line":558},4,[511,560,555],{"emptyLinePlaceholder":554},[511,562,564,568,572,575,579,582,585,587,590],{"class":513,"line":563},5,[511,565,567],{"class":566},"spNyl","def",[511,569,571],{"class":570},"s2Zo4"," example",[511,573,574],{"class":544},"(",[511,576,578],{"class":577},"sHdIc","api",[511,580,581],{"class":544},":",[511,583,584],{"class":521}," AsyncVatlyClient",[511,586,545],{"class":544},[511,588,589],{"class":577}," driver",[511,591,592],{"class":544},"):\n",[511,594,596,599,601],{"class":513,"line":595},6,[511,597,598],{"class":517},"    return",[511,600,541],{"class":570},[511,602,603],{"class":544},"(\n",[511,605,607,610],{"class":513,"line":606},7,[511,608,609],{"class":570},"        Wiring",[511,611,603],{"class":544},[511,613,615,618,621,623],{"class":513,"line":614},8,[511,616,617],{"class":577},"            api",[511,619,620],{"class":544},"=",[511,622,578],{"class":570},[511,624,625],{"class":544},",\n",[511,627,629,632,634,637,641,643],{"class":513,"line":628},9,[511,630,631],{"class":577},"            redirect_url_success",[511,633,620],{"class":544},[511,635,636],{"class":544},"\"",[511,638,640],{"class":639},"sfazB","https:\u002F\u002Fapp.example.com\u002Fbilling\u002Fsuccess",[511,642,636],{"class":544},[511,644,625],{"class":544},[511,646,648,651,653,655,658,660],{"class":513,"line":647},10,[511,649,650],{"class":577},"            redirect_url_canceled",[511,652,620],{"class":544},[511,654,636],{"class":544},[511,656,657],{"class":639},"https:\u002F\u002Fapp.example.com\u002Fbilling\u002Fcanceled",[511,659,636],{"class":544},[511,661,625],{"class":544},[511,663,665,668,670,672,675,677],{"class":513,"line":664},11,[511,666,667],{"class":577},"            webhook_secret",[511,669,620],{"class":544},[511,671,636],{"class":544},[511,673,674],{"class":639},"replace-with-your-endpoint-secret",[511,676,636],{"class":544},[511,678,625],{"class":544},[511,680,682,685,687,689,691,695],{"class":513,"line":681},12,[511,683,684],{"class":577},"            checkouts",[511,686,620],{"class":544},[511,688,491],{"class":570},[511,690,479],{"class":544},[511,692,694],{"class":693},"swJcz","checkouts",[511,696,625],{"class":544},[511,698,700,703,705,707,709,712],{"class":513,"line":699},13,[511,701,702],{"class":577},"            bindings",[511,704,620],{"class":544},[511,706,491],{"class":570},[511,708,479],{"class":544},[511,710,711],{"class":693},"bindings",[511,713,625],{"class":544},[511,715,717,720,722,724,726,729],{"class":513,"line":716},14,[511,718,719],{"class":577},"            orders",[511,721,620],{"class":544},[511,723,491],{"class":570},[511,725,479],{"class":544},[511,727,728],{"class":693},"orders",[511,730,625],{"class":544},[511,732,734,737,739,741,743,746],{"class":513,"line":733},15,[511,735,736],{"class":577},"            subscriptions",[511,738,620],{"class":544},[511,740,491],{"class":570},[511,742,479],{"class":544},[511,744,745],{"class":693},"subscriptions",[511,747,625],{"class":544},[511,749,751,754,756,758,760,763],{"class":513,"line":750},16,[511,752,753],{"class":577},"            refunds",[511,755,620],{"class":544},[511,757,491],{"class":570},[511,759,479],{"class":544},[511,761,762],{"class":693},"refunds",[511,764,625],{"class":544},[511,766,768,771,773,775,777,780],{"class":513,"line":767},17,[511,769,770],{"class":577},"            chargebacks",[511,772,620],{"class":544},[511,774,491],{"class":570},[511,776,479],{"class":544},[511,778,779],{"class":693},"chargebacks",[511,781,625],{"class":544},[511,783,785,788,790,792],{"class":513,"line":784},18,[511,786,787],{"class":577},"            webhook_calls",[511,789,620],{"class":544},[511,791,491],{"class":570},[511,793,625],{"class":544},[511,795,797,800,802,804],{"class":513,"line":796},19,[511,798,799],{"class":577},"            events",[511,801,620],{"class":544},[511,803,491],{"class":570},[511,805,625],{"class":544},[511,807,809],{"class":513,"line":808},20,[511,810,811],{"class":544},"        )\n",[511,813,815],{"class":513,"line":814},21,[511,816,817],{"class":544},"    )\n",[472,819,820],{},"Load the endpoint secret from your secret manager rather than a source-code literal.\nThe sample value is only a placeholder.",[822,823,824,837],"table",{},[825,826,827],"thead",{},[828,829,830,834],"tr",{},[831,832,833],"th",{},"Wiring field",[831,835,836],{},"Required for",[838,839,840,851,863,872,884,895],"tbody",{},[828,841,842,848],{},[843,844,845,847],"td",{},[489,846,578],{},", both redirect URLs",[843,849,850],{},"Hosted checkout creation",[828,852,853,857],{},[843,854,855],{},[489,856,694],{},[843,858,859,862],{},[489,860,861],{},".for_entity(...)"," and resource ownership links",[828,864,865,869],{},[843,866,867],{},[489,868,711],{},[843,870,871],{},"Customer-to-host identity mapping",[828,873,874,881],{},[843,875,876,878,879],{},[489,877,728],{},", ",[489,880,745],{},[843,882,883],{},"Local signed snapshots and lifecycle helpers",[828,885,886,892],{},[843,887,888,878,890],{},[489,889,762],{},[489,891,779],{},[843,893,894],{},"Optional local reversal records",[828,896,897,908],{},[843,898,899,878,902,878,905],{},[489,900,901],{},"webhook_secret",[489,903,904],{},"webhook_calls",[489,906,907],{},"events",[843,909,910],{},"Verified, transactional delivery and outbox",[472,912,913],{},"Missing wiring fails when its feature is used. API-only checkout creation does not\nrequire repositories. A customer email in a profile does not create a remote customer.",[481,915,917],{"id":916},"retry-the-same-business-operation","Retry the same business operation",[502,919,921],{"className":504,"code":920,"language":506,"meta":507,"style":507},"from vatly import RequestOptions\nfrom vatly_fluent import Vatly\n\n\nasync def example(vatly: Vatly):\n    return (\n        await vatly.checkout_builder()\n        .with_items(\n            [\n                {\"id\": \"one_off_product_example\", \"quantity\": 1},\n            ]\n        )\n        .create(options=RequestOptions(idempotency_key=\"purchase:42\", timeout=10))\n    )\n",[489,922,923,934,945,949,953,974,981,997,1007,1012,1052,1057,1061,1105],{"__ignoreMap":507},[511,924,925,927,929,931],{"class":513,"line":514},[511,926,518],{"class":517},[511,928,522],{"class":521},[511,930,525],{"class":517},[511,932,933],{"class":521}," RequestOptions\n",[511,935,936,938,940,942],{"class":513,"line":531},[511,937,518],{"class":517},[511,939,536],{"class":521},[511,941,525],{"class":517},[511,943,944],{"class":521}," Vatly\n",[511,946,947],{"class":513,"line":551},[511,948,555],{"emptyLinePlaceholder":554},[511,950,951],{"class":513,"line":558},[511,952,555],{"emptyLinePlaceholder":554},[511,954,955,958,961,963,965,968,970,972],{"class":513,"line":563},[511,956,957],{"class":566},"async",[511,959,960],{"class":566}," def",[511,962,571],{"class":570},[511,964,574],{"class":544},[511,966,967],{"class":577},"vatly",[511,969,581],{"class":544},[511,971,541],{"class":521},[511,973,592],{"class":544},[511,975,976,978],{"class":513,"line":595},[511,977,598],{"class":517},[511,979,980],{"class":544}," (\n",[511,982,983,986,989,991,994],{"class":513,"line":606},[511,984,985],{"class":517},"        await",[511,987,988],{"class":521}," vatly",[511,990,479],{"class":544},[511,992,993],{"class":570},"checkout_builder",[511,995,996],{"class":544},"()\n",[511,998,999,1002,1005],{"class":513,"line":614},[511,1000,1001],{"class":544},"        .",[511,1003,1004],{"class":570},"with_items",[511,1006,603],{"class":544},[511,1008,1009],{"class":513,"line":628},[511,1010,1011],{"class":544},"            [\n",[511,1013,1014,1017,1019,1022,1024,1026,1029,1032,1034,1036,1038,1041,1043,1045,1049],{"class":513,"line":647},[511,1015,1016],{"class":544},"                {",[511,1018,636],{"class":544},[511,1020,1021],{"class":639},"id",[511,1023,636],{"class":544},[511,1025,581],{"class":544},[511,1027,1028],{"class":544}," \"",[511,1030,1031],{"class":639},"one_off_product_example",[511,1033,636],{"class":544},[511,1035,545],{"class":544},[511,1037,1028],{"class":544},[511,1039,1040],{"class":639},"quantity",[511,1042,636],{"class":544},[511,1044,581],{"class":544},[511,1046,1048],{"class":1047},"sbssI"," 1",[511,1050,1051],{"class":544},"},\n",[511,1053,1054],{"class":513,"line":664},[511,1055,1056],{"class":544},"            ]\n",[511,1058,1059],{"class":513,"line":681},[511,1060,811],{"class":544},[511,1062,1063,1065,1068,1070,1073,1075,1078,1080,1083,1085,1087,1090,1092,1094,1097,1099,1102],{"class":513,"line":699},[511,1064,1001],{"class":544},[511,1066,1067],{"class":570},"create",[511,1069,574],{"class":544},[511,1071,1072],{"class":577},"options",[511,1074,620],{"class":544},[511,1076,1077],{"class":570},"RequestOptions",[511,1079,574],{"class":544},[511,1081,1082],{"class":577},"idempotency_key",[511,1084,620],{"class":544},[511,1086,636],{"class":544},[511,1088,1089],{"class":639},"purchase:42",[511,1091,636],{"class":544},[511,1093,545],{"class":544},[511,1095,1096],{"class":577}," timeout",[511,1098,620],{"class":544},[511,1100,1101],{"class":1047},"10",[511,1103,1104],{"class":544},"))\n",[511,1106,1107],{"class":513,"line":716},[511,1108,817],{"class":544},[472,1110,1111,1112,1115],{},"Persist that key before calling. Reuse it after a network or local-save failure;\ndo not generate a second purchase key on retry. SDK errors propagate unchanged.\nLive\u002Ftest keys share a host; ",[489,1113,1114],{},".in_testmode()"," checks the key, not switches it.",[472,1117,1118],{},[476,1119,280],{"href":1120,"rel":1121},"https:\u002F\u002Fdocs.vatly.com\u002Fapi-reference",[1122],"nofollow",[1124,1125,1126],"style",{},"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 .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 pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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}",{"title":507,"searchDepth":531,"depth":531,"links":1128},[1129,1130],{"id":483,"depth":531,"text":484},{"id":916,"depth":531,"text":917},"Keep the SDK client open for your application or worker lifespan.","md",null,{},{"title":173},{"title":467,"description":1131},"hhdWL0kvKC7rGTlKinoxrKMVQEJe8DOhTFsfTSwTl1s",[1139,1141],{"title":128,"path":372,"stem":373,"description":1140,"children":-1},"Build checkout, customer and subscription flows without tying billing to a web framework.",{"title":177,"path":378,"stem":379,"description":1142,"children":-1},"Your application decides which user, team or organization owns a purchase.",1794594932674]