SM -> PMS
Receive real-time rate updates from SiteMinder to keep your PMS synchronized.
This is a beta specification and subject to change. Please reach out to our Ecosystem Team if you wish to develop to this API.
What is Rates (SM -> PMS)?
Rates (SM -> PMS) is a push notification method where SiteMinder sends rate updates directly to your Property Management System (PMS). This integration ensures that pricing configured on the SiteMinder Platform are automatically synchronized to the PMS, maintaining accurate rate parity across all connected systems.
To implement Rates (SM -> PMS), the PMS must certify for Rates (PMS -> SM).
Considerations
Asynchronous Processing: Due to high update volumes, your PMS must receive updates and queue them for offline processing rather than processing in real-time. This prevents blocking further updates from the PMSX application.
Rate Configuration Options: You must specify which rate format your PMS supports and implement the appropriate endpoint:
Per Day Pricing:
/ratesendpoint - Single daily rate with optional extra person chargesOccupancy Based Pricing:
/occupancy-based-ratesendpoint - Multiple rates based on adult occupancy (1-5 pax)You only need to implement one rate endpoint based on your PMS capabilities
Automatic Rate Conversion: SiteMinder handles conversion between per day and occupancy-based pricing using the room rate configuration data in the Platform, regardless of which format your PMS supports.
Message Volume: Each message covers a specific room rate code combination with up to 760 dates per message, depending on the hotel's configured update period.
Code Mapping: Use
invTypeCodeandratePlanCodevalues that match the codes returned from the PMS Room and Rates endpoint.
Authentication Requirements: The REST components of the pmsXchange API only support PMS-level authentication, which means using the same credentials across all properties. If you’re currently using hotel-level authentication (credentials per property), we recommend switching to PMS-level to ensure compatibility with the REST endpoints.
Message Exchange Flow
The following diagram illustrates the message flow for rate updates:

Endpoint to receive and process hotel room rate rates
Hotel identifier code
PMSX partner code
The unique identifier of the request (UUID), this traceToken is logged with this request.
8bf21e96-e6c7-4bf9-a377-a5763e053538Inventory type code
ABCRate plan code
CBAThree-letter currency code
USDPattern: ^[A-Z]{3}$Rates Update received
Bad request
Unauthorized
Access Denied
Not Found
Too Many Requests
Internal server error
Service Unavailable
POST /pmses/{pmsCode}/hotels/{hotelCode}/rates/v1 HTTP/1.1
Host: pmsx-partner.com
Authorization: Basic username:password
X-SM-TRACE-TOKEN: 8bf21e96-e6c7-4bf9-a377-a5763e053538
Content-Type: application/json
Accept: */*
Content-Length: 232
{
"invTypeCode": "ABC",
"ratePlanCode": "CBA",
"currencyCode": "USD",
"rates": [
{
"date": "2025-01-01",
"rate": {
"amountAfterTax": 355.5,
"numberOfAdults": 2
},
"extraAdultAmount": {
"amountAfterTax": 65.5
},
"extraChildAmount": {
"amountAfterTax": 65.5
}
}
]
}{
"result": "Success"
}Endpoint to receive and process hotel room rate rates
Hotel identifier code
PMSX partner code
The unique identifier of the request (UUID), this traceToken is logged with this request.
8bf21e96-e6c7-4bf9-a377-a5763e053538Inventory type code
ABCRate plan code
CBAThree-letter currency code
USDPattern: ^[A-Z]{3}$Rates Update received
Bad request
Unauthorized
Access Denied
Not Found
Too Many Requests
Internal server error
Service Unavailable
POST /pmses/{pmsCode}/hotels/{hotelCode}/occupancy-based-rates/v1 HTTP/1.1
Host: pmsx-partner.com
Authorization: Basic username:password
X-SM-TRACE-TOKEN: 8bf21e96-e6c7-4bf9-a377-a5763e053538
Content-Type: application/json
Accept: */*
Content-Length: 348
{
"invTypeCode": "ABC",
"ratePlanCode": "CBA",
"currencyCode": "USD",
"occupancyBasedRates": [
{
"date": "2025-01-01",
"occupancyBasedRates": [
{
"amountAfterTax": 300,
"numberOfAdults": 1
},
{
"amountAfterTax": 355.5,
"numberOfAdults": 2
},
{
"amountAfterTax": 425,
"numberOfAdults": 3
},
{
"amountAfterTax": 492.5,
"numberOfAdults": 4
}
],
"extraChildAmount": {
"amountAfterTax": 65.5
}
}
]
}No content
Common Questions
Still have questions?
Use the Ask button at the top of the page to chat with our AI assistant — it can help you navigate the guide, understand requirements, and troubleshoot issues.
If you need more support, visit Integration Support.
Last updated
Was this helpful?