Fee & Tax Rules
Modified on: 2026-07-08 20:39
TABLE OF CONTENTS
1. Overview
This document defines the Fee & Tax JSON structure used across GO APIs for communicating hotel charge rules — including taxes, service charges, city taxes, and other fees — between suppliers and distributors.
The specification supports a wide range of charge behaviours: fixed amounts, percentage-based taxes, net-rate percentages, tax-on-tax stacking.
2. Fee & Tax Field Reference
Each entry in the feeTaxes array is a FeeTax object with the following fields:
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
| feeTaxes | array | No | The 'feeTaxes' node, which sits at the same level as the legacy 'fees' node. This new structure supports tiered rates, tax-on-tax calculations, and net-rate percentages as defined in the FeeTaxes documentation. Notes: Since 'feeTaxes' contains the advanced tax and fee rules, if both the 'fees' node and the 'feeTaxes' node are provided, feeTaxes will take priority and ignore the 'fees' node. | |
| @code | string | Yes | Represents the specific fee or tax category, such as Tax, Service Charge, City Tax, etc. It must be unique within the same date range, and the same code will be considered the same Fee. | VAT |
| @description | string | No | Text description of the fee or tax | value added tax |
| dateRange | object | Yes | Effective period for this rule | |
| @startDate | string | Yes | The start date of the date range,it's formatted as yyyy-MM-dd. | 2018-01-01 |
| @endDate | string | Yes | The end date of the date range,it's formatted as yyyy-MM-dd. | 2018-01-04 |
| chargeMode | enum | Yes | Enum:[ TAX_ON_TAX_PERCENT, RATE_PERCENT, SUMMARY_RATE_PERCENT, NET_RATE_AMOUNT_PERCENT, FIXED ] Please note the tax and rate percent modes below: - TAX_ON_TAX_PERCENT, RATE_PERCENT, SUMMARY_RATE_PERCENT, and NET_RATE_AMOUNT_PERCENT: Values represent percentage points (e.g., 10 = 10%). - FIXED: Indicates a fixed amount per chargeUnit. - SUMMARY_RATE_PERCENT and TAX_ON_TAX_PERCENT: The value for applyToTaxCodes will be provided. - SUMMARY_RATE_PERCENT: The chargeValue.value will be provided; the tierValue node will not be included. - TAX_ON_TAX_PERCENT, SUMMARY_RATE_PERCENT, and NET_RATE_AMOUNT_PERCENT: The inclusive value must be set to "false". | RATE_PERCENT |
| chargeUnit | enum | Yes | Enum: [ PER_ROOM_PER_STAY, PER_ROOM_PER_NIGHT, PER_PERSON_PER_STAY, PER_PERSON_PER_NIGHT ] Note: For PER_ROOM_PER_STAY and PER_PERSON_PER_STAY, the rule applies to the entire stay if the check-in date falls within the specified date range. If the check-in date is outside of this range, the rule will not be applied. | PER_ROOM_PER_NIGHT |
| collectBy | enum | No | Enum: [ Property, Distributor] Notes: 1. Distributor (Default or if collectBy node is omitted): The distributor collects the fee/tax. 2. Property: The property collects the fee/tax. Please note that these may be excluded from distributor-side tax calculations. | Distributor |
| currency | string | No | ISO 4217 currency code. | USD |
| applyToTaxCodes | array | No | Notes: 1. This field is required and must not be empty when chargeMode is set to TAX_ON_TAX_PERCENT or SUMMARY_RATE_PERCENT. 2. The listed code values must not form any circular dependencies. | ["VAT"] |
| chargeValue | object | Yes | Notes: 1. Either the field "value" or the node "tierValue" will be provided. 2. When the parent chargeMode is set to SUMMARY_RATE_PERCENT, only field "value" will be provided at the rule level. | |
| value | number | No | Notes: 1. Percent Charge Modes: Use percentage points (e.g., enter 10 for 10%). 2. FIXED Mode: Use the direct numeric value (e.g., 10 represents a fixed amount). | 10 |
| tierValue | object | No | ||
| inclusive | boolean | Yes | Indicate whether the fee is already included in the amount before tax or not. Note: If chargeUnit is PER_ROOM_PER_STAY or PER_PERSON_PER_STAY, the 'inclusive' field's value will be 'false' | false |
3. Charge Modes
The chargeMode field determines how a fee is calculated against the base amount.
RATE_PERCENT Percentage applied to the room base rate (may include some fees per business rules). Default value. | NET_RATE_AMOUNT_PERCENT Percentage applied to the net room price, excluding all fees and taxes. | TOTAL_RATE_PERCENT Percentage applied to the total booking amount (including all previously computed fees). |
TAX_ON_TAX_PERCENT Percentage applied on top of one or more previously-computed tax amounts. Requires | FIXED A flat monetary amount per unit. Requires |
4. Sample Payloads
Sample 1 – Tax 20% per room per night (inclusive, Distributor Collected)
A 20% tax per room, per night is included in the room rates. By default, this tax is charged by the distributor.
Calculation example:
AmountBeforeTax(ABT) = $100
AmountAfterTax(AAT) = $100(tax is included in the ABT)
{
"feeTaxes": [
{
"code": "Tax",
"description": "Tax",
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-01-04"
},
"chargeMode": "RATE_PERCENT",
"chargeUnit": "PER_ROOM_PER_NIGHT",
"collectBy": "Distributor",
"chargeValue": {
"value": 20
},
"inclusive": true
}
]
}Sample 2 – Fees: 10 USD per room per night included. Tax: 10.5% per room per night on the net rate, plus 30 USD per room per night
Breakdown of the fees and taxes:
- Fees: 10 USD per room, per night (included).
- Taxes: 10.5% of the Net Rate per room, per night.
- Additional Charges: 30 USD per room, per night.
Calculation example:
AmountBeforeTax(ABT): $110
AmountAfterTax(AAT): 110 +(110 -10)* 0.105 + 30 = $150.5
{
"feeTaxes": [
{
"code": "Fees",
"description": "extrafees",
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-12-31"
},
"chargeMode": "FIXED",
"chargeUnit": "PER_ROOM_PER_NIGHT",
"chargeValue" :{
"value": 10,
},
"inclusive": true
},
{
"code": "TaxP",
"description": "TaxP",
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-12-31"
},
"chargeMode": "NET_RATE_AMOUNT_PERCENT",
"chargeUnit": "PER_ROOM_PER_NIGHT",
"chargeValue" :{
"value": 10.5
},
"inclusive": false
},
{
"code": "TaxA",
"description": "TaxA ",
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-12-31"
},
"chargeMode": "FIXED",
"chargeUnit": "PER_ROOM_PER_NIGHT",
"chargeValue" :{
"value": 30,
},
"inclusive": false
}
]
}Sample 3 – Tax1: 10 USD per room per stay, ServiceCharge: 10.5% of the sum of Tax1 and the base rate per room per night; Tax2: 20 USD per room per stay
Breakdown of the fees and taxes:
- Tax1: 10 USD per room, per stay.
- ServiceCharge: 10.5% of the combined total of the base rate and Tax 1, applied per room, per night.
- Tax2: 20 USD per room, per stay.
Calculation example:
AmountBeforeTax(ABT): $100
AmountAfterTax(AAT): 100 + 10 + (100+10) * 10.5% + 20 = $141.55
{
"feeTaxes": [
{
"code": "Tax1",
"description": "Tax",
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-12-31"
},
"chargeMode": "FIXED",
"chargeUnit": "PER_ROOM_PER_NIGHT",
"chargeValue": {
"value": 10,
},
"inclusive": false
},
{
"code": "ServiceCharge",
"description": "Service Charge",
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-12-31"
},
"chargeMode": "SUMMARY_RATE_PERCENT",
"chargeUnit": "PER_ROOM_PER_NIGHT",
"applyToTaxCodes": [
"Tax1"
],
"chargeValue": {
"value": 10.5,
},
"inclusive": false
},
{
"code": "Tax2",
"description": "Tax",
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-12-31"
},
"chargeMode": "FIXED",
"chargeUnit": "PER_ROOM_PER_STAY",
"chargeValue": {
"value": 10
},
"inclusive": false
},
]
}Sample 4 – Tax: 10% per room per night, ServiceCharge: 5 USD per person per night
Breakdow the fees and texes:
- Tax: 10% per room, per night.
- Service Charge: 5 USD per person, per night.
Calculation example:
AmountBeforeTax(ABT): $100
AmountAfterTax(AAT)for 2 persons: 100 + 100 * 0.1 + 5 * 2 = $120
{
"feeTaxes": [
{
"code": "Tax",
"description": "Tax",
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-12-31"
},
"chargeMode": "RATE_PERCENT",
"chargeUnit": "PER_ROOM_PER_NIGHT",
"chargeValue": {
"value": 10,
},
"inclusive": false
},
{
"code": "ServiceCharge",
"description": "Service Charge",
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-12-31"
},
"chargeMode": " FIXED",
"chargeUnit": "PER_PERSON_PER_NIGHT",
"chargeValue": {
"value": 5
},
"inclusive": false
}
]
}Sample 5 – Fee taxes varies based on date ranges
TaxP1 is a 10 USD per room per night charge included in the room rate, applicable from April 1 to May 1, 2018. TaxP2 is a 15% per room per night tax, included in the room rate, and applies from May 2 to June 3, 2018. A 30 USD service charge per room per night is added on top of the room rate. A 10.5% charge applies to the summary of the room rate and service charge, per room per night.
Breakdow the fees and texes:
- April 1 – May 1, 2018: TaxP1 is 10 USD per room per night, included in the room rate.
- May 2 – June 3, 2018: TaxP2 is 15% per room per night, included in the room rate.
- Service Charge: A 30 USD service charge per room per night is added on top of the room rate.
- Additional Tax: A 10.5% charge applies to the total sum of the room rate and service charge, per room per night.
Calculation example:
| Date | ABT | TaxP1(10 USD) | TaxP2(15%) | ServiceCharge(30 USD) | TaxP3 | AAT |
|---|---|---|---|---|---|---|
| April 30 | 100 | 10 | N/A | 30 | (100+30)*10.5%=13.65 | 100+30+13.65=143.65 |
| May 1 | 100 | 10 | N/A | 30 | 13.65 | 143.65 |
| May 2 | 100 | N/A | 100*0.15=15 | 30 | (100+30)*10.5%=13.65 | 100+30+13.65=143.65 |
| May 3 | 100 | N/A | 100*0.15=15 | 30 | 13.65 | 143.65 |
{
"feeTaxes": [
{
"code": "TaxP1",
"description": "TaxP1",
"chargeMode": "FIXED",
"chargeUnit": "PER_ROOM_PER_NIGHT",
"dateRange": {
"start": "2018-04-01",
"end": "2018-05-01"
},
"chargeValue": {
"value": 10
},
"inclusive": true
},
{
"code": "TaxP2",
"description": "TaxP2",
"chargeMode": "RATE_PERCENT",
"chargeUnit": "PER_ROOM_PER_NIGHT",
"dateRange": {
"start": "2018-05-02",
"end": "2018-06-03"
},
"chargeValue": {
"value": 15
},
"inclusive": true
},
{
"code": "ServiceCharge",
"description": "Service Charge",
"chargeMode": "FIXED",
"chargeUnit": "PER_ROOM_PER_NIGHT",
"dateRange": {
"start": "2018-01-01",
"end": "2018-12-31"
},
"chargeValue": {
"value": 30
},
"inclusive": false
},
{
"code": "Tax",
"description": "Tax",
"chargeMode": "SUMMARY_RATE_PERCENT",
"chargeUnit": "PER_ROOM_PER_NIGHT",
"dateRange": {
"start": "2018-01-01",
"end": "2018-12-31"
},
"applyToTaxCodes": [
"ServiceCharge"
],
"chargeValue": {
"value": 10.5
},
"inclusive": false
}
]
}5. FAQ
Did you find it helpful? Yes No
Send feedback