Transactions
Deposits, expenses, and transfers - manual financial entries
Transactions
Overview
Transactions are manual financial entries you create to record money movement. There are three types:
- Deposits: Money received (guest payments, channel payouts)
- Expenses: Money spent (repairs, utilities, supplies)
- Transfers: Owner payouts and fund movements
Unlike reservations which sync automatically from booking channels, transactions are created manually or via API integration.
Transaction Types
Deposits
Deposits record money received into your accounts.
Common use cases:
- Guest payments (direct bookings)
- Channel payouts (Airbnb, VRBO disbursements)
- Security deposit receipts
- Opening balances
- Miscellaneous income
Key features:
- Can link to reservations to track expected vs received payments
- Support merchant fees (payment processing costs)
- Can include channel fees
- Handle security deposits and refunds
Expenses
Expenses record costs incurred for properties or operations.
Common use cases:
- Repairs and maintenance
- Utilities (electric, water, gas)
- Cleaning costs
- Supplies and consumables
- Professional services
- Property taxes and insurance
Key features:
- Track payment status (unpaid, paid, etc.)
- Support markup for owner-billed expenses
- Can include tax on markup
- Link to vendors (contacts)
Transfers
Transfers record owner payouts and fund movements.
Common use cases:
- Owner distributions
- Trust account transfers
- Bank-to-bank movements
Key features:
- Must have exactly one line
- Track payment date separately from transaction date
- Link to owner statements when triggered from statement publishing
Transaction Lines
Each transaction contains one or more lines (except transfers which have exactly one).
Line Properties
| Property | Description |
|---|---|
accountId | The account to post to |
amount | Value in cents (positive = credit, handling varies by type) |
description | Line description |
listingId | Optional link to a listing |
reservationId | Optional link to a reservation (deposits) |
contactId | Optional link to vendor/owner |
Linking Lines
To a listing: Revenue/expense attributed to that property and its owners To a reservation: Links deposit to expected payment, updates AR To a contact: Associates with vendor (expenses) or owner (transfers)
Payment Status (Expenses)
Expenses track whether they've been paid:
| Status | Description |
|---|---|
unpaid | Bill recorded, payment pending |
underpaid | Partial payment made |
paid | Fully paid |
overpaid | Excess payment made |
Payment date: When paidStatus is paid, the paidAt date determines when the bank entry is recorded.
Expense Markup
For owner-billed expenses, you can add markup:
| Property | Description |
|---|---|
markupAmount | Additional amount charged to owner |
markupTaxRate | Tax rate on markup (basis points) |
markupTaxBehavior | included or excluded |
Example: $250 repair + $50 markup = $300 billed to owner
Opening Balances
Deposits can record opening balances when migrating to VRPlatform:
- Set transaction date before your general ledger start date
- System records as opening balance entry
- Useful for migrating bank account balances
Opening advance deposits: Handle payments received before your GL start for reservations occurring after. System automatically creates proper accounting entries.
Common Scenarios
Recording a Channel Payout
POST /transactions
{
"type": "deposit",
"date": "2024-06-01",
"description": "Airbnb Payout - June Week 1",
"bankAccountId": "bank-trust-123",
"lines": [
{
"reservationId": "res-123",
"amount": 45000,
"description": "Booking ABC123"
},
{
"reservationId": "res-456",
"amount": 32000,
"description": "Booking DEF456"
}
],
"merchantFee": {
"amount": 2310,
"accountId": "account-merchant-fees"
}
}Recording a Repair Expense
POST /transactions
{
"type": "expense",
"date": "2024-06-15",
"description": "HVAC Repair - Beach House",
"contactId": "vendor-hvac-123",
"lines": [
{
"accountId": "account-repairs",
"listingId": "listing-123",
"amount": 25000,
"description": "AC compressor replacement"
}
],
"paidStatus": "paid",
"paidAt": "2024-06-15",
"paymentAccountId": "bank-operating-456"
}Recording an Owner Payout
POST /transactions
{
"type": "transfer",
"date": "2024-06-30",
"description": "June Owner Payout - John Smith",
"lines": [
{
"accountId": "account-owner-payout",
"contactId": "owner-john-123",
"amount": 150000,
"description": "June 2024 distribution"
}
],
"paidAt": "2024-06-30"
}API Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /transactions | List transactions with filters |
GET | /transactions/{id} | Get transaction details |
POST | /transactions | Create a transaction |
PUT | /transactions/{id} | Update a transaction |
DELETE | /transactions/{id} | Delete a transaction |
POST | /transactions/{id}/archive | Archive a transaction |
POST | /transactions/{id}/unarchive | Restore an archived transaction |
Filtering Transactions
GET /transactions?type=expense&listingId=listing-123&dateFrom=2024-01-01&dateTo=2024-12-31Response Structure
{
"id": "txn-123",
"type": "expense",
"date": "2024-06-15",
"description": "HVAC Repair",
"status": "active",
"paidStatus": "paid",
"paidAt": "2024-06-15",
"currency": "USD",
"lines": [
{
"id": "line-1",
"accountId": "account-repairs",
"accountName": "Repairs & Maintenance",
"listingId": "listing-123",
"listingName": "Beach House",
"amount": 25000,
"description": "AC compressor replacement"
}
],
"totals": {
"amount": 25000
},
"contact": {
"id": "vendor-hvac-123",
"name": "ABC HVAC Services"
},
"issues": []
}Locking Rules
Transactions are subject to locking:
| Condition | Blocked Operations |
|---|---|
| Date before books closed | Create, edit, delete, archive/unarchive |
| Attached to owner statement | Edit, delete |
Exception: You can change an expense payment date if the new date is in an open period.
Related Topics
- Accounts - Where transactions post
- Reservations - Link deposits to bookings
- Contacts - Vendors and owners
- Owner Statements - Transfers from statements
- Locking - Modification restrictions
