Create the booking
This page covers how to submit the booking to Apaleo once the guest has confirmed their details and the payment has been authorised.
Booking request
Call the bookings endpoint with the guest details, reservation data, and the PSP reference from the payment step:
POST /booking/v1/bookings
{
"booker": {
"firstName": "Jon",
"lastName": "Doe",
"email": "jon.doe@example.com",
"phone": "+4989123343",
"address": {
"addressLine1": "My Street 1",
"postalCode": "12453",
"city": "Munich",
"countryCode": "DE"
}
},
"reservations": [
{
"arrival": "2026-03-15",
"departure": "2026-03-17",
"adults": 2,
"channelCode": "Ibe",
"primaryGuest": {
"firstName": "Jon",
"lastName": "Doe",
"email": "jon.doe@example.com"
},
"guaranteeType": "Prepayment",
"timeSlices": [
{ "ratePlanId": "MUC-NONREF-SGL" },
{ "ratePlanId": "MUC-NONREF-SGL" }
],
"services": [
{ "serviceId": "MUC-BRKF" }
],
"prePaymentAmount": {
"amount": 151.00,
"currency": "EUR"
}
}
],
"transactionReference": "851570021506441J"
}
channelCode
Always set channelCode to "Ibe" for reservations created through your booking
engine. This field drives reporting, revenue attribution, and channel-specific rate
plan filtering. Using "Direct" will misattribute bookings.
transactionReference
Set transactionReference to the pspReference returned by Adyen after a
successful authorisation. When a transactionReference is present, Apaleo
finalises the transaction automatically once the booking is confirmed — regardless
of the reservation’s guarantee type or the property’s payment automation settings.
Only set
transactionReferenceif you collected a payment from the guest. ForCreditCardandPM6Holdguarantee types where no charge was made, omit this field. Passing atransactionReferencewithout a corresponding prepayment intent will trigger an unintended capture.
prePaymentAmount
Set prePaymentAmount to the sum of the prePaymentGrossAmount values from all
selected offers, including any service offers the guest added.
Do not include city tax or custom fees — Apaleo adds those automatically. All amounts must be gross amounts.
Amount alignment:
prePaymentAmountis in major currency units (for example,151.00 EUR). The amount you passed to Adyen in the payment step was in minor units (15100). These must represent the same value. A mismatch will cause transaction finalisation to fail.
Payment account
If you want to store the guest’s card against the booking for future charges — no-shows, late cancellations, post-stay billing — you can create the payment account directly in the booking creation request by including the tokenisation values from the Adyen response in the request body:
{
"booker": { ... },
"reservations": [ ... ],
"transactionReference": "851570021506441J",
"paymentAccount": {
"payerReference": "575b0100-b261-4a36-94cb-eeb49f7c98d3",
"storedPaymentMethodId": "8415689021960227"
}
}
Set storedPaymentMethodId to "LATEST" to use the most recent authorisation for
a given payerReference.
If you need to create or update a payment account after the booking is already confirmed, use the dedicated endpoints:
Using the pspReference from the authorisation:
POST /booking/v1/payment-accounts/by-authorization
{
"target": { "type": "Booking", "id": "KYKXKLWL" },
"transactionReference": "851570021506441J"
}
Using the tokenisation values from the Adyen response:
POST /booking/v1/payment-accounts/by-stored-payment-method
{
"target": { "type": "Booking", "id": "KYKXKLWL" },
"payerReference": "575b0100-b261-4a36-94cb-eeb49f7c98d3",
"storedPaymentMethodId": "8415689021960227"
}
For the full payment accounts guide, see Payment accounts.
Webhooks
If you subscribe to the ReservationCreated event, you can trigger notifications
— for example, a booking confirmation email — as soon as Apaleo confirms the
reservation. See Webhooks.