VRPlatformVRPlatform

Contacts

Owners and vendors, company types, payout accounts, and tax information

Contacts

Overview

Contacts represent people and companies you work with. They fall into two categories:

  • Owners: Property owners who receive rental income distributions
  • Vendors: Service providers who receive expense payments

Contacts are essential for:

Key Concepts

Contact Types

TypeDescriptionUse For
ownerProperty ownersOwnership periods, owner statements, payouts
vendorService providersExpense payments, vendor bills

Company Types

Contacts can be individuals or business entities:

Company TypeDescription
(none)Individual person
limited_liability_companyLLC
c_corporationC Corp
s_corporationS Corp
partnershipPartnership
trust_estateTrust or Estate

Company type affects tax reporting requirements (1099-MISC, 1099-NEC, etc.).

Contact Status

StatusDescription
activeContact is in use
inactiveContact is disabled

Contact Information

Each contact can have:

  • Name: Display name (company or individual)
  • First name: For individuals
  • Email: Contact email address
  • Phone: Contact phone number
  • Address: Full mailing address

Payout Accounts

Owners can have a designated payout account (payoutAccountId) for receiving distributions. When creating transfers, this account is used for the payment.

Tax Information

For tax reporting purposes, contacts store:

  • Tax identifier: SSN or EIN (masked in responses for security)
  • Used for 1099 generation
  • Company type determines reporting requirements

External References

FieldDescription
uniqueRefYour internal contact ID for cross-referencing
connectionIdLink to PMS or external system
sourceExternal system reference

Ownership Periods

The response includes listings where this contact is an owner:

  • ownershipPeriods: All historical ownership periods
  • activeOwnerships: Currently active ownership periods

Common Scenarios

Creating an Owner

POST /contacts
{
  "type": "owner",
  "name": "John Smith",
  "firstName": "John",
  "email": "john@example.com",
  "phone": "+1-555-123-4567",
  "companyType": null,
  "taxIdentifier": "123-45-6789",
  "address": {
    "street": "123 Main Street",
    "city": "Miami",
    "state": "FL",
    "zipCode": "33101",
    "country": "US"
  },
  "payoutAccountId": "account-owner-payout"
}

Creating a Vendor

POST /contacts
{
  "type": "vendor",
  "name": "ABC Cleaning Services",
  "companyType": "limited_liability_company",
  "email": "info@abccleaning.com",
  "phone": "+1-555-987-6543",
  "taxIdentifier": "12-3456789",
  "address": {
    "street": "456 Business Ave",
    "city": "Miami",
    "state": "FL",
    "zipCode": "33102",
    "country": "US"
  }
}

Creating an LLC Owner

POST /contacts
{
  "type": "owner",
  "name": "Smith Family Holdings LLC",
  "companyType": "limited_liability_company",
  "email": "admin@smithholdings.com",
  "taxIdentifier": "87-6543210"
}

Updating a Contact

PUT /contacts/contact-123
{
  "email": "newemail@example.com",
  "payoutAccountId": "account-new-payout"
}

API Endpoints

MethodEndpointDescription
GET/contactsList contacts with filters
GET/contacts/{id}Get contact details
POST/contactsCreate a new contact
PUT/contacts/{id}Update a contact
DELETE/contacts/{id}Delete a contact

Filtering Contacts

GET /contacts?type=owner&status=active
GET /contacts?type=vendor&connectionId=conn-123

Response Structure

{
  "id": "contact-123",
  "type": "owner",
  "status": "active",
  "name": "John Smith",
  "firstName": "John",
  "email": "john@example.com",
  "phone": "+1-555-123-4567",
  "companyType": null,
  "taxIdentifier": "***-**-6789",
  "uniqueRef": "OWNER-001",
  "payoutAccountId": "account-owner-payout",
  "address": {
    "street": "123 Main Street",
    "city": "Miami",
    "state": "FL",
    "zipCode": "33101",
    "country": "US"
  },
  "source": {
    "type": "hostaway",
    "id": "hostaway-owner-456"
  },
  "ownershipPeriods": [
    {
      "listingId": "listing-abc",
      "split": 100,
      "startAt": "2024-01-01",
      "endAt": null
    }
  ],
  "activeOwnerships": [
    {
      "listingId": "listing-abc",
      "split": 100,
      "startAt": "2024-01-01",
      "endAt": null
    }
  ]
}

Batch Operations

For syncing from external systems, contacts support batch upsert:

POST /contacts/batch
{
  "connectionId": "conn-pms-123",
  "data": [
    {
      "uniqueRef": "OWNER-001",
      "type": "owner",
      "name": "John Smith",
      "email": "john@example.com"
    },
    {
      "uniqueRef": "OWNER-002",
      "type": "owner",
      "name": "Jane Doe",
      "email": "jane@example.com"
    }
  ]
}

On this page