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

# Stel kortingscodes in voor je Kaspert webshop

> Maak percentage- of vast-bedrag promocodes met optionele gebruikslimieten, producttargeting en per-stuk toepassingsregels voor je Kaspert webshop.

Kortingscodes laten je trouwe leden belonen, early-bird promoties draaien, of gewoon iets teruggeven aan ouders die vaak bestellen. Kopers voeren hun code in tijdens het afrekenen en de korting wordt toegepast op hun winkelwagentotaal voor de betaling. Jij behoudt de volledige controle: beperk het aantal inwisselingen, beperk de code tot specifieke producten, of activeer en deactiveer codes op elk moment: alles vanuit de **Kortingscodes** instellingen van je verkoop.

## Een kortingscode aanmaken

<Steps>
  ### Open de Kortingscodes instellingen

  Ga naar **Verkoop**, open de verkoop waaraan je een code wilt toevoegen, en klik op **Instellingen → Kortingscodes**. Je ziet een lijst van alle bestaande codes voor deze verkoop (leeg wanneer je begint).

  ### Klik op "Kortingscode toevoegen"

  Dit opent het kortingscodeformulier. Vul de vier hieronder beschreven secties in.

  ### Sectie 1: Code & gebruikslimieten

  <ParamField body="Code" type="string" required>
    De code die kopers zullen intypen bij het afrekenen, bijv. `CHIRO10` of `ZOMER2025`. Codes worden in hoofdletters opgeslagen en case-insensitief gematcht. Klik op **Genereer** om Kaspert een willekeurige acht-tekencode voor je te laten genereren.
  </ParamField>

  <ParamField body="Maximum gebruik" type="integer">
    Vink **Beperk het totale aantal keer** aan en voer een getal in om te beperken hoe vaak de code kan worden ingewisseld door alle kopers samen. Zodra de limiet is bereikt, wordt de code automatisch geweigerd. Laat uitgevinkt voor onbeperkt gebruik.
  </ParamField>

  ### Sectie 2: Kortingstype & waarde

  Kies of de code een **percentage** korting of een **vast eurobedrag** geeft:

  <Tabs>
    <Tab title="Percentage (%)">
      De korting wordt berekend als een percentage van het toepasselijke subtotaal. Bijvoorbeeld: een code van 10% op een bestelling van €25 bespaart de koper €2,50.

      ```
      discount_amount = subtotal × (percentage / 100)
      ```

      Percentagewaarden moeten tussen 1 en 100 liggen.
    </Tab>

    <Tab title="Vast bedrag (€)">
      Er wordt een vast eurobedrag afgetrokken van het toepasselijke subtotaal. De korting is gelimiteerd aan het subtotaal: het kan nooit leiden tot een negatief totaal.

      ```
      discount_amount = min(fixed_amount, subtotal)
      ```
    </Tab>
  </Tabs>

  ### Sectie 3: Producttargeting (optioneel)

  Standaard geldt een korting voor het **hele winkelwagentje**. Als je de code wilt beperken tot specifieke producten, kies je **Specifieke artikelen** en vink je de kwalificerende producten aan.

  Wanneer je specifieke producten target, kies je ook **hoe** de korting wordt toegepast:

  | Modus                              | Beschrijving                                                                                                                                                    |
  | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | **Op het subtotaal**               | Het percentage of vaste bedrag wordt één keer afgetrokken van het gecombineerde subtotaal van de getargete producten.                                           |
  | **Per stuk in het winkelwagentje** | De korting wordt toegepast op elke individuele eenheid van de getargete producten. Je kunt dit verder beperken tot alleen de **eerste N eenheden** per product. |

  <Accordion title="Voorbeeld: 10% korting op de eerste 3 T-shirts">
    Stel het kortingstype in op **Percentage**, waarde op `10`, bereik op **Specifieke artikelen**, selecteer het T-shirt product, kies **Per stuk** en stel de per-stuk limiet in op `3`. Een koper die 5 T-shirts bestelt à €15 per stuk, krijgt 10% korting op de eerste drie (besparing €4,50) en betaalt de volle prijs voor de resterende twee.
  </Accordion>

  ### Sectie 4: Bundelvoorwaarde (optioneel)

  Je kunt een kortingscode afhankelijk maken van een ander product in het winkelwagentje. Klik op **Artikelvoorwaarde toevoegen** en kies:

  * **Artikel**: het product dat aanwezig moet zijn
  * **Min. hoeveelheid**: het minimum aantal van dat product dat vereist is

  Dit maakt "koop X, krijg Y korting" bundels mogelijk. Bijvoorbeeld: *Krijg een gratis dranktoken wanneer je minstens 10 diner tickets bestelt.*

  ### Sla de code op

  Klik op **Kortingscode aanmaken**. De code verschijnt onmiddellijk in de lijst en is standaard actief.
</Steps>

## Bestaande codes beheren

Elke code in de lijst toont de huidige status, het aantal keren dat deze is gebruikt, en het totale toegestane gebruik (indien gelimiteerd). Vanuit de lijst kun je:

* **Activeren / deactiveren**: schakel de schakelaar naast een code in of uit om deze in of uit te schakelen zonder te verwijderen. Een gedeactiveerde code wordt stilzwijgend geweigerd bij het afrekenen.
* **Bewerken**: klik op het potloodicoon om het codeformulier te openen en elk veld te wijzigen.
* **Verwijderen**: verwijder de code permanent. Bestellingen die de code al hebben gebruikt, worden niet beïnvloed.

## Hoe kortingscodes werken bij het afrekenen

Wanneer een koper een code invoert op de publieke bestelpagina, voert Kaspert de volgende controles in volgorde uit:

1. **Code bestaat**: de code moet overeenkomen met een actieve korting op die specifieke verkoop (case-insensitief).
2. **Gebruikslimiet**: als een maximum aantal gebruik is ingesteld, moet de huidige `times_used` telling onder die limiet liggen.
3. **Bundelvoorwaarde**: als de code een productvoorwaarde heeft, moet het winkelwagentje van de koper het vereiste product in de vereiste hoeveelheid bevatten.
4. **Productbereik**: als de code specifieke producten target, moet minstens één van die producten in het winkelwagentje zitten.

Als alle controles slagen, wordt het kortingsbedrag berekend en getoond als een regelitem in het winkelwagentotaal. De koper ziet het oorspronkelijke totaal, de korting, en het uiteindelijke te betalen bedrag.

<Note>
  Het kortingsbedrag wordt server-side herberekend wanneer de bestelling wordt ingediend, dus het kan niet worden gemanipuleerd in de browser. Als een code ongeldig wordt tussen het moment dat een koper deze invoert en het moment dat ze de betaling bevestigen (bijv. de laatste beschikbare inwisseling wordt door een andere koper gebruikt), toont het afrekenen een foutmelding en wordt de koper gevraagd hun bestelling te herzien.
</Note>

## Tips voor effectieve kortingscodes

<Tip>
  Gebruik herinnerbare codes die aansluiten bij je vereniging of evenement, bijvoorbeeld `CHIRO15`, `SCOUTS2025` of `WAFEL10`. Korte, hoofdlettercodes zijn het gemakkelijkst om op een telefoon in te typen.
</Tip>

<Tip>
  Deel codes in je nieuwsbrieven of op sociale media in plaats van ze op flyers te drukken, zodat je ze op elk moment kunt deactiveren indien nodig.
</Tip>

<Tip>
  Stel een **gebruikslimiet** gelijk aan je geschatte publieksomvang in om urgentie te creëren zonder het risico van een ongelimiteerde aansprakelijkheid.
</Tip>
