# FAQ

<details>

<summary>What is Tebex?</summary>

Tebex is a payments and monetization platform designed for game developers. Our Unity SDK lets you embed a fully functional in-game store without requiring your own payment infrastructure.&#x20;

Tebex handles payment processing, currencies, VAT, gift cards, coupons, and subscriptions. You focus on what to sell and what happens when a player buys it.

</details>

<details>

<summary>Does Tebex support subscriptions?</summary>

Yes! In addition to one-time purchases (such as for consumables, DLC, and cosmetics), we support both recurring subscriptions as well as tiered memberships.

</details>

<details>

<summary>Do you include a pre-built UI?</summary>

Yes, we include both a **Store Browser** and **In-Game Cart** to render your store and a player's cart dynamically in-game. This uses no external dependencies and can be drawn on the `Canvas` you specify.

</details>

<details>

<summary>Can I use the API without the pre-built UI components?</summary>

Yes. `HeadlessApi` is a standalone class. You can call it directly to build your own UI:

```csharp
var api = HeadlessApi.GetInstance(new UnityHeadlessAdapter(), "your-public-token");

await api.GetAllCategoriesIncludingPackagesAsync(
    onSuccess: categories => { /* populate your own UI */ },
    onApiError: err => Debug.LogError(err.detail),
    onServerError: err => Debug.LogError(err.Body)
);
```

</details>

<details>

<summary>Do I need a backend/API to use Tebex?</summary>

No backend is required for the purchase or fulfillment flow.&#x20;

The Headless API and all `TebexUnity` components included with our SDK work entirely from the Unity client using your store's public token. See [implementation-guide](https://docs.tebex.io/developers/unity-engine/implementation-guide "mention")for more details.

If your game implements private servers and can run commands, we provide a **Plugin API** and example plugin that fulfils these commands. See [Plugin API](https://app.gitbook.com/o/-Lu7EAWKU34EXhA86-kY/s/-Lu7EHa8uU8ZbYDKqVZF/ "mention") for more information.

Tebex can also send webhooks for various events to endpoints you control. See [webhooks](https://docs.tebex.io/developers/webhooks "mention") for further detail.

</details>

<details>

<summary>What are the two API types and when do I use them?</summary>

**Headless API** is for browsing the store's available packages, creating baskets, and checking out the user. For most Unity games, Headless API will suffice.

**Plugin API** is intended for dedicated servers that need to deliver player rewards.

</details>

<details>

<summary>Is there a demo scene I can reference?</summary>

Yes, open the scene at `Assets/Tebex/Veilborn/Veilborn.unity`.&#x20;

This is a complete example store built around a fantasy game theme ("Veilborn") that demonstrates the `StoreBrowser`, `InGameCart`, and `Deliverables` components of the Unity SDK working together, along with QR code checkout.

</details>

<details>

<summary>Are there any dependencies?</summary>

There are no external dependencies for our Unity SDK. JSON encoding uses Unity's internal tooling.&#x20;

</details>

<details>

<summary>How do I get my public token?</summary>

Login to your store at <https://creator.tebex.io/>, select **Integrations > API Keys**. Your **Public Token** is displayed on this page.

Quick link: <https://creator.tebex.io/developers/api-keys>

</details>

<details>

<summary>Can I add Tebex to an existing scene?</summary>

Yes! Adding Tebex can be done in just a few steps:

1. Create a `Canvas` in your scene (or use an existing one).
2. Add the `StoreBrowser` component to a `GameObject` on that canvas.
3. Assign your **Store Public Key** in the Inspector.
4. Assign a `TMP_FontAsset` and any branding textures you want to use.
5. Optionally attach an `InGameCart` component and link it to `StoreBrowser`.
6. Press Play - the SDK fetches your store data automatically.

</details>

<details>

<summary>Does payment happen inside the game?</summary>

Payment does not happen inside the game.&#x20;

When the player is ready to check out, the SDK opens the `basket.links.checkout` URL in the player's browser (or displays it as a QR code for mobile checkout).&#x20;

Tebex's hosted page handles all payment collection. After payment, the basket's `complete` flag is set to `true`, and the `Deliverables` component detects this via polling.

This approach means you are never handling card numbers or payment data inside Unity.

</details>

<details>

<summary>How do I know when a player has paid, so I can give them their reward?</summary>

Use the `Deliverables` component. Register a callback for each package you sell:

```csharp
deliverables.RegisterDeliverableAction(myPackage, (boughtPackage) => {
    // Award the item/currency/perk here
});
```

`Deliverables` polls the basket every few seconds. When `basket.complete` is `true`, it fires every registered callback for the purchased packages.

</details>

<details>

<summary>Is it safe to include my store's public token in the game client?</summary>

Yes. The public token is designed to be client-visible. It only allows reading store data and managing baskets - it cannot access financial data, ban players, or modify your store.

{% hint style="warning" %}
**Never ship the Plugin API secret key in a game client.** The secret key is for server-to-API use only.
{% endhint %}

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tebex.io/developers/unity-engine/faq.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
