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

# Prezzi e costi

> Un prezzo per ogni gruppo di ospiti: prezzi per numero di adulti, bambini per fascia d'età e neonati, i costi aggiuntivi, l'imposta di soggiorno e la regola esatta del prezzo di un soggiorno.

<Warning>
  **Non ancora attivo.** Qui è descritto il contratto definitivo, versione `1.0.0`. Finché la sandbox non apre con la prima chiave di test, provalo su un mock del contratto ([Test](/it/distribution-api/testing)).
</Warning>

I prezzi seguono il gruppo di ospiti. Ogni notte di una tariffa porta il prezzo per ogni numero di adulti che la struttura accoglie, quanto aggiunge ogni bambino secondo la fascia d'età e quanto aggiunge un neonato, tutti come li paga l'ospite: il prezzo di qualsiasi soggiorno è una somma e non devi calcolare nessuna regola. Ogni importo è IVA inclusa, con il tuo ricarico applicato ai prezzi per notte e mai ai costi aggiuntivi.

## Piani tariffari

Una struttura ha uno o più `rate_plans`, ognuno un modo di venderla con i suoi prezzi per notte e le sue regole:

* `meal_plan`: `none`, `breakfast`, `half_board`, `full_board` oppure `all_inclusive`. Enumerazione aperta: accetta anche un valore che non conosci.
* `cancellation`: `refundable`, `free_until_days_before`, `penalty`, `penalty_percent` e un `text` che Gridbeds genera da questi campi. Fanno fede i campi.
* `child_age_bands`: le fasce d'età con cui il piano prezza i bambini.
* `lower_price_reasons`: perché un ospite può pagare meno del prezzo che sommi.

Gridbeds non applica nessuna riduzione per la durata del soggiorno o per la prenotazione anticipata o all'ultimo momento. Una tariffa più bassa per un soggiorno più lungo o prenotato prima è un piano tariffario a sé, con i suoi prezzi per notte e le sue regole (`min_stay`, `closed_to_arrival`): offri ogni piano le cui regole ammettono il soggiorno, come fa il sito della struttura, e il più economico è il prezzo più basso che Gridbeds offre per quel soggiorno.

## I prezzi di una notte

Ogni tariffa di una notte, in `rates` di una risposta di disponibilità, prezza tutto il gruppo:

| Campo | |
| - | - |
| `prices_by_occupancy` | Un prezzo per ogni numero di adulti da 1 a `capacity.max_adults`, in ordine crescente, senza bambini. Vuoto quando la tariffa è `closed`. |
| `child_prices` | Quanto aggiunge un bambino di ciascuna fascia di `child_age_bands` del piano, come `{age_from, age_to, price}`; `0` è gratuito. Vuoto quando il piano non ha fasce, o quando la tariffa è chiusa. |
| `child_price` | Quanto aggiunge un bambino di qualsiasi età quando il piano non ha fasce; `0` se gratuito. `null` quando il piano prezza i bambini per fascia d'età, o quando la tariffa è chiusa. |
| `infant_price` | Quanto aggiunge un neonato; `0` se gratuito, `null` quando la tariffa è chiusa. |
| `price`, `base_occupancy`, `extra_guest_price` | Ricavati dall'elenco, con il significato di sempre. `price` è la voce di `prices_by_occupancy` per `base_occupancy` adulti. `extra_guest_price` è la voce per `base_occupancy + 1` meno quella: `0` se gratuito, `null` quando `base_occupancy` è `capacity.max_adults` (il prezzo copre tutti) o quando la tariffa è chiusa. |

* **I bambini per età.** `child_age_bands` elenca le fasce del piano in ordine crescente, senza sovrapposizioni, ognuna `{age_from, age_to}` in anni compiuti da 0 a 17, estremi inclusi. Quando non è vuoto, chiedi all'ospite l'età di ogni bambino: un bambino la cui età non rientra in nessuna fascia non si può prenotare. Quando è vuoto, il piano prezza i bambini senza la loro età, con `child_price`.
* **I neonati.** `capacity.max_infants` dice quanti neonati la struttura accoglie oltre a `max_guests`, in culla e senza occupare un letto. Un neonato è un ospite che la prenotazione dichiara come tale, di solito sotto i 2 anni; nella versione 1 la struttura non fissa un limite d'età.

## Il prezzo di un soggiorno

Per un gruppo su un solo piano tariffario, il prezzo di un soggiorno è:

