Booking.com Charges endpoint API

Lists the details of the Charges endpoints to set and retrieve taxes and fees at the property and room level.

Operations 2

GET /charges-api/properties/{propertyId}/charges Get property and room charges #
POST /charges-api/properties/{propertyId}/charges Create, update, and delete property and room charges #

Documentation

📖
Documentation
https://developers.booking.com/demand/docs/open-api/3.2/demand-api
📖
GettingStarted
https://developers.booking.com/demand/docs/getting-started/overview
📖
RateLimits
https://raw.githubusercontent.com/api-evangelist/booking-com/refs/heads/main/rate-limits/booking-com-rate-limits.yml
📖
Documentation
https://developers.booking.com/metasearch/connect-api/open-api
📖
GettingStarted
https://developers.booking.com/metasearch/connect-api/getting-started/overview
📖
Documentation
https://developers.booking.com/connectivity/docs/openapispecs/charges-api/charges-api-specification
📖
Documentation
https://developers.booking.com/connectivity/docs/openapispecs/contracting-api/contracting-api-specificaion
📖
Documentation
https://developers.booking.com/connectivity/docs/openapispecs/facilities-api/facilities-api-specification
📖
Documentation
https://developers.booking.com/connectivity/docs/openapispecs/facilities-api/facilities-openspec-remote-sync
📖
Documentation
https://developers.booking.com/connectivity/docs/openapispecs/payments-api/payments-api-specification
📖
Documentation
https://developers.booking.com/connectivity/docs/openapispecs/payments-by-booking-onboarding-api/pbb-onboarding-api-specification
📖
Documentation
https://developers.booking.com/connectivity/docs/openapispecs/property-details-api/property-details-api-specification
📖
Documentation
https://developers.booking.com/connectivity/docs/openapispecs/reconciliation-api/reconciliation-api-specification
📖
Documentation
https://developers.booking.com/connectivity/docs/openapispecs/rooms-api/rooms-api-specification
📖
Documentation
https://developers.booking.com/connectivity/docs/openapispecs/rooms-api/rooms-api-specification-bulk
📖
Documentation
https://developers.booking.com/connectivity/docs/openapispecs/rooms-api/rooms-api-specification-generated-names
📖
Documentation
https://developers.booking.com/connectivity/docs/openapispecs/valueadds-api/valueadds-api-specification

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/booking-com-charges-endpoint-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

booking-com-charges-endpoint-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Charges endpoint API
  description: Create and update charges that apply at the property and room level, and setup up different configurations for different dates.
  contact:
    name: Connectivity Team
    url: https://connect.booking.com
    email: connectivity@booking.com
  version: '1.0'
servers:
- url: https://supply-xml.booking.com/
  description: Test using live endpoint
tags:
- name: Charges endpoint
  description: Lists the details of the Charges endpoints to set and retrieve taxes and fees at the property and room level.
paths:
  /charges-api/properties/{propertyId}/charges:
    get:
      tags:
      - Charges endpoint
      summary: Get property and room charges
      description: Retrieve the current charges for a property in format consistent with the creation/update payload.
      operationId: getChargesForProperty
      parameters:
      - name: propertyId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponseCharges'
    post:
      tags:
      - Charges endpoint
      summary: Create, update, and delete property and room charges
      description: Add or update taxes and fees at the property or room-level.
      operationId: updateChargesForProperty
      parameters:
      - name: propertyId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Charges'
            example:
              property_charges:
              - charge_key:
                  type: CLEANINGFEE
                  guest_origin: ANY
                  travel_purpose: ANY
                charge_periods:
                - applicable:
                    from: '2025-11-30'
                  configuration:
                    amount:
                      value: 20
                      base: []
                      mode: PER_STAY
                    excluded: true
              room_charges: []
        required: true
      responses:
        '200':
          description: Charges created, updated, or deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponseObject'
              example:
                warnings: []
                errors: []
                meta:
                  ruid: ed4af6d4-605c-433c-8971-b33a1f95aabb
        '400':
          description: Bad request. The request body contains an unknown or invalid field.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponseObject'
              example:
                warnings: []
                errors:
                - message: Required field missing
                  code: 321
                  details:
                    fields:
                    - $.property_charges[0].charge_periods[0].configuration.child_ages[0].lte
                  description: must not be null
                meta:
                  ruid: 59dd3156-d175-412d-834f-bce976502bf3
