Reservations
Bookings, payment lines, adjustments, and reservation statuses
Reservations
Overview
Reservations represent guest bookings, typically synced from booking channels like Airbnb, VRBO, or your property management system. Each reservation contains financial line items (payment lines) and can have manual adjustments.
Reservations are central to VRPlatform's accounting because they:
- Generate accounts receivable (money owed)
- Trigger recurring fee calculations
- Drive owner statement revenue
- Link deposits to expected payments
Key Concepts
Payment Lines
Payment lines are the individual charges within a reservation. They come from your booking channel or PMS and represent what the guest is paying for.
| Line Type | Description |
|---|---|
rent | Accommodation charges |
cleaningFee | Cleaning service charges |
guestFee | Additional guest charges |
tax | Applicable taxes |
discount | Promotional discounts (negative amount) |
damage | Damage deposits or charges |
other | Miscellaneous charges |
Each line has:
- Amount: Value in cents (e.g., 50000 = $500.00)
- Description: Human-readable description
- Account mapping: Which account the line posts to
Reservation Status
| Status | Description | Financial Impact |
|---|---|---|
booked | Confirmed reservation | Included in all calculations |
canceled | Guest canceled | Revenue entries marked inactive, adjustments remain |
inactive | Excluded entirely | No financial impact |
Canceled reservations:
- Payment lines become inactive (not counted in owner revenue)
- Adjustments remain active (visible on guest folio)
- Useful for tracking cancellation fees or refunds
Accounts Receivable (AR)
Accounts receivable represents money owed from guests or channels. The AR amount is calculated from active payment lines and posted to your AR account.
AR calculation:
AR = Sum of active payment lines (owner party)The AR account used depends on the business model:
- Managed: Uses
accountsReceivableaccount - Co-host (Airbnb): Uses
deposit_coHostPayoutaccount
Adjustments
Adjustments are manual modifications to reservations. There are three types:
Owner Adjustments
Changes that affect the owner's payout. Creates a single entry on the line type's account.
Use cases:
- One-time credits or charges
- Corrections to synced data
- Special owner arrangements
Manager Adjustments
Changes that affect manager commission. Creates balanced entries on both owner and manager sides.
Use cases:
- Commission adjustments
- Shared expense corrections
Fee Adjustments
Modifications to recurring fee calculations. Creates balanced entries on the fee's debit/credit accounts.
Use cases:
- Override calculated management fee
- Waive a specific fee for a reservation
Locking
Reservations can be locked in several ways:
- Period locked: Reservation data falls before books closed date
- Statement locked: Attached to an owner statement
- Entry locked: Individual entries attached to statements
When locked, you cannot:
- Cancel or uncancel the reservation
- Add or remove adjustments
- Modify payment lines
Revenue Recognition
How and when reservation revenue is recorded depends on your revenue recognition settings:
| Method | When Revenue is Recorded |
|---|---|
checkIn | Guest arrival date |
checkOut | Guest departure date |
bookedAt | Reservation confirmation date |
proRata | Spread across each night of stay |
Pro-rata example:
Reservation: June 1-5 (4 nights)
Total rent: $400
Revenue recorded:
- June 1: $100
- June 2: $100
- June 3: $100
- June 4: $100Common Scenarios
Adding an Owner Adjustment
Add a $50 credit for a guest complaint:
POST /reservations/res-123/adjustments
{
"type": "owner",
"amount": -5000,
"description": "Guest compensation - AC issue",
"lineType": "rent"
}Adding a Fee Adjustment
Override the management fee for this reservation:
POST /reservations/res-123/adjustments
{
"type": "fee",
"recurringFeeId": "fee-mgmt-123",
"amount": -2500,
"description": "Waive 50% of management fee"
}API Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /reservations | List reservations with filters |
GET | /reservations/{id} | Get reservation details |
POST | /reservations/{id}/adjustments | Add an adjustment |
PUT | /reservations/{id}/adjustments/{adjustmentId} | Update an adjustment |
DELETE | /reservations/{id}/adjustments/{adjustmentId} | Remove an adjustment |
Filtering Reservations
GET /reservations?listingId=listing-123&checkInFrom=2024-06-01&checkInTo=2024-06-30&status=bookedResponse Structure
{
"id": "res-123",
"confirmationCode": "ABC123",
"status": "booked",
"listingId": "listing-456",
"checkIn": "2024-06-01",
"checkOut": "2024-06-05",
"nights": 4,
"guests": 2,
"guestName": "John Smith",
"guestEmail": "john@example.com",
"currency": "USD",
"source": {
"type": "airbnb",
"id": "airbnb-booking-789"
},
"paymentLines": [
{
"id": "line-1",
"type": "rent",
"amount": 50000,
"description": "4 nights accommodation"
},
{
"id": "line-2",
"type": "cleaningFee",
"amount": 15000,
"description": "Cleaning fee"
}
],
"adjustments": [],
"totals": {
"gross": 65000,
"accountsReceivable": 65000,
"fees": 13000
},
"issues": []
}Validation & Issues
The issues array indicates potential problems:
| Code | Severity | Description |
|---|---|---|
locked | warning | Cannot modify - data is locked |
guestTotalsMismatch | warning | Calculated totals don't match source |
inactiveListing | warning | Reservation on inactive listing |
lineNotFound | error | Referenced payment line missing |
Related Topics
- Listings - Properties where reservations occur
- Recurring Fees - Automated fee calculations
- Revenue Recognition - When revenue is recorded
- Transactions - Recording deposits for payments
- Locking - Modification restrictions
