Taxes

Create or update property-level and product-scoped tax configuration. Requires hotels and products to exist first.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Taxes

POST /push/taxes

Configure taxes for a property. A payload can carry property-level taxes, product-scoped taxes, or both. Requires the hotel to exist, and any referenced roomId or rateId to have been created via Hotel rooms & rates.

Try it (curl)

curl -sS -X POST "https://ari-dev.thehotelplanet.com/v1/push/taxes" \
  -H "x-api-key: YOUR_SANDBOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"hotelId":"TEST001","taxes":[{"type":"VAT","valueType":"%","value":20,"appliedOn":"net","appliedPer":"per_room_per_stay","included":true,"payNow":true}]}'

Request

FieldTypeDescription
hotelIdstringYour property code
taxesarrayOptional. Property-level taxes
productsarrayOptional. Product-scoped taxes

At least one of taxes or products is required.

Product scoping

Each products entry needs at least one of roomId / rateId, giving three scopes:

SentApplies to
roomId onlyThat room, with any rate
rateId onlyThat rate, with any room
bothThat specific room-rate pairing

Tax object

FieldTypeDescription
typestringVAT, CITY_TAX, LOCAL_TAX, GOV_TAX, OTHER_TAX
valueTypestring% or fixed
valuenumberPercentage or flat amount in property currency. Must be ≥ 0
appliedOnstringnet or net+vat. net+vat is not permitted for VAT
appliedPerstringper_room_per_night, per_person_per_night, per_room_per_stay, per_person_per_stay
includedbooleanWhether the tax is already in the pushed price. true implies payNow: true
payNowbooleanWhether Nuitee Cloud charges the tax now
startDatestringOptional. YYYY-MM-DD — required together with endDate
endDatestringOptional. YYYY-MM-DD — required together with startDate

Example

{
  "hotelId": "HOTEL_001",
  "taxes": [
    {
      "type": "VAT",
      "valueType": "%",
      "value": 20,
      "appliedOn": "net",
      "appliedPer": "per_room_per_stay",
      "included": true,
      "payNow": true,
      "startDate": "2026-01-01",
      "endDate": "2026-12-31"
    }
  ],
  "products": [
    {
      "roomId": "ROOM_001",
      "taxes": [
        {
          "type": "CITY_TAX",
          "valueType": "fixed",
          "value": 5,
          "appliedOn": "net",
          "appliedPer": "per_person_per_night",
          "included": false,
          "payNow": false
        }
      ]
    },
    {
      "rateId": "RATE_001",
      "taxes": [
        {
          "type": "GOV_TAX",
          "valueType": "fixed",
          "value": 3,
          "appliedOn": "net",
          "appliedPer": "per_room_per_stay",
          "included": false,
          "payNow": true
        }
      ]
    },
    {
      "roomId": "ROOM_001",
      "rateId": "RATE_001",
      "taxes": [
        {
          "type": "LOCAL_TAX",
          "valueType": "%",
          "value": 2,
          "appliedOn": "net",
          "appliedPer": "per_room_per_night",
          "included": false,
          "payNow": false
        }
      ]
    }
  ]
}

Replacement behaviour

A write replaces the taxes for exactly the scopes present in the payload and leaves everything else alone. Updating a room-rate tax doesn't disturb a room-only tax on the same room. Omitting taxes leaves property-level taxes untouched; omitting products leaves all product-scoped taxes untouched.

Success response

{ "code": "200", "message": "Taxes saved successfully" }

Common errors

MessageCauseFix
hotelId is requiredMissing hotelIdInclude your property code
at least one of taxes or products is requiredEmpty payloadSend at least one
each product entry requires at least one of roomId or rateIdUnscoped product entryAdd a room or rate code
room id not foundRoom hasn't been pushedSend Hotel rooms & rates first
rate id not foundRate plan hasn't been pushedSend Hotel rooms & rates first
Hotel not foundUnknown hotelIdSend Hotels list first

Notes

  • Read your configuration back with Get Taxes.
  • Fees sent via cancelPolicies[].fees on Hotel rooms & rates are separate and unaffected by this endpoint.
Body Params
string
required

The unique identifier of the hotel.

taxes
array of objects

Property-level taxes. Optional — at least one of taxes or products is required.

taxes
products
array of objects

Product-scoped taxes. Optional — at least one of taxes or products is required.

products
Responses

Language
Credentials
Header
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json