---
title: Payments SDK
description: Configure end-user sessions and platform secret keys for the Payments SDK (Embeddable Payments)
icon: Code
---

import { Callout } from "fumadocs-ui/components/callout";
import { ThemedImage } from "@/components/themed-image";

The **Payments SDK** settings page lets you embed end-user payments and sessions into your own application — your end users get their own wallets, and you control markup and access. It is a payments feature, not a normal AI client SDK like the OpenAI SDK. You'll find it under **Settings → Payments SDK** for a project.

<Callout type="warn">
	**Preview — opt-in only.** Embeddable Payments is in preview and enabled on an
	opt-in basis per project. Until it is turned on for your project, this page is
	read-only and shows a preview of the settings. [Contact
	us](mailto:contact@llmgateway.io) to request access.
</Callout>

<ThemedImage
	alt="Payments SDK settings showing end-user sessions and platform secret keys"
	basePath="/learn/sdk-settings"
/>

## End-user sessions

Turn on **Enable end-user sessions** to allow this project to mint short-lived browser session tokens for your users.

| Field               | Description                                                                                        |
| ------------------- | -------------------------------------------------------------------------------------------------- |
| **Markup percent**  | The percentage you add on top of provider cost for each end-user request (0–100%)                  |
| **Allowed origins** | The browser origins permitted to use session tokens, one per line (e.g. `https://app.example.com`) |

Click **Save Settings** to apply changes.

## Platform secret keys

Platform secret keys are **server-side** keys used to mint end-user sessions. Keep them on your backend — never expose them in the browser.

- **Create Live Key** — A production key. Top-ups made with it use live billing.
- **Create Test Key** — A sandbox key. Top-ups use the Stripe sandbox, so you can build and test without real charges.

<Callout type="warn">
	A secret key is shown **only once** at creation time. Copy it immediately — it
	won't be displayed again. If you lose a key, revoke it and create a new one.
</Callout>

Each key in the list shows its description, a **test** badge when applicable, its status, and a masked token. Use **Revoke** to permanently disable a key.

<Callout type="info">
	For the full SDK integration guide — server, client, and React components —
	see the [Embeddable Payments feature docs](/features/embeddable-payments).
</Callout>
