API/INTERFACES

GenericPOS

25min



POS Interface

Security

Transmission

All the communication with our endpoints has to be HTTPS encrypted - we do not allow the transmission of any unencrypted data.

Authentication

Once approved, you receive a company code for us which is unique and identifies you as a vendor - keep it secret at all times. In order to authenticate on our system, you are expected to send an HTTP header named x-company-code with every request, with the value being your company code.

In case you can not send individual HTTP headers with your programming language or web service framework, you also have the option of transmitting the company code as an element inside the XML. If you prefer to use this option, please contact us before the implementation starts. In this case, please do add a companyCode attribute to your Request element (see company code in the XML )

URL

Live

https://api.hotelsoftware.io/rest/pos/{{ hotelId }}/v1.0/xml/{{ method_slug }}

Test

https://api-staging.hotelmeister.io/rest/pos/{{ hotelId }}/v1.0/xml/{{ method_slug }}

Methods

Ping

Slug: ping

HTTP Method: POST

Request

Request


Response

Response - Okay

Response - Error


RoomsGetList

Slug: rooms

HTTP Method: POST

Request

XML


Request (by room number)

XML


This request can be used to only request a certain room number instead of all rooms - this might be beneficial when the POS is used in a larger hotel with 100+ rooms.

Response

XML

  • We can have multiple Room elements with different guest names (i.e. if there are multiple guests in the same room)
  • In the future, Room elements with the same roomNumber might have different parentIds (i.e. if two people are sharing a room, but paying separate)
  • The attribute guestId is optional, and it can be configured whether it should be provided or not
  • All fields are of type String (even the roomNumber and do not have length limitations)
  • A Room element without a roomNumber attribute means, the guest does not yet have a room number assigned to his reservation (i.e. he is waiting at the bar/restaurant for his room to get ready)

InvoiceToRoom

Slug: charge

HTTP Method: POST

Request

XML

  • Either RoomNumber or ParentId has to be provided
  • The elements Tip, Table, Note and Waiter are optional
  • If there is no tip, the Tip element can be omitted
  • If the Waiter element is present, at least one of the attributes (id or name) should be passed along
  • The businessDate is optional and only required if the business date is different to the hotel local date (i.e. if the daily closing happens after midnight - often at the end of a shift)
  • The GuestID is an optional element and if supplied posts to a specific guest

Cancellation

XML

  • The id attribute of the Cancellation element has to be the same value as the id attribute of the original Charge element, you want to cancel
  • The count attribute of the Item element has to be negated (meaning if the original count was positive it has to be negative now)
  • The amount and netAmount attributes of the Item and Category elements have to be the same as in the original transaction (meaning if the original value was positive, this needs to be positive as well and contain the same value)
  • If the transaction has the same total amount as the original transaction, the original transaction will be cancelled
  • If the transaction has a different total amount (i.e. partial cancellation) then we will post a separate cancellation transaction, leaving both the original and the cancellation transaction visible on the customers folio

Request (minimal Version)

XML


Request (minimal Version with Items)

XML


Response

XML

XML


Error Codes

Any error response has a HTTP status code of 4xx or 5xx

Any success response will have a HTTP status code of 2xx

Error CodeMessage



100

Invalid Company Code

101

Invalid Hotel ID

102

Invalid XML or missing required attributes

103

ID / Room not found or not checked in

104

Could not uniquely identify reservation

105

Missing or incomplete configuration

999

Internal Server Error

Technical Details

Character Encoding / Charset

All our messages are UTF-8 encoded, and we do expect the same to apply for all incoming requests.

Decimal Separator

We are using . (point) as a decimal separator, and do expect 2 digits after the comma.

Date Time Format

We are using the date format yyyy-mm-dd (i.e. 2018-03-21). We are using the date-time format yyyy-mm-dd hh:mm:ss (i.e. 2018-03-21 23:59:32). All dates and times are expected to be in hotel local time.

Currency Code

Currency code is expected to be in ISO 4217 3 character notation (i.e. EUR, CHF, USD)

Invoice vs. Delivery Note

Please let us know whether you are creating an invoice (dt. Rechnung) or a delivery note (dt. Lieferschein) for room bookings in your POS. In case you are creating an invoice, we have to add it with 0% VAT on the hotel invoice, to avoid double taxation. In case you are creating a delivery note, we have to show the actual VAT on the hotel invoice.

Company Code in the XML

XML