Importing reservations from a file

Bringing existing bookings in from another system as a CSV. What the columns mean, why the shipped template cannot describe a two-room booking, and what to do when the server refuses a row.

Where to find it
SettingsImport Reservations
Permission needed
Individual reservations management.
Last checked
August 16, 2026

This screen takes a spreadsheet of bookings you already have somewhere else and turns them into Prostay reservations. It is a migration tool, used once when you move in and occasionally afterwards when a group arrives as a list rather than as bookings. Everything it creates is an ordinary reservation afterwards, editable and cancellable like any other.

Nothing is created until you have seen every row on screen and pressed Submit Import. Uploading a file is safe; it fills a table and nothing more.

The template, and the column it is missing

Download Template gives you a CSV with thirty-seven columns and two example rows. Match your export to it and most of the work is done.

It does not matter what the values look like, only that lines sharing a booking share a value. Your old system's own reference is the obvious thing to use. Once the column exists every line needs a value in it: a line left blank is skipped without a word, so a file that imports fewer bookings than you expected is worth checking for gaps in that column first.

The columns that are read

The template carries thirty-seven columns because it came from a system that had that many. Prostay reads twelve of them, and the rest are carried along and ignored. There is no harm in leaving them in.

ColumnWhat it becomes
Rsv NoThe grouping key. Not part of the reservation itself. Add it yourself; the template omits it.
Reservation NameThe booking source, such as Booking.com. Despite the name, this is not a person.
Guest NameThe guest, written surname first: Hart, Amelia Ms. The title is dropped.
Arrival, DepartureCheck-in and check-out, as DD/MM/YY.
NightsChecked against the two dates. A mismatch is flagged rather than corrected.
Room TypeThe accommodation type's abbreviation, exactly as your property spells it. This is the column that most often stops an import.
Room RateThe money on the row. Commas and decimals are handled.
QtyHow many rooms of that type this line is for. Blank counts as one.
Adult, Child, InfantOccupancy. At least one adult or one child is required.
Comp Adult, Comp ChildOccupancy on a complimentary room, which is a row with a rate of zero and one of these filled in.
Flight Arrival Number, Flight Departure NumberCarried onto the reservation as they are.

How lines become reservations

A reservation is every line sharing an Rsv No. Within that group, a line with a rate on it adds a room, and a line without one adds a guest to the reservation. That is how a family of three in two rooms is described: three lines, one number.

The Reservations to import card after uploading the file with an Rsv No column, its Submit Import button showing a count of 5. Five rows: Booking.com Amelia Hart, Direct Booking Kenji Nakamura plus 2 with two rooms and a total rate of 430, Sterling Travel Chidi Okafor, Expedia Mikael Lindqvist and Booking.com Beatriz Costa. Columns read Source, Lead Guest, Check-in, Check-out, Rooms, Total Rate and Status, and each row shows Confirmed.
Seven lines of the file, five reservations. The second row is four of those lines: two rooms and a third guest.

The same seven lines with the Rsv No column deleted, which is exactly what the shipped template gives you, produce this instead.

The same card after uploading the same lines without the Rsv No column, its Submit Import button now showing a count of 7. Seven rows instead of five. The Nakamura booking has become three separate reservations, and the third of them, Sora Nakamura, shows no rooms and a total rate of zero and is marked with a warning.
The same data, one column poorer. The two-room booking is now three bookings, and the guest who had no room of their own is a reservation with nothing in it.

The row with no rooms is the one to notice. It cannot be imported, and while it is on screen Submit Import is unavailable, so one missing column stops the entire file rather than the line it affected.

Reviewing what was parsed

Press Import CSV, drop the file in and press Import. The drawer closes and the table fills.

The Import reservations from CSV drawer over the empty screen. It has a dashed drop area reading Click to upload or drag and drop, CSV file up to 10MB, the uploaded file import-reservations.csv at 2 KB below it, a switch turned on labelled Automatically create missing booking sources with the line New sources found in the file will be added to your property, and a Download CSV template link. Cancel and Import buttons sit at the foot.
Leave the switch on unless you want the import to stop at any source your property does not already have.

Automatically create missing booking sources decides what happens when the file names a source you do not have. With it on, the source is created as part of the import. A source named in the file that your property does not have yet is shown in the reservation's source picker with (new) after it, so you can see what is about to be created before you agree to it.

As the table fills, a message says how many reservations came out of how many lines: green across the top of the screen if every row is clean, red above the table if any is not. Reading it is worth the two seconds. If the count of reservations equals the count of lines in a file you know contains a two-room booking, the grouping column is missing.

