---
title: "Open API: Check-In/Check-Out"
canonical: "https://support.vitec-hotellinx.com/space/KB/941064205/Open%20API%3A%20Check-In%2FCheck-Out"
format: markdown
---
> ℹ️ See API specifications from here: [Swagger UI](https://api-prod-wbe.hotellinx.com/swagger/index.html?urls.primaryName=Check+In%2FOut+API)

> ⚠️ Please note that typically, CI/CO tools need manage very complex rules to make decisions especially on following:  
> ⚠️  - Which reservations/rates/rooms/guest area allowed to CheckIn/CheckOut  
> ⚠️  - Which reservations must be paid and how much and on which terms.
> ⚠️ 
> ⚠️ PMS is not really making and applying any rules when fetching reservations or room allocation or checkin or payments  
> ⚠️   
> ⚠️ Also, please note that especially reservations from channels like Booking.com, Hotels.com are very limited on their information and relying a lot on ordinary comment fields when delivering information about eg. payment information. Channels typically also change their behavior as they are talking to humans, not machines


## Typical flow of events

1. Find arrivals 1-3 days in advance to find out arriving reservations (1-x rooms)
2. Check suitable reservations for online check-in based on customer specific rules
3. Send notifications to customer that eglible for Checkin
4. Use “Hotellinx API” and  /Reservation/{id} to fetch single reservation details
5. Use customer / hotel specific rules to determine if eg. reservation is paid or needs to be paid
6. Manage guest allocations (rooming). Make sure that as many allocations will be found as there is rooms (so that at least as many allocations (guests) is found as there is rooms in reservation)
7. When allocations are done, assing/block rooms for each allocation (guest)
8. Eventually Checkin the allocations.   
Note: depending the flow, you may also checkin individual allocations(guests) from the reservation!

## CRUD Operations

1. **Get Arrivals:**  
Fetch those reservations that are arriving today/tomorrow using api/arrival based on your needs. From resultset you may check reservation statuses, nro of rooms, PAX combinations etc. and notify guests in order to proceed to Checkin process.
2. **Check guest allocations (io. guest names)**  
Fetch guest allocations io. the guest name lines for the reservation (use this to see GuestAllocationId values).  
You will need the allocations in order to check whether they have already been assigned to some room or not and especially the profile that it has eg. firstname, Lastname, contact details etc.  
  
Based on allocation list, you may offer the user options:  
 * Update/Add/Remove guests and their details  
 * Assign rooms for guests (room blocking) - in other words, who stays in which room.  
  
Please note that a reservation may consists several rooms with same roomtype
3. **Add guest allocation**  
Creates a new guest allocation under the reservation. Recommended that after creating, fetch allocations again to get `guestAllocationId`.
4. **Update guest allocation**  
Updates guest details; disallowed if the guest allocation is already checked-in/out.
5. **Delete guest Allocation**  
Please be careful! There is no method to return/restore any deleted guest allocation!
6. **Get available rooms in order to block a room for the guest allocation**  
Before blocking a room for a guest allocation, list which rooms are assignable for the stay period for the selected room.  
You may let the guest to choose the rooms and manage who goes to which rooms or make autoassigment
7. **Assign/Block room for guest allocation**  
After retrieving the available rooms number for the reservation, you ma assign the room for the guest(s).   
Please note that one room may have multiple guests.
8. **Remove Room block for guest allocation**  
Please be careful! There is no method to return/restore any deleted room assignment!
9. **Check-In selected guest allocations**  
Allocation must have room assigned! Check-in selected allocations by guest allocation ids ([ReservationGuestAllocation.Id](http://ReservationGuestAllocation.Id) values). Use this when you want to check in only a subset of allocations.  
# Note: `guestAllocationIds` are GuestAllocationIds ([ReservationGuestAllocation.Id](http://ReservationGuestAllocation.Id)), not RoomIds!
10. **Fetch reservation invoice before payment**  
Checkout is blocked if invoice balance is not zero. Use this to see current open sales/payments.
11. **Add reservation payment row**  
Use this to record customer payments so that invoice balance becomes zero and checkout is allowed.
  Notes:  
- amount sign/semantics depend on the POS implementation.  
- guestId/roomId are optional; use null/0 if not applicable.
12. **Fetch reservation invoice after payment**
  
13. **Check-out selected guest allocations (requires invoice balance == 0)**  
Use this when you want to check out only part of the reservation.
14. **Check-out whole reservation (requires invoice balance == 0)**

##   
Status check and helpers

1. **Verify room assignments**
2. **Stay status after check-in/CheckOut**
3. **Stay status after check-out**
4. **Initial stay status (reservation-level)**
5. **Initial stay status (guest allocation-level)**