Summary: When an IRD order fails to sync or appears blank in AXP, there are four possible causes — all of which originate on the IRIS side. In every case, the recommended first step is to contact IRIS support, as they have the most visibility into their platform and logs.
Permissions Required: No specific AXP role required to view order details. Contact IRIS support for resolution.
There are four possible reasons this could occur. In ALL cases, we recommend reaching out to IRIS's team for support, as they will have the most visibility and be best equipped to assist in these situations.
1. IRIS Server Error
AXP receives the following errors from Iris when an IRD order fails to process successfully. As a result, the IRD details will not appear in AXP, which is expected behavior. This issue is caused by a server error on Iris’s side.
The IRD will look like:
ℹ️ Error codes you may see in the IRIS logs:
IrisError::RequestError SystemError, Basket with code: '464dbe9d-96e3-4312-a19c-605063e39919' does not exist in the DB.
RestClient::InternalServerError 500 Internal Server Error
Cause: The issue is caused by a server error on IRIS's side.
⚒️ To fix: We recommend reviewing the logs with IRIS's team to identify the cause of the data sync issue.
💁 What to ask the hotel / IRIS team to check on their side:
Review the Basket in IRIS: Check the basket details in the IRIS system to identify any errors.
Validate and Correct the Basket: Work with the IRIS team to validate and fix the basket. Once corrected, the order can be properly processed and sent to AXP.
2. IRIS Room Character Limit
Cause: IRIS has a limit of 20 characters for room numbers. When this limit is exceeded, the order details will be empty but the failure status will not show in the UI. The IRD may look like:
ℹ️ Error code you may see in the IRIS logs:
IrisError::RequestError SystemError, Outlet Order validation failed for GXP. Validation Error Messages: ValidateFieldForGxp - GuestRoomNumber exceeded the valid length of 20.
🗒️ We are currently looking to improve how this is surfaced in future.
⚒️ To fix: Please reach out to IRIS for support.
💁 What to ask the hotel / IRIS team to check on their side:
Check the Room Name: Ensure the room name is fewer than 20 characters.
Amend the Room Name: If the room name exceeds the limit, update it to comply with the character restriction. This will allow future orders for that room to process correctly.
3. IRIS Timeout Error
Cause: When receiving an IRD order, IRIS may time out during the sync. In this case, AXP will retry the request three times — however, all three attempts can fail.
This happens because even if the first request times out, IRIS still uses the basket code (which is intended for one-time confirmation only). This means a single timeout causes all three retry attempts to fail.
The order details will be empty but the failure status will not show in the UI.
🗒️ We are currently looking to improve how this is surfaced in future.
⚒️ To fix: Please reach out to IRIS so they can review their logs and help prevent this from recurring.
ℹ️ Error codes you may see in the logs:
NoMethodError undefined method `body' for nil:NilClass block in timeout(/usr/local/lib/ruby/2.7.0/timeout.rb:95)
IrisError::RequestError SystemError, Basket with code: '3a911e4c-f75f-4544-8499-60840b0b7107' does not exist in the DB.
4. IRIS Configuration Issue (Unauthorised Operation)
Cause: This error occurs when IRIS rejects the order because the property's integration is not fully configured to allow non-verified guest ordering. AXP places the order correctly, but IRIS's platform returns an authorisation error.
This is most common for newly live properties where the IRIS/GXP setup may not have been fully completed.
⚠️ Info: The order will appear blank or empty in AXP. The failure status may not be visible in the UI.
⚒️ To fix: Please reach out to IRIS so they can review their logs and help prevent this from recurring. 📧 support@iris.net
ℹ️ Error code you may see in the logs:
IrisError::RequestError SystemError, Attempted to perform an unauthorized operation.
What to ask the hotel / IRIS team to check on their side:
Enable non-verified guest ordering for the outlet — this is a property-level toggle in the IRIS (GXP) platform.
Verify the interface token has the correct permissions to place orders on that specific outlet.
Confirm the subscription key is subscribed to an APIM product that includes the
PlaceNonVerifiedGuestOrderoperation.Check that the outlet code and property code match — a token scoped to one property cannot place orders against an outlet belonging to a different property.
These are all changes that must be made by IRIS or the hotel's IT team directly in the IRIS platform.
5. IRIS Expired Subscription Key (401 Unauthorised)
Cause: This error occurs when the IRIS API rejects the request with a 401 because the Ocp-Apim-Subscription-Key for the property's location integration has expired or become invalid. AXP attempts to place the order correctly, but IRIS returns an unauthorised response whose body doesn't match the expected format — causing a secondary error in our error-parsing code.
This can happen to any live property when the IRIS subscription key rotates or expires without being updated in AXP.
⚠️Info: The order will appear blank or empty in AXP. The failure status may not be visible in the UI.
When order was placed from a mobile device:
When order was placed from a tablet:
🛠️ To fix: The hotel's IT team needs to contact IRIS team to renew the subscription key. Once renewed, the Alliants team needs to update the key in the location integration config in Active Admin.
Contact IRIS at: 📧 support@iris.net
ℹ️ Error codes you may see in the logs:
NoMethodError: undefined method 'first' for nil
Iris::Session#get_session_token returned nil
These two errors always appear together and represent a single failure event — get_session_token returning nil is the high-level symptom; the NoMethodError is the low-level cause (IRIS returned a 401 whose body didn't contain the expected { "responses": [...] } structure).
What to ask the hotel / IRIS team to check on their side:
Renew the expired
Ocp-Apim-Subscription-Keyfor the affected location integration.Share the new subscription key with the Alliants team so it can be updated in the location integration config in Active Admin.
These changes require action from both IRIS/the hotel's IT team (to renew the key) and the Alliants team (to update it in AXP).




