VRPlatformVRPlatform

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

PropertyDescription
accountIdThe account to post to
amountValue in cents (positive = credit, handling varies by type)
descriptionLine description
listingIdOptional link to a listing
reservationIdOptional link to a reservation (deposits)
contactIdOptional 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:

StatusDescription
unpaidBill recorded, payment pending
underpaidPartial payment made
paidFully paid
overpaidExcess 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:

PropertyDescription
markupAmountAdditional amount charged to owner
markupTaxRateTax rate on markup (basis points)
markupTaxBehaviorincluded 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

MethodEndpointDescription
GET/transactionsList transactions with filters
GET/transactions/{id}Get transaction details
POST/transactionsCreate a transaction
PUT/transactions/{id}Update a transaction
DELETE/transactions/{id}Delete a transaction
POST/transactions/{id}/archiveArchive a transaction
POST/transactions/{id}/unarchiveRestore an archived transaction

Filtering Transactions

GET /transactions?type=expense&listingId=listing-123&dateFrom=2024-01-01&dateTo=2024-12-31

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

ConditionBlocked Operations
Date before books closedCreate, edit, delete, archive/unarchive
Attached to owner statementEdit, delete

Exception: You can change an expense payment date if the new date is in an open period.

On this page