> ## 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.

# Prețuri și taxe

> Un preț pentru orice componență a grupului: prețuri după numărul de adulți, copii pe grupe de vârstă și sugari, taxele, taxa de turism și regula exactă a prețului unui sejur.

<Warning>
  **Încă nu este servit.** Pagina descrie contractul final, versiunea `1.0.0`. Până se deschide sandbox-ul, odată cu prima cheie de test, încearcă-l pe un mock al contractului ([Testare](/ro/distribution-api/testing)).
</Warning>

Prețurile urmează componența grupului. Fiecare noapte a unui tarif are prețul pentru fiecare număr de adulți pe care îl primește proprietatea, cât adaugă fiecare copil după grupa de vârstă și cât adaugă un sugar, toate așa cum le plătește oaspetele, așa că prețul oricărui sejur este o sumă și nu calculezi nicio regulă. Orice sumă include TVA, cu adaosul tău aplicat prețurilor pe noapte, niciodată taxelor.

## Planuri tarifare

O proprietate are unul sau mai multe `rate_plans`, fiecare un mod de a o vinde, cu prețurile și regulile lui pe noapte:

* `meal_plan`: `none`, `breakfast`, `half_board`, `full_board` sau `all_inclusive`. Enumerare deschisă: acceptă și o valoare pe care nu o cunoști.
* `cancellation`: `refundable`, `free_until_days_before`, `penalty`, `penalty_percent` și un `text` generat de Gridbeds din aceste câmpuri. Câmpurile sunt cele care obligă.
* `child_age_bands`: grupele de vârstă după care planul stabilește prețul copiilor.
* `lower_price_reasons`: de ce un oaspete poate plăti mai puțin decât prețul pe care îl aduni.

Gridbeds nu aplică nicio reducere pentru durata sejurului sau pentru rezervarea din timp ori în ultimul moment. Un tarif mai mic pentru un sejur mai lung sau rezervat mai devreme este un plan tarifar separat, cu prețurile și regulile lui pe noapte (`min_stay`, `closed_to_arrival`): oferă fiecare plan ale cărui reguli admit sejurul, cum face și site-ul proprietății, iar cel mai ieftin dintre ele este cel mai mic preț pe care îl oferă Gridbeds pentru acel sejur.

## Prețurile unei nopți

Fiecare tarif al unei nopți, în `rates` dintr-un răspuns de disponibilitate, stabilește prețul pentru tot grupul:

| Câmp | |
| - | - |
| `prices_by_occupancy` | Un preț pentru fiecare număr de adulți de la 1 la `capacity.max_adults`, în ordine crescătoare, fără copii. Gol când tariful este `closed`. |
| `child_prices` | Cât adaugă un copil din fiecare grupă din `child_age_bands` a planului, ca `{age_from, age_to, price}`; `0` înseamnă gratuit. Gol când planul nu are grupe sau când tariful este închis. |
| `child_price` | Cât adaugă un copil de orice vârstă când planul nu are grupe; `0` când e gratuit. `null` când planul stabilește prețul copiilor pe grupe de vârstă sau când tariful este închis. |
| `infant_price` | Cât adaugă un sugar; `0` când e gratuit, `null` când tariful este închis. |
| `price`, `base_occupancy`, `extra_guest_price` | Definite din listă, cu înțelesul pe care l-au avut mereu. `price` este intrarea din `prices_by_occupancy` pentru `base_occupancy` adulți. `extra_guest_price` este intrarea pentru `base_occupancy + 1` minus aceasta: `0` când e gratuit, `null` când `base_occupancy` este `capacity.max_adults` (prețul îi acoperă pe toți) sau când tariful este închis. |

* **Copiii după vârstă.** `child_age_bands` listează grupele planului în ordine crescătoare, fără suprapuneri, fiecare `{age_from, age_to}` în ani împliniți de la 0 la 17, ambele capete incluse. Când nu este goală, cere-i oaspetelui vârsta fiecărui copil: un copil a cărui vârstă nu intră în nicio grupă nu poate fi rezervat. Când este goală, planul stabilește prețul copiilor fără vârstă, prin `child_price`.
* **Sugarii.** `capacity.max_infants` spune câți sugari primește proprietatea pe lângă `max_guests`, într-un pătuț și fără să ocupe un pat. Un sugar este un oaspete declarat ca atare în rezervare, de regulă sub 2 ani; în versiunea 1 proprietatea nu stabilește o limită de vârstă pentru el.

## Prețul unui sejur

Pentru un grup pe un singur plan tarifar, prețul unui sejur este:

