VRPlatformVRPlatform

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 TypeDescription
rentAccommodation charges
cleaningFeeCleaning service charges
guestFeeAdditional guest charges
taxApplicable taxes
discountPromotional discounts (negative amount)
damageDamage deposits or charges
otherMiscellaneous 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

StatusDescriptionFinancial Impact
bookedConfirmed reservationIncluded in all calculations
canceledGuest canceledRevenue entries marked inactive, adjustments remain
inactiveExcluded entirelyNo 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 accountsReceivable account
  • Co-host (Airbnb): Uses deposit_coHostPayout account

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:

  1. Period locked: Reservation data falls before books closed date
  2. Statement locked: Attached to an owner statement
  3. 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:

MethodWhen Revenue is Recorded
checkInGuest arrival date
checkOutGuest departure date
bookedAtReservation confirmation date
proRataSpread 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: $100

Common 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

MethodEndpointDescription
GET/reservationsList reservations with filters
GET/reservations/{id}Get reservation details
POST/reservations/{id}/adjustmentsAdd 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=booked

Response 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:

CodeSeverityDescription
lockedwarningCannot modify - data is locked
guestTotalsMismatchwarningCalculated totals don't match source
inactiveListingwarningReservation on inactive listing
lineNotFounderrorReferenced payment line missing

On this page