Management session authentication
Property managers scripting against the Core API should complete Getting Started — Recommended Setup Sequence steps 1–3 (General information, Users, Preferences) before wiring POST /auth/login — this is operator JWT auth, not partner Authentication Bearer keys. Finish steps 4–15 and Onboarding a New Property — Step 7 before portfolio-wide automation touches live bookings. When sign-in was restored mid-setup, see Getting Started — Lockout catch-up after password recovery (refresh Bearer JWT before MCP or scripted calls resume). Guide pairing after go-live: Setup sequence after go-live (hub: API Reference — Setup sequence after go-live).
Start with How it differs from integration auth and Sign-in flow, then Authenticated API calls for curl examples. Contrast Authentication (partner Bearer keys on integration prefixes). For scripted retries after expiry, see Error Handling on 401 refresh failures. External AI clients: Landlord MCP alternative. Non-linear operator habits (Lockout catch-up, Pending manual receipt approval, Reject/revert mistaken receipts, Portfolio segmentation by tenant category, Notification row-click navigation, Payment alert to receivables triage, Confirmation alert triage, Finance debt receivables triage, Handling a Late Payment collections, Finance Income status drill-down, Cash flow forecast drill-down) have matching Related subsections below. Full pairing matrix: Management session section cross-reference · API Reference — API guide cross-reference.
This page documents operator authentication for the Vivin Core API — the same session the management frontend uses at platform.vivin.app. It is not the partner integration Bearer token used for GET /{platform}-integration/listings and similar routes.
Use this when you build internal automation, one-off scripts, or evaluate HTTP routes before wiring Landlord MCP. For production AI clients, prefer Landlord MCP tools (they enforce the same permissions as the UI).
How it differs from integration auth
Partner integrations use long-lived Bearer keys — Authentication. Never paste integration keys into Core /api Swagger below. Full endpoint map: Management session section cross-reference.
| Aspect | Management session | Partner integration |
|---|---|---|
| Who | Property managers, Vivin internal operators | Channel managers, OTAs, booking engines |
| Credential | Email + password → short-lived JWT in response body | Long-lived API key in Authorization: Bearer |
| Refresh | httpOnly cookie (POST /auth/refresh) — not readable from JavaScript | Key does not rotate unless Vivin rotates it |
| Scope | User role + accountId on every domain route | Single integration platform + account |
| Docs surface | Core API Swagger at /api when enabled (see below) | Per-integration Swagger at /{platform}-integration |
Sign-in flow
Browser clients rely on httpOnly refresh cookies — command-line scripts need curl -c cookies.txt -b cookies.txt. Session UX: Getting Started — Staying signed in. Full endpoint map: Management session section cross-reference.
POST /auth/login HTTP/1.1
Host: api.vivin.app
Content-Type: application/json
{
"email": "[email protected]",
"password": "your-password"
}
Response (200) — short-lived access token plus user and account context:
{
"token": "<JWT>",
"user": {
"id": "…",
"email": "[email protected]",
"firstName": "…",
"lastName": "…",
"role": "…",
"accountId": "…"
},
"account": {
"id": "…",
"companyName": "…",
"logoUrl": "…"
}
}
The server also sets an httpOnly refresh cookie on the response. Browser clients (the management frontend) send that cookie automatically on POST /auth/refresh. Command-line scripts must preserve cookies between requests (for example curl -c cookies.txt -b cookies.txt).
Command-line example (login + refresh cookie)
Replace api.vivin.app with your API host (http://localhost:3000 when running Core API locally):
# 1) Sign in — save Set-Cookie refresh token to a jar and read the access JWT
curl -sS -c cookies.txt -X POST 'https://api.vivin.app/auth/login' \
-H 'Content-Type: application/json' \
-d '{"email":"[email protected]","password":"your-password"}' \
| tee login.json
export VIVIN_JWT="$(jq -r .token login.json)"
# 2) Call a protected route
curl -sS -b cookies.txt -H "Authorization: Bearer ${VIVIN_JWT}" \
'https://api.vivin.app/bookings?limit=5'
# 3) When the JWT expires, refresh (cookie only — no body)
curl -sS -b cookies.txt -c cookies.txt -X POST 'https://api.vivin.app/auth/refresh' \
| tee refresh.json
export VIVIN_JWT="$(jq -r .token refresh.json)"
# 4) End the session server-side
curl -sS -b cookies.txt -c cookies.txt -X POST 'https://api.vivin.app/auth/logout'
The refresh cookie name and attributes are managed by Core API — treat cookies.txt as a secret alongside the JWT.
Authenticated API calls
Refresh with POST /auth/refresh when JWT expires — 401 patterns in Error Handling. Permission matrix: Users and roles. Full endpoint map: Management session section cross-reference.
Send the access token on every protected route:
GET /bookings HTTP/1.1
Host: api.vivin.app
Authorization: Bearer <JWT>
When the JWT expires, call POST /auth/refresh with the refresh cookie (no body, no access token required). A successful refresh returns a new token in the body and rotates the refresh cookie.
POST /auth/logout revokes the current refresh token and clears the cookie. Safe to call even when the access token is already expired.
Operator-visible behaviour (silent refresh, session-expired message, sidebar Logout) is described in Getting Started — Staying signed in.
sequenceDiagram
participant Client as Script or browser
participant API as Core API
Client->>API: POST /auth/login (email + password)
API-->>Client: 200 body.token (JWT) + Set-Cookie refresh
Client->>API: GET /bookings Authorization Bearer JWT
alt JWT expired
Client->>API: POST /auth/refresh (refresh cookie)
API-->>Client: 200 new token + rotated cookie
Client->>API: Retry protected route with new JWT
end
Client->>API: POST /auth/logout (refresh cookie)
API-->>Client: Refresh revoked; cookie cleared
Permissions and multi-tenancy
Every route filters by signed-in accountId — same tenancy model as partner reads after Property & Unit Mapping. Do not reuse management JWTs on integration prefixes. Full endpoint map: Management session section cross-reference.
Every management route is scoped to the signed-in user's accountId. Module tabs and write actions additionally require role permissions (for example finance.approve_payments, bookings.create) — the same matrix documented under Users and roles.
401 / 403 responses follow the patterns in Error handling. Integration partners should not reuse management JWTs on integration route prefixes, and vice versa.
Core API Swagger (/api)
Enable locally with ENABLE_CORE_API_SWAGGER=true — integration Swagger stays separate per Try requests in Swagger. Paste JWT from POST /auth/login, not partner Bearer keys. Full endpoint map: Management session section cross-reference.
The internal Core API catalogue (all management and domain routes) is exposed at /api on the API host when ENABLE_CORE_API_SWAGGER=true (or 1) on that environment. It may be disabled on production hosts.
Integration Swagger pages (/uniplaces-integration, /ical-integration, etc.) stay enabled separately — see Try requests in Swagger.
To explore management routes locally:
- Start Core API with
ENABLE_CORE_API_SWAGGER=true. - Open
http://localhost:3000/api. - Click Authorize, choose the Bearer scheme, and paste the JWT from
POST /auth/login(with or without theBearerprefix, per the form hint). - Expand a tag (for example bookings) and use Try it out on a
GETyou have permission to call.
The Bearer control uses the same JWT as programmatic management calls — not your integration API key. Integration Swagger pages (/{platform}-integration) remain separate; see Try requests in Swagger.
On shared API hosts (for example api.vivin.app), /api may return 404 when ENABLE_CORE_API_SWAGGER is not set. Integration Swagger URLs stay available for partners. Operators evaluating management routes on those hosts should use the management UI, Landlord MCP, or a local Core API instance with Swagger enabled.
Landlord MCP alternative
Prefer Landlord MCP for external AI clients — same permissions as the UI without raw HTTP. Booking-scoped automation: Tenant MCP. Full endpoint map: Management session section cross-reference.
Landlord MCP wraps the same Core API behind MCP tools with session-based auth (Mcp-Session-Id). Prefer MCP when external AI clients need structured, permission-aware tool calls instead of raw HTTP.
Authentication paths for Landlord MCP:
| Path | When to use |
|---|---|
| API keys | IDE assistants (Cursor, Claude Desktop), custom scripts — paste Bearer token from AI / MCP |
| MCP OAuth | Hosted connectors (Claude.ai, ChatGPT) — PKCE authorization code on the Core API host |
POST /auth/login (this page) | One-off scripts and Swagger exploration — refresh via httpOnly cookie |
Connector OAuth issues the same management JWT shape as login; see MCP OAuth — Token response.
Management session section cross-reference
Use this table when one operator-auth topic naturally leads into another API guide, operator UI, or downstream workflow — each row links to the docs you should read before or after wiring management HTTP automation.
| API topic / section | Pair with these docs |
|---|---|
| How it differs from integration auth | Authentication, Integrations & Distribution |
| Sign-in flow | Getting Started — Staying signed in, Resetting a Management User Password |
| Authenticated API calls | Error Handling, Users and roles, AI usage (LLM cost ledger on same JWT), Notifications — Payment overdue alerts → Handling a Late Payment — Step 1 (management alert routes), Payment Allocation — Correcting mistaken receipts, Glossary — Invoiced floor (rent) |
| Permissions and multi-tenancy | Property & Unit Mapping (accountId scope), Management Frontend Deep Links |
Core API Swagger (/api) | Try requests in Swagger, Authentication (integration contrast) |
| Landlord MCP alternative | Landlord MCP, MCP OAuth (Claude/ChatGPT connectors), Automation & AI |
| Lockout catch-up after password recovery | Sign-in restored; JWT scripts must refresh | Common Workflows — Lockout catch-up, Sign-in flow, Resetting a Management User Password — Step 3 |
| Pending manual receipt approval | Scripted Finance reads show pending until approval | Common Workflows — Pending manual receipt approval, Finance — Pending manual payments, Payment Allocation |
| Reject/revert mistaken receipts | Duplicate receipts from scripted imports | Common Workflows — Reject/revert mistaken receipts, Finance — Row actions on in-payment rows, Glossary — Credit note (payment reject/revert) |
| Portfolio segmentation by tenant category | JWT portfolio reads by tenant segment | Common Workflows — Portfolio segmentation, Bookings — Other filters, Finance — Tenant category filter |
| Notification row-click navigation | JWT sessions vs /notifications row-click | API Reference — Notification row-click navigation, Common Workflows — Notification row-click navigation, Notifications module — Notification row-click navigation |
| Payment alert to receivables triage | Operator UI vs payment overdue | API Reference — Payment alert to receivables triage, Common Workflows — Payment alert to receivables triage, Handling a Late Payment — Step 1 |
| Confirmation alert triage | Management JWT vs confirmation alerts | API Reference — Confirmation alert triage, Common Workflows — Confirmation alert triage, Processing a New Booking — Step 5b |
| Finance debt receivables triage | Core API reads vs Debt Aging | API Reference — Finance debt receivables triage, Common Workflows — Finance debt receivables triage, Finance module — Finance debt receivables triage |
| Handling a Late Payment collections | Integration surface vs operator collections Steps 1–6 |
| Finance Income status drill-down | JWT Finance reads vs Income modals | API Reference — Finance Income status drill-down, Common Workflows — Finance Income status drill-down, FAQ — Finance Income status drill-down hub |
| Cash flow forecast drill-down | Operator forecast drill-down | API Reference — Cash flow forecast drill-down, Common Workflows — Cash flow forecast drill-down, FAQ — Cash flow forecast drill-down hub |
Related
Related below links operator JWT and refresh cookies to setup, companion API guides, operator workflows, and escalation paths. Pair Setup sequence after go-live with Getting Started — Recommended Setup Sequence; pair Companion API guides with API Reference hub. Topic-to-guide pairing in sections above: Management session section cross-reference. Full hub matrix: API guide cross-reference.
Setup sequence after go-live
Complete Account Settings — Recommended setup order before partner traffic. Hub parity: API Reference — Setup sequence after go-live. Full pairing matrix: Management session section cross-reference · API guide cross-reference.
- Setup steps 1–3 (General Information, Preferences, Users) — Complete before scripted management HTTP; greyed-out routes usually mean step 3 permissions are missing (FAQ — Navigation & shortcuts)
- Setup steps 4–12 — Onboarding a New Property mirrors Account Settings tabs operators configure before automation targets live inventory
- Setup steps 13–15 (Listings, Bookings, Tenants) — Validate
accountId-scoped reads against the same inventory partner Bearer keys see on integration prefixes - After steps 13–15 — Onboarding a New Property — Step 7 go-live verification before escalating JWT or permission errors on management routes
- After step 3 — sign in with Getting Started — Staying signed in; contrast Authentication partner Bearer keys (never paste integration tokens into Core
/apiSwagger) - Prefer Landlord MCP for external AI clients when JWT refresh or permission matrices block raw HTTP scripts
- Escalation — In-app Vivin support tickets via Get Help & Support when management session errors block operator automation (distinct from
[email protected])
Documentation map & escalation
Documentation-map bullets pair with Introduction — Section cross-reference and FAQ — Section cross-reference. Full pairing matrix: Management session section cross-reference.
- Getting Started — Recommended Setup Sequence before partner HTTP traffic; hub parity: API Reference — Setup sequence after go-live
- API Reference hub — Hub pairing matrix across integration guides; hub parity: Setup sequence after go-live
- Get Help & Support — Escalate when JWT refresh or permission errors block management automation (hub: Setup sequence after go-live)
- Using in-app support — Escalate JWT refresh or permission failures that block management automation scripts
- Introduction — Platform overview and how operator JWT routes relate to partner Bearer keys
Companion API guides
Companion guides share Bearer authorization or error shapes with this page — start from API Reference hub. Full pairing matrix: Management session section cross-reference.
- Authentication (integration) — Partner Bearer keys for marketplace and booking-engine feeds
- AI usage — Account-scoped LLM token ledger (
GET /ai-usage,GET /ai-usage/summary) on the same management JWT - Error handling — Standard HTTP error shapes and
401refresh failures - Creating Bookings — Partner write surface (distinct from operator JWT on management routes)
- Webhooks & Notifications — Outbound events when automation listens instead of polling management
GETs - Property & Unit Mapping — Partner
externalIdscope contrast with operatoraccountIdJWT routes
Upstream & downstream workflows
Workflow bullets pair with Common Workflows — Workflow cross-reference after partner traffic lands in the management app. Full pairing matrix: Management session section cross-reference.
- Resetting a Management User Password — Session recovery when JWT refresh fails after password rotation
- Portfolio KPI review — Month-end reconciliation scripts may run before opening Finance management routes
- Handling a Late Payment — Step 1 — Collections scripts that query management Transactions routes after JWT sign-in; upstream path from Notifications — Payment overdue alerts
- Entering Monthly Utility Bills — Supplier bill ingestion scripts that run before opening Utilities → Bills in the UI
Operator UI & settings
Operator UI rows validate the same inventory and permissions behind integration HTTP — pair with Account Settings — Tab cross-reference. Full pairing matrix: Management session section cross-reference.
- Users and roles — Permission matrix behind management routes
- Settings > Preferences — In-app notifications — Alert categories management automation may poll after JWT sign-in
- Settings > Emails — Communication Rules management JWT routes may audit alongside scripted booking imports
- Getting Started — External AI and automation — When to choose Landlord MCP, Tenant MCP, or direct management HTTP
- Getting Started — Staying signed in — Browser silent refresh and session-expired UX
- Management Frontend Deep Links — Bookmarkable routes to share with scripts that open the UI after API queries
- Finance > Deposits — JWT-authenticated deposit refund queue for scripted departure-week reconciliation
Deeper concept reads
Concept reads pair with Concepts hub subsection index and Concept cross-reference. Full pairing matrix: Management session section cross-reference · API guide cross-reference.
- Landlord MCP — Recommended external automation surface for operators (section cross-reference; Deeper API reads; hub)
- Tenant MCP — Booking-scoped alternative when automation targets one reservation (section cross-reference; Deeper API reads; hub)
- Automation & AI — Channel map for in-product AI, chatbot, and external MCP clients (section cross-reference; Deeper API reads; hub)
- Payment Allocation — Operator payment matching behind many management routes (section cross-reference; Deeper API reads; hub)
- Integrations & Distribution — Marketplace partner APIs use integration Bearer keys, not management JWTs from this guide (section cross-reference; Deeper API reads; hub)
- Services Marketplace — Portal service charges management JWT scripts may reconcile on Transactions after tenant Request Service (section cross-reference; Deeper API reads; hub)
- Tenant Portal — Operator JWT workflows that copy portal links from booking Contract Info after management session sign-in (section cross-reference; Deeper API reads; hub)
- FAQ — Tenant contract signing blocked — No PDF yet, mandatory Your Details gates, category locks, or Lease purpose; portal signing vs paper upload on Contract Info
- Booking Lifecycle — Computed Upcoming → Ongoing → Ended / Canceled status model, list filters, and Timeline (section cross-reference; Deeper API reads; hub)
Deeper workflow reads
Workflow reads pair with Common Workflows hub subsection index and Workflow cross-reference. Each workflow sub-guide also has its own Deeper API reads subsection with reciprocal companion API anchors — hub parity: API Reference — Deeper workflow reads. Full pairing matrix: Management session section cross-reference · API guide cross-reference.
- Resetting a Management User Password — Session recovery when JWT refresh fails after password rotation (section cross-reference; Deeper API reads; hub)
- Portfolio KPI review — Month-end reconciliation scripts may run before opening Finance management routes (section cross-reference; Deeper API reads; hub)
- Handling a Late Payment — Collections scripts that query management Transactions routes after JWT sign-in (section cross-reference; Deeper API reads; hub)
- Entering Monthly Utility Bills — Supplier bill ingestion scripts that run before opening Utilities → Bills in the UI (section cross-reference; Deeper API reads; hub)
- Using in-app support — JWT and permission failures worth citing on Vivin product tickets (section cross-reference; Deeper API reads; hub)
Lockout catch-up after password recovery
JWT refresh after password recovery pairs with Resetting a Management User Password — Step 3 before scripted portfolio reads resume. Hub parity: Common Workflows — Lockout catch-up after password recovery. Full pairing matrix: management-session-section-cross-reference · API guide cross-reference.
- Common Workflows — Lockout catch-up after password recovery — Hub matrix when sign-in was restored mid-setup or mid month-end
- Getting Started — Lockout catch-up after password recovery — Canonical operational backlog mesh
- Sign-in flow — Re-run
POST /auth/loginand refresh cookie before portfolio scripts - Landlord MCP — How it connects — External client Bearer JWT refresh after Step 3
- Authentication — Partner Bearer keys unaffected by management lockout
Pending manual receipt approval
Scripted Finance reads after GET /bookings/cache may still show pending until operators Approve payments — pair with Payment Allocation. Hub parity: Common Workflows — Pending manual receipt approval. Full pairing matrix: management-session-section-cross-reference · API guide cross-reference.
- Common Workflows — Pending manual receipt approval — Hub matrix when JWT-authenticated Finance KPIs lag recorded transfers
- Finance — Pending manual payments — Amber Pending chip operators clear in the UI
- Authenticated API calls — Portfolio JWT reads that surface pending rows
- Handling a Late Payment — Step 1 — Collections when scripts show overdue schedules
- Payment Allocation — Two-layer model behind approval lag
Reject/revert mistaken receipts
Operator JWT scripts that bulk-record receipts pair with Finance — Row actions on in-payment rows when duplicates need Reject / Revert. Hub parity: Common Workflows — Reject/revert mistaken receipts. Full pairing matrix: management-session-section-cross-reference · API guide cross-reference.
- Common Workflows — Reject/revert mistaken receipts — Hub matrix when scripted imports created duplicate receipts
- Payment Allocation — Correcting mistaken receipts — Two-layer model and credit note follow-up
- Finance — Row actions on in-payment rows — Portfolio Reject selected after JWT triage
- Error Handling —
403when approval permissions block scripted cleanup - Glossary — Credit note (payment reject/revert) — Accounting follow-up on invoiced rows
Portfolio segmentation by tenant category
JWT portfolio filters should align Tenant category across Bookings, Finance, and Tenants — pair with Settings > Tenant categories. Hub parity: Common Workflows — Portfolio segmentation by tenant category. Full pairing matrix: management-session-section-cross-reference · API guide cross-reference.
- Common Workflows — Portfolio segmentation by tenant category — Hub matrix when scripted KPIs differ by segment
- Bookings — Other filters — Tenant category before account-wide portal changes
- Finance — Tenant category filter — Ledger segmentation (cache-built option list)
- Tenants — Tenant category filter — Profile-count cross-check
- Glossary — Tenant category — Definition and Finance parity
Notification row-click navigation
Management JWT unlocks operator /notifications row-click — integration Bearer keys cannot triage in-app rows via partner HTTP alone. Hub parity: API Reference — Notification row-click navigation. Full pairing matrix: Management session section cross-reference · API guide cross-reference.
- API Reference — Notification row-click navigation — Hub matrix (
notifications-module-row-click-target.png,notifications-row-navigation-flow.mp4) - Common Workflows — Notification row-click navigation — Operator procedure hub
- Notifications module — Notification row-click navigation — Canonical
/notificationsinbox pairing - FAQ — Notification row-click navigation hub — Symptom table
Payment alert to receivables triage
Operator JWT required for payment overdue row-click into booking Transactions — partner tokens do not open management receivables UI. Hub parity: API Reference — Payment alert to receivables triage. Full pairing matrix: Management session section cross-reference · API guide cross-reference.
- API Reference — Payment alert to receivables triage — Hub matrix (
notifications-row-navigate-to-booking-detail.png,notifications-row-navigation-flow.mp4) - Common Workflows — Payment alert to receivables triage — Operator procedure hub
- Handling a Late Payment — Step 1 — Collections follow-through after row-click
- FAQ — Payment alert to receivables triage hub — Symptom table
Confirmation alert triage
Refresh management JWT before Upcoming confirmation alert triage — Management session after lockout catch-up. Hub parity: API Reference — Confirmation alert triage. Full pairing matrix: Management session section cross-reference · API guide cross-reference.
- API Reference — Confirmation alert triage — Hub matrix (
notifications-row-navigate-to-booking-detail.png,bookings-detail-transactions-approve-payment-modal.png) - Common Workflows — Confirmation alert triage — Operator procedure hub
- Processing a New Booking — Step 5b / Step 6 — Canonical confirmation gates
- FAQ — Confirmation alert triage hub — Symptom table
Finance debt receivables triage
Portfolio Debt Aging reads use management JWT — pair Core /api Finance routes with operator receivables triage after imports. Hub parity: API Reference — Finance debt receivables triage. Full pairing matrix: Management session section cross-reference · API guide cross-reference.
- API Reference — Finance debt receivables triage — Hub matrix (
finance-overview-income-chart-debt-aging.png,finance-overview-debt-aging-walkthrough-flow.mp4) - Common Workflows — Finance debt receivables triage — Operator procedure hub
- Finance module — Finance debt receivables triage — Debt Aging canonical surface
- FAQ — Finance debt receivables triage hub — Symptom table
Handling a Late Payment collections
Partner integration reads on Management Session do not replace operator collections — payment overdue in-app rows still need Handling a Late Payment — Steps 1–6 after receivables triage. Hub parity: Common Workflows — Handling a Late Payment collections hub. Full pairing matrix: management-session-section-cross-reference · API guide cross-reference.
- API Reference — Handling a Late Payment collections — Hub matrix (
finance-overview-income-chart-debt-aging.png,notifications-row-navigate-to-booking-detail.png) - Common Workflows — Handling a Late Payment collections hub — Operator procedure hub
- Payment alert to receivables triage — payment overdue alert before collections
- Finance debt receivables triage — Debt Aging before tenant outreach
- Handling a Late Payment — Step 1 — Collections follow-through
- FAQ — Handling a Late Payment collections hub — Symptom table
Finance Income status drill-down
Income segment-click modals require operator session — contrast with integration Bearer GET /listings catalogue reads. Hub parity: API Reference — Finance Income status drill-down. Full pairing matrix: Management session section cross-reference · API guide cross-reference.
- API Reference — Finance Income status drill-down — Hub matrix (
finance-overview-income-status-in-debt-modal.png,finance-overview-income-drill-down-flow.mp4) - Common Workflows — Finance Income status drill-down — Operator procedure hub
- Finance module — Income status drill-down — Canonical Finance → Overview surface
- FAQ — Finance Income status drill-down hub — Symptom table
Cash flow forecast drill-down
Cash flow forecast bar-click drill-down is management-UI only — poll Finance Overview with JWT, not partner integration keys. Hub parity: API Reference — Cash flow forecast drill-down. Full pairing matrix: Management session section cross-reference · API guide cross-reference.
- API Reference — Cash flow forecast drill-down — Hub matrix (
finance-overview-cash-flow-all-payments-modal.png,finance-overview-cash-flow-day-view.png,finance-overview-cash-flow-drill-down-flow.mp4) - Common Workflows — Cash flow forecast drill-down — Operator procedure hub
- Finance module — Cash flow forecast drill-down — Canonical Finance → Overview surface
- FAQ — Cash flow forecast drill-down hub — Symptom table
Key glossary terms
Glossary rows pair with Glossary cluster cross-reference and receipt-dispute workflows. Full pairing matrix: Management session section cross-reference.
-
Glossary — Credit note (payment reject/revert) — Accounting follow-up when management scripts reject already-invoiced receipts
-
Glossary — Invoiced floor (rent) — Rent edits blocked below exported invoice totals on JWT-authenticated management routes
-
FAQ — Bulk Hostkit invoicing slow — Vivin paces Hostkit API calls and retries HTTP 429 during bulk Issue allocation / Invoice selected; refresh Transactions before re-issuing
-
FAQ — Bulk Hostkit invoicing hub — Symptom table + per-guide mesh
-
Glossary — Deposit lifecycle status — Management JWT routes for Finance → Deposits and booking Deposit tab require
bookings.refund/ Approve payments permissions -
Glossary — End-of-Booking cost split — Charge Time → End of Booking splits daily overage across every occupied unit; still-staying roommates stay in the denominator (#2111)
-
Glossary — Change history — Operator-initiated edits on Listings setup and Bookings Changelog; create-time defaults excluded (#2093)
-
FAQ — Booking Changelog scope — Operator-initiated edits only; create-time defaults excluded (#2093)
-
Glossary — Archived booking ledger visibility — Delete Booking hides manual/provider_platform rows on Finance → Transactions; vIBAN and credit card stay visible (#1897)
-
Bookings — Provider platform payment — Non-rejected provider platform in-payment blocks Delete Booking until Reject or assign (#2076)
-
FAQ — Delete Booking on integration reservation — Clear pending provider platform in-payment with Reject or assign before soft-archive (#2076)
-
Listings — Property edit sidebar pills — Setup / Full integration / Photos pills on property and unit edit sidebars; replaced the old Go to details shortcut (#2082)
-
Glossary — Finance tenant category cache refresh — Recategorizing a tenant on Tenants → Tenant Info force-refreshes Finance caches so Contract Values, Overview, and Deposits filters match within seconds (#2088)
-
FAQ — Finance tenant category filter parity — Finance Other filters drawer lists segments on cached bookings only; mirror Bookings / Tenants when a segment is missing
-
FAQ — Assign tenant category for direct booking — Add booking has no category field; assign on Tenants → Tenant Info or + Create New → Tenant before contract mail
-
Glossary — SIMAR water contract ID — SIMAR (Loures e Odivelas) water bills use Cód. Local in Connections — not Nº de Contador; leading zeros stripped (#2110)
-
FAQ — SIMAR water bill property match — Cód. Local in Connections — not Nº de Contador; strip leading zeros (#2110)
-
Glossary — Per-booking maintenance ticket opt-out — Add booking checkboxes skip automatic CI/CO tickets for one reservation only; property rule unchanged (#1140)
-
FAQ — Cancel Booking vs Delete Booking — Cancel for real stays with settlement; Delete soft-archives mistaken/test rows (#1897 / #2076)
-
Glossary — Archived property — Archive retires a building to Listings → Archived without deleting bookings; distinct from Delete Booking (reservation soft-archive) — Listings — Archived properties
-
FAQ — Archive a property — Edit property sidebar Archive / Unarchive on Listings; building-level — not Delete Booking or Cancel booking
-
FAQ — Portfolio retirement decisions — Archive property (building) vs Cancel booking vs Delete Booking (reservation soft-archive) — three-way decision table
-
Finance — Deposit lifecycle status cards — Deposit lifecycle status row on Finance → Deposits; click Partial paid for collection shortfalls (#2091)
-
FAQ — Partly collected security deposit — Paid above zero but below Amount on booking Deposit; Partial paid card on Finance → Deposits (#2090 / #2091)
-
Finance — Deposit status filter — Other filters → Deposit status multi-select on Bookings and Finance (#2090)
-
Operations — Tickets toolbar search — Paste the full sequential ticket ID (for example
S259,T27) in toolbar Search (#2074) -
FAQ — Find a ticket by its ID — Paste the full sequential ticket ID (for example
S259,T27) in Operations → Tickets toolbar Search (#2074) -
FAQ — Skip automatic check-in/out tickets for one booking — Turn off Use unit contract rents and other contract details on Add booking to reveal CI/CO ticket checkboxes (#1140)
-
FAQ — Same-day turnovers — Check-out + check-in on one unit same day: Operations → Check-in & Check-out, Timeline / Multicalendar, turnover tickets
-
FAQ — Manual payments after Delete Booking — Delete Booking hides manual/provider_platform rows on Finance → Transactions; vIBAN and credit card stay visible (#1897)
-
Glossary — Directory list load failures — First-fetch directory failures show Retry / Try again; distinct from filter-empty states and booking-sidebar tab errors
-
Glossary — Vacant Unit Preference — Include manual blocks counts operator holds as free on Dashboard / Sales vacancy surfaces (#1427)
-
FAQ — Communication or Tickets load failure — Tab-scoped Refresh (Communication) or Retry (Tickets); other booking sidebar tabs stay usable
-
Operations — Property-level ticket search — Property-name matches share the top relevance tier with unit hits; building-scoped rows float first under an active Property filter (#2089)
-
Glossary — Deposit dispute — Deposit retention state on management routes that update booking Deposit status
-
Glossary — Invoiced floor (rent) — Rent edits blocked below exported invoice totals on management contract-value routes
-
FAQ — AI token usage — Poll GET /ai-usage / GET /ai-usage/summary with management JWT;
landlord_chat+utility_bill_extraction; no management UI screen yet -
FAQ — Automatic check-in email — Trigger matrix, 15-day cutoff, paper upload vs portal signing, Nuki-only toggle, Send / Resend on Contract Info
-
FAQ — WhatsApp and email per booking — Bookings → Communication tab when tenant chatbot is enabled; Inbox for portfolio-wide triage
-
FAQ — Deposit missing on Finance Deposits — Default ~3 months date range; clear or widen before triaging older move-outs or dispute row actions
-
FAQ — Pending manual in-payment on /notifications — Alert persists until Approve payments clears Finance or booking Transactions
-
FAQ — Uncovered Debt KPI — Finance Total Debt minus deposit offsets; pair with Debt Aging and In debt drill-down
-
FAQ — Dashboard Total Debt subtitle — Post-login Total Debt card headline vs >15 days subtitle; ongoing bookings only
-
FAQ — Analytics (KPI workspace) — Portfolio KPIs vs Sales/Listings/Dashboard; load-failure Try again
-
FAQ — Lower rent below invoiced — Change monthly rent clamps and Contract Values → Edit amount blocks net below exported invoice totals; use credit notes in accounting when you truly need a reduction
-
Glossary — Fixed invoice date — Account-wide Invoice date before bulk Issue allocation / Invoice selected; amber banner on Finance → Transactions until you turn Use today as invoice date back on
-
FAQ — Month-end invoicing (fixed date) hub — Symptom table + toggle reset after batch
-
FAQ — Reject or revert an incoming payment — Reject pending rows or Revert confirmed ones; Finance → Transactions uses Reject selected bulk-only; modals warn about credit notes when Finance already invoiced
-
FAQ — Manual receipt still pending — Operator-recorded receipts stay pending until Approve payments; triage on Finance → Transactions (Pending chip) or booking Transactions; Total Debt and Manual Payments KPI lag until approval
-
FAQ — Finance Income status drill-down hub — Symptom table for segment vs Debt Aging
-
FAQ — Finance Income status drill-down — Overview Income chart (Paid / Scheduled / In debt); click a segment for month-scoped payment-line modal; Debt Aging for booking-level receivables
-
FAQ — Cash flow forecast drill-down hub — Symptom table for collections vs Income / Dashboard
-
FAQ — Cash flow forecast drill-down — Month / Day bar-click habit
-
FAQ — Permission denied toast — Red You do not have permission to perform this action. toast when RBAC blocks a save; fix in Users → Role Permissions
-
FAQ — Phone shows Operations only — Mobile phone user agent locks operators with Operations access to
/operations; iPads and narrow desktop browsers keep the full module list -
FAQ — Notification row-click navigation — On
/notifications, row click marks unread then openslink,bookingId,tenantId,listingId, orpropertyId(first match); Dashboard bell General rows stay in-panel unlesslinkis set -
FAQ — Bookings that owe money — Top debtors and overdue buckets on Finance → Overview; Total Debt KPI is not a table
-
FAQ — Fixed rent on variable unit — Variable listing + equal rent every contract month → booking stores fixed headline Monthly rent; payment plan unchanged
Module documentation hubs
Module hubs pair with Modules — Module cross-reference for screen-by-screen operator follow-up. Full pairing matrix: Management session section cross-reference.
- AI Chat module — In-management assistant using the same operator JWT session as management HTTP routes (hub)
- Bookings module — Operator UI routes that share the same JWT session as management scripts (hub)
- Finance module — Ledger tabs that require Approve payments permission on top of a valid session (hub)
- Inbox module — WhatsApp routes that require the same operator session as management scripts (hub)
- Dashboard module — Same-day KPI snapshot using management JWT routes (hub)
- Operations module — Ticket and cash-flow routes behind the same JWT session as management scripts (hub)
- Notifications module — Alert routes automation may poll after management JWT sign-in (hub); Payment overdue alerts when scripted queries surface unpaid schedules
- Audit module — Portfolio-wide Manual Blocks and Discounts contract-value review (hub)
- Analytics module — Month-range portfolio KPI charts with rankings and heatmaps (hub)
- Listings module — Property wizard, Channels tab, and unit management (hub)
- Properties workspace — Legacy
/propertiesURL redirects into Listings (hub) - Booking engine details — Rich marketplace payload editor via the Full integration pill (hub)
- Tenants module — Tenant directory and profile sidebars (hub)
- Sales module — Portfolio availability and channel manager connections (hub)
- Utilities module — Bills Included ceiling model and tenant overage charges (hub)
- Account Settings — Workspace-wide financial policies, templates, integrations, and operational defaults (hub)