# Promotional code rules

> When a discount code is accepted in the Cassa and when it is not, how the discount is calculated, how a code is used up, what the automatic birthday and name-day codes are, holiday greetings, and what the states of a promotion are.

Last updated: 22 October 2026. Source: https://narciso.io/en/docs/regole-codici-promozionali/

This entry collects the **rules** that the program applies to a promotional code. How to create a promotion is in [Promotions](https://narciso.io/en/docs/promozioni/); how to write the code in the Cassa and the verification messages are in [Discount code in the Cash desk](https://narciso.io/en/docs/codice-sconto-in-cassa/).

## Where a code is used

A code is applied **only in the Cassa**, in **Riscuoti** (Collect payment) mode, in the «Sconto / Promo...» (Discount / Promo...) box. When creating or editing an appointment there is **no** field for the code: the appointment's price is the sum of the price-list prices. When you go from the appointment to checkout, the Cassa opens with the appointment's items and there you write the code as for any other sale.

A code is valid only in the **location** where the promotion was created.

## The rules, in the order in which they are checked

The program stops at the **first** rule that is not met and shows the corresponding message.

| # | Check | Red message if not met |
|---|---|---|
| 1 | The code exists in the active location and is **active** (not switched off or deleted). Lowercase letters become capitals by themselves | «Codice non valido o inesistente» (Invalid or non-existent code) |
| 2 | **Dedicated client**: a client chosen in the Cassa is needed and it must be exactly that one. If more than one client is selected, only the first counts | «Questa promozione è disponibile solo per clienti specifici. Seleziona un cliente per applicare il codice.» (This promotion is available only for specific clients. Select a client to apply the code.) or «Questa promozione non è disponibile per questo cliente.» (This promotion is not available for this client.) |
| 3 | **Labels**: if the promotion has a Related event, the client must have a label with that name | Messages about the «etichetta» (label) (see [Discount code in the Cash desk](https://narciso.io/en/docs/codice-sconto-in-cassa/)) |
| 4 | **Minimum spend**: the sum of the prices of the receipt items (before the discount) must reach it | «Questa promozione richiede un minimo di spesa di €N.NN. Il tuo carrello attuale è €M.MM» (This promotion requires a minimum spend of €N.NN. Your current cart is €M.MM) |
| 5 | **Uses limit**: the uses already made must be fewer than the maximum | «Questo codice ha raggiunto il limite massimo di utilizzi» (This code has reached the maximum uses limit) |
| 6 | **Dates**: the moment of the check must be after the start and before the end | «Questo codice non è ancora valido» (This code is not valid yet) or «Questo codice è scaduto» (This code has expired) |
| 7 | **Receipt items** (only discounts with chosen products or services): see below | «Questo codice non è applicabile ai prodotti nel carrello» (This code cannot be applied to the products in the cart), «… ai servizi nel carrello» (… to the services in the cart) or «Questo codice combo richiede: … che non sono nel carrello. Aggiungi tutti gli elementi del combo per applicare il codice.» (This combo code requires: … which are not in the cart. Add all the combo items to apply the code.) |

**Items rule.** If the promotion lists **only one** item, that item must be in the receipt. If it lists **two or more**, **all of them must be there**: this also applies with the scope «Prodotti specifici» or «Servizi specifici», not only with «Combo». For free-item codes this check does not exist.

The dedicated client and the labels are evaluated on the client chosen in **Riscuoti**.

## How the discount is calculated

| Type | Calculation | Example |
|---|---|---|
| **Percentage discount** | The percentage is applied to the **total of the whole receipt**, not only to the items the promotion refers to | 10% promo «only on product A»; receipt: product A €20 + service €30. Discount = 10% of €50 = **€5** (not €2) |
| **Fixed discount** | The amount in euro, whatever the total; the receipt total does not go below zero | Promo -€10 on a €8 receipt → total €0 |
| **Free product or service** | The code is recognised and «Codice applicato» (Code applied) appears, but the discount is **€0** | — |

> **Warning.** For **free-item** codes the Cassa today **does not add** the free product or service to the receipt and does not reduce the total: the gift is handed over by hand. The code still counts as used when the sale is recorded.

- The discount is calculated **only once**, when the code is verified. If the items or the client then change, you delete the code with the red eraser and verify it again.
- **Only one code per receipt** is applied: verifying another replaces the first.
- The code **cannot be combined** with a loyalty reward code, which is not written in this box ([Loyalty rewards](https://narciso.io/en/docs/premi-fedelta/)).

## When a code is used up

When the sale is recorded, the program marks the code as **used**: the **Utilizzi** counter goes up by one and the promotion and the discount are recorded for that sale ([Discount code uses](https://narciso.io/en/docs/utilizzi/)).

- The **total limit** is checked at the moment of use: the counter never exceeds the maximum, not even with two simultaneous sales («Codice non più utilizzabile: raggiunto il limite di utilizzi.» (Code no longer usable: uses limit reached.)).
- The same promotion cannot be applied twice to the same sale («Questa promozione è già stata applicata a questa vendita.» (This promotion has already been applied to this sale.)).
- The **per-client limit** («one use each», set by the automatic birthday and name-day codes) is checked **only after the sale has been recorded**: if the client has already reached it, the discount was given anyway and the Cassa shows in red «Vendita registrata, ma il codice sconto "CODICE" non è stato segnato come usato: Questo cliente ha già raggiunto il limite di utilizzi di questo codice. Controlla manualmente il codice.» (Sale recorded, but the discount code "CODE" was not marked as used: This client has already reached the uses limit of this code. Check the code manually.)
- If a sale is **cancelled**, the uses it had consumed become available again.
- The discount that then appears in the sale's history for a percentage is calculated on the already discounted total: it may turn out lower than the one given in the Cassa. For exact accounts the sale's total counts.

## The automatic birthday and name-day codes

If in **Comunicazioni** (Communications), in the assistant's settings, **Gestione compleanni** (Birthday management) and/or **Gestione festività** (Holiday management) are active (see [Comunicazioni settings](https://narciso.io/en/docs/impostazioni-comunicazioni/)), every day the program creates a personal code by itself:

| Event | When | Name of the promotion | Who |
|---|---|---|---|
| **Compleanno** (Birthday) | Every day at **08:00** | «Buon Compleanno NomeCliente» (Happy Birthday ClientName) | Clients whose birthday is today |
| **Onomastico** (Name day) | Every day at **08:05** | «Buon Onomastico NomeCliente» (Happy Name Day ClientName) | Clients whose name matches the saint of the day (for a compound name, each word counts) |

- It is a **15% discount** on the whole receipt, **dedicated to that client**, valid for **30 days** from that moment, with a limit of **one use per client**.
- Each client is entitled to **only one per year** for each event.
- The code is sent to the client in the greeting message, on the last channel the client used (or the first available).
- The promotion appears in the table of the first location the client is linked to, with **Creato da** «Automazione compleanno» or «Automazione onomastico». There is nothing to do; like the others, it can be switched off or deleted.

In the Cassa the client must be **chosen in Riscuoti**: without a client, «Questa promozione è disponibile solo per clienti specifici...» appears.

## Holiday greetings (without a code)

With **Gestione festività** active, at **08:05** every day the program also sends the **greetings for the general holidays**: only the message, **with no discount code**. The text is of the type «🎄 Buon Natale, Anna! Da parte di NomeSalone.» (🎄 Merry Christmas, Anna! From SalonName.)

| When | Holidays |
|---|---|
| Fixed dates | New Year's Day (Capodanno), Epiphany (Epifania), Valentine's Day (San Valentino), Women's Day (Festa della Donna), Ferragosto (15 August), Halloween, Immaculate Conception (Immacolata), Christmas Eve (Vigilia di Natale), Christmas (Natale), Boxing Day (Santo Stefano), New Year's Eve (San Silvestro), International Men's Day (Giornata internazionale dell'uomo) |
| Dates that change every year | Fat Thursday (Giovedì grasso), Shrove Tuesday (Martedì grasso), Easter (Pasqua), Easter Monday (Pasquetta), Black Friday, Cyber Monday |

- The greetings go out only to clients who have given **consent to commercial communications**.
- **Women's Day** goes only to female clients and **International Men's Day** only to male clients; without the gender indicated in the client record they do not go out.
- Each client receives the greetings for each holiday **only once a year**.
- The message goes out on the last channel the client used (or the first available), as for birthday and name day.
- Civil holidays such as 25 April, 1 May, 2 June, All Saints' Day (Ognissanti) or St Francis's Day (San Francesco) do not generate messages.

Birthday and name day, on the other hand, do not require consent to commercial communications.

## Rules of use in brief

| Question | Answer |
|---|---|
| When is a code valid? | From the start date (or from creation) to the end date, and only if it is active |
| How many times can it be used? | Unlimited, unless a «Limite utilizzi massimi» (maximum uses limit) is set in the promotion |
| In which locations is it valid? | Only in the one where it was created |
| For which clients? | For all, for a dedicated client or for clients with a certain label |
| On which items? | On the whole receipt or on chosen items (see above the rule «all if there are two or more») |
| Can it be combined? | No: one code per receipt |
| Can the code be changed? | No |
| Can a switched-off promotion be switched back on? | No: you create a new one ([Promotions](https://narciso.io/en/docs/promozioni/)) |
| With several promotions valid for the same client? | No automatic choice: whoever takes the payment writes the right code |

## The states of a promotion

| State | How to recognise it | The code in the Cassa |
|---|---|---|
| **Attiva** (Active) | In the table, with the green switch | It works if it meets all the rules above |
| **Non ancora valida** (Not yet valid) | In the table, with a future start date (the Scadenza column does not say so: the start can be seen in step 3 of editing) | «Questo codice non è ancora valido» |
| **Scaduta** (Expired) | In the table, with a past **Scadenza** and the switch still green | «Questo codice è scaduto» |
| **Esaurita** (Used up) | In the table, with **Utilizzi** equal to the maximum (for example «10 / 10») | «Questo codice ha raggiunto il limite massimo di utilizzi» |
| **Spenta o eliminata** (Switched off or deleted) | **No longer appears** in the table | «Codice non valido o inesistente» |

## What to do if...

| Situation | What to do |
|---|---|
| «Questa promozione è disponibile solo per clienti specifici...» | In Riscuoti you choose the client the code is dedicated to, before verifying |
| «... clienti con etichetta: …» (… clients with label: …) | The promotion was created with a Related event and is valid only for clients with that label. If it is needed for everyone, you create a new one without an event |
| «Questo codice combo richiede...» | You add to the receipt **all** the items chosen in the promotion, even if the scope was «Prodotti specifici» |
| «Codice applicato» appears but the total does not go down | The code is a free item: the gift is handed over by hand |
| The client has a birthday code but did not receive it | Check that «Gestione compleanni» is active and that the client's record has the date of birth |

## Related entries

- [Promotions](https://narciso.io/en/docs/promozioni/)
- [Discount code uses](https://narciso.io/en/docs/utilizzi/)
- [Discount code in the Cash desk](https://narciso.io/en/docs/codice-sconto-in-cassa/)
- [Loyalty rewards](https://narciso.io/en/docs/premi-fedelta/)
