> ## Documentation Index
> Fetch the complete documentation index at: https://vexioncards.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Storyous: card types & point setup

> Set up each card type for Storyous and configure points on your products in VEXiON.

This guide covers each card type and how to set its points in VEXiON's product table. For how to reach and edit that table, see [Menu and products](https://vexioncards.mintlify.site/knowledge-base/storyous-menu.md).

> [!NOTE]
>
> **The principle:** you set loyalty on products **in VEXiON** (earn, redeem, discount), Storyous sends each sale to VEXiON, and VEXiON updates the card. At the till, staff can turn any benefit on or off.

## Stamp card

A simple "collect stamps, get a reward" program.

```mermaid theme={null}
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#E5F6FF','primaryBorderColor':'#36C6FA','primaryTextColor':'#1F1E1F','lineColor':'#36C6FA','fontFamily':'Manrope, sans-serif'}}}%%
flowchart TD
    A[Customer buys a product<br/>earnPoints = 1] --> B[Storyous sends the sale to VEXiON]
    B --> C[VEXiON adds 1 stamp]:::vexion
    C --> D[Enough stamps?<br/>redeemPoints reached]
    D --> E[Cashier applies the reward<br/>discount % on the cheapest item]
    E --> F[VEXiON deducts the stamps]:::vexion
    classDef vexion fill:#36C6FA,color:#fff,stroke:#2BA8D9;
```

**In VEXiON's product table**, for each product set:

| Field | Meaning | Example |
| - | - | - |
| Loyalty | In the program | Yes |
| Earn Stamps | Stamps earned per purchase | 1 |
| Redeem Stamps | Stamps needed for the reward | 10 |
| Discount | Percentage off when redeemed | 100% (free) |

> [!NOTE]
>
> With **Stamp cards** the columns are headed *Earn Stamps* and *Redeem Stamps*; with **Reward Cards** the same columns read *Earn Points* and *Redeem Points*. In the export and import file they are always named `earnPoints` and `redeemPoints`, whichever card type you use.

**Example: a coffee stamp card**

| Product | Earn | Redeem | Discount |
| - | :-: | :-: | :-: |
| Espresso | 1 | 10 | 100% |
| Cappuccino | 1 | 10 | 100% |
| Latte | 1 | 10 | 100% |

Result: one stamp per coffee, and after 10 stamps any coffee is free.

> [!NOTE]
>
> **What a reward costs comes from the product, not from the card.** Each product's **Redeem Stamps** is its own price in stamps, and it can be lower than the number of stamps the card holds. A pastry set to 3 on a 10-stamp card can be redeemed as soon as the customer has 3.

### Different discount percentages

The reward does not have to be 100%. You can redeem for a partial discount, which is useful for pricier items.

| Product | Price | Redeem | Discount | Customer pays |
| - | :-: | :-: | :-: | :-: |
| Espresso | 1.80€ | 10 | 100% | 0€ (free) |
| Cappuccino | 2.50€ | 10 | 50% | 1.25€ |
| Latte | 2.90€ | 10 | 60% | 1.16€ |

### Automatic reward selection

If the customer has enough stamps and the basket has eligible products, VEXiON offers the rewards on its own, **cheapest reward first** (the unit price of the product times its discount percent). If the stamps cover only one item, one reward is offered. If they cover several items, VEXiON offers them one after another, each with its own toggle, until the stamps run out. Staff can switch individual rewards off. When every eligible product has the **same** discount percent, the cheapest-priced item comes first.

> [!NOTE]
>
> **On stamp cards, one redemption covers one item.** If the basket has two of the rewarded product on one line, only one of them is discounted. To give two free, ring them up as two separate lines.

> [!NOTE]
>
> **Collect or redeem, never both.** In one transaction the customer either earns stamps or redeems a reward. If they redeem, they do not also earn stamps for that purchase.

## Reward card, Credit Cashback

Points convert to a **euro credit** the customer can spend on any future purchase. This mode works across **all** your locations.

### Cashback on this till

Storyous counts points with the **Value of 1 Loyalty Point** you set. The customer still sees **credit in your currency** on the card and in every message. With a point value of 0.05 €, 160 points show as **8,00 €** of credit (at 0.25 Kč per point, 160 points show as **40 Kč**). The Storyous screen shows a line like "Credit: €8.00 (160 points)".