<Steps>
  <Step title="Fiecare noapte a sejurului">
    Pentru fiecare noapte de la sosire până la plecare (exclusiv): intrarea din `prices_by_occupancy` pentru numărul de adulți, plus pentru fiecare copil intrarea din `child_prices` a grupei lui de vârstă (sau `child_price` când planul nu are grupe), plus `infant_price` pentru fiecare sugar.
  </Step>

  <Step title="Taxele plătite odată cu rezervarea">
    Apoi fiecare taxă cu `included_in_price: false` și `payable_at: booking`: o dată pentru `per: stay`, o dată pe noapte pentru `per: night` și o dată pe oaspete și pe noapte pentru `per: guest_night`. În versiunea 1 aceasta este taxa de curățenie, o dată pe sejur.
  </Step>
</Steps>

Suma este prețul sejurului pe care oaspetele îl rezervă pe site-ul proprietății, cu TVA, oricât din el ar cere planul tarifar ca avans. Nu se adaugă nimic altceva și nu se scade nimic.

**Ce se plătește la proprietate se arată alături.** O taxă cu `payable_at: property` (în versiunea 1, taxa de turism, `city_tax`) se plătește proprietății în timpul sejurului și nu face parte din acel preț: site-ul proprietății o arată lângă preț, și tu la fel. O taxă cu `included_in_price: true` este deja în prețurile pe noapte: arat-o și nu adăuga nimic. Sumele pe care o proprietate le trece pe seama unui sejur în timpul lui, în numele ei (parcare, o taxă de resort, micul dejun facturat pe noapte), nu sunt publicate în versiunea 1; nu fac parte nici din prețul de pe site-ul proprietății și se achită la proprietate.

### Când oferta proprietății diferă

Oferta proprietății poate diferi de suma ta în patru feluri, și în niciun alt fel:

| Diferență | |
| - | - |
| Un cod promoțional | Scade prețul pentru un oaspete care tastează unul pe site-ul proprietății. `lower_price_reasons` al planului tarifar spune când se poate întâmpla; un cod nu este publicat niciodată și niciunul nu poate fi aplicat prin acest API. |
| Rotunjirea | Gridbeds rotunjește TVA-ul o singură dată pe tot sejurul, așa că suma poate diferi cu cel mult o subunitate pentru fiecare sumă pe care ai adunat-o (fiecare componentă a fiecărei nopți și fiecare taxă), până când `/quotes` (etapa 2) va răspunde cu cifra exactă. |
| O schimbare a cotei de TVA în timpul sejurului | Gridbeds taxează atunci fiecare noapte cu cota în vigoare la data plecării, în timp ce fiecare noapte publicată are cota în vigoare în dimineața de după ea. |
| Adaosul tău | Se aplică prețurilor pe noapte pe care le primești și niciodată taxelor, iar site-ul proprietății își arată prețurile fără el. |

Încă o diferență rămâne până când site-ul proprietății va cere vârsta fiecărui copil și sugarii: redirecționarea duce doar numărul de adulți și de copii (`booking.url_template`), așa că un grup cu copii pe un plan care le stabilește prețul pe grupe de vârstă primește acolo un preț fără vârstele lor, iar sugarii grupului nu primesc acolo niciun preț.

`lower_price_reasons` este mereu prezent și gol când niciun oaspete nu plătește mai puțin. Singura lui valoare azi este `promo_code`: proprietatea are un cod promoțional pe care un oaspete îl mai poate folosi pe site-ul ei. Apare doar când `booking.method` este `redirect`, pentru că doar un oaspete trimis pe site-ul proprietății poate tasta un cod. Spune că prețul final poate fi mai mic și citește la fel un motiv pe care nu îl cunoști. O schimbare a lui este un `property.updated` cu o versiune mai mare.

## Taxe

`fees` listează sumele percepute pe lângă prețurile pe noapte. Versiunea 1 publică `cleaning` și `city_tax`, fiecare cel mult o dată, și niciuna nu poartă adaosul tău. Fiecare câmp al unei taxe este mereu prezent; unul care nu se aplică este `null`.

