Kalixo.js renders the payment form for a checkout session. Kalixo decides which
payment form to show, so your integration never changes when Kalixo changes providers.
If you do not listen to payment.completed, Kalixo.js redirects the shopper to the
session’s return_url with ?session_id=cs_....
Browser events are for the shopper experience only. Never fulfil from payment.completed,
a return_url redirect, or checkout_session.status. Confirm on your server with
GET /v1/payments/{id} or the payment.captured webhook, and refuse the order if
amount_mismatch is true.
Some payment methods send the shopper to their bank. The bank returns the shopper to
Kalixo, and Kalixo forwards them to your return_url with ?session_id=cs_.... Read
the payment on your server to show the result.
The secure payment fields need a few more domains. Ask Kalixo integrations at
[email protected] for the complete policy for your account. Kalixo tells you about
changes to it before they are needed.
Card details are entered in secure fields that Kalixo.js loads from the payment
provider. Card data never touches your page or Kalixo’s servers, which keeps your PCI
scope at SAQ A, provided you load Kalixo.js from js.kalixo.io.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Kalixo Developers","description":"Developer documentation for Kalixo: the Distribution API (catalog, ordering and wallet) and Kalixo Checkout (payments with Kalixo as merchant of record).","colors":{"primary":"#c9f73a","light":"#c9f73a","dark":"#c9f73a"},"logo":{"light":"https://mintcdn.com/kalixo-3d06b8ab/i1gWPLf-7UA5aCX4/logo/kalixo-black.svg?fit=max\u0026auto=format\u0026n=i1gWPLf-7UA5aCX4\u0026q=85\u0026s=10cb3de56b003645223ff09a03738f0d","dark":"https://mintcdn.com/kalixo-3d06b8ab/i1gWPLf-7UA5aCX4/logo/kalixo-white.svg?fit=max\u0026auto=format\u0026n=i1gWPLf-7UA5aCX4\u0026q=85\u0026s=3ee9e307d7b82e8aba826a034600d79e","href":"https://developer.kalixo.io"},"favicon":"https://mintcdn.com/kalixo-3d06b8ab/0ntOkvykKU-c41Xj/favicon.ico?fit=max\u0026auto=format\u0026n=0ntOkvykKU-c41Xj\u0026q=85\u0026s=01818a4ce05801b7068c62aab761e615","api":{"playground":{"display":"interactive"},"examples":{"languages":["bash","javascript","python","php"]}},"appearance":{"default":"dark","strict":false},"background":{"color":{"light":"#ffffff","dark":"#0a0c03"}},"navbar":{"links":[{"href":"mailto:[email protected]","label":"Support"},{"href":"/quickstart#postman-collection","label":"Postman"}],"primary":{"type":"button","label":"Get API keys","href":"mailto:[email protected]"}},"footer":{"socials":{"website":"https://kalixo.io","linkedin":"https://www.linkedin.com/company/kalixo"}},"search":{"prompt":"Search the Kalixo developer docs"},"styling":{"eyebrows":"section","codeblocks":"dark","latex":false},"contextual":{"options":["copy","view","chatgpt","claude","download-spec"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"kalixo-3d06b8ab","hasAudioNarration":false,"actualSubdomain":"kalixo-3d06b8ab","customDomains":["developer.kalixo.io"],"gitSource":{"type":"github","owner":"fhp-developers","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af3b1d7d80155e0099b7ee8","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"Checkout","count":60},{"language":"default","tag":"API reference","count":48},{"language":"default","tag":"Endpoints","count":46},{"language":"default","tag":"Guides","count":38},{"language":"default","tag":"Distribution API","count":26},{"language":"default","tag":"Core concepts","count":18},{"language":"default","tag":"Get started","count":10},{"language":"default","tag":"Webhook endpoints","count":6},{"language":"default","tag":"Accept payments","count":5},{"language":"default","tag":"Checkout sessions","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":":root{--kalixo-50: #f4fdd8;--kalixo-100: #f4fdd8;--kalixo-200: #e9fcb0;--kalixo-300: #dffa89;--kalixo-400: #d4f961;--kalixo-500: #c9f73a;--kalixo-600: #a1c62e;--kalixo-700: #799423;--kalixo-800: #506317;--kalixo-900: #28310c;--kalixo-950: #0a0c03;--kalixo-border-light: color-mix(in srgb, var(--kalixo-500) 25%, #e5e7eb)}#topbar-cta-button a,#topbar-cta-button a *,a:has(>.bg-primary-dark) .text-white,button:has(>.bg-primary-dark) .text-white,.bg-primary-dark.text-white{color:var(--kalixo-950)!important}.tryit-button{background-color:var(--kalixo-500)!important;color:var(--kalixo-950)!important}.tryit-button svg.bg-white{background-color:var(--kalixo-950)!important}html:not(.dark) #navbar{background-color:#ffffff;border-bottom:1px solid var(--kalixo-border-light)}html:not(.dark) #sidebar{background-color:#ffffff;border-right:1px solid var(--kalixo-border-light)}html:not(.dark) .text-primary,html:not(.dark) .group:hover .group-hover\\:text-primary{color:var(--kalixo-950)}html:not(.dark) svg.bg-primary:not(.bg-codeblock *){background-color:var(--kalixo-950)}html:not(.dark) #sidebar-content li[data-active]>a{background-color:transparent;color:inherit}html:not(.dark) #sidebar-content li[data-active]:not(:has(li[data-active]))>a{background-color:var(--kalixo-500);color:var(--kalixo-950)}html:not(.dark) .sidebar-group[data-active] .sidebar-group-header{background-color:transparent}html:not(.dark) #sidebar-content a:hover{color:var(--kalixo-950)}html:not(.dark) .nav-tabs-item>.bg-primary{height:2px}html:not(.dark) .bg-codeblock [role=\"menuitem\"]:hover,html:not(.dark) .bg-codeblock [role=\"menuitem\"]:focus-visible{color:#ffffff!important;background-color:rgba(255, 255, 255, 0.08)!important}html:not(.dark) .bg-codeblock [role=\"menuitem\"]:hover *,html:not(.dark) .bg-codeblock [role=\"menuitem\"]:focus-visible *{color:inherit!important}html:not(.dark) .bg-codeblock [role=\"menuitem\"][data-active=\"true\"]{color:var(--kalixo-500)!important}html:not(.dark) .bg-codeblock [role=\"menuitem\"][data-active=\"true\"] *{color:inherit!important}.dark #sidebar-content li[data-active]>a{background-color:transparent}.dark #sidebar-content li[data-active]:not(:has(li[data-active]))>a{background-color:color-mix(in srgb, var(--kalixo-500) 14%, transparent)}.dark .sidebar-group[data-active] .sidebar-group-header{background-color:transparent}"}],"page":{"pagePath":"checkout/guides/kalixo-js","slug":"/checkout/guides/kalixo-js","pageMetadata":{"title":"Kalixo.js","description":"Embed the Kalixo checkout in your own page.","icon":"code","href":"/checkout/guides/kalixo-js"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Embed the Kalixo checkout in your own page.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Kalixo.js renders the payment form for a checkout session. Kalixo decides which\npayment form to show, so your integration never changes when Kalixo changes providers.`}),`\n`,_jsx(Heading,{level:`2`,id:`load-kalixo-js`,children:`Load Kalixo.js`}),`\n`,_jsxs(_components.p,{children:[`Always load Kalixo.js from `,_jsx(_components.code,{children:`js.kalixo.io`}),`. Do not bundle or self-host it: Kalixo\nships security fixes and new payment methods through this URL.`]}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Script tag`,numberOfLines:`1`,language:`html`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`html`,children:_jsxs(_components.code,{language:`html`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#808080`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`script`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` src`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"https://js.kalixo.io/v1/kalixo.js\"`}),_jsx(_components.span,{style:{color:`#808080`,\"--shiki-dark\":`#808080`},children:`>\u003c/`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`script`}),_jsx(_components.span,{style:{color:`#808080`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`npm`,numberOfLines:`3`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`loadKalixoCheckout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` '@kalixo/checkout-js'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` KalixoCheckout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:` loadKalixoCheckout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`]})})})]}),`\n`,_jsxs(_components.p,{children:[`To pin a release, load `,_jsx(_components.code,{children:`https://js.kalixo.io/v1/\u003cversion>/kalixo.js`}),` with the\n`,_jsx(_components.code,{children:`integrity`}),` hash from the release notes.`]}),`\n`,_jsx(Heading,{level:`2`,id:`mount-the-checkout`,children:`Mount the checkout`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` kalixo`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` KalixoCheckout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`init`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`publishableKey:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'kc_pk_live_...'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`locale:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'nl-NL'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`kalixo`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`sessionId`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`clientSecret`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`on`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'ready'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, () `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:` hideSpinner`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`());`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`on`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'payment.completed'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, ({ `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`sessionId`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }) `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` window`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`location`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`assign`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:\"`/checkout/complete?session_id=\"}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`sessionId`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`on`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'payment.processing'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, () `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:` showMessage`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'We are confirming your payment.'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`));`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`on`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'payment.failed'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, ({ `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`message`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }) `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:` showError`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`message`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`));`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`on`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'error'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, ({ `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`message`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }) `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:` showError`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`message`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`));`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`mount`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'#kalixo-checkout'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`If you do not listen to `,_jsx(_components.code,{children:`payment.completed`}),`, Kalixo.js redirects the shopper to the\nsession’s `,_jsx(_components.code,{children:`return_url`}),` with `,_jsx(_components.code,{children:`?session_id=cs_...`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Browser events are for the shopper experience only. Never fulfil from `,_jsx(_components.code,{children:`payment.completed`}),`,\na `,_jsx(_components.code,{children:`return_url`}),` redirect, or `,_jsx(_components.code,{children:`checkout_session.status`}),`. Confirm on your server with\n`,_jsx(_components.code,{children:`GET /v1/payments/{id}`}),` or the `,_jsx(_components.code,{children:`payment.captured`}),` webhook, and refuse the order if\n`,_jsx(_components.code,{children:`amount_mismatch`}),` is `,_jsx(_components.code,{children:`true`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`events`,children:`Events`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Event`}),_jsx(_components.th,{children:`When`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ready`})}),_jsx(_components.td,{children:`The payment form is shown`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`payment.completed`})}),_jsx(_components.td,{children:`The payment was authorised`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`payment.processing`})}),_jsx(_components.td,{children:`The outcome is pending (for example a bank transfer); you get a webhook later`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`payment.failed`})}),_jsxs(_components.td,{children:[`The payment was declined. `,_jsx(_components.code,{children:`message`}),` is safe to show to the shopper`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`error`})}),_jsxs(_components.td,{children:[`The checkout could not load or the session is no longer open (`,_jsx(_components.code,{children:`code: session_complete`}),`, `,_jsx(_components.code,{children:`session_expired`}),`)`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`styling`,children:`Styling`}),`\n`,_jsx(_components.p,{children:`Pass theme tokens; do not style the inner form with your own CSS selectors.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`kalixo`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` sessionId`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` clientSecret`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` theme:`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`colors:`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`primary:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` '#0a7cff'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`text:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` '#1d2433'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`radius:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` '8px'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`font_family:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'Inter, sans-serif'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Kalixo can also set default theme tokens for your account.`}),`\n`,_jsx(Heading,{level:`2`,id:`redirect-payment-methods`,children:`Redirect payment methods`}),`\n`,_jsxs(_components.p,{children:[`Some payment methods send the shopper to their bank. The bank returns the shopper to\nKalixo, and Kalixo forwards them to your `,_jsx(_components.code,{children:`return_url`}),` with `,_jsx(_components.code,{children:`?session_id=cs_...`}),`. Read\nthe payment on your server to show the result.`]}),`\n`,_jsx(Heading,{level:`2`,id:`content-security-policy`,children:`Content Security Policy`}),`\n`,_jsx(_components.p,{children:`If your checkout page uses a CSP, it must allow Kalixo.js, the Kalixo API and the secure\npayment fields that Kalixo.js loads:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`script-src https://js.kalixo.io;`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`connect-src https://checkout.kalixo.io https://sandbox.checkout.kalixo.io;`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`frame-src https:;`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`style-src 'unsafe-inline';`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`img-src data:;`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`The secure payment fields need a few more domains. Ask Kalixo integrations at\n`,_jsx(_components.a,{href:`mailto:[email protected]`,children:`[email protected]`}),` for the complete policy for your account. Kalixo tells you about\nchanges to it before they are needed.`]}),`\n`,_jsx(Heading,{level:`2`,id:`pci-dss`,children:`PCI DSS`}),`\n`,_jsxs(_components.p,{children:[`Card details are entered in secure fields that Kalixo.js loads from the payment\nprovider. Card data never touches your page or Kalixo’s servers, which keeps your PCI\nscope at SAQ A, provided you load Kalixo.js from `,_jsx(_components.code,{children:`js.kalixo.io`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Kalixo.js","description":"Embed the Kalixo checkout in your own page.","icon":"code","href":"/checkout/guides/kalixo-js"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Load Kalixo.js","slug":"load-kalixo-js","depth":2,"children":[]},{"title":"Mount the checkout","slug":"mount-the-checkout","depth":2,"children":[]},{"title":"Events","slug":"events","depth":2,"children":[]},{"title":"Styling","slug":"styling","depth":2,"children":[]},{"title":"Redirect payment methods","slug":"redirect-payment-methods","depth":2,"children":[]},{"title":"Content Security Policy","slug":"content-security-policy","depth":2,"children":[]},{"title":"PCI DSS","slug":"pci-dss","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/kalixo-3d06b8ab/685272f2d8ab6aee/examples/kalixo-node/client.js"],"subdomain":"kalixo-3d06b8ab","siteName":"Kalixo Developers","title":"Kalixo.js - Kalixo Developers","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-11T00:07:59.912Z","originalFileLocation":"checkout/guides/kalixo-js.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Embed the Kalixo checkout in your own page.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Kalixo Developers\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kalixo-3d06b8ab/8cvpfdOTq_MVvelK/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/kalixo-3d06b8ab/8cvpfdOTq_MVvelK/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kalixo-3d06b8ab/8cvpfdOTq_MVvelK/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kalixo-3d06b8ab/8cvpfdOTq_MVvelK/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kalixo-3d06b8ab/8cvpfdOTq_MVvelK/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kalixo-3d06b8ab/8cvpfdOTq_MVvelK/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kalixo-3d06b8ab/8cvpfdOTq_MVvelK/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kalixo-3d06b8ab/8cvpfdOTq_MVvelK/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kalixo-3d06b8ab/8cvpfdOTq_MVvelK/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Kalixo.js - Kalixo Developers\">\u003cmeta data-mint-head property=\"og:description\" content=\"Embed the Kalixo checkout in your own page.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Kalixo Developers\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.kalixo.io/checkout/guides/kalixo-js\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://kalixo-3d06b8ab.mintlify.site/_mintlify/api/og/v2?division=Accept+payments\u0026amp;title=Kalixo.js\u0026amp;description=Embed+the+Kalixo+checkout+in+your+own+page.\u0026amp;theme=56605433751badd6832827d1\u0026amp;signature=314dfbfa977d237abbbff9cc61773ae87ba8cbbdc79867273ae8ed0ac680db90\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Kalixo.js - Kalixo Developers\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Embed the Kalixo checkout in your own page.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kalixo-3d06b8ab.mintlify.site/_mintlify/api/og/v2?division=Accept+payments\u0026amp;title=Kalixo.js\u0026amp;description=Embed+the+Kalixo+checkout+in+your+own+page.\u0026amp;theme=56605433751badd6832827d1\u0026amp;signature=314dfbfa977d237abbbff9cc61773ae87ba8cbbdc79867273ae8ed0ac680db90\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/kalixo-3d06b8ab/8cvpfdOTq_MVvelK/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Kalixo Developers\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#c9f73a\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.kalixo.io/checkout/guides/kalixo-js\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/checkout/guides/kalixo-js.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.kalixo.io/#organization\",\"name\":\"Kalixo Developers\",\"url\":\"https://developer.kalixo.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/kalixo-3d06b8ab/i1gWPLf-7UA5aCX4/logo/kalixo-black.svg?fit=max\u0026auto=format\u0026n=i1gWPLf-7UA5aCX4\u0026q=85\u0026s=10cb3de56b003645223ff09a03738f0d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.kalixo.io#website\",\"name\":\"Kalixo Developers\",\"url\":\"https://developer.kalixo.io\",\"publisher\":{\"@id\":\"https://developer.kalixo.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.kalixo.io/checkout/guides/kalixo-js#webpage\",\"url\":\"https://developer.kalixo.io/checkout/guides/kalixo-js\",\"name\":\"Kalixo.js\",\"description\":\"Embed the Kalixo checkout in your own page.\",\"dateModified\":\"2026-11-11T00:07:59.912Z\",\"isPartOf\":{\"@id\":\"https://developer.kalixo.io#website\"},\"breadcrumb\":{\"@id\":\"https://developer.kalixo.io/checkout/guides/kalixo-js#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.kalixo.io/checkout/guides/kalixo-js#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Kalixo Developers\",\"item\":\"https://developer.kalixo.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kalixo.js\",\"item\":\"https://developer.kalixo.io/checkout/guides/kalixo-js\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developer.kalixo.io/checkout/guides/kalixo-js#article\",\"headline\":\"Kalixo.js\",\"name\":\"Kalixo.js\",\"description\":\"Embed the Kalixo checkout in your own page.\",\"url\":\"https://developer.kalixo.io/checkout/guides/kalixo-js\",\"mainEntityOfPage\":{\"@id\":\"https://developer.kalixo.io/checkout/guides/kalixo-js#webpage\"},\"dateModified\":\"2026-11-11T00:07:59.912Z\",\"publisher\":{\"@id\":\"https://developer.kalixo.io/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.kalixo.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Kalixo Developers\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kalixo Developers\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/checkout/guides/kalixo-js.md","siteName":"Kalixo Developers","nav":{"global":null,"products":[{"product":"Distribution API","icon":"gift","description":"Catalog, ordering and wallet","pages":[{"title":"Distribution API","href":""}]},{"product":"Checkout","icon":"credit-card","description":"Accept payments with Kalixo as merchant of record","tabs":[{"tab":"Guides","groups":[{"group":"Get started","pages":[{"title":"Kalixo Checkout","icon":"credit-card","href":"/checkout"},{"title":"Quickstart","icon":"rocket","href":"/checkout/quickstart"},{"title":"Authentication","icon":"key","href":"/checkout/authentication"},{"title":"Testing","icon":"flask","href":"/checkout/concepts/testing"},{"title":"Changelog","description":"Changes to the Kalixo Checkout API, Kalixo.js and the Node SDK.","icon":"clock-rotate-left","href":"/checkout/changelog"}]},{"group":"Accept payments","pages":[{"title":"Kalixo.js","icon":"code","href":"/checkout/guides/kalixo-js"},{"title":"Hosted checkout","description":"Redirect the shopper to a Kalixo-hosted payment page.","icon":"window-maximize","href":"/checkout/guides/hosted-checkout"},{"title":"Payment links","icon":"link","href":"/checkout/guides/payment-links"},{"title":"Captures, cancellations and refunds","icon":"rotate-left","href":"/checkout/guides/captures-and-refunds"},{"title":"Stored payment methods","icon":"wallet","href":"/checkout/guides/stored-payment-methods"}]},{"group":"After the payment","pages":[{"title":"Webhooks","icon":"webhook","href":"/checkout/concepts/webhooks"},{"title":"Event catalogue","icon":"list","href":"/checkout/concepts/events"},{"title":"Disputes","icon":"scale-balanced","href":"/checkout/guides/disputes"},{"title":"Reports","icon":"file-csv","href":"/checkout/guides/reports"}]},{"group":"Core concepts","pages":[{"title":"Payment lifecycle","icon":"diagram-project","href":"/checkout/concepts/payment-lifecycle"},{"title":"Amount integrity","icon":"shield-check","href":"/checkout/concepts/amount-integrity"},{"title":"Idempotency","icon":"repeat","href":"/checkout/concepts/idempotency"},{"title":"Errors","icon":"triangle-exclamation","href":"/checkout/concepts/errors"},{"title":"Versioning","icon":"code-branch","href":"/checkout/concepts/versioning"}]}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/checkout/api-reference/introduction"}]}]}]},"basePath":"","title":"Kalixo.js - Kalixo Developers","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":[],"chunks":[]}