```mermaid theme={null}
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#E5F6FF','primaryBorderColor':'#36C6FA','primaryTextColor':'#1F1E1F','lineColor':'#36C6FA','fontFamily':'Manrope, sans-serif'}}}%%
flowchart TD
    A[Customer buys products] --> B[Earns points<br/>the Earn Points column]
    B --> C[Points build up on the card]:::vexion
    C --> D[Cashier enters an amount to redeem]
    D --> E[Points convert to euros<br/>points x point value]:::vexion
    classDef vexion fill:#36C6FA,color:#fff,stroke:#2BA8D9;
```

**Setup:**

1. In the integration settings, set **Point card type** to **Reward Cards**, **Redemption Mode** to **Credit Cashback**, and the **Value of 1 Loyalty Point** (for example `0.01`, so 1 point = 0.01€).
2. In the product table, set **Earn Points** on your products. Only the earn column is used, there is nothing to redeem per product.

**Example product setup** (earn points scaled to price):

| Product | Price | Earn Points |
| - | :-: | :-: |
| Espresso | 1.80€ | 2 |
| Cappuccino | 2.50€ | 3 |
| Cheesecake | 4.50€ | 5 |

Buying a Cappuccino and a Cheesecake earns 8 points.

**How points convert** (at 0.01€ per point):

| Points | Credit |
| - | :-: |
| 100 | 1€ |
| 500 | 5€ |
| 1000 | 10€ |