Fixing a flagged row

Rows the screen cannot accept are marked, and the reasons are listed on the row. The commonest by a distance is a room type: the file says DBL and your property calls it STDD.

Press the arrow at the start of a row to open its editor. Everything is editable here, and edits stay in the browser until you submit, so nothing is at risk while you work.

One reservation expanded inside the import table. On the left, Check-In, Check-Out, Nights, Arrival Flight and Departure Flight fields. On the right, a Reservation Source picker reading Sterling Travel (new), a Guests list with Chidi Okafor marked Lead and an Add guest button, and a Rooms list with a Room Type of Family Room, its rate, quantity and adult, child and infant counts, and an Add room button. A Done button closes it.
The editor for one reservation. Rooms and guests can both be added here, which is the other way to describe a booking the file could not.
  • Room Type is a dropdown of your property's accommodation types. Choosing the right one clears the error immediately.
  • Reservation Source lists your booking sources. A source that came from the file and does not exist yet appears with (new) after it.
  • Guests and Rooms both have an add button, so a booking the file described badly can be repaired here rather than in the spreadsheet. Exactly one guest carries the Lead marker.
  • Nights is checked against the dates. Correct whichever of the three is wrong.

If a great many rows are flagged for the same reason, it is quicker to fix the spreadsheet and upload it again. A second upload replaces the table rather than adding to it.

Submitting, and partial imports

Submit Import becomes available once no row is flagged. It sends every reservation in the table at once.

The server applies one more set of rules that the browser cannot, and occupancy is the one you will meet: an accommodation type has a maximum number of adults and children, and a file that puts four adults in a twin room passes every check on this screen and is refused on arrival. When that happens the import is partial. Everything acceptable is created, the refusals are not, and a message names each one by row and by guest.

A red banner above the import table reading Imported 4 of 5 reservations. 1 skipped, followed by Row 4 (Mikael Lindqvist): Room 1: a Twin Room sleeps 2 adults, and the file puts 4 adults in 1 room.
Four reservations exist now. The fifth does not, and the table stays on screen so it can be corrected and sent again.

When everything is accepted the table empties and a confirmation appears. The reservations are in the calendar and the reservation list from that moment.

What Total Rate is telling you

Total Rate on each row is the sum of the Room Rate values of that reservation's rooms. It does not multiply by nights, it does not multiply by quantity, and it does not add tax or anything else. A three-night booking at 185 a night shows 185, and a two-room booking of 240 and 190 shows 430.

Treat it as a way of telling rows apart rather than as the value of the booking. Whether the number in your file is a nightly rate or a stay total depends on the system it came out of, and this screen does not ask.

Who can do this

The screen is gated on Individual reservations management., in the Reservations group of the role editor, which is the same permission as creating a reservation by hand. That is deliberate: an import creates reservations in bulk, so it is not a lesser right than creating one. Without it the screen says so and offers nothing. With view rights but not create, the screen opens and the buttons that would write are unavailable.

Where to go next

Common questions

  • Can I undo an import?

    Not as one action. Everything an import creates is an ordinary reservation, so undoing means cancelling or deleting them one at a time from the reservation list. This is the reason the screen makes you look at the table before submitting: the review is the only cheap moment to change your mind.

  • The file uploaded but the table is empty.

    Every line was skipped, which happens when the headings do not match. The parser looks for exact column names, so Guest name is not Guest Name, and a file exported with its own headings will produce nothing at all rather than a partial result. Download the template and copy its first line into your file.

  • Do imported reservations send confirmation emails to guests?

    Whether they do depends on your email schedules, and it is worth thinking about before a migration rather than afterwards. A rule that fires on a booking becoming confirmed can fire for hundreds of historical bookings at once. If that would be unwelcome, switch the relevant schedules off, run the import, and switch them back on.

  • Can I import guests or rates this way?

    No. This screen creates reservations, and the guest records it creates are the ones named on those reservations. Rates, accommodation types and booking sources have to exist before the import runs, apart from booking sources, which the auto-create switch will add.

  • What happens to a row I delete from the table?

    Nothing beyond the table. Deleting a row removes it from what will be submitted; it does not touch the file and it does not affect anything already in Prostay. Uploading the file again brings it back.

Was this article helpful?

Related articles

Still stuck?

Support answers from inside the app as well, so if you are already signed in you will get a faster reply there. Otherwise send us the property name and what you were trying to do.