[{"data":1,"prerenderedAt":1040},["ShallowReactive",2],{"navigation_docs":3,"-packages-fluent-python-readme":465,"-packages-fluent-python-readme-surround":1035},[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":367,"body":467,"description":1028,"extension":1029,"links":1030,"meta":1031,"navigation":1032,"path":372,"seo":1033,"stem":373,"__hash__":1034},"docs\u002F3.packages\u002F7.fluent-python\u002F00.readme.md",{"type":468,"value":469,"toc":1024},"minimark",[470,474,480,485,517,528,867,875,879,889,1008,1020],[471,472,473],"p",{},"Build checkout, customer and subscription flows without tying billing to a web\nframework. Fluent composes the async SDK and your storage driver. Vatly is the\nEuropean Merchant of Record for AI, software and digital products.",[471,475,476],{},[477,478,479],"strong",{},"Alpha — under active development. Every alpha release may include breaking changes. Pin exact versions during alpha.",[481,482,484],"h2",{"id":483},"install-and-create-a-checkout","Install and create a checkout",[486,487,492],"pre",{"className":488,"code":489,"language":490,"meta":491,"style":491},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python -m pip install vatly-fluent-python==0.1.0a3\n","bash","",[493,494,495],"code",{"__ignoreMap":491},[496,497,500,504,508,511,514],"span",{"class":498,"line":499},"line",1,[496,501,503],{"class":502},"sBMFI","python",[496,505,507],{"class":506},"sfazB"," -m",[496,509,510],{"class":506}," pip",[496,512,513],{"class":506}," install",[496,515,516],{"class":506}," vatly-fluent-python==0.1.0a3\n",[471,518,519,520,523,524,527],{},"Python 3.10+ is required. This installs ",[493,521,522],{},"vatly-api-python==0.1.0a3"," too. Set\n",[493,525,526],{},"VATLY_API_KEY"," on the server, then run this async function with your event loop.",[486,529,532],{"className":530,"code":531,"language":503,"meta":491,"style":491},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from vatly import AsyncVatlyClient, RequestOptions\nfrom vatly_fluent import Vatly, Wiring\n\n\nasync def example():\n    async with AsyncVatlyClient() as api:\n        vatly = 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            )\n        )\n        checkout = (\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\"))\n        )\n        return checkout.get_url()\n",[493,533,534,557,575,582,587,604,627,641,649,664,682,699,705,711,722,740,751,757,799,805,810,846,851],{"__ignoreMap":491},[496,535,536,540,544,547,550,554],{"class":498,"line":499},[496,537,539],{"class":538},"s7zQu","from",[496,541,543],{"class":542},"sTEyZ"," vatly ",[496,545,546],{"class":538},"import",[496,548,549],{"class":542}," AsyncVatlyClient",[496,551,553],{"class":552},"sMK4o",",",[496,555,556],{"class":542}," RequestOptions\n",[496,558,560,562,565,567,570,572],{"class":498,"line":559},2,[496,561,539],{"class":538},[496,563,564],{"class":542}," vatly_fluent ",[496,566,546],{"class":538},[496,568,569],{"class":542}," Vatly",[496,571,553],{"class":552},[496,573,574],{"class":542}," Wiring\n",[496,576,578],{"class":498,"line":577},3,[496,579,581],{"emptyLinePlaceholder":580},true,"\n",[496,583,585],{"class":498,"line":584},4,[496,586,581],{"emptyLinePlaceholder":580},[496,588,590,594,597,601],{"class":498,"line":589},5,[496,591,593],{"class":592},"spNyl","async",[496,595,596],{"class":592}," def",[496,598,600],{"class":599},"s2Zo4"," example",[496,602,603],{"class":552},"():\n",[496,605,607,610,613,615,618,621,624],{"class":498,"line":606},6,[496,608,609],{"class":538},"    async",[496,611,612],{"class":538}," with",[496,614,549],{"class":599},[496,616,617],{"class":552},"()",[496,619,620],{"class":538}," as",[496,622,623],{"class":542}," api",[496,625,626],{"class":552},":\n",[496,628,630,633,636,638],{"class":498,"line":629},7,[496,631,632],{"class":542},"        vatly ",[496,634,635],{"class":552},"=",[496,637,569],{"class":599},[496,639,640],{"class":552},"(\n",[496,642,644,647],{"class":498,"line":643},8,[496,645,646],{"class":599},"            Wiring",[496,648,640],{"class":552},[496,650,652,656,658,661],{"class":498,"line":651},9,[496,653,655],{"class":654},"sHdIc","                api",[496,657,635],{"class":552},[496,659,660],{"class":599},"api",[496,662,663],{"class":552},",\n",[496,665,667,670,672,675,678,680],{"class":498,"line":666},10,[496,668,669],{"class":654},"                redirect_url_success",[496,671,635],{"class":552},[496,673,674],{"class":552},"\"",[496,676,677],{"class":506},"https:\u002F\u002Fapp.example.com\u002Fbilling\u002Fsuccess",[496,679,674],{"class":552},[496,681,663],{"class":552},[496,683,685,688,690,692,695,697],{"class":498,"line":684},11,[496,686,687],{"class":654},"                redirect_url_canceled",[496,689,635],{"class":552},[496,691,674],{"class":552},[496,693,694],{"class":506},"https:\u002F\u002Fapp.example.com\u002Fbilling\u002Fcanceled",[496,696,674],{"class":552},[496,698,663],{"class":552},[496,700,702],{"class":498,"line":701},12,[496,703,704],{"class":552},"            )\n",[496,706,708],{"class":498,"line":707},13,[496,709,710],{"class":552},"        )\n",[496,712,714,717,719],{"class":498,"line":713},14,[496,715,716],{"class":542},"        checkout ",[496,718,635],{"class":552},[496,720,721],{"class":552}," (\n",[496,723,725,728,731,734,737],{"class":498,"line":724},15,[496,726,727],{"class":538},"            await",[496,729,730],{"class":542}," vatly",[496,732,733],{"class":552},".",[496,735,736],{"class":599},"checkout_builder",[496,738,739],{"class":552},"()\n",[496,741,743,746,749],{"class":498,"line":742},16,[496,744,745],{"class":552},"            .",[496,747,748],{"class":599},"with_items",[496,750,640],{"class":552},[496,752,754],{"class":498,"line":753},17,[496,755,756],{"class":552},"                [\n",[496,758,760,763,765,768,770,773,776,779,781,783,785,788,790,792,796],{"class":498,"line":759},18,[496,761,762],{"class":552},"                    {",[496,764,674],{"class":552},[496,766,767],{"class":506},"id",[496,769,674],{"class":552},[496,771,772],{"class":552},":",[496,774,775],{"class":552}," \"",[496,777,778],{"class":506},"one_off_product_example",[496,780,674],{"class":552},[496,782,553],{"class":552},[496,784,775],{"class":552},[496,786,787],{"class":506},"quantity",[496,789,674],{"class":552},[496,791,772],{"class":552},[496,793,795],{"class":794},"sbssI"," 1",[496,797,798],{"class":552},"},\n",[496,800,802],{"class":498,"line":801},19,[496,803,804],{"class":552},"                ]\n",[496,806,808],{"class":498,"line":807},20,[496,809,704],{"class":552},[496,811,813,815,818,821,824,826,829,831,834,836,838,841,843],{"class":498,"line":812},21,[496,814,745],{"class":552},[496,816,817],{"class":599},"create",[496,819,820],{"class":552},"(",[496,822,823],{"class":654},"options",[496,825,635],{"class":552},[496,827,828],{"class":599},"RequestOptions",[496,830,820],{"class":552},[496,832,833],{"class":654},"idempotency_key",[496,835,635],{"class":552},[496,837,674],{"class":552},[496,839,840],{"class":506},"purchase:42",[496,842,674],{"class":552},[496,844,845],{"class":552},"))\n",[496,847,849],{"class":498,"line":848},22,[496,850,710],{"class":552},[496,852,854,857,860,862,865],{"class":498,"line":853},23,[496,855,856],{"class":538},"        return",[496,858,859],{"class":542}," checkout",[496,861,733],{"class":552},[496,863,864],{"class":599},"get_url",[496,866,739],{"class":552},[471,868,869,870,874],{},"Replace the product ID and persist the purchase key before making the request.\nRedirect the buyer to the URL. This minimal example does not store ownership or\nprocess webhooks; add ",[871,872,873],"a",{"href":378},"storage"," before granting product access.",[481,876,878],{"id":877},"build-your-integration","Build your integration",[471,880,881,882,885,886,888],{},"Functions in these guides accept the configured ",[493,883,884],{},"vatly"," instance from\n",[871,887,173],{"href":375},". Await them inside your application's async\nlifespan. IDs and billable entities must be authorized by your application.",[890,891,892,905],"table",{},[893,894,895],"thead",{},[896,897,898,902],"tr",{},[899,900,901],"th",{},"Guide",[899,903,904],{},"Task",[906,907,908,918,927,936,945,954,963,972,981,990,999],"tbody",{},[896,909,910,915],{},[911,912,913],"td",{},[871,914,173],{"href":375},[911,916,917],{},"Wire the SDK, redirects and storage",[896,919,920,924],{},[911,921,922],{},[871,923,177],{"href":378},[911,925,926],{},"Implement drivers and preserve ownership",[896,928,929,933],{},[911,930,931],{},[871,932,80],{"href":384},[911,934,935],{},"Sell a cart or a subscription",[896,937,938,942],{},[911,939,940],{},[871,941,68],{"href":381},[911,943,944],{},"Create, bind and look up billing identities",[896,946,947,951],{},[911,948,949],{},[871,950,193],{"href":393},[911,952,953],{},"Send a buyer to hosted account management",[896,955,956,960],{},[911,957,958],{},[871,959,88],{"href":387},[911,961,962],{},"Change plans, cancel, resume and reconcile",[896,964,965,969],{},[911,966,967],{},[871,968,96],{"href":390},[911,970,971],{},"Read invoices, lines and reversals",[896,973,974,978],{},[911,975,976],{},[871,977,50],{"href":396},[911,979,980],{},"Persist signed events once in a transaction",[896,982,983,987],{},[911,984,985],{},[871,986,58],{"href":399},[911,988,989],{},"Run a checkout without network access",[896,991,992,996],{},[911,993,994],{},[871,995,402],{"href":403},[911,997,998],{},"Map JS\u002FPHP concepts to Python",[896,1000,1001,1005],{},[911,1002,1003],{},[871,1004,363],{"href":406},[911,1006,1007],{},"Set up, test and build the package",[471,1009,1010,1015,1016,1019],{},[871,1011,280],{"href":1012,"rel":1013},"https:\u002F\u002Fdocs.vatly.com\u002Fapi-reference",[1014],"nofollow"," documents the underlying\nrequests. These examples are executed with published ",[493,1017,1018],{},"0.1.0a3"," packages and local\nfixtures; no real payments or account changes occur in documentation tests.",[1021,1022,1023],"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 .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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":491,"searchDepth":559,"depth":559,"links":1025},[1026,1027],{"id":483,"depth":559,"text":484},{"id":877,"depth":559,"text":878},"Build checkout, customer and subscription flows without tying billing to a web framework.","md",null,{},{"title":128},{"title":367,"description":1028},"Zbc2pYDqpFAorrVqA1Rtas_FxhD9PVJuI8yMV1fr8pI",[1036,1038],{"title":363,"path":364,"stem":365,"description":1037,"children":-1},"Maintain the SDK, update its API specification, sync documentation and prepare releases.",{"title":173,"path":375,"stem":376,"description":1039,"children":-1},"Keep the SDK client open for your application or worker lifespan.",1794594924261]