components:
  schemas:
    AgeMultiplier:
      required:
      - lte
      - multiplier
      type: object
      properties:
        multiplier:
          type: number
          description: 'Multiplier to be applied to the amount of the charge if age condition matches.


            Required when including an age configuration.


            HDCN:N/A

            '
        lte:
          type: integer
          description: 'Upper bound of the age range. Inclusive. Abbreviation for less than or equal to.


            HDCN:N/A

            '
          format: int32
      description: 'Contains modifiers for the charge amount based on children ages.


        If multiple modifiers are configured, only the most specific age multiplier that matches the child''s age is applied. For example, if a .50 multiplier is configured for children under 8 years old, and a .80 multiplier is configured for children under 12 years old, a 7 year old child would get a .50 discount.

        '
    ApiError:
      type: object
      properties:
        message:
          type: string
        code:
          type: integer
        details:
          type: object
        description:
          type: string
    ChargeKey:
      required:
      - guest_origin
      - travel_purpose
      - type
      type: object
      properties:
        type:
          type: string
          description: 'The type of charge. For a mapping between OTA/legacy and the new codes please use the meta endpoint.


            HDCN: FeePolicy->Code

            '
          enum:
          - SERVICECHARGE_ASIA
          - SERVICECHARGE
          - RESORTFEE
          - CLEANINGFEE
          - TOWELFEE
          - ELECTRICITYFEE
          - BEDLINEN
          - GASFEE
          - OILFEE
          - WOODFEE
          - WATERFEE
          - TRANSFERFEE
          - LINENPACKAGEFEE
          - HEATINGFEE
          - AIRCONDITIONINGFEE
          - KITCHENLINNENFEE
          - HOUSEKEEPINGFEE
          - AIRPORTSHUTTLEFEE
          - SHUTTLEBOATFEE
          - GALADINNERFEE
          - SEAPLANEFEE
          - SKIPASS
          - FINALCLEANINGFEE
          - WRISTBANDFEE
          - VISASUPPORTFEE
          - WATERPARKFEE
          - CLUBCARDFEE
          - CONSERVATIONFEE
          - CREDITCARDFEE
          - PETFEE
          - INTERNETFEE
          - PARKINGFEE
          - VAT
          - TAX
          - GOODSSERVICESTAX
          - GOODSSERVICESFLOODTAX
          - GOVERNMENTCHARGE
          - DAMAGEDEPOSIT
          - DESTINATIONFEE
          - ENVIRONMENTFEE
          - SPATAX
          - CITYTAX
          - HOTSPRINGTAX
          - MUNICIPALITYFEE
          - TOURISMFEE
          - RESIDENTIALTAX
          - CITYTICKET
          - HERITAGECHARGE
          - FITNESSTAX
          - GOVERNMENTTAX
          - LOCALCOUNCILTAX
          - SUSTAINABILITYFEE
          - LOCALITYCONSERVATIONFEE
          - SPA
          - HOTSPRINGBATH
          - POOL
          - LOUNGE
          - DESTINATIONCHARGE
          - DESTINATIONTAX
          - INSURANCEFEE
        guest_origin:
          type: string
          description: 'The guest origin as specified when they make the booking.


            When determining which charges to apply at checkout, the narrowest/most specific charge key is used. For example if an INTERNATIONAL guest books at a property that has both an INTERNATIONAL and ANY charge key (with the same charge type), only the INTERNATIONAL charge is applied.


            HDCN: N/A

            '
          enum:
          - ANY
          - DOMESTIC
          - INTERNATIONAL
        travel_purpose:
          type: string
          description: 'The travel purpose as specified by the guest when they make the booking.


            When determining which charge to use at checkout, the narrowest/most specific charge key is used. For example if an LEISURE guest books at a property that has both an LEISURE and ANY charge key (with the same charge type), only the LEISURE charge is applied.


            HDCN: N/A

            '
          enum:
          - ANY
          - LEISURE
          - BUSINESS
      description: 'Contains the attributes that uniquely identify a charge.


        If you change an attribute in the charge key, you are modifying a different charge with its own charge periods.'
    Amount:
      required:
      - mode
      type: object
      properties:
        value:
          type: number
          description: 'Value of the charge.


            Required unless mode is `INCALCULABLE`, in which case any value passed is ignored.


            Interpreted as an absolute value or percentage depending on mode. Absolute values are in the property''s configured currency.


            HDCN:FeePolicy->Amount AND FeePolicy->Percent

            '
        base:
          type: array
          description: 'Specifies what value the percentage applies to. For example, 10% of NET_ROOM_PRICE + PROPERTY_CHARGES.


            Required when mode is PERCENTAGE (otherwise rejected).


            To know what charge types fall into each base category please use the meta endpoint.


            Currently we only accept the following combinations:

            - ["NET_ROOM_PRICE"]

            - ["NET_ROOM_PRICE", "PROPERTY_CHARGES"]

            - ["NET_ROOM_PRICE", "LOCALITY_CHARGES"]

            - ["NET_ROOM_PRICE", "LOCALITY_CHARGES", "PROPERTY_CHARGES"]


            HDCN: N/A

            '
          items:
            type: string
            description: 'Specifies what value the percentage applies to. For example, 10% of NET_ROOM_PRICE + PROPERTY_CHARGES.


              Required when mode is PERCENTAGE (otherwise rejected).


              To know what charge types fall into each base category please use the meta endpoint.


              Currently we only accept the following combinations:

              - ["NET_ROOM_PRICE"]

              - ["NET_ROOM_PRICE", "PROPERTY_CHARGES"]

              - ["NET_ROOM_PRICE", "LOCALITY_CHARGES"]

              - ["NET_ROOM_PRICE", "LOCALITY_CHARGES", "PROPERTY_CHARGES"]


              HDCN: N/A

              '
            enum:
            - NET_ROOM_PRICE
            - TAXES
            - LOCALITY_CHARGES
            - PROPERTY_CHARGES
            - FACILITY_CHARGES
        mode:
          type: string
          description: 'The mode used for this charge.


            Reference the meta endpoint to understand which charge modes are supported for the charge type.


            HDCN:FeePolicy->ChargeFrequency AND FeePolicy->Percent in the case of `PERCENTAGE`

            '
          enum:
          - PER_NIGHT
          - PER_STAY
          - PER_PERSON_PER_NIGHT
          - PER_PERSON_PER_STAY
          - PERCENTAGE
          - INCALCULABLE
      description: Contains details about the charge price.
    Charge:
      required:
      - charge_key
      - charge_periods
      type: object
      properties:
        charge_key:
          $ref: '#/components/schemas/ChargeKey'
        charge_periods:
          type: array
          description: Contains the timeline of various configurations for the charge through time.
          items:
            $ref: '#/components/schemas/ChargePeriod'
      description: List of charges for the room.
    ChargeConfiguration:
      required:
      - amount
      - excluded
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/Amount'
        child_ages:
          type: array
          description: 'Contains modifiers for the charge amount based on children ages.


            If multiple modifiers are configured, only the most specific age multiplier that matches the child''s age is applied. For example, if a .50 multiplier is configured for children under 8 years old, and a .80 multiplier is configured for children under 12 years old, a 7 year old child would get a .50 discount.

            '
          items:
            $ref: '#/components/schemas/AgeMultiplier'
        excluded:
          type: boolean
          description: 'Specifies if the charge is included or excluded from the calendar rate.


            For example, let''s assume the calendar rate is set to 100 euros. If there is a 10 euro excluded charge the net price would be 110 euros and our price breakdown would show 100 + 10. If the 10 euro charge is not excluded the net price would be 100 and our price breakdown would show 90 + 10.


            This corresponds to the similarly named field in extranet, but is separate from the included/excluded within Reservations API.


            HDCN: FeePolicy->Type

            '
      description: 'The charge configuration for this period.


        If specified as `null` it clears the charge for the specific period. This field cannot be omitted.'
    ChargePeriod:
      required:
      - applicable
      type: object
      properties:
        applicable:
          $ref: '#/components/schemas/ApplicableWindow'
        configuration:
          $ref: '#/components/schemas/ChargeConfiguration'
      description: Contains the timeline of various configurations for the charge through time.
    ApplicableWindow:
      required:
      - from
      type: object
      properties:
        from:
          type: string
          description: 'The start date for this charge period. The date is relative to the timezone of the property. If you are modifying an existing active charge, this date may be in the past if it matches the active charge''s date.


            Format: ISO 8601 date (YYYY-MM-DD)


            Charge periods with a start date more than 10 years in the future will be ignored, effectively making the charge extend indefinitely.


            HDCN: N/A

            '
        to:
          type: string
          description: 'The end date for this charge period (inclusive). The date is relative to the timezone of the property. If null or undefined the current charge period extends forever.


            Format: ISO 8601 date (YYYY-MM-DD)


            Charge periods with an end date more than 10 years in the future will be created without an end date, effectively making the charge extend indefinitely.


            HDCN: N/A

            '
      description: The date range for this charge period. Dates are inclusive and must not overlap.
    Charges:
      type: object
      properties:
        property_charges:
          type: array
          description: Charges that apply across the property. Update requests must contain at least one charge between property and room arrays.
          items:
            $ref: '#/components/schemas/Charge'
        room_charges:
          type: array
          description: Room specific charges. Will override the same charge specified at the property level. Update requests must contain at least one charge between property and room arrays.
          items:
            $ref: '#/components/schemas/RoomCharges'
    ResponseMeta:
      type: object
      properties:
        ruid:
          type: string
    ApiResponseCharges:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Charges'
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/ApiError'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ApiError'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    ApiResponseObject:
      type: object
      properties:
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/ApiError'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ApiError'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    RoomCharges:
      required:
      - charges
      - room_id
      type: object
      properties:
        room_id:
          maximum: 4294967295
          type: integer
          description: 'The Room ID the charges apply to.


            HDCN: FeePolicy->InvCode

            '
          format: int64
        charges:
          type: array
          description: List of charges for the room.
          items:
            $ref: '#/components/schemas/Charge'
      description: Room specific charges. Will override the same charge specified at the property level. Update requests must contain at least one charge between property and room arrays.
x-tagGroups:
- name: API Endpoints
  tags:
  - Charges endpoint
  - Charges meta endpoint
- name: Documentation
  tags:
  - About Try it