Skip to main content

Finance

First-time workspace setup

Configure Invoicing & Payments (setup steps 5–6) and Listings / Bookings (steps 13–14) before you approve receipts or export invoices here. Payment vocabulary: Payment Allocation. After go-live: Handling a Late Payment and Managing a Check-out & Deposit Refund. Workflow pairing: Modules — Setup sequence after go-live.

The Finance module is your central hub for all financial tracking. It consolidates income, expenses, deposits, and payment activity across every booking and property — giving you a complete picture of your portfolio's financial health. With automated rent collection, invoice generation, and payment allocation, the Finance module eliminates manual work and reduces errors to near zero.

Direct access

Open the Finance module at platform.vivin.app/finance. Tab routes include /finance/income, /finance/contractValues, /finance/transactions, /finance/payouts, and /finance/deposits. See Deep Links for all routes.

Tab and transaction URLs

Unknown Finance tab slugs (for example /finance/bookings) redirect to /finance (Overview) so the URL matches the tab on screen. Open a transaction from the ledger with /finance/transactions/<transactionId>; if that id is missing from the loaded result set, you see Transaction not found. and return to /finance/transactions. Details: Deep Links — Invalid, legacy, and mistyped URLs.

Pair with other modules

Drill down from booking rows in Bookings; segment debtors in Tenants With Debt; tie operational costs in Operations Cash Flows. When payment overdue alerts row-click into a booking, reconcile balances here on Contract Values — see Handling a Late Payment — Step 1. Month-end utility spend from Utilities — Bills AI Invoice Reader is visible on AI usage API (utility_bill_extraction on GET /ai-usage/summary) — pair with Entering Monthly Utility Bills — Step 2. Section-to-doc pairing: Finance section cross-reference. Hub tab matrix: Modules — Module cross-reference.

Access, tabs, and toolbar

Pair with other Finance sections

Tab visibility pairs with Settings > Users and roles — Approve payments; bookmark routes in Deep Links — Finance. Full pairing matrix: Finance section cross-reference.

Which Finance tabs appear

Anyone with access to the Finance module can use Overview, Income, and Contract Values — portfolio summaries, scheduled charges, and income reporting.

The Transactions, Payouts, and Deposits tabs require the Approve payments permission (finance.approve_payments). Without it, those tabs are not shown in the Finance toolbar, and deep links such as /finance/transactions show a standard permission message instead of the ledger. In the default role matrix, Super Admin includes this permission; other roles receive it only when an account admin enables it in Settings > Users > Role Permissions.

Month range vs date range

  • Month picker (one or more months in the toolbar): applies to Overview, Income, and Contract Values.
  • Date range (from–to picker): applies to Transactions, Payouts, and Deposits.

A small refresh indicator may appear next to the active control while the current tab is loading data.

Large tables and infinite scroll

Contract Values, Transactions, Payouts, and Deposits load ledger rows from the server in chunks instead of downloading the entire account on first paint. This matches the infinite scroll (directory loading) pattern used on Bookings, Listings, and other large tables. On Transactions, every Other filters combination stays server-paginated (#3178) — the tab no longer falls back to loading the whole account when deposit, invoice, platform, category, or related drawer filters are active.

PhaseBehaviour
First paintUp to 20 rows for the active tab, date range (or month picker on Contract Values), Other filters, search, and status pills.
ScrollWhen you scroll near the bottom of the table, the next chunk (5 rows) loads automatically. Compact skeleton rows may appear under the last visible row while the request is in flight.
DoneLoading stops when every row that matches the server-side filter has been fetched. There is no End of list footer on these Finance tables (unlike Notifications or Listings).

Export on Contract Values and Transactions still downloads the full filtered set — you do not need to scroll the table to the end before exporting. Changing the month picker, date range, Other filters, or search clears the accumulated pages and starts again from the first chunk.

Finance Transactions — scroll near the bottom while the next ledger chunk loads (skeleton rows under the table)

Overview and Income use server aggregation for KPI cards and property roll-ups; they do not use this table-style infinite scroll pattern.

Other filters

The Other filters button in the Finance toolbar opens a sidebar (the same pattern as Bookings and Listings). Use it to narrow by property, booking, owner, categories, IBAN or fiscal filters, payment plan, deposit status, invoice status, and more. On Contract Values and Transactions, active filters appear as removable pills above the table, with Clear all to reset without reopening the sidebar.

Three different “categories” controls

The drawer reuses the word categories in three places — each maps to a different field:

Section in drawerControl placeholderWhat it filters
BookingSelect categoriesBooking tags (bookingTags) — same labels as Settings > Categories > Bookings and the Bookings list Select categories menu
Property & ListingSelect categories (second)Listing tags on units (listingTags / listing tags)
FinanceSelect "others" categoriesMiscellaneous charge categories for non-standard payment lines (Settings Others Items Categories)

The rest of this subsection focuses on tenant segments under Tenant → Tenant category and booking tags under Booking → Select categories.

Tenant category filter

Under Tenant → Tenant category, Finance narrows every tab that honours Other filtersOverview, Income, Contract Values, Transactions, Deposits, and Payouts — to rows whose linked booking’s tenant profile carries the selected tenant categories segment(s). The control mirrors Bookings — Other filters tenant category and Tenants — Tenant category filter: same OR-combined server filter, including No tenant category for bookings whose tenant has no segment on file.

SelectionWhat appears
One or more named segmentsRows for bookings whose tenant profile is assigned at least one of the selected categories.
No tenant category onlyRows for bookings whose tenant has no category assigned.
Named segments + No tenant categoryRows that match any selected segment or have no category — useful when reconciling mixed onboarding before you standardize assignments.

No tenant category is resolved server-side: the client sends real category ids in tenantCategoryIds and, when No tenant category is checked, a separate noTenantCategory flag that is OR-combined with those ids (the UI sentinel is never sent as a category id). Active choices show as removable pills above the table on Contract Values and Transactions; combine them with the month picker or date range, property, owner, booking tags, and the other drawer sections. Export on Contract Values and Transactions reflects the full filtered population.

Drawer catalog sources (#2314)

Finance Other filters vocabularies load from lightweight catalog endpoints — not from a whole-account bookings cache preload:

Drawer controlCatalog source
Tenant → Tenant categoryFull account list from GET /tenant-categories (every segment defined under Settings → Tenant categories)
Booking → Select categoriesTag vocabulary from GET /bookings/tags
Booking → Select bookingsPaged async picker (GET /bookings/search) — not a full GET /bookings/cache download
Property & Listing → Select categoriesListing tags from GET /listings/tags

Bookings — Other filters still uses the portfolio filter catalog (GET /bookings/portfolio/filter-options) for some controls — Finance drawer parity for tenant category and booking tags now matches the account-wide definitions above.

Recategorization refresh (#2088)

Saving a new Category on Tenants → Tenant Info back-syncs booking.tenantCategoryId and force-refreshes Finance caches in the background. Tenant category filter results on Contract Values, Overview, and Deposits typically reflect the segment within seconds instead of waiting for the ~30-minute cron. The drawer option list already lists every segment from GET /tenant-categories (#2314) — this refresh updates which rows match, not which segments appear in the menu. See Glossary — Finance tenant category cache refresh and FAQ — Finance tenant category filter parity.

During month-end review when Analytics Ranking or Occupancy suggests one segment underperforms, scope Select properties to the building in question, then add Tenant category before you change rates account-wide — same habit as Portfolio KPI review — Step 6. Cross-check profile counts on Tenants before you adjust portal modules or communication rules for the whole account.

Finance Contract Values — Other filters drawer, Tenant section, tenant category multi-select with one segment active

Named segments also appear as removable toolbar pills after you close the drawer:

Finance Contract Values — active tenant category filter pill on the toolbar after applying Other filters

Tenant category filter captures added 2026-06-28 02:08 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL VIVIN_DOCS_PROPERTY_SEARCH=AA-11-5D VIVIN_DOCS_TENANT_CATEGORY_SEARCH="Teste Jorge" npx tsx tools/capture-finance-other-filters-tenant-category-screenshot.ts).

Booking tags

Under Booking → Select categories, Finance filters ledger and roll-up rows by the same booking tags configured under Settings > Categories > Bookings. Options come from the account tag vocabulary (GET /bookings/tags) — not from listing tags or payment-type categories (#2314).

The menu lists every tag in use plus a synthetic No category row at the bottom (parity with the Bookings list):

SelectionWhat appears
One or more named tagsRows whose linked booking has at least one of the selected tags (OR within the tag subset).
No category onlyRows for bookings with no booking tags assigned (empty bookingTags list).
Named tags + No categoryRows that match any selected tag or have no tags — useful when reconciling mixed segmentation before you standardize labels.

No category is resolved server-side: the client sends real tag codes in categories and, when No category is checked, a separate noCategory flag that is OR-combined with those tags (the UI sentinel is never sent as a tag string). The same rule applies across Finance tabs that honour Other filtersOverview, Income, Contract Values, Transactions, Deposits, and Payouts — including Export on Contract Values, Transactions, and Payouts (the download reflects the full filtered population, not only rows already loaded in the table). On Payouts, booking tags resolve through grouped tenant in-payments (bookingInPayments[].booking.bookingTags); the All, Credit Card, and IBAN summary cards at the top of the tab use the same drawer filters as the table (#2352).

Active choices show as removable pills above the table (the pill label reads No category for the uncategorized slice). Combine them with month or date range, property, booking, owner, and the other drawer sections as needed.

Finance Contract Values — Other filters drawer with Booking Select categories open and No category selected; toolbar pill matches the Bookings list behaviour

Named tags use the same drawer control; active choices appear as removable pills above the table (example Student):

Finance Contract Values — Other filters drawer with Booking Select categories open and the Student tag selected; toolbar pill matches the Bookings list

Booking category filter captures refreshed 2026-06-13 12:30 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL VIVIN_DOCS_BOOKING_TAG=Student npx tsx tools/capture-finance-booking-categories-filter-screenshot.ts).

Property & Listing filters

The Property & Listing section sits below the Booking block in the same drawer. Use it when you need portfolio slices that are not tied to a single booking id:

ControlWhat it does
Select ownersMulti-select from registered property owners (same owner registry as Bookings → Select owners; Finance loads options from the account-wide portfolio filter catalog). Choosing one or more owners narrows the Property picker below — the server only returns buildings linked to those owners. You cannot widen beyond an owner selection from the property menu alone; clear owners to search the full account again.
PropertyMulti-select buildings with the same server-driven search picker pattern as Sales → Pricing: opening the menu prefetches about 10 rows, typing runs debounced server search, and scrolling near the bottom loads the next page. Selected properties render as chips on the control. With an active query, internalName matches rank above address-only hits before pagination — see Glossary — Picker search ranking. Current builds (June 2026 performance pass) query the paged property search endpoint instead of downloading every property when the drawer opens — important on large portfolios.
Select categoriesMulti-select listing tags on units (listingTags). Options are the distinct tag strings already in use across live listings (sorted), not a dump of every listing row. Configure the vocabulary under Settings > Categories.

Finance Contract Values — Other filters drawer, Property &amp; Listing Select categories open (listing tags from GET /listings/tags)

After you pick one or more listing tags, removable toolbar pills above the table mirror the selection (same pattern as booking tags and property chips):

Finance Contract Values — active listing-tag filter pill on the toolbar after selecting a tag in Other filters

Screenshot freshness

Property & Listing Select categories captures refreshed 2026-06-13 07:12 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-finance-listing-categories-filter-screenshot.ts).

Finance Contract Values — Other filters drawer, Property &amp; Listing section with Property paged picker open (server search; example AA-11-5D)

Finance Contract Values — Other filters Property picker after server search (internalName matches ranked above address-only hits, example António)

Property picker search-ranking capture refreshed 2026-06-17 15:10 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL VIVIN_DOCS_PROPERTY_SEARCH=António npx tsx tools/capture-finance-other-filters-property-picker-search-rank-screenshot.ts).

Finance Contract Values — Other filters drawer with Select owners narrowing the Property paged picker (example owner QA Owner Test → property AA-11-5D-Bh)

Owner scoping + property chips

Pick owners first when you reconcile one landlord’s slice, then open Property — the menu respects the owner filter server-side. Clearing an owner chip widens the property search again. Property chips stay labelled even when the typed search scrolls those rows off the visible page.

Owner-scoped property picker capture refreshed 2026-06-13 05:12 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL VIVIN_DOCS_OWNER_SEARCH="QA Owner Test" VIVIN_DOCS_PROPERTY_SEARCH=AA-11-5D-Bh npx tsx tools/capture-finance-other-filters-owner-scoped-property-picker-screenshot.ts).

Deposit status filter

The Booking section of the Finance drawer mirrors the Bookings list Other filters drawer for Discounts and Deposit status (same API fields, server-side on every Finance tab that honours Other filters). Lifecycle vocabulary (Not paid, Partial paid, Fully paid, Ready to refund, Disputed, Refunded) is defined in Glossary — Deposit lifecycle status.

ControlOptionsWhat it filters
DiscountsAll, With, WithoutBookings whose scheduled charges include at least one line-level or booking-scoped discount (paymentsPlan).
Deposit statusMulti-select: Not paid, Partial paid, Fully paid, Disputed, Ready to refund, Refunded (empty = all statuses)Operational depositStatus on the linked booking (depositStatuses) — any-of match within your selection. Aligns list slices with the lifecycle pill on the booking Deposit tab and Finance → Deposits rows.

Use Deposit status → Ready to refund together with the Deposits tab Pending refund / Overdue status cards when finance is processing bank returns after check-out — operators flip Ready To Refund on each booking once inspection and deductions are settled; finance then filters the portfolio queue without relying on ad-hoc notes. Omit Refunded from the selection when you only want open refund queues.

Finance Deposits — Other filters drawer, Booking section with Deposit status set to Ready to refund

Deposit status filter capture added 2026-07-09 00:08 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-deposit-status-filter-screenshots.ts).

