Post charges to a guest reservation
This page covers the technical steps for posting a POS charge to a guest’s reservation.
To know which folio you want to post to, you need:
- Booking API - (to get the reservation by the guest name or room number)
- Finance API - (to create or retrieve folio and post charges and payments)
Search the guest
To find the guest where charges should be added, use the Booking API:
GET /booking/v1/reservations
Searching for an in-house guest within a property is done using the guest first name and/or last name, or by the room number via the textSearch filter. It returns all guests matching the criteria; choose the relevant one.
Check whether the reservation accepts charges
Every reservation returned by the Booking API includes an isOpenForCharges property. It’s a boolean the hotel sets to indicate whether POS apps should post charges to that reservation’s folio:
"isOpenForCharges": true
| Value | Meaning |
|---|---|
true |
The hotel allows charges to be posted to this reservation. |
false |
The hotel does not want charges posted to this reservation. |
isOpenForChargesis informational only. Posting a charge to a reservation withisOpenForCharges: falsewill still succeed. Your POS app is responsible for checking this flag and respecting it before calling the charge endpoint below.
Search the folio
The Finance API lets you access folios, invoices, and accounting. The first call you’ll need is:
GET /finance/v1/folios
Add reservationIds as a query parameter and type as Guest, then either get the main folio or use custom logic to find the folio you want to add charges or payments to.
You must use the first folio that contains AddCharge in allowedActions. If no such folio exists, create a new one:
POST /finance/v1/folios
Once you’ve identified the folio to use, you can perform different actions. The most useful:
POST /finance/v1/folio-actions/{folioId}/charges
By default, the current date is the business date. In some cases, you might want to post the charge to the previous business date — this is only possible until 6 AM of the present day.
Post charges to a booking folio
For group/multi-room bookings you might need to post charges on the booking folio rather than a reservation folio. Take a group dinner, for example. It’s billed to the booking, not to a single guest’s room.
Find the booking ID
Before you can search for the booking folio, you need the booking ID. There are two ways to get it, depending on what you already have:
If you have a reservation ID:
GET /booking/v1/bookings?reservationId={id}
If you only have the booker’s details, search by last name, first name, email, or company name using full-text search:
GET /booking/v1/bookings?textSearch={query}
Either call returns the booking, including its id. As with reservation search, you might get more than one result; pick the relevant one.
Search the booking folio
Once you have the booking ID, search for the booking folio, filtering by bookingId instead of reservationIds, with type as Booking:
GET /finance/v1/folios?bookingId={id}&type=Booking
Once you’ve identified the folio, post charges the same way as for a guest reservation:
POST /finance/v1/folio-actions/{folioId}/charges
A charge posted to a booking folio is not paid by guests but by one booker/company. Use this when the charge doesn’t belong to one specific reservation. For example, a shared service for the whole party is billed to the organiser.
Posting tips
If the guest pays a tip and it’s posted to the folio together with the charge, book it as a transitory item:
POST /finance/v1/folio-actions/{folioId}/transitory-charges
Example
{
"name":"TIP Restaurant:1637",
"amount":{
"amount":3,
"currency":"EUR"
},
"receipt":"1637",
"businessDate":"2026-02-22"
}
Corrections
Two allowance endpoints let you correct a charge, depending on whether the correction applies to one specific charge or to the folio as a whole.
Post an allowance against a specific charge
If a single charge needs correcting, for example, the service was canceled or you’re applying a discount, post an allowance directly against that charge:
POST /finance/v1/folio-actions/{folioId}/charges/{chargeId}/allowances
Example
{
"reason":"Goodwill discount",
"amount": {
"amount":5.0,
"currency":"EUR"
}
}
This keeps the original charge on the folio and links the allowance to it, so both the mistake and the correction stay traceable together.
Post a general allowance
If the correction doesn’t apply to one specific charge, for example, a goodwill gesture applied across several items rather than to a single item, post the allowance directly on the folio instead:
POST /finance/v1/folio-actions/{folioId}/allowances
Example
{
"serviceType":"Other",
"vatType":"Normal",
"subAccountId":"MUC-REST",
"reason":"Good guy discount",
"amount": {
"amount":22,
"currency":"EUR"
}
}
Use this version when there’s no single charge to point to. The folio-level
allowance doesn’t require a chargeId.
> By default, the current date is the business date. In some cases, you might want to post the charges to the previous business date; this is only possible until 6 AM of the present day.
You can also refund a transitory charge if there was some error. For example, if you posted 50 EUR transitory charge for an excursion and want to delete it, add the same charge but insert -50 EUR.