---
title: "Create tax"
method: POST
path: "/taxes"
tags: ["Taxes"]
---

# Create tax

`POST /taxes`

Create tax configuration with the provided settings.

## Request body

- object
  - `unitTypeId` string — 1. The unit (listing) id on which the new tax will apply. 2. To apply the tax on account level, leave this field empty.
  - `type` 'LOCAL_TAX' | 'CITY_TAX' | 'VAT' | 'GOODS_AND_SERVICES_TAX' | 'TOURISM_TAX' | 'OTHER' | 'STATE_TAX' | 'COUNTY_TAX' | 'OCCUPANCY_TAX' | 'TRANSIENT_OCCUPANCY_TAX' | 'HOME_SHARING_TAX' | 'HARMONIZED_SALES_TAX' | 'MINIMUM_ALTERNATE_TAX', required — 1. The tax type. 2. Each tax type can only be defined once on account/listing level.
  - `units` 'PERCENTAGE' | 'FIXED', required — Determines whether the tax amount should be treated as a fixed or percentage value
  - `amount` number, required — 1. the amount of the tax, could be a fixed value or percentage whether units is 'FIXED' or 'PERCENTAGE' respectively. 2. when 'FIXED' then 'amount' has to be greater then 0 3. when 'PERCENTAGE' then 'amount' has to be greater then 0 and smaller or equal to 100
  - `quantifier` 'PER_NIGHT' | 'PER_GUEST' | 'PER_GUEST_PER_NIGHT' | 'PER_STAY', required — Determines by what factor the tax amount will be multiplied
  - `name` string — The name for the tax, which will be used accross guesty. there can be no two taxes with the same name.
  - `appliedToAllFees` boolean — 1. Relevant only when the units equals 'PERCENTAGE' 2. When equals 'true', then the tax will be calculated on all fees and 'appliedOnFees' must contain all values
  - `appliedOnFees` string[]
  - `isAppliedByDefault` boolean — 1. When set to 'true' and 'appliedByDefaultOnChannels' is not empty, then Guesty will prededuct the tax from the accommodation fare. 2. can not be 'true' when 'appliedByDefaultOnChannels' is empty
  - `appliedByDefaultOnChannels` string[]
  - `conditionalOverrides` object — Set additional conditions for this tax
    - `viewType` 'NIGHTS' | 'DATES' | 'NIGHTS_IN_DATES' | 'LOS', required — 1. The kind of conditions to set on the tax 2. When 'units' is 'FIXED' and 'quantifier' is 'guest'/'stay' then 'NiGHTS' and 'NIGHTS_IN_DATES' viewTypes are forbidden, 3. When 'units' is 'PERCENTAGE' then all viewTypes are allowed
    - `rules` object[] — 1. The dates and nights ranges that the tax condition will apply for. 2. When viewType is 'LOS' then rules is forbidden, else rules is required and can not be empty.
      - `dateRange` object — 1. When viewType is 'NIGHTS' then rules objects can not contain dateRanges.
        - `from` string, required — Start of the date range in MM-DD format.
        - `to` string, required — End of the date range in MM-DD format.
      - `nightRanges` object[], required — 1. When viewType is 'DATES' then all rules objects must contain only 1 nightRange with no 'to' field and 'from' field equals 1.
        - `from` number, required
        - `to` number
        - `amount` number, required
    - `maxNightCountToApplyOn` number — 1. The tax will be applied for all reservation that has night count smaller then 'maxNightCountToApplyOn' 2. Only when 'viewType' is 'LOS' then this field is allowed and required
  - `channelOverrides` object[] — Channel-specific overrides for this tax. Each entry customizes the tax for a specific channel.
    - `channel` 'manual' | 'airbnb' | 'airbnb2' | 'rentalsUnited' | 'bookingCom' | 'expedia' | 'homeAway' | 'agoda' | 'tripAdvisor' | 'homeaway2' | 'siteMinder' | 'bookingPal' | 'vrboLite' | 'homesVillasByMarriott' | 'aabode' | 'alohacamp' | 'amaSelections' | 'allogio' | 'altoVita' | 'alluraDirect' | 'angells' | 'anystaysCom' | 'awaze' | 'beachguide' | 'belVilla' | 'bluegroundNestpick' | 'bnbFinder' | 'boarding' | 'bookingPalGcm' | 'bookripe' | 'boutiquehomeCom' | 'byndhomesCom' | 'bynd' | 'capitalOne' | 'cockpit' | 'cocoonr' | 'check24' | 'crewDogs' | 'cuddlyNest' | 'desVu' | 'easyReserve' | 'emeraldCoast' | 'etravel' | 'feratel' | 'findRentals' | 'floridaPanhandleCom' | 'floridaRentals' | 'flowOne' | 'getawayGoGo' | 'glampingHub' | 'golfhom' | 'gonesto' | 'googleVacationRentals' | 'got2Go' | 'groupRentals' | 'guestSmiles' | 'hawaiianIslandsCom' | 'helloLanding' | 'hiSite' | 'holidaySwap' | 'holidu' | 'homeToGo' | 'hopper' | 'hostelworld' | 'hotelbeds' | 'hotelsCombined' | 'houfy' | 'housingAnywhere' | 'houseStay' | 'housingPanda' | 'HVN' | 'hyperguest' | 'inntopia' | 'invenioHomes' | 'lakeCom' | 'livily' | 'livjaza' | 'luxico' | 'luxuryEscapes' | 'makeMyTrip' | 'mirai' | 'mrMrsSmith' | 'muchosol' | 'mysaGlobal' | 'nesto' | 'netAffinity' | 'oliversTravels' | 'onefinestay' | 'plumGuide' | 'priceTravelCom' | 'rakutenStayInc' | 'reconline' | 'rentalEscapes' | 'rentalz' | 'renters' | 'reserva' | 'revato' | 'roibos' | 'sabreSynxis' | 'situCom' | 'skiCom' | 'skyesCottages' | 'smilingHouse' | 'smokyMountainCom' | 'soujourn' | 'spacestCom' | 'square' | 'stay' | 'stayHvn' | 'stayLonger' | 'stayOne' | 'staySense' | 'stugaCa' | 'szallas' | 'theDyrt' | 'theMaimonGroup' | 'theQuintessCollection' | 'topVillas' | 'torontoBoutiqueApartments' | 'traveloka' | 'travelStaytion' | 'travelWithAspectCom' | 'tripco' | 'tripCom' | 'tripCom2' | 'traum' | 'tropicalEscape' | 'trustedStays' | 'tuiVillas' | 'vacasa' | 'vacationFinder' | 'vacationRenter' | 'vacayHome' | 'vacayMyWay' | 'viajesElCorteIngles' | 'vidle' | 'villaFinder' | 'villaway' | 'villaTracker' | 'vivreStays' | 'wander' | 'weski' | 'weChalet' | 'whimstay' | 'zaaer', required — The booking channel this override applies to (e.g. Airbnb, Booking.com). Each channel can only appear once per tax.
    - `isEnabled` boolean — Whether this tax is active for the specified channel. When set to false, the tax will not be applied to reservations from this channel. Defaults to true if not provided.
    - `name` string — A custom display name for this tax on the specified channel. If not provided, the tax's default name is used.
    - `isInclusive` boolean — Whether the tax should be treated as inclusive for this channel. If not provided, the tax's default inclusive setting is used.
    - `isAppliedByDefault` boolean — Whether the tax is automatically pre-deducted from the accommodation fare for this channel override. If not provided, the tax's default setting is used. Only allowed when this override's channel is 'airbnb2' or 'manual'. Must be set to true when appliedByDefaultOnChannels is provided.
    - `appliedByDefaultOnChannels` string[]
  - `isInclusive` boolean