At the till, the cashier enters how much of the credit the customer wants to use (any amount up to their balance). See [Working at the till](https://vexioncards.mintlify.site/knowledge-base/storyous-pos.md#reward-cards).

## Reward card, Product Rewards

Points are earned and redeemed on **specific products**, like stamps but with flexible point amounts.

> [!WARNING]
>
> **Single location only.** Loyalty values live on each place's own product table, so a reward you set up in one place does not exist in another. Nothing stops you choosing this mode with several places connected, but you would have to configure every place separately and the same customer would get a different reward at each one. If you run more than one place, use **Credit Cashback**.

Set **Earn Points**, **Redeem Points**, and **Discount** on each product, exactly like a stamp card but with point (decimal-capable) values.

**Example**

| Product | Price | Earn | Redeem | Discount |
| - | :-: | :-: | :-: | :-: |
| Espresso | 1.80€ | 2 | 20 | 100% |
| Cappuccino | 2.50€ | 3 | 25 | 100% |
| Cheesecake | 4.50€ | 5 | 40 | 100% |

Pricier products earn more and cost more points to redeem. A customer either earns or redeems in one transaction, not both.

Product Rewards works differently from stamps in three ways. VEXiON offers the eligible products **cheapest first, by the price of the line on the bill**, and redeems **as many products as the points allow**. The discount percent is applied to the **whole line price**, so a line of two of the same product is discounted for both units on one redemption. Always set **Discount** above 0: a product with Redeem above 0 and Discount 0 is offered as "0% off" and still costs the points.

## Tiered earning (reward cards)

A reward card can earn points **faster for loyal customers** using tiers. You set the product points **once, at the base rate**, and VEXiON multiplies them up by the customer's tier.

**How it works:** each tier has an **earn multiplier** (for example Bronze 1x, Silver 3x, Gold 5x). When VEXiON processes a sale, it looks up the customer's tier by their total spend and multiplies the base points earned. This applies to **earning only**, redemptions are never multiplied. It works in both **Credit Cashback** and **Product Rewards** modes.

> [!WARNING]
>
> **Set the base tier only.** Enter each product's `earnPoints` at your **lowest** tier's rate. Do not create separate values per tier. VEXiON scales up automatically for higher tiers.

**Example** (base earn points, tiers Bronze 1x / Silver 3x / Gold 5x):

| Product | Base earn | Bronze earns | Silver earns | Gold earns |
| - | :-: | :-: | :-: | :-: |
| Espresso | 2 | 2 | 6 | 10 |
| Cheesecake | 5 | 5 | 15 | 25 |

The customer's tier is worked out from their total spend, and it moves up on its own as they spend more. Tiers and multipliers are set **on the card in VEXiON**, not in the Storyous settings.

## Discount card

Automatic percentage discounts by the customer's tier. This works across **all** locations, and spend is summed across them.

VEXiON tracks the customer's total spend and applies the tier discount automatically at the till. Tiers are set **on the card in VEXiON**, not in the Storyous settings:

| Tier | Minimum spend | Discount |
| - | :-: | :-: |
| Bronze | 0€ | 5% |
| Silver | 500€ | 10% |
| Gold | 1500€ | 15% |

> [!NOTE]
>
> The discount applies only to products that have **Loyalty** enabled in the product table. As a customer's spend crosses a threshold, their tier and discount update on their own.

### Employee card

An **employee card** is a discount card set up for staff, with discount levels for the month and an optional **monthly limit**. It works at the Storyous till like any discount card, with two differences:

* With a monthly limit, the discount stops when the limit is used up, until the **reset day**. With no limit, the last step applies until the reset day.
* The tier is evaluated on the employee's **spend this month**, not their lifetime spend.

As with any discount, it only applies to products that have **Loyalty** enabled. For the full setup, see [Employee card](https://vexioncards.mintlify.site/knowledge-base/employee-card.md).

## Gift card

Prepaid credit the recipient spends at the till.

```mermaid theme={null}
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#E5F6FF','primaryBorderColor':'#36C6FA','primaryTextColor':'#1F1E1F','lineColor':'#36C6FA','fontFamily':'Manrope, sans-serif'}}}%%
flowchart TD
    A[1. Buyer orders on your gift-card page] --> B[2. Buyer gets a QR code]
    B --> C[3. Staff scan the order QR at the till<br/>Scan or type code]
    C --> D[4. Staff confirm the bill,<br/>buyer pays the base amount]
    D --> E[5. VEXiON creates the gift card<br/>with any bonus added]:::vexion
    E --> F[6. Buyer gets a confirmation email,<br/>the recipient gets the card]:::vexion
    classDef vexion fill:#36C6FA,color:#fff,stroke:#2BA8D9;
```

**Settings** (in the integration settings, with Gift Cards enabled):

| Setting | Meaning | Example |
| - | - | - |
| Minimum value | Lowest amount per card | 10€ |
| Maximum value | Highest amount per card | 1000€ |
| Bonus program | Extra value on purchase or top-up | On |
| Bonus percentage | How much extra | 10% |

**Bonus program:** with a 10% bonus, paying 50€ loads 55€, and paying 100€ loads 110€. The **buyer pays only the base amount**, the bonus is free. For an online order paid at the till, the amount and the bonus are the ones the buyer saw on the gift-card page (the amount options of the gift card), not the percentage from these settings. The percentage applies to cards sold with the older in-store form.

**Spending:** the recipient shows their card, staff scan it, and at payment the balance is used. If it is not enough, the customer pays the difference in cash or card.

**Topping up:** a gift card can be topped up at the till, with the bonus applied again, **but only once its balance has run out**. The till only offers the scan control when there are items on the bill, and a card that still has credit always pays for those items instead of topping up.

### Selling gift cards online (digital gift cards)

You can also sell gift cards **online**, with no staff involvement. The customer buys on your gift-card web page, **Stripe handles the payment**, and VEXiON **loads the balance onto the recipient's card straight away**. The recipient gets the card in their wallet with the balance already on it, ready to spend at the till on their next visit.

> [!NOTE]
>
> Online gift-card sales require the **Stripe Connect** integration (Settings → Integrations). Because Storyous reads the balance from VEXiON at the till, an online-loaded balance is spendable immediately, there is nothing extra to sync on the Storyous side.

For the full till steps, see [Working at the till](https://vexioncards.mintlify.site/knowledge-base/storyous-pos.md#gift-cards).

## FAQ

> [accordion] Where do I set the points, in VEXiON or Storyous?
>
> In **VEXiON**, on the product table. Storyous only provides the product names, prices, and categories.

> [accordion] Can I use stamps and points at the same time?
>
> No. Within Point cards you pick **either** Stamp cards **or** Reward Cards. Customers collect one type.

> [accordion] Can I have decimal points?
>
> Yes for **Reward cards** (for example 2.5). For **Stamp cards**, whole numbers are recommended so stamp counts stay clean.

> [accordion] Why can't I use Product Rewards with several locations?
>
> A product's redemption cost is tied to one place's menu and prices. Use **Credit Cashback**, which is a flat euro-per-point rate that works everywhere.

> [accordion] What does Redeem and Discount mean?
>
> **Redeem** is how many points/stamps are needed, **Discount** is how much comes off (100% = free). For example Redeem 10, Discount 100% gives the product free for 10 stamps.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.