<Steps>
  <Step title="Ogni notte del soggiorno">
    Per ogni notte dall'arrivo fino alla partenza (esclusa): la voce di `prices_by_occupancy` per il numero di adulti, più per ogni bambino la voce di `child_prices` della sua fascia d'età (oppure `child_price` quando il piano non ha fasce), più `infant_price` per ogni neonato.
  </Step>

  <Step title="I costi pagati con la prenotazione">
    Poi ogni costo con `included_in_price: false` e `payable_at: booking`: una volta per `per: stay`, una volta per notte per `per: night` e una volta per ospite e per notte per `per: guest_night`. Nella versione 1 è il costo delle pulizie, una volta per soggiorno.
  </Step>
</Steps>

Questa somma è il prezzo del soggiorno che l'ospite prenota sul sito della struttura, IVA inclusa, qualunque parte ne chieda il piano tariffario come acconto. Non si aggiunge nient'altro e non si toglie niente.

**Quello che si paga in struttura si mostra accanto.** Un costo con `payable_at: property` (nella versione 1, l'imposta di soggiorno, `city_tax`) si paga alla struttura durante il soggiorno e non fa parte di quel prezzo: il sito della struttura lo mostra accanto al prezzo, e così dovresti fare tu. Un costo con `included_in_price: true` è già nei prezzi per notte: mostralo e non aggiungere nulla. Gli addebiti che una struttura mette sul conto di un soggiorno per conto proprio durante il soggiorno (parcheggio, un resort fee, la colazione addebitata a notte) non sono pubblicati nella versione 1; non fanno parte nemmeno del prezzo sul sito della struttura, e si saldano in struttura.

### Quando il preventivo della struttura è diverso

Il preventivo della struttura può differire dalla tua somma in quattro modi, e in nessun altro:

| Differenza | |
| - | - |
| Un codice promozionale | Abbassa il prezzo per un ospite che ne digita uno sul sito della struttura. `lower_price_reasons` del piano tariffario dice quando può succedere; un codice non viene mai pubblicato, e nessuno si può applicare tramite questa API. |
| L'arrotondamento | Gridbeds arrotonda l'IVA una sola volta sull'intero soggiorno, quindi la somma può differire al massimo di un'unità minore per ogni importo che hai sommato (ogni componente di ogni notte, e ogni costo), finché `/quotes` (fase 2) non risponderà con la cifra esatta. |
| Un cambio di aliquota IVA durante il soggiorno | Gridbeds addebita allora ogni notte all'aliquota in vigore alla data di partenza, mentre ogni notte pubblicata porta l'aliquota in vigore la mattina dopo. |
| Il tuo ricarico | Si applica ai prezzi per notte che ricevi e mai ai costi aggiuntivi, e il sito della struttura mostra i suoi prezzi senza. |

Un'altra differenza resta finché il sito della struttura non chiederà l'età di ogni bambino e i neonati: il reindirizzamento porta solo il numero di adulti e di bambini (`booking.url_template`), quindi un gruppo con bambini su un piano che li prezza per fascia d'età lì viene prezzato senza le loro età, e i neonati del gruppo lì non vengono prezzati affatto.

`lower_price_reasons` c'è sempre, ed è vuoto quando nessun ospite paga meno. Il suo unico valore oggi è `promo_code`: la struttura ha un codice promozionale che un ospite può ancora usare sul suo sito. Compare solo quando `booking.method` è `redirect`, perché solo un ospite mandato sul sito della struttura può digitarne uno. Di' che il prezzo finale può essere più basso, e leggi allo stesso modo un motivo che non conosci. Un suo cambio è un `property.updated` con una versione più alta.

## Costi aggiuntivi

`fees` elenca gli addebiti accanto ai prezzi per notte. La versione 1 pubblica `cleaning` e `city_tax`, ognuno al massimo una volta, e nessuno dei due porta il tuo ricarico. Ogni campo di un costo è sempre presente; uno che non si applica è `null`.

| Campo | |
| - | - |
| `type` | `cleaning` o `city_tax` nella versione 1. Enumerazione aperta. |
| `basis` | `fixed`: un importo `amount` per ogni `per`. `percent`: `percent_bp` del prezzo indicato da `percent_of`, solo per `city_tax`. `null`: solo per `city_tax`, quando si applica un'imposta di soggiorno e non si sa come si calcola. |
| `amount` | Per `basis: fixed`, l'importo per ogni `per`. `null` per qualsiasi altro `basis`, e per una `city_tax` il cui importo non si conosce. Un costo delle pulizie ce l'ha sempre. |
| `percent_bp` | Per `basis: percent`, l'aliquota in punti base, centesimi di punto percentuale. Un intero, mai una frazione, così un'aliquota non viene mai arrotondata lungo la strada. `null` per qualsiasi altro `basis`, e quando l'aliquota non si conosce. |
| `percent_of` | Per `basis: percent`, il prezzo su cui si calcola la percentuale: `accommodation_excluding_vat` o `accommodation_including_vat`. `null` per qualsiasi altro `basis`, e quando la base non si conosce. |
| `per` | `stay`, `night` o `guest_night`; `null` solo quando `basis` è `null`. |
| `included_in_price` | `true` quando il costo è già nei prezzi per notte. |
| `payable_at` | `booking`: fa parte del prezzo del soggiorno e si paga come si paga la prenotazione. `property`: si paga alla struttura durante il soggiorno e si mostra accanto al prezzo. |
| `max_nights` | Solo per `city_tax`: le notti si contano fino a questo numero; `null` quando si contano tutte. |
| `exempts_children` | Solo per una `city_tax` con `basis: fixed`: `true` quando si tassano solo gli adulti, `false` quando si tassano anche i bambini. I neonati non si tassano mai. |

Un costo delle pulizie ha sempre `basis: fixed`, un importo `amount`, `per: stay` e `payable_at: booking`:

```json theme={null}
{ "type": "cleaning", "basis": "fixed", "amount": { "amount": 15000, "currency": "RON" }, "percent_bp": null, "percent_of": null, "per": "stay", "included_in_price": false, "payable_at": "booking", "max_nights": null, "exempts_children": null }
```

Leggi prima `basis`. Un costo il cui `basis` non conosci lo mostri come pagabile in struttura quando `payable_at` è `property`, e non lo aggiungi mai al prezzo di un soggiorno.

## L'imposta di soggiorno

L'imposta di soggiorno non viene mai omessa. Alcuni comuni la applicano come importo fisso per ospite e per notte, altri come percentuale del prezzo dell'alloggio, e gli importi cambiano per decisione locale. Ogni struttura dice in `city_tax_status` quale di tre casi è vero:

| `city_tax_status` | Significa | In `fees` |
| - | - | - |
| `levied` | Si applica un'imposta di soggiorno. | Esattamente una `city_tax`, il cui valore può essere ancora sconosciuto. |
| `none` | La struttura dichiara che non si applica nessuna imposta di soggiorno. | Nessuna `city_tax`. |
| `undeclared` | La struttura non ha detto se se ne applica una; potrebbe. | Nessuna `city_tax`: di' che in struttura potrebbe essere dovuta un'imposta locale. |

Una struttura senza `city_tax` non vuol dire quindi mai che l'imposta non c'è, a meno che il suo `city_tax_status` sia `none`. Leggi uno stato che non conosci come `undeclared`. Un cambio è un `property.updated` con una versione più alta.

Una `city_tax` si paga in struttura (`payable_at: property`) e non si aggiunge mai al prezzo di un soggiorno. Dice quello che si sa e niente di più:

* **`basis: fixed`**, con un importo `amount` per ospite tassabile e per notte (`per: guest_night`). L'imposta di un soggiorno è `amount` × ospiti tassabili × notti, con le notti limitate a `max_nights`, arrotondata una sola volta all'unità minore della valuta. Gli ospiti tassabili sono gli adulti e i bambini, o solo gli adulti quando `exempts_children` è `true`, e mai i neonati. È il massimo che la struttura addebita: ogni altra esenzione che applica può solo abbassarlo. `amount` è l'aliquota in vigore alla data odierna della struttura; un soggiorno che inizia dopo l'entrata in vigore di una nuova aliquota paga quella nuova.
* **`basis: percent`**, con `percent_bp`: una percentuale del prezzo dell'alloggio indicato da `percent_of`, per tutto il soggiorno (`per: stay`), o per le sue prime `max_nights` notti quando è impostato. La base è il prezzo dell'alloggio alle tariffe della struttura, senza il tuo ricarico e senza costi aggiuntivi, IVA esclusa o inclusa; i prezzi che ricevi includono l'IVA e il tuo ricarico, quindi la base non si può ricavare esattamente da questi. Gridbeds non calcola l'importo e non dovresti farlo neanche tu: mostra la percentuale come imposta locale da pagare in struttura. Le esenzioni da una percentuale non sono modellate: `exempts_children` è `null`, e la struttura applica le sue. Leggi un `percent_of` che non conosci come "il prezzo dell'alloggio".
* **Un valore che non si conosce è `null`, e il costo resta nell'elenco.** `basis: fixed` con `amount: null`, oppure `basis: percent` con `percent_bp: null`, dice che l'imposta esiste e come si calcola, ma non quanto è. `basis: null`, con `per`, `amount` e `percent_bp` `null`, dice solo che si applica un'imposta di soggiorno. Mostra un costo così come imposta locale da pagare in struttura, mai come zero.

Il minimo che una `city_tax` può dire:

```json theme={null}
{ "type": "city_tax", "basis": null, "amount": null, "percent_bp": null, "percent_of": null, "per": null, "included_in_price": false, "payable_at": "property", "max_nights": null, "exempts_children": null }
```


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