## Response `201`

The tax has been successfully created.

- object
  - `_id` string
  - `unitTypeId` string
  - `accountId` string, required
  - `type` 'LOCAL_TAX' | 'CITY_TAX' | 'VAT' | 'GOODS_AND_SERVICES_TAX' | 'TOURISM_TAX' | 'OTHER' | 'STATE_TAX' | 'COUNTY_TAX' | 'OCCUPANCY_TAX' | 'TRANSIENT_OCCUPANCY_TAX' | 'HOME_SHARING_TAX' | 'HARMONIZED_SALES_TAX' | 'MINIMUM_ALTERNATE_TAX', required
  - `units` 'PERCENTAGE' | 'FIXED', required
  - `quantifier` 'PER_NIGHT' | 'PER_GUEST' | 'PER_GUEST_PER_NIGHT' | 'PER_STAY', required
  - `appliedOnFees` string[], required
  - `appliedByDefaultOnChannels` string[], required
  - `channelOverrides` object[] — Per-channel customizations for this tax. Each entry allows you to override specific tax settings (such as name, enabled state, or inclusive behavior) for a particular booking channel, without changing the tax's default configuration.
    - `channel` 'manual' | 'airbnb' | 'airbnb2' | 'rentalsUnited' | 'bookingCom' | 'expedia' | 'homeAway' | 'agoda' | 'tripAdvisor' | 'homeaway2' | 'siteMinder' | 'bookingPal' | 'vrboLite' | 'homesVillasByMarriott' | 'aabode' | 'alohacamp' | 'amaSelections' | 'allogio' | 'altoVita' | 'alluraDirect' | 'angells' | 'anystaysCom' | 'awaze' | 'beachguide' | 'belVilla' | 'bluegroundNestpick' | 'bnbFinder' | 'boarding' | 'bookingPalGcm' | 'bookripe' | 'boutiquehomeCom' | 'byndhomesCom' | 'bynd' | 'capitalOne' | 'cockpit' | 'cocoonr' | 'check24' | 'crewDogs' | 'cuddlyNest' | 'desVu' | 'easyReserve' | 'emeraldCoast' | 'etravel' | 'feratel' | 'findRentals' | 'floridaPanhandleCom' | 'floridaRentals' | 'flowOne' | 'getawayGoGo' | 'glampingHub' | 'golfhom' | 'gonesto' | 'googleVacationRentals' | 'got2Go' | 'groupRentals' | 'guestSmiles' | 'hawaiianIslandsCom' | 'helloLanding' | 'hiSite' | 'holidaySwap' | 'holidu' | 'homeToGo' | 'hopper' | 'hostelworld' | 'hotelbeds' | 'hotelsCombined' | 'houfy' | 'housingAnywhere' | 'houseStay' | 'housingPanda' | 'HVN' | 'hyperguest' | 'inntopia' | 'invenioHomes' | 'lakeCom' | 'livily' | 'livjaza' | 'luxico' | 'luxuryEscapes' | 'makeMyTrip' | 'mirai' | 'mrMrsSmith' | 'muchosol' | 'mysaGlobal' | 'nesto' | 'netAffinity' | 'oliversTravels' | 'onefinestay' | 'plumGuide' | 'priceTravelCom' | 'rakutenStayInc' | 'reconline' | 'rentalEscapes' | 'rentalz' | 'renters' | 'reserva' | 'revato' | 'roibos' | 'sabreSynxis' | 'situCom' | 'skiCom' | 'skyesCottages' | 'smilingHouse' | 'smokyMountainCom' | 'soujourn' | 'spacestCom' | 'square' | 'stay' | 'stayHvn' | 'stayLonger' | 'stayOne' | 'staySense' | 'stugaCa' | 'szallas' | 'theDyrt' | 'theMaimonGroup' | 'theQuintessCollection' | 'topVillas' | 'torontoBoutiqueApartments' | 'traveloka' | 'travelStaytion' | 'travelWithAspectCom' | 'tripco' | 'tripCom' | 'tripCom2' | 'traum' | 'tropicalEscape' | 'trustedStays' | 'tuiVillas' | 'vacasa' | 'vacationFinder' | 'vacationRenter' | 'vacayHome' | 'vacayMyWay' | 'viajesElCorteIngles' | 'vidle' | 'villaFinder' | 'villaway' | 'villaTracker' | 'vivreStays' | 'wander' | 'weski' | 'weChalet' | 'whimstay' | 'zaaer', required — The booking channel this override applies to (e.g. Airbnb, Booking.com). Each channel can only appear once per tax.
    - `isEnabled` boolean — Whether this tax is active for the specified channel. When set to false, the tax will not be applied to reservations from this channel. Defaults to true if not provided.
    - `name` string — A custom display name for this tax on the specified channel. If not provided, the tax's default name is used.
    - `isInclusive` boolean — Whether the tax should be treated as inclusive for this channel. If not provided, the tax's default inclusive setting is used.
    - `isAppliedByDefault` boolean — Whether the tax is automatically pre-deducted from the accommodation fare for this channel override. If not provided, the tax's default setting is used. Only allowed when this override's channel is 'airbnb2' or 'manual'. Must be set to true when appliedByDefaultOnChannels is provided.
    - `appliedByDefaultOnChannels` string[]
  - `isDeleted` boolean
  - `amount` number, required
  - `name` string
  - `appliedToAllFees` boolean, required
  - `isAppliedByDefault` boolean, required
  - `conditionalOverrides` object
    - `viewType` 'NIGHTS' | 'DATES' | 'NIGHTS_IN_DATES' | 'LOS', required
    - `rules` object[]
      - `dateRange` object
        - `from` string, required
        - `to` string, required
      - `nightRanges` object[], required
        - `from` number, required
        - `to` number
        - `amount` number, required
    - `maxNightCountToApplyOn` number
  - `channelConfig` object[]
    - `channel` string, required
    - `userConfig` object, required
      - `syncSelection` string, required
  - `isInclusive` boolean

## Other responses

- `400` — The input provided is invalid.

---

[API](https://skmtc.net/guesty/apis/guesty-open-api.md) · [All operations](https://skmtc.net/guesty/apis/guesty-open-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/guesty/guesty-open-api/versions/7c62644070f2/schema)