| Câmp | |
| - | - |
| `type` | `cleaning` sau `city_tax` în versiunea 1. Enumerare deschisă. |
| `basis` | `fixed`: o sumă `amount` pentru fiecare `per`. `percent`: `percent_bp` din prețul numit de `percent_of`, doar pentru `city_tax`. `null`: doar pentru `city_tax`, când se aplică o taxă de turism și nu se știe cum se calculează. |
| `amount` | Pentru `basis: fixed`, suma pentru fiecare `per`. `null` pentru orice alt `basis` și pentru o `city_tax` a cărei sumă nu se cunoaște. O taxă de curățenie are mereu una. |
| `percent_bp` | Pentru `basis: percent`, cota în puncte de bază, sutimi de procent. Un întreg, niciodată o fracție, ca o cotă să nu fie rotunjită pe drum. `null` pentru orice alt `basis` și când cota nu se cunoaște. |
| `percent_of` | Pentru `basis: percent`, prețul din care se calculează procentul: `accommodation_excluding_vat` sau `accommodation_including_vat`. `null` pentru orice alt `basis` și când baza nu se cunoaște. |
| `per` | `stay`, `night` sau `guest_night`; `null` doar când `basis` este `null`. |
| `included_in_price` | `true` când taxa este deja în prețurile pe noapte. |
| `payable_at` | `booking`: face parte din prețul sejurului și se plătește cum se plătește rezervarea. `property`: se plătește proprietății în timpul sejurului și se arată lângă preț. |
| `max_nights` | Doar pentru `city_tax`: nopțile se numără până la atâtea; `null` când se numără toate. |
| `exempts_children` | Doar pentru o `city_tax` cu `basis: fixed`: `true` când se taxează doar adulții, `false` când se taxează și copiii. Sugarii nu se taxează niciodată. |

O taxă de curățenie are mereu `basis: fixed`, o sumă `amount`, `per: stay` și `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 }
```

Citește întâi `basis`. O taxă al cărei `basis` nu îl cunoști o arăți ca plătibilă la proprietate când `payable_at` este `property` și nu o aduni niciodată la prețul unui sejur.

## Taxa de turism

Taxa de turism nu este omisă niciodată. Unele localități o percep ca sumă fixă pe oaspete și pe noapte, altele ca procent din prețul cazării, iar sumele se schimbă prin decizii locale. Fiecare proprietate spune în `city_tax_status` care dintre trei situații este adevărată:

| `city_tax_status` | Înseamnă | În `fees` |
| - | - | - |
| `levied` | Se aplică o taxă de turism. | Exact o `city_tax`, a cărei valoare poate fi încă necunoscută. |
| `none` | Proprietatea declară că nu se aplică nicio taxă de turism. | Nicio `city_tax`. |
| `undeclared` | Proprietatea nu a spus dacă se aplică una; se poate aplica. | Nicio `city_tax`: spune că la proprietate se poate plăti o taxă locală. |

O proprietate fără o taxă `city_tax` nu înseamnă așadar niciodată că nu există taxă, decât dacă `city_tax_status` este `none`. Citește un status pe care nu îl cunoști ca `undeclared`. O schimbare este un `property.updated` cu o versiune mai mare.

O `city_tax` se plătește la proprietate (`payable_at: property`) și nu se adună niciodată la prețul unui sejur. Spune ce se știe și nimic mai mult:

* **`basis: fixed`**, cu o sumă `amount` pe oaspete taxabil și pe noapte (`per: guest_night`). Taxa unui sejur este `amount` × oaspeții taxabili × nopțile, nopțile limitate la `max_nights`, rotunjită o singură dată la subunitatea monedei. Oaspeții taxabili sunt adulții și copiii, sau doar adulții când `exempts_children` este `true`, și niciodată sugarii. Atât percepe proprietatea cel mult: orice altă scutire pe care o aplică doar o micșorează. `amount` este cota în vigoare în ziua de azi a proprietății; un sejur care începe după intrarea în vigoare a unei cote noi o plătește pe cea nouă.
* **`basis: percent`**, cu `percent_bp`: un procent din prețul cazării numit de `percent_of`, pentru tot sejurul (`per: stay`) sau pentru primele `max_nights` nopți când acesta este setat. Baza este prețul cazării la tarifele proprii ale proprietății, fără adaosul tău și fără taxe, fără sau cu TVA; prețurile pe care le primești includ TVA și adaosul tău, așa că baza nu poate fi dedusă exact din ele. Gridbeds nu calculează suma și nici tu nu ar trebui: arată procentul ca taxă locală plătibilă la proprietate. Scutirile de la un procent nu sunt modelate: `exempts_children` este `null`, iar proprietatea le aplică pe ale ei. Citește un `percent_of` pe care nu îl cunoști ca „prețul cazării”.
* **O valoare necunoscută este `null`, iar taxa rămâne în listă.** `basis: fixed` cu `amount: null` sau `basis: percent` cu `percent_bp: null` spune că taxa există și cum se calculează, dar nu cât este. `basis: null`, cu `per`, `amount` și `percent_bp` `null`, spune doar că se aplică o taxă de turism. Arată o astfel de taxă ca taxă locală plătibilă la proprietate, niciodată ca zero.

Cel mai puțin pe care îl poate spune o `city_tax`:

```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.