On the Transactions tab only, the drawer adds a Transactions section at the top with Select platforms — a multi-select of booking source platforms. The product lists Uniplaces, Inlife, RoomLess (Spacest), Housing Anywhere, Spotahome, Airbnb, Booking.com, Vivin booking engine, Direct, Edu Portugal, Erasmus Life Lisboa, Channex, and Long-stay (LS) when enabled or applicable. That filter matches each row’s booking integrationPlatform (or treats standalone finance rows without a booking as LS). Use it with the date range when reconciling one channel’s bank inflows. Other Finance tabs do not show this block.

The module is organized into several tabs, each focused on a specific financial area.

Who can see every tab?

Transactions, Payouts, and Deposits are shown only to users who have payment-approval permission for Finance. If those tabs are missing for your account, ask an administrator to grant the appropriate role or permission.

Finance Overview — Other filters drawer open on Overview (Property &amp; Listing section; same role=&quot;dialog&quot; drawer on every Finance tab)

Overview Other filters capture refreshed 2026-06-20 01:06 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-finance-overview-redesign-screenshots.tsFilterDrawer uses [role="dialog"], not aside).

Overview Tab

Pair with other Finance sections

Overview KPIs pair with Dashboard — KPI cards and Analytics — Revenue tab; triage debt with Handling a Late Payment and Notifications — Payment overdue alerts. AI Chat, WhatsApp Genius, and Landlord MCP get-finance-overview / get-revenue-summary read these same Finance figures (#3183) — see Landlord MCP — Finance-sourced portfolio metrics. Full pairing matrix: Finance section cross-reference.

The Overview tab is a portfolio financial dashboard: KPI cards for the month you pick in the toolbar, stacked Income and Cash flow forecast charts, and a Debt Aging panel for receivables triage. Use the month picker and Other filters in the Finance toolbar to narrow by property, owner, booking tags, and related dimensions.

Overview KPIs, charts, and aging load from a lightweight server aggregation (one request for the always-visible strip). Drill-down lists load only when you open a modalSystem / Manual Payments rows and realized cash-flow lines come from the same filtered SQL the cards and bars use (#2363), so the list foots to the figure you clicked. A normal visit does not download a whole-account transactions cache.

Refresh after payment changes

After you record, edit, approve, reject, or revert a payment, debt and income aggregates typically reflect the change within seconds on your next visit or when the toolbar refresh indicator finishes — you do not need to wait for a scheduled cron. Large accounts coalesce bulk refreshes so one portfolio sweep does not trigger a storm of per-booking recomputes. Pending manual receipts still exclude their amounts from debt totals until Approve payments confirms them — see Pending manual payments.

KPI strip (seven cards)

The top row shows seven compact KPI cards. Cards tagged with the selected month in the title follow the month picker; cards tagged All time ignore it and reflect current portfolio balances. Cards with a non-zero count are clickable and open a scoped drill-down modal (#2127).

CardScopeWhat it shows
IncomeSelected monthTotal income expected for the period — Paid, Scheduled, and In debt payment lines combined. Year-over-year comparison may appear when prior-year data exists.
InvoicedSelected monthAmount collected in the period (paid lines). Subtitle shows % collected against scheduled + debt for the same month.
System PaymentsSelected monthTotal of automated in-payments in the window (virtual IBAN, credit card, and other non-manual rails), excluding rejected rows. Click to open the System/Manual drill-down.
Manual PaymentsSelected monthTotal of manually recorded in-payments in the window (transfer, cash, deposit refund, platform, etc.), excluding rejected rows — includes pending manual receipts still awaiting approval. Click to open the System/Manual drill-down. This is not the approval queue — see Pending manual payments.
Overdue DepositsAll timeSecurity deposits past their refund due date (per-deposit display caps apply when values look corrupted).
Total DebtAll timeSum of tenant underpayment across bookings. Amounts far above rent or contract value are capped for display when they look like bad data. Dashboard Total Debt uses the same balance rule but only for ongoing bookings — hover its info icon for the >15 days overdue subtitle on live stays. See Glossary — Dashboard KPI cards and Handling a Late Payment — Step 1.
Uncovered DebtAll timePortion of Total Debt not covered by held security deposits — highlights receivables where deposit offsets are insufficient. See Glossary — Uncovered Debt and FAQ — Uncovered Debt KPI.

Finance Overview — seven KPI cards above Income chart and Debt Aging panel

Screenshot freshness

Overview KPI + chart + In debt drill-down modal re-verified 2026-06-20 07:06 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL VIVIN_DOCS_PROPERTY_SEARCH=AA-11-5D npx tsx tools/capture-finance-overview-redesign-screenshots.ts) — seven-card strip, stacked Income chart with 6M–24M pills, Cash flow forecast (Day toggle), Debt Aging expanded bucket, Other filters drawer, All payments cash-flow modal, and In debt payment-line modal scoped to property AA-11-5D. System / Manual Payments drill-down modals + walkthrough MP4 added 2026-07-27 19:25 UTC (tools/capture-finance-overview-system-manual-drilldown.ts, tools/record-finance-overview-system-manual-drilldown-mp4.ts).

System and Manual Payments drill-down

Pair with other Finance sections

Card totals pair with Transactions — Type summary cards and soft-archive visibility in Archived bookings on the ledger (#1897). Approval work still belongs on Transactions, not this modal — Pending manual payments. Full pairing matrix: Finance section cross-reference.

Click System Payments or Manual Payments on the KPI strip to open a transaction list for the same month picker and Other filters as the card (#2127 / #2363):

  1. Open Finance → Overview.
  2. Click System Payments (green dot) or Manual Payments (amber/yellow dot) when the card shows a non-zero count.
  3. Review tenant, unit, type, date, status, and amount. Use the modal search to narrow by tenant, unit, or type — the header total € stays the unfiltered card total so the list always foots to the KPI.
  4. Click the open-booking control on a row to jump into that reservation’s sidebar.
  5. Close the modal and continue on Transactions when you need Pending approval, bulk actions, or export.

Finance Overview — System Payments drill-down modal for the selected month

Finance Overview — Manual Payments drill-down modal for the selected month

Walkthrough: click System Payments → search the modal → close → click Manual Payments → close.
Archived bookings and Manual Payments

The SQL-backed Manual Payments card applies the same soft-archive gate as Finance → Transactions (#1897 / #2363): after Delete Booking, manual / provider-platform rows for that reservation drop out of the card and its drill-down, while vIBAN / credit card System rows stay. Card and modal stay consistent because both read the same filtered base.

Pending manual payments

The Manual Payments KPI totals every non-rejected manual in-payment in the selected month — including pending rows — so a high number does not by itself mean the approval queue is clear. Clicking the card opens the month drill-down of all manual rails; it does not isolate pending-only rows. When operators record receipts that need confirmation, triage from Transactions (amber Pending chip), not the Overview modal alone. Illustrated behaviour: Glossary — Pending manual in-payment (Finance). (Pre-#1739 Overview exposed a Pending Payments card for the approval queue only; the redesigned KPI is a monthly manual total — workflow cross-links aligned 2026-06-20.)

  1. Open Finance → Transactions (/finance/transactions).
  2. Widen the date range if the receipt was recorded outside the default window (use Clear date range selection when older pending rows are hidden).
  3. Click the amber Pending chip on the All type-summary card (or use the Pending status filter) to isolate manual rows — see Notification triage — Step 4, FAQ — Pending manual in-payment on /notifications, FAQ — Manual receipt still pending, Payment Allocation — Pending manual approval (month-end habit), Processing a New Booking — Step 5b, Handling a Late Payment — Step 4b, Managing a Check-in — Step 3b, Entering Monthly Utility Bills — Step 4b, Cancelling a Booking — Step 2a, and Portfolio KPI review — Step 7 for the same habit after payment alerts, move-in receipts, utility overages, settlement receipts, or month-end reconciliation.

Finance Transactions — All card with amber Pending chip active and filtered ledger rows

Screenshot freshness

Pending-pill capture added 2026-06-27 14:08 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-finance-transactions-pending-pill-screenshot.ts — clears date range, clicks amber Pending on All card). Pending-approve walkthrough MP4 added 2026-06-27 15:08 UTC (tools/record-finance-transactions-pending-approve-flow-mp4.ts).

  1. Approve each row with the per-row icon, or tick multiple rows and use Approve selected / Reject selected from the floating bulk bar. On the ledger, Reject is bulk-only (no per-row reject icon) — the same Reject Payment modal as booking Transactions applies. See Row actions on in-payment rows and Payment Allocation — Correcting mistaken receipts for reject/revert semantics; overage and settlement variants: Entering Monthly Utility Bills — Step 4b, Cancelling a Booking — Step 2a.
Walkthrough: amber Pending chip on the All card → Approve payment (cancel before saving).
  1. After approval, booking balances, Contract Values, Total Debt, and Debt Aging refresh; clear related payment notifications when the balance is correct.

Until a manual in-payment is approved, it does not reduce In debt scheduled lines or Total Debt the way a confirmed receipt would. Record the payment when the bank deposit arrives, then approve (or reject mistaken duplicates) before closing a collections case.

Income chart and cash flow forecast

Illustrated collections history chart (distinct from Dashboard Cash Flow Forecast rent-due timing): Glossary — Cash flow forecast (Finance Overview).

Below the KPI strip, the left column (about five sevenths of the width on desktop) stacks two charts that share the same range selector (6M, 9M, 12M, 18M, 24M):

Income (stacked bar chart) — Scheduled income per month, split into Paid (dark teal), Scheduled (light teal), and In debt (red). Each bar shows a € total above the stack. Hover a column for a tooltip with per-status amounts; click a segment or a tooltip row to open the payment-line drill-down for that month and status. Large Y-axis values abbreviate as €Nk, €NM, or €NB; tooltips and modals keep full precision. Illustrated Income status behaviour (distinct from the Cash flow forecast chart below): Glossary — Finance income status.

Cash flow forecast — Net cash received per period (actual collections only — no scheduled or overdue amounts). Toggle Month vs Day on the chart header. Click a month or day bar to open a drill-down listing all payments collected in that period (same modal shell as the Income chart, status filter set to All payments).

Finance Overview — Cash flow forecast with Day granularity selected (daily bars in the selected range)

Cash flow Day view capture re-verified 2026-06-20 07:06 UTC (capture-finance-overview-redesign-screenshots.ts — toggle Day on the Cash flow forecast chart after property filter AA-11-5D).

Finance Overview — stacked Income chart with range pills, Cash flow forecast, and Debt Aging panel

Debt Aging is the booking-level receivables surface — expand overdue buckets or pick Top debtors to open a booking (FAQ — Bookings that owe money). The Total Debt KPI above summarizes underpayment but does not open a table.

Income chart + Debt Aging PNGs and the In debt drill-down modal re-verified 2026-06-20 07:06 UTC (same script — property filter AA-11-5D, bar-segment click on Income chart, month bar on Cash flow forecast).

Short walkthrough: Cash flow forecast on Finance Overview — toggle Day, click a bar, review the All payments drill-down, then close.

Cash flow drill-down video added 2026-06-20 08:08 UTC (tools/record-finance-overview-cash-flow-drill-down-mp4.ts — property filter AA-11-5D when needed).

Debt Aging panel

The right column shows Debt Aging — receivables triage aligned with the Total Debt and Uncovered Debt KPIs:

ElementBehaviour
Aging bucketsHorizontal bars for 0–15 d, 16–30 d, 31–60 d, and +60 d overdue. Each overdue charge is aged by its own due date, so one booking can appear in several bands at once — an old arrear in +60 d and a recent one in 0–15 d — and every band shows the exact amount owed at that age. Click a bucket with debt to expand inline tenant · unit rows showing that band's amount and its Overdue since date. The number on a bucket counts distinct bookings with debt in that band, so it is intentionally not additive across bands.
Top debtorsRanked list of bookings in debt with lifecycle badge and amount. Each debtor's coloured dot reflects the age of its oldest unpaid overdue charge. Click a row to open the booking in the Finance context sidebar. When more than five debtors exist, +N more expands the list.
Empty stateWhen no bookings owe-al, the panel shows No outstanding debts.

Finance Overview — Debt Aging bucket expanded to show tenant rows for an overdue band

Short walkthrough: expand an overdue Debt Aging bucket, open a tenant row in the booking sidebar, then close.

Debt Aging walkthrough video added 2026-06-20 11:08 UTC (tools/record-finance-overview-debt-aging-walkthrough-mp4.ts — property filter AA-11-5D when expanded rows need clean data).

Use Debt Aging (or the In debt segment on the Income chart) for booking-level receivables context. After a payment alert on /notifications, row-click navigation often lands here via Notification triage — Step 4 — see Common Workflows — Finance debt receivables triage, Glossary — Finance Debt Aging, FAQ — Bookings that owe money, FAQ — Uncovered Debt KPI, and FAQ — Finance Income status drill-down (finance-overview-debt-aging-expanded-bucket.png, finance-overview-debt-aging-walkthrough-flow.mp4). The legacy full-table Total Debt modal from the pre-#1739 layout is no longer shown in the product.

Income status drill-down

Click a coloured segment on the Income chart, a row in its hover tooltip, or a Cash flow forecast bar to open a modal scoped to that month (and day when you clicked a daily bar). Pick Paid, Scheduled, In debt, or All payments depending on what you clicked.

The modal header shows the status colour, the month label, a count of lines, and the total € for that slice. Columns include Tenant, Unit, Type, Date, and Amount; use View booking on a row to jump to that booking (the modal closes when you navigate away). Search filters tenant or unit names inside the modal.

Finance Overview — In debt payment-line drill-down for a selected month

Payment-line drill-down is month- and status-scoped — for booking-level receivables, use Debt Aging instead (FAQ — Finance Income status drill-down — illustrated Income chart + In debt modal, FAQ — Bookings that owe moneyTop debtors panel).

Short walkthrough: on Finance Overview, click the red In debt segment on the stacked Income chart, review the month-scoped payment-line modal, then close.
Walkthrough: Paid / Scheduled / In debt segment drill-down — payment-line modal, View booking, then contrast Debt Aging Top debtors.

Finance Overview — All payments drill-down from a Cash flow forecast month bar

Income In debt drill-down video added 2026-06-20 10:08 UTC (tools/record-finance-overview-income-drill-down-mp4.ts — property filter AA-11-5D when modal rows need clean data).

Cash flow All payments modal capture added 2026-06-20 03:06 UTC (capture-finance-overview-redesign-screenshots.ts — click month bar on Cash flow forecast chart).

Use Overview as your daily health check: scan Income vs Invoiced for the month, watch Uncovered Debt, then open In debt lines or Debt Aging top debtors before calling tenants or opening Transactions.

Income Tab

The Income tab (/finance/income) is the portfolio revenue drill-down for the month (or months) you pick in the Finance toolbar. It complements Overview (high-level health) and Contract Values (scheduled charges) by showing what was actually received, split by payment category and rolled up by property and unit.

Toolbar and filters

  • Month picker — Shared with Overview and Contract Values. The selected month drives the summary card on the right and highlights that month in the six-month trend chart (other months render at reduced opacity).
  • Other filters — Opens the same Finance drawer used on Overview and Contract Values (tenant, booking, property & listing, owner, and related dimensions). It does not include the Select platforms block that appears only on Transactions — use Transactions when you need to isolate channel-sourced payments.

Finance Income tab — Other Filters drawer open with tenant, booking, and property sections

Monthly income trend (stacked chart)

The top-left card shows a six-month stacked bar chart whose window ends at the toolbar month (six calendar months inclusive, not a rolling “last six months from today”):

Stack segmentColour roleMeaning in the product
RentPrimary tealCollected rent for the month
Admin feeAquaAdmin-fee income
Cleaning feeLight greenCleaning-fee income
OthersPale tealOther received payment types in the income roll-up

Hover a bar for a dark-teal tooltip with per-category amounts and a total for that month. An information icon beside the chart title explains how the trend window is computed. A compact legend on the right of the chart header matches the stack colours.

Visual emphasis — bars for months other than the toolbar selection render at 50% opacity so the selected month stands out at full strength. Large Y-axis ticks abbreviate as €Nk or €NM; tooltips and the summary card keep full precision.

Data loading — the trend chart, summary card, and Income by property list load from a single server request per month-picker or Other filters change (no infinite scroll on this tab). While the first fetch runs, skeleton placeholders appear in the chart and summary card; when no collections exist in the window, the chart shows an empty-state message instead of a blank frame.

Finance Income tab — six-month stacked trend chart with legend and selected-month emphasis

Income trend + summary + expanded property PNGs added 2026-06-20 08:08 UTC (tools/capture-finance-income-tab-screenshots.ts — dirty checks scoped to chart row / property cards, not full-page clone rows behind filters).

Summary card (selected month)

Beside the chart, the summary card titles itself with the selected month (for example June 2026 Summary) and shows:

  • Total income — Grand total received across all properties in scope for that month (large headline under a TOTAL INCOME label)
  • Property count — How many properties contributed rows below (for example 3 properties)
  • Category breakdown — Rent, admin fee, cleaning fee, and others with € amounts and thin progress bars proportional to the month total (legend colours match the trend chart)

Use this card for a quick “how much landed this month?” answer before you expand individual properties.

Finance Income tab — selected-month summary card with total income and category breakdown

Income by property (expandable rows)

Below the chart row, Income by property lists one card per property in the filtered set. Each collapsed row shows:

  • Property name and address line
  • Rent, Admin fee, Cleaning fee, and Others totals for the month, each with a per-unit average beneath the total
  • A highlighted Income badge with the property’s all-in total for the month

Click a row (or its chevron) to expand and reveal unit-level lines: each listing’s rent, fees, and income for the same month. Expand multiple properties at once; collapse with a second click. Expanded property headers use a light mint tint; unit rows sit on a pale grey panel beneath. When a unit row has a linked tenant, the right column shows a coloured initial avatar and tenant name with the unit’s income in parentheses.

Expanded state persistence — if you change filters but the same properties remain in the result set, rows you already expanded stay open (Vivin preserves expansion by property id).

Empty state — when Other filters or the month picker match zero properties, the list is replaced by a centred No income for this period message (distinct from the chart’s empty trend).

Finance Income tab — expanded property row with unit-level rent, fees, and tenant lines

Finance Income Tab by Property

Short walkthrough: change the Finance toolbar month, read the six-month trend and summary card, expand a property row to unit lines, then collapse.

Income month-and-expand video added 2026-06-20 09:08 UTC (tools/record-finance-income-month-and-expand-mp4.ts — property filter AA-11-5D when chart row needs clean data).

Use this tab to:

  • Verify that monthly rent is being collected for all active bookings
  • Compare properties and units within one month before owner reporting
  • Spot a weak month in the six-month trend, then expand the property rows that drove the dip
  • Identify months with lower-than-expected income (change the toolbar month picker and watch the summary card + chart highlight move together)

Contract Values Tab

Pair with other Finance sections

Scheduled charges pair with Bookings — Contract Values tab — rent edits below the invoiced floor happen on the booking sidebar, not here. Full pairing matrix: Finance section cross-reference.

The Contract Values tab shows a summary of all scheduled charges across all bookings — the "expected" side of your financial picture. This is the complete list of what tenants are contractually obligated to pay.

Finance Contract Values Tab

Each payment-type summary card (Rent, Admin fee, Deposit, and so on) breaks the portfolio into clickable status chips:

Chip colourMeaningClick behaviour
Green (paid)Fully collected for that type in the selected month rangeFilters the table to paid lines for that payment type
Red (debt)Past-due or unpaid scheduled chargesFilters to in debt lines — use this for late-payment triage
Grey (scheduled)Future or not-yet-due chargesFilters to scheduled lines
Amber (partial)Partially allocated paymentsFilters to partially paid lines

Click the same chip again to clear that status filter. Combine chips with the month picker, Other filters, and Search to narrow a receivables list before export or before opening individual bookings.

Finance — Contract Values with an in-debt status chip active on a payment-type card (table filtered to overdue scheduled charges)

Use Export on the Contract Values toolbar to download the currently filtered table as CSV or Excel (.xls). Filenames are vivin-contract-values-YYYY-MM-DD.csv or vivin-contract-values-YYYY-MM-DD.xls. The file respects the month picker, Other filters, search, and any type/status pills active on the tab. If nothing matches, the export action does not produce a file.

Finance Contract Values — Export menu (CSV / Excel); download reflects month picker, Other filters, and search

Use this tab alongside the Transactions tab to identify discrepancies: if a charge appears in Contract Values but has no matching transaction, the payment has not been received.

Editing due dates

Each row includes a Due date column and a trailing calendar action (permission: bookings.change_payment_due_date). Edit Payment Due Date opens a modal to pick a new date when the line is scheduled or in debt.

System-managed due dates — Vivin locks the calendar control (disabled icon + explanatory tooltip) when the due date is computed automatically:

Line typeWhy manual edits are blocked
Move-in / check-in requirementDue date follows move-in payment rules.
Booking confirmation requirementDue date follows confirmation-payment timing.
Split rentParent or child lines from a rent split — editing one side would break the paired schedule.

The API rejects manual due-date changes on these lines even if an older client attempted the request. For editable lines, confirm the reporting month impact before saving — the same modal exists on the booking Contract Values tab.

Finance Contract Values — Edit Payment Due Date modal with calendar picker on an editable scheduled line

Finance Contract Values — disabled calendar action on a move-in rent line (system-managed due date; hover for the full tooltip)

Cross-navigation from Finance to bookings

When your role includes Bookings sidebar access, opening a booking from Finance keeps context on the correct payment line:

You start onRow actionBooking sidebar opens onHighlight
Contract ValuesOpen booking (row or row action)Contract Values tabThe scheduled charge row you clicked is ring-highlighted and scrolled into view
TransactionsOpen bookingTransactions tabThe ledger row you clicked is ring-highlighted and scrolled into view

The highlight uses a teal ring on the matching table row so you can reconcile Finance figures with the booking workspace without hunting the line manually. Closing the booking sidebar clears the highlight.

Finance Contract Values — row click opens the booking sidebar on Contract Values with the matching charge ring-highlighted

Finance Transactions — row click opens the booking sidebar on Transactions with the matching ledger row ring-highlighted

Transactions highlight capture refreshed 2026-06-12 01:02 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-finance-transactions-booking-highlight-screenshot.ts).

Invoiced floor and rent edits (#1738)

When a rent line is already invoiced, lowering its net below the invoiced total is blocked in the booking workspace — not on this Finance table. Use Open booking here, then on the booking sidebar go to Contract Info → Change monthly rent (months clamp to the exported total — blue info banner) or Contract Values → Edit amount (Save disabled under the invoiced floor). Illustrated modals: FAQ — Lower rent below invoiced; hub: Common Workflows — Rent reduction after invoicing (bookings-detail-change-monthly-rent-modal.png, bookings-detail-contract-values-invoiced-floor-edit-amount.png). Per-guide mesh: Cancelling a Booking — Rent reduction after invoicing, Onboarding a New Property — Rent reduction after invoicing, Managing a Check-in — Rent reduction after invoicing, Managing a Check-out — Rent reduction after invoicing, Notification triage — Rent reduction after invoicing, Entering Monthly Utility Bills — Rent reduction after invoicing, Manual block hygiene — Rent reduction after invoicing, Using in-app support — Rent reduction after invoicing, Resetting a Management User Password — Rent reduction after invoicing. See Bookings — Changing contract dates and rent, Contract Values tab, and Glossary — Invoiced floor (rent).

Booking detail — Change monthly rent modal with Already invoiced months info banner

Transactions Tab

Pair with other Finance sections

Receipts pair with Payment Allocation and Bookings — Transactions tab — reject/revert mistaken receipts per FAQ — Reject or revert an incoming payment. Full pairing matrix: Finance section cross-reference.

The Transactions tab is a detailed ledger of every individual payment received. It shows each payment event individually for reconciliation.

When Account Settings → Invoicing has Use today as invoice date turned off and a fixed Invoice date saved, an amber role="status" banner appears directly above the Transactions search bar and invoice filter pills (before you select rows). It reminds you that invoices issued from Finance will use that date until you change it under Invoicing (VAT rates & Hostkit series) (see the toggle and date picker screenshot there). The banner copy references the saved date (for example “A custom invoice date is set in Settings (1 Jun 2026)…”).

Finance Transactions — amber custom invoice date banner above search and invoice filter pills

Where you see itLayoutWhen it appears
Finance → Transactions tabFull-width inline strip above search and invoice filter pillsFixed date is saved and the tab has finished loading (not the initial skeleton)
Finance → Transactions — bulk toolbarCompact toolbar chip in the floating action row (beside Invoice selected, Issue allocation, and related controls)Fixed date is saved and you have selected ledger rows with at least one pending or failed allocation ready to invoice
Transaction detail sidebarFull-width inline strip above the Allocations sectionFixed date is saved and the open payment has one or more allocation rows

The toolbar layout uses smaller type and a max-width cap so the reminder fits beside Issue allocation and Invoice selected without wrapping the whole ledger. The inline layouts use the full content width above search or above Allocations.

Finance Transactions — compact fixed invoice date reminder in the bulk toolbar beside Issue allocation

Finance Transactions — fixed invoice date reminder above Allocations in transaction detail

Month-end invoicing with a fixed date

Use this when every Fatura or Invoice-xpress document in a batch should share one posting date (for example the last calendar day of the month):

  1. Open Account Settings → Invoicing, turn Use today as invoice date off, set Invoice date, and Save.
  2. Open Finance → Transactions. Confirm the amber inline banner above search references your saved date (see screenshot above).
  3. Narrow the ledger with the date range control, invoice status pills, or Search so only payments you plan to invoice remain visible.
  4. Select one or more rows. The floating toolbar appears when at least one selected payment has allocations in Pending or Failed invoicing state — that is when the compact toolbar banner copy also appears beside bulk Issue allocation / Invoice selected (see bulk-toolbar screenshot above).
  5. Run your bulk invoicing actions, then spot-check rows in transaction detail (click a row): the same reminder sits above Allocations when the payment still has allocation lines (see detail screenshot above).
  6. When the batch is complete, return to Invoicing and turn Use today as invoice date back on if day-of-issue dating should apply again.

Finance Transactions — ledger table with type-summary cards, search, invoice filter pills, and row actions

Screenshot freshness

Ledger table capture refreshed 2026-07-07 02:12 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-finance-transactions-tab-list-screenshot.ts — replaces a legacy Retool editor leak).

Type summary cards (System vs Manual)

Above the search bar and invoice-status pills, a card row summarizes every in-payment in the active date range (and any Other filters / search you applied). Use it to scope the ledger before you scroll or export.

Card groupSub-cardsWhat it includes
All(single tile)Every payment type in the filtered set, with optional Confirmed (green), Pending (amber), and Rejected (red) sub-totals you can click to filter status.
System TransactionsVirtual Iban, Credit CardAutomated tenant pay-in rails (vIBAN transfers, card captures).
Manual TransactionsTransfer, Cash, Deposit Refund, Platform, OthersOperator-recorded or integration-labelled payments — including security-deposit refunds posted from a booking’s Deposit tab.

Click a group header (System Transactions or Manual Transactions) to limit the table to that bucket. Click an individual sub-card (for example Deposit Refund) to filter by payment type; click again to clear. Each sub-card shows a count, total amount, and the same status breakdown chips as All.

During check-out and deposit settlement, use Deposit Refund to isolate outbound deposit returns without mixing them with rent vIBAN inflows. The booking Payment plan tab shows the matching scheduled Deposit Refund line with a minus-prefixed deposit amount on the same due date.

Finance Transactions — type summary cards with Manual Transactions expanded and Deposit Refund sub-card visible

Screenshot freshness

Type-summary cards capture refreshed 2026-06-19 00:45 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-finance-transactions-type-summary-cards-screenshot.ts).

Finance Transactions — Other filters drawer with Transactions source-platform multi-select

Archived bookings on the ledger (#1897)

When you Delete Booking (soft-archive), the reservation disappears from default Bookings lists but some payment rows may remain on Finance → Transactions:

Visibility on archived bookingPayment types
Still shownvIBAN and credit card — automated money-movement rails Vivin preserves for bank/card reconciliation
HiddenManual operator entries — transfer, cash, deposit refund, provider platform (partner-recorded payments that appear as Provider platform payment / Manual payment in detail), and other non-automated types

Canceled bookings that are not archived keep every transaction type visible. Ledger rows with no booking link (platform-level movements) are never hidden by this gate. The type summary cards above the ledger separate System Transactions (Virtual Iban, Credit Card) from Manual Transactions (Transfer, Cash, Deposit Refund, Platform) — the same buckets affected by archived-booking visibility (#1897). When manual rows seem to vanish after Delete Booking, see FAQ — Manual payments after Delete Booking (finance-transactions-type-summary-cards.png). When you are unsure whether to Cancel or Delete, use the FAQ — Cancel Booking vs Delete Booking decision table (#1897 / #2076). Before you archive an integration booking, clear any pending provider platform in-payment — see Bookings — Provider platform payment (#2076).

Finance Transactions — soft-archived booking (AA-11-5D-A) still showing Virtual Iban rows after Delete Booking; Manual Transactions for that reservation are hidden

Screenshot freshness

Archived-booking ledger capture added 2026-07-27 22:15 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL VIVIN_DOCS_TENANT_SEARCH="Iiro Kohal" npx tsx tools/capture-finance-transactions-archived-booking-ledger-screenshot.ts) — search scoped to a soft-archived AA-11-5D-A reservation; only Virtual Iban rows remain (in-range Transfer hidden by #1897). Walkthrough MP4: archived-booking-ledger-visibility-flow.mp4.

Each ledger row shows:

  • Booking — tenant name, unit, and booking status pill
  • Date
  • Type
  • Payment — Rent, Deposit, Deposit Refund, Virtual Iban, Transfer, Platform, etc.
  • Status
  • Source
  • Amount
  • Invoiced — payment-level invoicing state

Click a row to open transaction detail. The Allocations section lists which scheduled charge each portion of the payment was applied to (month, charge type, paid amount, invoicing status, and per-allocation actions).

Finance Transactions — transaction detail Allocations grid (month, type, amount, status)

Screenshot freshness

Allocations grid capture refreshed 2026-07-07 02:12 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-finance-transaction-detail-allocations-screenshot.ts — replaces a legacy Retool “Mapped value” editor leak; filename kept for link stability).

Export

Use Export on the Transactions toolbar to download whatever is currently in the ledger — the same date range, Other filters, Select platforms pills, and search you see on screen are what the file contains.

Open Export, then choose CSV or Excel (.xls). Downloads use dated filenames: vivin-transactions-YYYY-MM-DD.csv or vivin-transactions-YYYY-MM-DD.xls. If nothing matches the current filters, the export action does not produce a file.

Finance Transactions — Export menu (CSV / Excel) on the Transactions tab; download reflects current date range and filters

Export columns — Each downloaded row represents one payment allocation (payments with multiple allocations repeat the payment-level fields on several lines; payments with no allocations export a single row with blank allocation columns). Besides booking dates, payment type, status, and allocation amounts, the file now includes portfolio and invoicing identity fields operators asked for in accounting exports:

ColumnWhat it contains
Booking IDVivin booking UUID
Unit NameListing internal name for the reservation
Guest NameTenant display name on the booking
Guest EmailTenant email
Billing NameInvoice billing name (company name when Use company billing is on)
Fiscal IDTenant fiscal identifier used on invoices
Billing Fiscal IDCompany billing fiscal id when company billing is enabled
Use Company BillingYes / No
Home AddressTenant home address when set
Billing Address, Billing City, Billing Postal Code, Billing CountryCompany billing address fields when company billing is enabled
Date, Type, Payment Type, DescriptionLedger row metadata
Start Date, End Date, Check-in Date, Check-out DateBooking window context
Status, Total Transfer AmountPayment status and received amount
Year, Month, Allocation Payment Type, Item Net Amount, Invoice Status, Paid Allocation AmountPer-allocation slice when the payment is split across scheduled charges

This tab is useful for reconciliation — cross-checking received payments against your bank records and feeding accounting tools without re-joining tenant profile data manually.

Row actions on in-payment rows

Each in-payment row in the ledger table exposes trailing icon actions (same confirmation modals as the booking Transactions tab). Permissions: finance.approve_payments for approve / reject / revert; bookings.delete_others for delete; finance.assign_payments_to_other_bookings for reassignment — configure them under Users and roles > Role Permissions.

ActionWhen enabledWhat it does
Approve paymentStatus pending or processingConfirms the in-payment and applies allocations.
Reject paymentSame pending statesRemoves the payment from the booking and ledger. Confirmation includes a red banner: Warning: this may require a credit note and invoice follow-up.
Revert paymentStatus confirmed or rejectedRolls allocations and balances back; blue info banner: Info: this may require invoice or credit note updates afterwards.
Assign to other bookingNo allocation is invoicedSame move as on the booking sidebar — see Assign a payment to another booking.

On the ledger, Revert and Delete use per-row icon actions. Reject for pending manual in-payments is available from the bulk Reject selected control when you tick row checkboxes (there is no per-row reject icon on Finance). Approve selected and Reject selected share the same confirmation modals as the per-row actions on booking Transactions — the bulk bar appears above the table when at least one row is checked:

Finance Transactions — bulk selection bar with Approve selected and Reject selected (ledger has no per-row reject icon)

The Approve Payment and Reject Payment confirmation modals match booking Transactions — screenshots from the booking sidebar below:

Finance Transactions — Approve payment confirmation (same modal as booking Transactions row action)

Finance Transactions — Reject payment confirmation with red credit-note warning banner (same modal as booking Transactions row action)

Finance Transactions — Revert payment confirmation with blue invoice follow-up info banner

Delete payment on the ledger

Delete payment (trash icon) removes an in-payment entirely when Vivin allows it. The confirmation modal warns that the action cannot be undone.

Delete stays disabled when:

  • The payment type is vIBAN or provider platform (system-matched rails Vivin must preserve on the ledger).
  • Any allocation has invoice status invoiced, manual, or draft — resolve Finance / accounting records first.

A rejected provider-platform in-payment no longer blocks Delete Booking on the reservation — the guard only applies while a non-rejected row remains. See Bookings — Delete Booking (soft archive) (#2076).

Finance Transactions — Delete payment confirmation (action cannot be undone)

Booking-side Transactions does not expose delete; triage mistaken manual entries from this ledger tab when your role includes bookings.delete_others.

Screenshot freshness

Reject (credit-note banner), revert (info banner), delete, and approve confirmation captures refreshed 2026-06-16 01:15 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-finance-bookings-payment-action-modals.ts — approve/reject modals from booking Transactions; revert/delete from Finance ledger).

Assign a payment to another booking

Users with Assign payments to other bookings (finance.assign_payments_to_other_bookings) can move an in-payment from one booking to another when the money landed on the wrong reservation.

The target booking can belong to a different tenant. The one hard boundary is the Vivin account: source and target must both sit in the account you are signed in to, and that isolation is enforced server-side. The common driver is a tenant paying for a family member — the bank transfer is matched to the payer's booking, and the receipt has to move to the relative's booking under a different tenant profile.

On each eligible row, use Assign to other booking (arrows icon) in the trailing action group. The control is disabled when the payment has an allocation already marked invoiced, or when your role lacks the permission (configure it in Users and roles > Role Permissions, Finance group). Archived bookings are not offered as targets.

The whole payment moves

Reassignment transfers the entire in-payment. Vivin does not split one receipt across two bookings, so there is no partial reassignment.

Finance Transactions — Assign to other booking modal with target booking selector

The modal warns that the payment is removed from the current booking and reapplied to the selection. Choose Select target booking, then Assign to other booking. Each option in the picker shows the property / unit, booking dates, and booking code next to the tenant name — check them before confirming, since a cross-tenant move puts the receipt on someone else's ledger.

Transaction detail sidebar — Click any ledger row to open the right-hand transaction detail drawer. When the payment is linked to a booking, scroll to Assign to other booking: pick the target from the searchable dropdown, then Reassign (same permission, account-isolation, and invoicing rules as the row action).

Finance — transaction detail sidebar with Assign to other booking target selector and Reassign

Walkthrough: open Assign to other booking from the ledger row (demo closes the modal without confirming), then open transaction detail and scroll to the same control with Reassign (demo does not save).

You can run the same move from a booking’s Transactions tab — see Bookings > Transactions.

Financial Reconciliation

Reconciliation is the process of aligning bank or channel payouts with the payment rows and allocations Vivin already recorded. The Transactions tab is your ledger — use the date range, Other filters, Select platforms, and Export together when comparing against a bank statement or OTA payout file.

Bulk actions on the Transactions ledger

Users with Approve payments can select multiple rows with the checkboxes (or the header checkbox for every row on the current filtered page). A floating N selected bar appears above the table with bulk actions:

  1. Approve selected / Reject selected — confirm or reject pending manual payments in one step. Reject selected opens the same Reject Payment modal (red credit-note warning) as booking Transactions; use it when several mistaken manual entries need clearing without opening each booking sidebar.
  2. Invoice selected — move eligible allocations toward invoicing where your account uses integrated invoicing.
  3. Issue allocation — issue invoice lines for pending or failed allocations on the selected rows (button counts reflect how many allocations qualify).
  4. Set manual — mark qualifying allocations as manually handled without issuing through the integration.
  5. Revert invoice — undo draft or issued invoice state on eligible allocations when you need to correct a batch mistake.

Finance Transactions tab — two rows selected with the bulk selection action bar visible

Screenshot freshness

Bulk Approve selected / Reject selected close-up refreshed 2026-06-16 02:06 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-finance-transactions-bulk-reject-bar.ts). Full-table bulk bar (finance-transactions-bulk-selection-bar.png) from prior capture.

tip

Filter with Select platforms and the date range before multi-select when you reconcile one channel's payout. Open a single row to review allocation mapping, overpayments, and Paid At when a payment appears in the wrong reporting month.

Issuing credit notes (integrated invoicing)

When you reject or revert an in-payment that was already invoiced through Hostkit or Invoice-xpress, Vivin rolls back allocations in-product and creates credit-note reversal rows on the affected allocations. Those reversals stay not issued until finance pushes them to your invoicing provider or marks them handled externally.

On Finance → Transactions, use the invoice filter pills beside Export:

PillWhat it shows
AllEvery ledger row in the current date range and filters
InvoicedRows with at least one invoiced positive allocation
Not InvoicedRows with allocations still pending invoice issuance
Not issued credit noteRows with a credit-note reversal that has not been sent to the provider yet
Issued credit noteRows where the credit note was issued or manually registered

Finance Transactions — invoice filter pills with Not issued credit note selected

Bulk issue — Tick rows that include pending credit-note reversals. The floating selection bar shows Issue credit notes (N) when at least one selected row has an eligible not-issued reversal. Confirm to queue issuance through your integration (same dedicated path as per-allocation actions — credit-note reversals are excluded from Invoice selected / Issue allocation sweeps for positive invoices).

Finance Transactions — bulk selection bar with Issue credit notes (N)

Transaction detail — Click a ledger row to open the right-hand drawer. On each credit-note reversal allocation that is still pending, use Issue credit note to provider (teal document-upload icon; tooltip label) to push the document to Hostkit or Invoice-xpress, Set manual (wrench) when accounting handles the nota de crédito outside Vivin, or attach a PDF reference when you registered the document manually (paperclip control). Issued credit notes expose their document for download the same way positive invoices do.

Finance transaction detail — pending Credit note allocation with Issue credit note to provider tooltip

Walkthrough: filter Not issued credit note, search a clean tenant, select rows to reveal Issue credit notes (N), then open a row and review the pending Credit note allocation actions (do not confirm issuance on shared staging).
Screenshot freshness

Credit-note queue stills refreshed 2026-07-27 14:22 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL VIVIN_DOCS_CREDIT_NOTE_SEARCH='Joana Rushiti' npx tsx tools/capture-finance-transactions-credit-note-screenshots.ts). Walkthrough MP4 recorded 2026-07-27 15:10 UTC (npx tsx tools/record-finance-issue-credit-notes-flow-mp4.ts — same search; no bulk issue / provider push confirmed).

After reject/revert on invoiced months

The red Reject and blue Revert modals warn that accounting follow-up may be required — that follow-up is this Not issued credit note queue, not a separate spreadsheet. Hub matrix: Common Workflows — Reject/revert mistaken receipts. Modal screenshots and a booking Transactions walkthrough: FAQ — Reject or revert an incoming payment (bookings-detail-transactions-reject-modal-credit-note-banner.png, bookings-detail-transactions-revert-modal-info-banner.png, finance-transactions-bulk-reject-selected-bar.png, bookings-payment-row-actions-flow.mp4). Pair with Payment Allocation — Correcting mistaken receipts, Common Workflows — Pending manual receipt approval (duplicate still pendingReject), Portfolio KPI review — Step 7 (month-end duplicate cleanup), and Glossary — Credit note (payment reject/revert). To create a credit-note reversal on an invoiced Contract Values line (before this queue fills), use Bookings → Contract Values → Credit note — see Bookings — Manage credit notes.

Platform Reconciliation

Different rental platforms have different commission structures and VAT rules. When reconciling platform payouts:

  • Each platform deducts its own commission before paying you, so the received amount may differ from the booking value in Vivin.
  • Vivin tracks the gross booking value (what the tenant pays) and the net amount received separately.
  • Open Other filters on the Transactions tab and use Select platforms (top Transactions section) to isolate payments from one or more channels; active choices appear as pills above the table.
Important

Ensure the Paid At date is set correctly when recording payments. An incorrectly set date causes the payment to appear in the wrong period in financial reports. If you notice a payment is showing up in the wrong month, this is the field to check in the Transactions tab.

Payouts Tab

The Payouts tab tracks outgoing payments from your company to property owners and, where configured, tenants. Use it to review scheduled transfers, confirm what landed in the bank, and export payout batches for accounting.

Account-wide approval and payout destination rules are configured under Account Settings → Payments → Out Payments (Approval type and Payout type): Skip approval lets the scheduler auto-approve new batches; Approval required leaves them in To approve until an operator with Approve payments permission acts. Payout type chooses Account (company IBAN) vs Owners (per-owner IBAN batches).

Finance Payouts List

Use Export on the Payouts toolbar the same way as on Transactions: pick CSV or Excel to download the filtered payout list (vivin-payouts-YYYY-MM-DD.csv / .xls). The date range and Other filters on the tab apply before download.

The three summary cards above the table (All, Credit Card, IBAN) count and total payouts over the active date range and honour every Other filters drawer choice that the payouts API supports — including Booking → Select categories (booking tags), Tenant → Tenant category, property, owner, and IBAN/fiscal filters (#2352). Toolbar Search scopes the table only; the cards do not change when you type in search.

Finance Payouts — Export menu (CSV / Excel) on the Payouts tab; download reflects current date range and filters

Table columns

Each row is one payout (or a schedule summary row for upcoming windows — see selection rules below). Sortable columns include:

ColumnWhat it shows
MethodIBAN Payment or Credit Card icon for the payout rail.
Destination IBANBank account the payout is sent to (owner IBAN, company IBAN, or tenant refund account). Credit card payouts and rows with missing banking details show ; open the Payout details sidebar for recipient name, Owner / Tenant subtype, and Set recipient when banking is incomplete. Sorting orders by IBAN string.
DescriptionOperator-facing note for the batch (for example how many tenant payments are grouped).
DateScheduled or recorded payout date.
Tenant PaymentsCount of incoming tenant payments rolled into this payout.
Contract linesCount of rent or fee allocations tied to scheduled contract charges in this payout. Zero usually means payments are not allocated against those charges (for example direct tenant transfers). Hover the column header for the full definition; hover a 0 cell for a short “no contract charge allocations” hint.
AmountPayout total in EUR.
StatusWorkflow badge — To approve, Pending, or Completed.
ReceivedWhether the transfer is recorded as received in Vivin (Yes / No).

Use the toolbar Search box to filter by description, payout type, destination IBAN, or tenant name on any booking grouped into the payout (server-side match on grouped in-payments).

Finance Payouts — Contract lines column with per-row counts and header tooltip context

Confirm received (bulk)

When bank transfers have cleared, mark payouts as received without opening each row:

  1. Select one or more eligible rows with the left checkboxes. The header checkbox selects every eligible payout in the current view (the Upcoming — Next 7 days block plus the filtered table below). When only some eligible rows are checked, the header control shows an indeterminate state (dash) instead of a full check.
  2. A floating bar shows N selected · Total €… (count and summed Amount for the selection) with Clear selection and Confirm received. While work is in progress, the bar also shows Confirming X of Y… and both actions are disabled.

Finance Payouts — bulk selection bar after choosing two eligible rows (Clear selection and Confirm received)

  1. Confirm received opens a dialog that restates how many payouts you are about to mark and the total € for that batch. Confirm to run the updates, or cancel to return without changes.

Outcomes

ResultWhat you see
All succeedSuccess toast (for example “3 payouts confirmed as received.”); selection clears and the table refetches.
Some failError-style toast with confirmed and failed counts (for example “2 confirmed, 1 failed.”). Rows that failed stay selected so you can fix the issue and retry; succeeded rows drop out of the selection.
All failError toast (“Failed to confirm payouts as received.”); your selection is kept.

If another user already marked a payout received while you had it selected, the product treats that as success for that row (the end state matches Confirm received) and continues with the rest of the batch.

When no payout in the current date range and filters is eligible, checkboxes stay disabled and bulk confirm is unavailable — widen the range or clear filters, or use the row sidebar Mark received for a single payout.

Finance Payouts — Confirm payouts as received dialog (review before confirming)

Walkthrough: filter to Not Received, select eligible payout rows, open Confirm received, review the dialog, then cancel without changing data (demo).

Upcoming — Next 7 days rows appear in a highlighted block at the top when payouts fall in the next week. Click any data row (outside the checkbox) to open the Payout details sidebar: recipient name, Destination IBAN, status, Received, and an In payment breakdown table of grouped tenant payments. When the table shows in the IBAN column, use the sidebar to confirm payee identity and fix missing banking via Set recipient (Settings > Owners or the booking sidebar).

Selection rules

Row typeCheckbox
Stored payout not yet Received (real payout id)Selectable — use bulk Confirm received or the sidebar Mark received control.
Already ReceivedDisabled — tooltip Already received.
Schedule summary row (non-UUID id)Disabled — tooltip Schedule summary rows cannot be selected.

After a refetch, any selected id that is no longer eligible (for example it flipped to Received) is removed from the selection automatically.

Bulk confirm requires Approve payments permission (finance.approve_payments), same as viewing this tab.

Payout processing (background)

Vivin calculates owner shares from configured revenue-split rules and management-fee deductions. Scheduled jobs create outgoing payout batches from finalized tenant vIBAN in-payments; whether new batches need a manual approve step or are auto-approved is configured under Account Settings → Payments → Out Payments (Approval type and Payout Type).

Operators still reconcile against bank statements using Export, Contract lines, and the In payment breakdown in the detail sidebar before marking payouts received.

Deposits Tab

Pair with other Finance sections

Deposit rows pair with Bookings — Deposit tab and Managing a Check-out — widen the date range before searching older move-outs (Glossary — Finance Deposits date range). Full pairing matrix: Finance section cross-reference.

The Deposits tab tracks security deposits across bookings in the selected date range (same range control as Transactions and Payouts). Use it to see who still owes the deposit, what is ready to refund, and what is already closed out.

The default window is roughly the last three months through today. A deposit row stays visible when any of these dates fall inside that window: check-in / contract start, check-out / contract end, or Refund Due Date (derived from your account’s refund-limit setting). Move-out refunds for older ended bookings often sit outside the default slice — click Clear date range selection on the toolbar (or widen from / to) before you search for a tenant or expect Mark disputed / Resolve dispute row chips to appear. Hub matrix: Common Workflows — Deposit missing on Finance Deposits. Step-by-step: FAQ — Deposit missing on Finance Deposits (finance-deposits-date-range-toolbar-default.png, finance-deposits-date-range-toolbar-cleared.png, finance-deposits-date-range-clear-flow.mp4). See Glossary — Finance Deposits date range for the intersection rule.

Finance Deposits — default date range on the toolbar (about the last three months)

Finance Deposits — date range cleared so portfolio triage includes older move-outs

Date-range toolbar captures refreshed 2026-06-21 00:12 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-finance-deposits-date-range-screenshot.ts).

Finance Deposits Tab

Deposits tab overview capture refreshed 2026-07-08 00:15 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-finance-deposits-status-cards-screenshots.ts).

Table columns

Each row is one deposit record. Sortable columns include:

ColumnWhat it shows
Unit NameListing or unit the booking belongs to (click to open the listing sidebar).
BookingTenant name plus a small booking lifecycle chip — Ongoing, Upcoming, Ended, or Canceled — so you can tell move-out refund work from mid-stay context at a glance.
AmountSecurity deposit amount on the contract.
PaidAmount already collected toward the deposit.
BalanceCurrent booking financial balance (negative values mean the tenant still owes money on the booking, which affects how much can be returned).
Est. RefundEstimated refund amount derived from the deposit and booking balance.
Refund Due DateTarget date for processing the return (when applicable).
StatusDeposit workflow status (see below).
Tenant IBANWhether the tenant has supplied bank details needed for a refund.
ActionsMark refunded or Revert refund when your process allows (permission-gated).

Click a row (outside the unit link) to open the booking sidebar for full context.

Deposits overview panel

Above the table, a bordered Deposits overview panel groups two filter dimensions (#2091). Both respect the active date range and Other filters (except lifecycle card counts, which stay stable while you toggle lifecycle cards — only the table narrows).

Timeline row

The Timeline row answers when refund work is due relative to booking dates:

CardWhat it shows when selected
TotalEvery deposit in the current slice (default).
UpcomingDeposits tied to bookings that have not started yet.
OngoingDeposits held during active stays.
Pending refundDeposits ready for refund processing (pending / legacy toRefund).
OverdueDeposits past Refund Due Date that still need action.

Each card shows a row count (top-right) and the total deposit amount (€) for that queue. Click a card to filter the table; click the same card again to return to Total. Refunded rows are no longer a Timeline card — use the Deposit lifecycle status row below.

Deposit lifecycle status cards

The Deposit lifecycle status row answers where each deposit sits in the payment/refund lifecycle (depositStatus on the booking — see Glossary — Deposit lifecycle status). Click Partial paid to narrow collection shortfalls portfolio-wide — hub matrix: Common Workflows — Partly collected security deposit; step-by-step: FAQ — Partly collected security deposit (finance-deposits-lifecycle-partial-paid-card.png, finance-deposits-partial-collection-walkthrough.mp4). All six cards always render; counts are scoped to the selected Timeline bucket (for example “of Overdue deposits, how many are Ready to refund?”).

CardWhat it filters when selected
Not paidNo deposit allocation recorded yet.
Partial paidSome deposit collected but below Amount — portfolio triage for confirmation shortfalls.
Fully paidDeposit collected in full; pre-refund.
DisputedDeposit dispute freeze — refund actions blocked.
Ready to refundOperations marked Ready To Refund — finance can queue the bank return.
RefundedOutbound deposit return recorded in Vivin.

Click a lifecycle card to toggle it into the table filter (multi-select supported). Click an active card again to remove it. Lifecycle cards pair with Other filters → Deposit status on Bookings and Finance — same option set, different surface.

Finance Deposits — Timeline row (Total, Upcoming, Ongoing, Pending refund, Overdue) and Deposit lifecycle status row (Not paid through Refunded)

Finance Deposits — Partial paid lifecycle card selected, narrowing rows to partly collected deposits

Deposits overview captures refreshed 2026-07-09 04:01 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5174 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-finance-deposits-status-cards-screenshots.ts — develop frontend with #2091 lifecycle cards). Row-click from a Partial paid row opens the booking Deposit tab — see the amber Partially paid Initial Deposit badge on Bookings — Deposit tab.

Walkthrough: click the Partial paid card in the Deposit lifecycle status row, open a partly collected row, then review the amber Partially paid badge on the booking Deposit tab.

Partial collection walkthrough re-recorded 2026-07-09 05:01 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5174 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/record-finance-deposits-partial-collection-walkthrough-mp4.ts — develop frontend with #2091 lifecycle cards).

Walkthrough: click Deposit lifecycle status cards on this tab (Ready to refund, Refunded, Not paid) and row-open to the booking Deposit tab lifecycle pill.

Deposit lifecycle status walkthrough recorded 2026-07-26 16:15 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/record-deposit-lifecycle-status-flow-mp4.tsPartial paid / Fully paid cards skipped when visible rows had clone/test markers).

Loading more rows (Deposits table)

The Deposits table loads from the server in chunks (first batch, then 5 rows per scroll) like Transactions and Payouts. Scroll near the bottom of the workspace to fetch the next batch; skeleton rows may appear at the bottom while a request is in flight. Changing date range, a Timeline card, a Deposit lifecycle status card, Search, or Other filters resets the list from the first batch. Overview card counts and € totals always reflect the full filtered population for their dimension, not only rows already on screen.

Status badges (what each label means)

Row Status values map to the date-driven deposit queue (DepositStatus in the API). Timeline cards (Upcoming, Ongoing, Pending refund, Overdue) are subsets of these badges — they do not add separate backend states. Deposit lifecycle status cards filter on operational depositStatus instead (see Deposit lifecycle status cards).

Badge (English UI)Typical meaning
ReceivedDeposit has been collected (received).
UpcomingBooking has not started yet; refund work is usually still in the future (upcoming).
OngoingActive booking; deposit is held during the stay (ongoing).
Pending refundRefund is expected — matches quick-filter chip Pending refund (pending or legacy toRefund; both render the same badge text).
To RefundSame queue as Pending refund on older rows (toRefund).
OverduePast Refund Due Date — prioritize for compliance (overdue).
RefundedRecorded as returned in Vivin after your bank transfer (refunded).
Not RefundedDeposit retained (damages, unpaid balance, or policy) — not returned to the tenant (notRefunded).

Row-level lifecycle pills (Fully Paid, Ready to Refund, Disputed, and similar) mirror the booking Deposit tab when payment-driven lifecycle is enabled.

Deposit disputes (portfolio actions)

When Enable deposit disputes is On, users with bookings.dispute see extra row chips on deposits whose lifecycle is Fully Paid:

Row chip (English UI)When it appearsEffect
Mark disputedCollected deposit is Fully Paid, not yet refundedFreezes Refund / Mark refunded until the dispute is resolved
Resolve disputeRow lifecycle is DisputedClears the dispute and restores the normal refund queue

Use disputes for portfolio triage the same way as Mark as Disputed on the booking Deposit tab — for example when a tenant challenges deductions before you initiate the bank transfer. Document the reason in Internal Notes or a linked maintenance ticket so finance knows when to Resolve dispute and proceed.

Finance Deposits — Mark disputed row chip on a fully collected deposit (date range cleared for portfolio triage)

Finance Deposits — Resolve dispute row chip while the deposit lifecycle is Disputed

Finance deposit dispute row captures refreshed 2026-06-19 12:00 UTC (VIVIN_DOCS_BASE_URL=http://localhost:5173 VIVIN_DOCS_RECORD_API=$VITE_API_BASE_URL npx tsx tools/capture-deposit-disputes-screenshots.ts — clears the default three-month date range before row scans; resolve row uses a portfolio-wide fallback when tenant search misses the disputed row).

Walkthrough: Mark as Disputed on the booking Deposit tab, review the blocked Refund state, spot the matching Resolve dispute row on Finance → Deposits, then Resolve Dispute to restore the refund queue (demo leaves staging unchanged).

Deposit dispute walkthrough video added 2026-06-20 12:08 UTC (tools/record-deposit-dispute-walkthrough-mp4.ts — clears Finance → Deposits date range before the portfolio row shot).

Use the badge on the row as the source of truth when a label does not appear in the table above.

Search, export, and filters

  • Search — filter by unit, tenant name, or IBAN substring.
  • Export — open Export on the toolbar and choose CSV or Excel (.xls) to download the current slice (vivin-deposits-YYYY-MM-DD.csv / .xls). The date range, Timeline cards, Deposit lifecycle status cards, search, and Other filters all apply before download — same split-button pattern as on the Transactions tab.

Finance Deposits — Export menu (CSV / Excel) on the Deposits tab; download reflects date range, status chips, search, and Other filters

  • Use Other filters (Finance drawer) together with Deposits when you need the same cross-cutting filters as on Overview and Income (properties, bookings, nationalities, and other finance dimensions your workspace exposes).

Deposit Return Workflow

When a tenant moves out, use this tab to:

  1. Confirm Balance and Est. Refund against the booking’s final charges.
  2. Ensure Tenant IBAN is present before you initiate an external bank transfer.
  3. Use Mark refunded when the return is complete in the bank (or Revert refund if you recorded it too early).
Business Rule

The Finance module records the decision on deposit deductions and returns, but the actual bank transfer to the tenant is handled outside the platform. Vivin tracks what was decided, not the bank transfer itself. Ensure tenants have provided their IBAN before initiating a return.

Walkthrough: search the Deposits table, use Revert refund on a refunded row, then Mark refunded again when the bank return is recorded (demo reverses the same row to leave staging unchanged).

Automated Rent Collection

Vivin provides multiple automated payment channels to streamline rent collection:

Virtual IBANs

Each tenant receives a unique virtual IBAN for bank transfers:

  • Zero commissions — no fees on bank transfer payments.
  • Automatic matching — payments received on a tenant's virtual IBAN are automatically matched to their booking.
  • Unique per tenant — eliminates the need to manually identify which tenant sent which transfer.

Credit Card Payments

Tenants can optionally pay by credit card through the Tenant Portal:

  • Commission charged to tenant — the processing fee is passed to the tenant, not the operator.
  • No cost for operators — credit card payments do not reduce your revenue.
  • Instant processing — payments are recorded and allocated immediately.

Automated Reminders

The system automatically sends payment communications:

  • Upcoming payment notifications — email and push notifications before a payment is due.
  • Overdue payment reminders — automated escalation when a payment is past due.
  • Configurable timing — set how many days before/after the due date reminders are sent.

Invoice Automation

Vivin automates invoice generation across your entire billing workflow:

  • Automated generation — invoices are created automatically for rent, utilities, cleaning, repairs, and other services.
  • Customisable templates — brand your invoices with your company logo, colours, and formatting.
  • Tenant receipt email (optional) — after a final invoice is issued, Vivin can email the PDF to the tenant and/or a copy to the account email when enabled under Preferences → Final invoice receipt emails. Issuance and Files/transaction links work even when both toggles are off.
  • Accounting integration — integrates with invoicing providers such as Invoice-xpress or Hostkit (configure under Settings > Integrations). Hostkit issues Fatura-Recibo documents per listing API key; Finance Transactions can link to the Hostkit invoice URL when the allocation is invoiced. Bulk Hostkit runs pace API calls and retry HTTP 429 automatically — large Issue allocation / Invoice selected batches may take several minutes (FAQ — Why is bulk Hostkit invoicing slow?).

Tenant invoice receipt email

Final invoice issuance from Transactions (row Issue allocation, bulk Invoice selected, or provider sync) persists the PDF on the booking and updates allocation Invoiced state. Whether the tenant (or your account inbox) also receives an automatic email is controlled account-wide on Preferences → Notifications & Emails → Final invoices (receipts):

Preference toggleEffect after issue
Send invoice receipt email to tenantBranded email to the booking tenant with the invoice PDF attached (requires tenant email on file).
Send invoice receipt copy to accountCopy to the workspace account email only, or CC on the tenant message when both toggles are on.

Proforma documents follow the parallel Proforma invoices toggles on the same card. Operators still open issued PDFs from transaction detail, Bookings → Files, or provider see invoice links regardless of email settings.

Troubleshooting slow or stuck Hostkit batches

When Issue allocation or Invoice selected leaves rows Pending or Failed for several minutes, Vivin is usually pacing Hostkit per listing key and retrying HTTP 429 — leave the batch running, then refresh Transactions before clicking Issue allocation again on the same rows (FAQ — Bulk Hostkit invoicing slow; hub: Common Workflows — Bulk Hostkit invoicing). Persistent failures: confirm Listing keys and Hostkit invoice series (finance-transactions-bulk-selection-bar.png, settings-invoicing-hostkit-series.png).

Troubleshooting missing receipt emails

When Send invoice receipt email to tenant (or the account-copy toggle) is on but the tenant reports no email, open Bookings → Files or Transactions first — if the PDF is already there, invoicing succeeded and only delivery failed. Confirm the booking tenant email, account toggles on Preferences → Final invoice receipt emails, and the recipient’s spam folder. Vivin does not undo Invoiced state when outbound mail fails; avoid duplicate Issue allocation runs unless finance intentionally needs a new document.

When Hostkit is your active invoicing provider and a chargeable allocation has been invoiced, Vivin can surface a Hostkit invoice link in two places operators reconcile from:

SurfaceWhat you see
Finance → TransactionsTransaction detail for an invoiced allocation may include an external link to the Hostkit document (open in a new tab).
Bookings → booking detail → FilesInvoiced allocations appear as synthesised PDF tiles (Invoice_<ref>.pdf) merged into the file grid — Preview / Download only; Delete is hidden because they are not persisted uploads. See Bookings — Files tab.

Opening a Hostkit invoice from transaction detail

  1. Open Finance → Transactions and click a payment row to open the transaction detail sidebar.
  2. Scroll to the allocation rows for that payment. Each row shows an invoice status (for example Pending, Draft, or Invoiced).
  3. When the status is Draft or Invoiced, the trailing action group includes an external-link control with tooltip see invoice (English UI). Click it to open the stored Hostkit document URL in a new browser tab.
  4. The see invoice control stays disabled until Vivin has a stored invoiceDocumentUrl for that allocation — hover shows No stored invoice link yet for this allocation (e.g. refresh after invoicing). Close and reopen the sidebar, or use Refresh on the ledger, after batch Issue allocation / Invoice selected actions finish.
  5. To undo a mistaken issue, use Revert invoice on the same allocation row (dark icon beside see invoice) before re-issuing. This is separate from ledger bulk Revert invoice — both operate on allocation invoice state.

The same see invoice pattern applies when Invoice-xpress is your invoicing provider; only the destination URL differs.

If the link opens but the PDF is still generating in Hostkit, wait a short interval and retry, or open the URL in a desktop browser — server-side PDF fetch can lag Hostkit’s UI. If no link appears, confirm the listing’s Listing keys entry and a non-empty Hostkit invoice series are configured (Integrations — Hostkit, Invoicing — Hostkit series) and that the allocation is eligible for invoicing. Vivin blocks Issue allocation when the series field is blank — you will see Hostkit invoice series is not configured rather than a silent Hostkit default-series document.

If Hostkit shows the right invoice but Vivin attached the wrong PDF (or see invoice opened an unexpected document), verify Hostkit invoice series matches the FR series you issue from in Hostkit. Hostkit sequence numbers repeat across series; Vivin resolves documents by {series}/{id} and downloads PDFs from Hostkit’s permalink for that pair — a series mismatch in Settings can block links or point at the wrong row until the series field is corrected for new issues.

tip

Set up Hostkit keys and series before you expect links on Transactions — see the full checklist in Settings > Integrations — Hostkit (invoicing).

tip

Configure your invoice templates and VAT rates in Settings > Invoicing before generating your first invoices to ensure consistent formatting and compliance.

Financial Dashboards & Reporting

The Finance module provides comprehensive dashboards for financial oversight:

Revenue Tracking

  • Paid vs. unpaid — real-time visibility into collected versus outstanding revenue.
  • By property — compare revenue across properties to identify top performers.
  • By unit — drill down to individual unit profitability.
  • By time period — track revenue trends over custom date ranges.

Outstanding Debt Overview

  • Ageing analysis — see how long payments have been overdue, segmented by 30/60/90+ days.
  • Priority list — surface the largest outstanding amounts for immediate follow-up.
  • Trend tracking — monitor whether total outstanding debt is increasing or decreasing.

Cash Flow Statements

  • Account-level summaries — overall cash flow across your entire portfolio.
  • Property-level detail — income and expenses broken down by property.
  • Exportable reports — generate reports for accounting, tax purposes, and stakeholder sharing.

Adding Payments

To manually record a payment received from a tenant, click Add Payment within the Finance module or use + Transaction on a booking's Transactions tab (opens the same Add Payment modal). See Bookings > Transactions tab for the booking-sidebar entry point.

Add Payment Modal

In the modal, specify:

  • Booking — which booking this payment is for
  • Amount received
  • Payment date
  • Payment method
  • Notes (optional)

The system automatically allocates the payment to the oldest outstanding scheduled charge. You can adjust the allocation if needed.

Key Business Rules for Finance

Summary
  1. Payments are allocated automatically. When a payment is recorded, the system applies it to the oldest outstanding charge first. Overpayments become credits toward future charges.

  2. Virtual IBANs enable zero-commission collection. Each tenant's unique IBAN ensures payments are automatically matched without manual reconciliation.

  3. Credit card fees are tenant-side. When tenants pay by card, the processing commission is charged to them — operators pay nothing.

  4. Deposit status is tracked, not transferred. The Finance module records deduction and return decisions, but the actual bank transfer to the tenant is handled externally.

  5. Contract values are fixed at booking creation. Scheduled charges reflect the terms in place when the booking was created. Property setting changes do not retroactively alter existing schedules.

  6. A scheduled charge is only "Paid" once allocated. A charge in the Contract Values tab remains outstanding until a matching incoming payment has been recorded and allocated to it.

  7. Invoices are generated automatically. Once configured, the system handles invoice creation and delivery without manual intervention.

Finance guide subsection index

Pair with other Finance module guide sections

This index pairs Finance tab sections and Related subsections — use it when ledger figures disagree with Dashboard KPI cards, Analytics trends, or Bookings sidebar tabs. Full pairing matrix: Finance section cross-reference.

SubsectionWhen to open itPair with
Access, tabs, and toolbarTab visibility, month vs date range, infinite scrollSettings > Users and roles — Approve payments, Deep Links — Finance
Other filters — Tenant categorySegment-scoped debt or incomeBookings guide subsection index, Tenants — Tenant category filter, Portfolio KPI review — Step 6
Overview TabPortfolio debt, income chart, Debt AgingDashboard guide subsection index, Handling a Late Payment, Notifications — Payment overdue alerts, System and Manual Payments drill-down
System and Manual Payments drill-downClick System / Manual Payments KPI for month-scoped ledger rowsPending manual payments, Type summary cards, Archived bookings on the ledger (finance-overview-system-payments-drilldown-modal.png, finance-overview-manual-payments-drilldown-modal.png, finance-overview-system-manual-drilldown-flow.mp4)
Income TabScheduled charges and property roll-upsContract Values Tab, Bookings — Payment Plan tab
Contract Values TabLedger export and rent edits above invoiced floorBookings — Contract Values tab, Glossary — Invoiced floor (rent)
Transactions TabReceipt approval, reject/revert, credit notesPayment Allocation, Bookings — Transactions tab, FAQ — Reject or revert an incoming payment
Financial ReconciliationMonth-end variance and integrated invoicingIssuing credit notes (integrated invoicing), Portfolio KPI review
Payouts TabOutbound transfers and payout rulesSettings > Invoicing & Payments, Tenant Portal
Deposits TabDeposit holds, partial collection, and move-out returnsBookings — Deposit tab, Common Workflows — Partly collected security deposit, FAQ — Partly collected security deposit, Managing a Check-out, Glossary — Deposit dispute
Automated Rent CollectionVirtual IBAN and card collectionSettings > Invoicing & Payments, Tenant Portal — Make payment
Invoice AutomationProvider sync and draft/final lifecycleSettings > Integrations — Hostkit (invoicing), Invoicing concept reads
Adding PaymentsManual receipt entry from FinanceBookings — Transactions tab, Processing a New Booking
Deeper workflow readsStep-by-step procedures in this moduleCommon Workflows hub subsection index, Handling a Late Payment
Lockout catch-up after password recoverySign-in restored; module backlog accumulatedCommon Workflows — Lockout catch-up, Getting Started — Lockout catch-up, Resetting a Management User Password — Step 3
Notification row-click navigationAlert row-click before portfolio Debt Aging or bulk mark-readCommon Workflows — Notification row-click navigation, Bookings — Notification row-click navigation, FAQ — Notification row-click navigation (notifications-row-navigation-flow.mp4)
Payment alert to receivables triageOngoing/Ended payment overdue before Overview Debt AgingCommon Workflows — Payment alert to receivables triage, Finance debt receivables triage, FAQ — Payment alert to receivables triage (notifications-row-navigate-to-booking-detail.png, finance-overview-debt-aging-walkthrough-flow.mp4)
Confirmation alert triageUpcoming Booking created / Payment received before mark-readCommon Workflows — Confirmation alert triage, Pending manual receipt approval, FAQ — Confirmation alert triage (notifications-row-navigation-flow.mp4)
Finance debt receivables triagePortfolio Top debtors after single-booking alert triageCommon Workflows — Finance debt receivables triage, Overview Tab, Debt Aging panel, FAQ — Bookings that owe money (finance-overview-debt-aging-expanded-bucket.png, finance-overview-debt-aging-walkthrough-flow.mp4)
Finance Income status drill-downIncome chart Paid / Scheduled / In debt segment-click habitCommon Workflows — Finance Income status drill-down, Income status drill-down, FAQ — Finance Income status drill-down hub (finance-overview-income-status-in-debt-modal.png, finance-overview-income-drill-down-flow.mp4)
Cash flow forecast drill-downCash flow forecast collections history vs Income status segmentsCommon Workflows — Cash flow forecast drill-down, Income chart and cash flow forecast, FAQ — Cash flow forecast drill-down hub (finance-overview-cash-flow-all-payments-modal.png, finance-overview-cash-flow-day-view.png, finance-overview-cash-flow-drill-down-flow.mp4)
Pending manual receipt approvalRecorded bank transfers still pending until Approve paymentsCommon Workflows — Pending manual receipt approval, Finance — Pending manual payments, FAQ — Manual receipt still pending
Reject/revert mistaken receiptsDuplicate or wrong-booking receipts after ApproveCommon Workflows — Reject/revert mistaken receipts, Payment Allocation — Correcting mistaken receipts, Glossary — Credit note (payment reject/revert)
Archived bookings on the ledgerSoft-archive keeps vIBAN / credit card; hides manual rails (#1897)Type summary cards, FAQ — Manual payments after Delete Booking, Cancel Booking vs Delete Booking (finance-transactions-archived-booking-ledger.png, finance-transactions-type-summary-cards.png, archived-booking-ledger-visibility-flow.mp4)
Cancel Booking vs Delete BookingDelete hides Manual Transactions; Cancel keeps full ledger (#1897)Common Workflows — Cancel Booking vs Delete Booking, Archived bookings on the ledger, FAQ — Cancel Booking vs Delete Booking (finance-transactions-archived-booking-ledger.png, finance-transactions-type-summary-cards.png, bookings-list-canceled-tab.png, workflows-cancel-booking-refund-modal-flow.mp4)
Wrong tenant on a bookingChange tenant vs Delete ledger impact (#1897)Common Workflows — Wrong tenant on a booking, Bookings — Change tenant, FAQ — Wrong tenant on a booking (bookings-detail-change-tenant-modal.png, finance-transactions-type-summary-cards.png)
Portfolio retirement decisionsLedger visibility after Delete Booking (#1897)Common Workflows — Portfolio retirement decisions, Archived bookings on the ledger, FAQ — Manual payments after Delete Booking (finance-transactions-type-summary-cards.png)
Portfolio segmentation by tenant categoryReview one tenant segment across modulesCommon Workflows — Portfolio segmentation, Settings > Tenant categories, Finance — Tenant category filter, Tenants — Tenant category filter
Finance section cross-referencePer-tab pairing matrixModule cross-reference, Bookings guide subsection index

Finance section cross-reference

Use this table when one Finance tab or control naturally leads into another module, workflow, or concept — each row links to the docs you should read before or after acting in that section.

Finance tab / sectionPair with these docs
Access, tabs, and toolbarSettings > Users and roles — Approve payments, Deep Links — Finance, Settings > Tenant categories — Finance filter
Other filters — Tenant categoryBookings — Other filters tenant category, Tenants — Tenant category filter, Portfolio KPI review — Step 6, Glossary — Tenant category
Overview TabGlossary — Finance income status, Glossary — Cash flow forecast (Finance Overview), System and Manual Payments drill-down, Finance Income status drill-down, Cash flow forecast drill-down, Dashboard — KPI cards, Analytics — Revenue tab, Other filters — Tenant category, Bookings — Other filters tenant category, Tenants — Tenant category filter, Portfolio KPI review — Step 6, Handling a Late Payment, Notifications — Payment overdue alerts
Income TabContract Values Tab, Bookings — Payment Plan tab, Other filters — Tenant category, Portfolio KPI review — Step 6, Portfolio KPI review — Step 7
Contract Values TabBookings — Contract Values tab, Glossary — Invoiced floor (rent), FAQ — Lower rent below invoiced, Other filters — Tenant category, Bookings — Other filters tenant category, Tenants — Tenant category filter, Glossary — Tenant category, Notifications — Payment overdue alerts, Handling a Late Payment — Step 1
Transactions TabPayment Allocation, Payment Allocation — Correcting mistaken receipts, Issuing credit notes (integrated invoicing), FAQ — Reject or revert an incoming payment, Common Workflows — Reject/revert mistaken receipts, Pending manual payments, Bookings — Transactions tab, Other filters — Tenant category, Notification triage
Financial ReconciliationIssuing credit notes (integrated invoicing), Portfolio KPI review, Portfolio KPI review — Step 6, Other filters — Tenant category, Glossary — Credit note (payment reject/revert)
Payouts TabSettings > Payments — Payout rules, Tenant Portal
Deposits TabBookings — Deposit tab, Common Workflows — Partly collected security deposit, FAQ — Partly collected security deposit, Managing a Check-out, Glossary — Deposit dispute
Automated Rent CollectionSettings > Invoicing & Payments, Tenant Portal — Make payment
Invoice AutomationSettings > Integrations — Hostkit (invoicing), Settings > Contract
Adding PaymentsBookings — Transactions tab, Processing a New Booking

Pair with other Finance module guide sections

Related below links this module to settings, concepts, workflows, and escalation paths. Pair Documentation map & escalation with Modules hub — Documentation map & escalation; pair Upstream & downstream workflows with Common Workflows — Workflow cross-reference. Topic-to-section pairing in sections above: Finance guide subsection index · Finance section cross-reference. Full hub matrix: Module cross-reference · Modules hub subsection index.

Documentation map & escalation

Pair with other Finance module guide sections
  • Modules hub — Hub pairing matrix across operator workspaces
  • Introduction — Platform overview when Finance exports disagree with partner booking imports
  • Glossary — Term definitions used across finance and booking workflows
  • FAQ — Lower rent below invoiced — Why edits happen on the booking sidebar, not Finance Contract Values

Upstream & downstream workflows

Pair with other Finance module guide sections

Deeper workflow reads

Pair with other Finance module guide sections

Workflow reads pair with Common Workflows hub subsection index and Workflow cross-reference. Each workflow sub-guide reciprocates with [Deeper workflow reads](../modules/finance/index.md#deeper-workflow-reads) anchors on Module documentation hubs bullets — hub parity: Modules hub — Deeper workflow reads. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Settings that shape Finance

Pair with other Finance module guide sections

Deeper concept reads

Pair with other Finance module guide sections

Operator modules (pairing surfaces)

Pair with other Finance module guide sections
  • Bookings Module — View payment plans and transactions per booking
  • Bookings > Discounts and payment adjustments — Line-level and booking-scoped reductions on Contract Values
  • Audit Module — Manual blocks that can suppress occupancy signals you reconcile against Overview KPIs
  • Audit — Discounts tab — Cross-portfolio discounted Contract Values with the same amounts and export as Finance filters
  • Utilities module — Supplier bills that create pending overage allocations before they reach Transactions
  • Inbox module — WhatsApp context when payment alerts need tenant thread review before approve/reject
  • Analytics — Overview tab — Portfolio revenue and occupancy trends over a month range (complements Overview KPI cards here)
  • AI Chat — Internal assistant for portfolio summaries that should be verified against Transactions and Deposits

Lockout catch-up after password recovery

Pair with other Finance module guide sections

Notification row-click navigation

Pair with other Finance module guide sections

/notifications row-click with bookingId opens the booking detail sidebar first — reconcile Overview KPIs and Transactions only after single-booking triage on the opened reservation. Hub parity: Common Workflows — Notification row-click navigation. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Payment alert to receivables triage

Pair with other Finance module guide sections

Ongoing/Ended payment overdue alerts on /notifications row-click into Bookings — finish single-booking triage on Payment Plan / Transactions before you trust Overview → Debt Aging or Total Debt KPIs here. Hub parity: Common Workflows — Payment alert to receivables triage. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Confirmation alert triage

Pair with other Finance module guide sections

Upcoming Booking created / Payment received / Pending manual in-payment rows on /notifications row-click into Bookings — finish Processing a New Booking — Step 5b on Transactions (or Finance → Transactions bulk Approve selected) before bulk-clear and before Overview debt KPIs refresh. Hub parity: Common Workflows — Confirmation alert triage. Full pairing matrix: Finance section cross-reference · Module cross-reference.

New inventory to first booking handoff

Pair with other Finance module guide sections

First confirmation Pending receipts on go-live inventory pair with Processing a New Booking — Steps 5b / 6 after Onboarding — Step 7. Hub parity: Common Workflows — New inventory to first booking handoff. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Property setup to first arrival handoff

Pair with other Finance module guide sections

First move-in Pending receipts and unpaid confirmation charges on go-live inventory pair with Processing a New Booking — Step 6 before Managing a Check-in — Step 3. Hub parity: Common Workflows — Property setup to first arrival handoff. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Confirmation to check-in handoff

Pair with other Finance module guide sections

Amber Pending confirmation receipts on Finance → Transactions must clear before Upcoming reservations hand off to arrival-week planning. Hub parity: Common Workflows — Confirmation to check-in handoff. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Check-in to check-out handoff

Pair with other Finance module guide sections

Departure-week Contract Values and Transactions on Ongoing stays should be reviewed before Finance → Deposits refund planning ~7 days out. Hub parity: Common Workflows — Check-in to check-out handoff. Full pairing matrix: finance-section-cross-reference · Module cross-reference.

Check-out final utilities handoff

Pair with other Finance module guide sections

Departure-week utility overage In Debt on Contract Values should clear via Entering Monthly Utility Bills — Step 4 before Finance → Deposits refund planning. Hub parity: Common Workflows — Check-out final utilities handoff. Distinct from Check-out collections before refund (rent/fee arrears). Full pairing matrix: finance-section-cross-reference · Module cross-reference.

Same-day turnover coordination

Pair with other Finance module guide sections

Outgoing In Debt on Contract Values blocks incoming move-in key handover when both stays share one unit the same calendar day — pair hub Common Workflows — Same-day turnover coordination with Check-out collections before refund. Full pairing matrix: finance-section-cross-reference · Module cross-reference.

WhatsApp per-booking messaging

Pair with other Finance module guide sections

Collections outreach during Transactions triage pairs with Bookings → Communication when operators need Payment Plan visible while replying. Hub parity: Glossary — WhatsApp per-booking messaging hub · Common Workflows — WhatsApp per-booking messaging. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Bot reasoning (audit)

Pair with other Finance module guide sections

Collections bot replies with Transactions visible. Hub parity: Glossary — Bot reasoning (audit) hub · Common Workflows — Bot reasoning (audit). Full pairing matrix: Finance section cross-reference · Module cross-reference.

ChatBot settings

Pair with other Finance module guide sections

Account Settings → ChatBot pairs with Communication thread review — collections bot replies with transactions visible. Hub parity: Glossary — ChatBot settings hub · Common Workflows — ChatBot settings. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Finance debt receivables triage

Pair with other Finance module guide sections

Finance Income status drill-down

Pair with other Finance module guide sections

Income chart segment clicks open month-scoped payment-line modals — pair with Debt Aging for booking-level receivables. Hub parity: Common Workflows — Finance Income status drill-down. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Cash flow forecast drill-down

Pair with other Finance module guide sections

Cash flow forecast bar clicks list confirmed collections — not scheduled or In debt amounts. Contrast with Dashboard Cash Flow Forecast rent-due timing. Hub parity: Common Workflows — Cash flow forecast drill-down. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Pending manual receipt approval

Pair with other Finance module guide sections

Reject/revert mistaken receipts

Pair with other Finance module guide sections

Check-out ledger cleanup before refund

Pair with other Finance module guide sections

Utility overage collections

Pair with other Finance module guide sections

Utility overage In Debt rows pair with Utilities bill posting and Handling a Late Payment. Hub parity: Common Workflows — Utility overage collections. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Cancellation collections before void

Pair with other Finance module guide sections

Check-out collections before refund

Pair with other Finance module guide sections

Handling a Late Payment collections

Pair with other Finance module guide sections

Check-out vs cancellation

Pair with other Finance module guide sections

Deposit settlement on Finance → Deposits pairs with completed stay → Ended (Managing a Check-out Step 5) vs policy void → Canceled (Cancelling a Booking Step 3). Hub parity: Common Workflows — Check-out vs cancellation. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Month-end invoicing (fixed date)

Pair with other Finance module guide sections

The six-step habit in Month-end invoicing with a fixed date pairs with Bulk Hostkit invoicing on the amber bulk toolbar and Reject/revert mistaken receipts when month-end cleanup surfaces Not issued credit note rows. Hub parity: Common Workflows — Month-end invoicing (fixed date). Full pairing matrix: Finance section cross-reference · Module cross-reference.

Bulk Hostkit invoicing

Pair with other Finance module guide sections

Bulk Issue allocation / Invoice selected on Transactions pairs with Month-end invoicing with a fixed date and Rent reduction after invoicing when Not issued credit note rows need Issue credit notes (N). Hub parity: Common Workflows — Bulk Hostkit invoicing. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Rent reduction after invoicing

Pair with other Finance module guide sections

Invoiced floor and rent edits happen on the booking sidebar — pair Bulk Hostkit invoicing when external rent relief surfaces Not issued credit note rows. Hub parity: Common Workflows — Rent reduction after invoicing. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Directory list load failures

Pair with other Finance module guide sections

Transactions, Deposits, Contract Values, and Payouts use chunked directory loading — a first-fetch failure on any tab shows Failed to load … + Retry, not an empty ledger from tight filters alone. Pair Handling a Late Payment — Step 1 when collections triage needs Transactions before Retry persists. Hub parity: Common Workflows — Directory list load failures. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Deposit missing on Finance Deposits

Pair with other Finance module guide sections

Deposits tab rows key off check-in, check-out, or Refund Due Date intersecting the toolbar date range — not booking creation date. Hub parity: Common Workflows — Deposit missing on Finance Deposits. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Occupancy KPI to block hygiene handoff

Pair with other Finance module guide sections

Month-end Overview debt or segment KPIs that look hold-suppressed pair with hub Common Workflows — Occupancy KPI to block hygiene handoff before account-wide rate or category edits — clear Tools → Audit holds first. Hub parity: Common Workflows — Occupancy KPI to block hygiene handoff. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Partly collected security deposit

Pair with other Finance module guide sections

Wrong tenant on a booking

Pair with other Finance module guide sections

Change tenant reassigns the reservation without rebuilding the payment plan — past paid + invoiced allocations stay on the original tenant for audit and may block Reassign booking on confirm. Contrast Delete Booking, which hides Manual Transactions on Finance → Transactions (#1897). Hub parity: Common Workflows — Wrong tenant on a booking. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Cancel Booking vs Delete Booking

Pair with other Finance module guide sections

Delete Booking hides Manual Transactions on Finance → Transactions for soft-archived reservations (#1897) while Cancel booking keeps every payment type visible under Canceled filters. Month-end sign-off pairs with Archived bookings on the ledger. Hub parity: Common Workflows — Cancel Booking vs Delete Booking. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Provider platform Delete Booking guard

Pair with other Finance module guide sections

Reject or assign pending provider platform in-payment rows on Finance → Transactions before Delete Booking on the reservation (#2076). Delete payment stays disabled on provider-platform rails. Hub parity: Common Workflows — Provider platform Delete Booking guard. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Archived booking ledger visibility

Pair with other Finance module guide sections

After Delete Booking, Finance → Transactions hides Manual Transactions for soft-archived reservations while System Transactions (vIBAN, credit card) stay (#1897). Month-end sign-off pairs with Archived bookings on the ledger. Hub parity: Common Workflows — Archived booking ledger visibility. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Portfolio retirement decisions

Pair with other Finance module guide sections

After Delete Booking, Finance → Transactions may hide Manual Transactions while System Transactions stay (#1897) — building Archive does not remove ledger rows. Hub parity: Common Workflows — Portfolio retirement decisions. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Portfolio segmentation by tenant category

Pair with other Finance module guide sections

Key glossary terms

Pair with other Finance module guide sections

API & companion guides

Pair with other Finance module guide sections

API bullets pair with API Reference hub. Full pairing matrix: Finance section cross-reference · Module cross-reference.

Module documentation hubs

Pair with other Finance module guide sections
  • Finance module — Portfolio ledgers (Overview, Income, Contract Values, Transactions, Payouts, Deposits) with payment approval and deposit settlement (this page)
  • Utilities module — Bills Included ceiling model, Connections, AI bill upload, and tenant overage charges on payment plans (hub)
  • Operations module — Maintenance tickets, cash flows, check-in/out coordination, Draft ticket queues, and linked cash flows (hub)
  • Dashboard module — Post-login Today, Total debt, Vacant Units, and forecast KPI snapshot with bell notification triage (hub)
  • Analytics module — Month-range portfolio KPI charts (Overview, Revenue, Occupancy, ADR, RevPAR, Maintenance) with rankings and heatmaps (hub)
  • Listings module — Property wizard, Channels tab, Archived inventory, and unit management (hub)
  • Properties workspace — Legacy /properties URL redirects into Listings (hub)
  • Booking engine details — Rich marketplace payload editor via the Full integration pill (hub)
  • Tenants module — Tenant directory, profile sidebars, With Debt segmentation, and table expand for linked bookings (hub)
  • Sales module — Portfolio availability, monthly rent editing, and channel manager connections (hub)
  • Inbox module — Portfolio-wide WhatsApp workspace with Dashboard bell Inbox sub-tab deep links (hub)
  • Notifications module — Full /notifications history with search, filters, and row-click navigation (hub)
  • AI Chat module — Vivin-internal AI Assistant using Landlord MCP tools for portfolio Q&A (hub)
  • Audit module — Portfolio-wide Manual Blocks and Discounts contract-value review (hub)
  • Account Settings — Workspace-wide financial policies, templates, integrations, and operational defaults (hub)
  • API Reference hub — Partner HTTP contracts, Swagger onboarding, and partial vs full feeds (hub)