📊 CLA — Daily Cash Report

Live daily cash position · per-entity · Hub-native replacement for the manual Excel · Methodology & PAF ↗ · Diagnostics 🩺
🔑 Keez Bearer
💰 Cât e cu adevărat al nostru · grup · family office inclus
se încarcă…
FX (BNR) EUR/RON USD/RON GBP/RON loading…
🧾 AVL ↗
💰 Keez Live Bank Position loading...
Loading per-entity live cash position from Keez CashInBanks...
📖 Daily Cash Report · Cover & Operating Manual living document

📌 Today's snapshot · 2026-06-07

Cash live grup: 9,612,311 RON · €1,831,335
Native: 2.03M RON + €1.44M EUR + $1 USD
A/R operational NET: +4,404,803 RON · €839,000
After excl. IC + special + closed
A/P operational NET: −932,670 RON · −€177,694
After excl. IC + special + closed
Working capital total: ~13.1M RON · €2.5M
Cash + AR op − AP op

🆕 What changed 2026-06-06 → 2026-06-07 · Keez SPA full integration

Major upgrade · the cash daily now pulls 8 distinct reports directly from Keez SPA (no manual Excel dependency on these surfaces · supersedes the prior Controlling-maintained workflow). All persisted in hub_tool_data · 30-min cron auto-sync · paste fresh Bearer at /admin/keez-bearer/ once a day.

Keez SPA reportName catalog (banked)

ReportWhat it surfacesWrapperPersisted as
AccountsPayable (Detaliat)Per-invoice AP · 344 rows · 4.76M/api/keez-ap-minecla_keez_vendor_master
AccountsReceivable (Detaliat)Per-invoice AR · 769 rows · -8.75M (signed)/api/keez-ar-minecla_keez_ar_master
PartnerBalanceFisa Partener · per-partner ledger · ICO eliminations source (T-079)fetchPartnerBalanceon-demand
Aging · 411 ClientiAR aging 7 buckets (30/60/90/180/365)fetchAging({side:'AR'})cla_keez_ar_aging
SupplierAging · 401 FurnizoriAP aging 7 buckets · 6.2M openfetchAging({side:'AP'})cla_keez_ap_aging
CashInBanks · NEWLive bank balances per-account · IBAN + bank-feed sync status · 83 accountsfetchCashInBankscla_keez_cash_in_banks
AccountBalance 5311Cashbox movements categorized (PURCH/BANK/employee advance/client cash/sponsor)fetchAccountBalance + classifiercla_keez_cash_withdrawals
TrialBalanceByPartners 401500 distinct suppliers across group · for vendor masterfetchReportXls (REST)fixture /tmp/keez-suppliers-401-2026-06-06.json

Operational classification (introduced 2026-06-07)

AP+AR rows now classified into 6 buckets with auto-color badges + filter checkboxes. Operational NET = the actionable cash figure · excludes:

  • Intercompany · CIF in CLA_GROUP_CUIS (9 entities · CLA Romania *) · nets at consolidation
  • Special (★) · REGENCY 1.2M (real estate · CLA Global office lease) · MARATHON 832K (real estate) · IPS 9M (non-operational booking pattern) · FLYWIRE 220K (payment-processor float)
  • Closed (✕) · LEXINGTON MANAGEMENT & HOLDING (CIF 38376950 · dizolvată) · 595K AR Advisory + 380K AP BPS · awaits Controller write-off · auto-clears next sync after Keez postare
  • Advance / pre-posting (💰 ADV) · negative amount on TXN BANK without matching PURCHASES invoice · typically salary advance (LV ASSURANCE -38K · CRACIUN MIHAELA −22K) or vendor pre-paid · timing gap that resolves at posting match

UI surfaces shipped today

  • Cover tab top panel · 💰 Keez Live Bank Position · per-entity RON/EUR/USD split + Total RON + Total EUR · click view → for per-account IBAN + sync status
  • AP tab · per-invoice grid (was per-vendor aggregate) · 10 columns · cross-position ⇄ badge · Txn type pill (PURCH/BANK⚠/INIT/VAR) · ★ special · ✕ closed · 💰 advance · 📄 deep-link to Keez invoice
  • AR tab · mirror of AP · same operational breakdown · 7 columns
  • Both tabs · 6-card operational breakdown summary cards + EUR equiv per card · bank-feed staleness banner · aging bucket chip-row (≤30 / 30-60 / 60-90 / 90-180 / 180-365 / 365+) · Show all reset
  • Cash withdrawal tab · 5311 cashbox movements categorized · 5 color cards by category
  • /admin/keez-bearer/ · paste-Bearer UI · live state · 30-min cron auto-sync · email alert when expired

Live sync architecture

  • Cron · */30 3-17 * * 1-5 (every 30 min between 06:00-20:00 EEST · Mon-Fri) calls /api/keez-ap-ar-sync-cron · reads stored Bearer · chain-syncs AP+AR
  • Bearer rotation · 1h TTL · paste once a day at /admin/keez-bearer/ · alert email at 06:30 EEST if expired
  • Stelian REST whitelist ask · pending (Resend 3c23ae96 · 2026-06-06) · when granted, REST cielreports/xls replaces SPA Bearer for AccountsPayable+Receivable · zero rotation forever

Open tracker items affected

  • T-079 · ICO eliminations productization · gate #5 (PartnerBalance) unlocked today · fetchPartnerBalance shipped · awaiting Alina scope confirm for go-live · demo Tuesday 9-iun
  • T-080 · Keez AP+AR live sync productization · 30-min cron + admin paste UI shipped today · awaiting Stelian REST whitelist for full auto
  • T-081 · ANAF CUI closed-company detection · queued · Lexington already manually added to CLOSED_VENDOR_CIFS

What this module is

The Hub-native replacement for the daily cash report formerly maintained in Excel by Controlling (YYYY_MM_DD_Daily Report.xlsx at /01. FINANCE AND CONTROLLING/01. REPORTING/01. DAILY REPORTING/ on SharePoint). Since the post-2026-06-04 cutover the Hub is the source of truth · the legacy XLSX is no longer the operating document.

It aggregates: cash & bank (per IBAN · per entity · per currency) · AR/AP (live from Keez + sibling SP file) · intercompany loans · client cash (with offset rules from Logica input date) · into a consolidated daily view in EUR.

🔒 Confidentiality

  • Access locked to controlling@cla.com.ro + ionut.zeche@cla.com.ro · only these 2 accounts can open this module
  • No BI team · no Alina Stratan · no partners@ · no clients · no controlling@ group mailbox access (paper-trail CC on emails OK)
  • Every write generates an entry in hub_audit_log · all versions of the daily report are preserved

📅 Daily routine

  1. Morning · open this page · check FX bar (BNR rates of the day) · open Money status
  2. If Open Banking live · balances refresh automatically · skip to step 4
  3. If still on manual · go to ⬆ Upload tab · drop today's bank exports (one per bank) · Hub parses + maps to entity via IBAN · Money status updates
  4. Verify AP · Unpaid + AR · Outstanding have refreshed from sibling SP file (auto via cron · manual via the section button)
  5. Check 🩺 Checks & Recon tab · look for any anomaly flags · confirm "EUR conversion - Total" matches expectations
  6. The Hub auto-saves a snapshot · auto-mirrors to SharePoint in /01. FINANCE.../01. REPORTING/01. DAILY REPORTING/YYYY/YYYY_MM/YYYY_MM_DD_Daily Report.xlsx

Glossary · entity codes & account types

CodeFull name
CLA AUDITCLA Romania Audit S.R.L.
CLA TC&RCLA Romania Tax Compliance & Representation S.R.L.
CLA TAX ADVISORYCLA Romania Tax Advisory S.R.L. (with sub-line TP)
CLA BPSCLA Romania BPS S.R.L.
CLA CONSULTINGCLA Romania Consulting S.R.L.
CLA ROMANIACLA Global Romania S.A. (the consolidating parent)
CLA CORPORATECLA Romania Corporate S.R.L. (incl. Translations sub-line)
CLA ERCLA Romania Employer of Records S.R.L.
CLA BIACLA Romania Business Intelligence & Automation S.R.L.
P RESIDENTIAL · MCM · BCI · USFamily-office vehicles · P Residential · Mirus Capital Markets · Benetton Cliff Investments · US = Asociația Uniskyline (Romanian non-profit association, not a US-jurisdiction entity)

Account types (Cash & Bank section)

  • BT current / BT current secundar · Banca Transilvania main + secondary current accounts (RON · EUR · USD)
  • BRD client / BRD buffer · BRD client cash account + buffer account (RON · EUR)
  • BT PARTNER HERO · BT account for HERO partnership (RON · EUR)
  • EUR BT deposit account TR · BT EUR fixed-deposit treasury account
  • Client account - LEI / EUR · client-money pass-through (these subtract from "EUR Total" to give "EUR Total w/o Client")
  • EUR conversion - Total · all RON / USD balances converted to EUR at BNR fixing of the day · row 17 in Excel · grand total

Client cash · offset logic (from Logica input date sheet)

Prevents double-counting between Transaction details and Client Cash sheets:

  • Caz 1 · client pays Mirus in advance → Mirus pays taxes for client → Mirus invoices later (refacturare)
  • Caz 2 · Mirus pays taxes first → invoices client → client pays invoice

When something doesn't match

  1. Open 🩺 Checks & Recon tab · look at the freshness + reconciliation flags first
  2. Compare to the SharePoint mirror XLSX (the Hub writes back to the same daily folder · same naming convention)
  3. Check hub_audit_log · who edited what and when (technical audit · ask Ionut to query if needed)
  4. Roll back · every version is in hub_tool_data · prior states retrievable

Autonomous mode · operating since 2026-06-04

Post-Controlling cutover. Since 2026-06-04 the module runs autonomously without daily operator input from the prior Controlling role. Ionut + controlling@ open the dashboard daily · act only when correlations/analytics flag something needing decision.

What runs automatically every day at 07:00 UTC (10:00 Bucharest):

  1. Keez per-IBAN sweep + AccountBalance overlay · class-5 treasury (bank cash) + class-451 (intercompany) + 461/419/462 liability overlays per all 13 Keez tenants · sets source=keez_playwright_sweep confidence=high
  2. Keez Balanță rollup · per-entity bank_accounts + AP-Detaliat + AR-Detaliat invoice grids + PartnerBalance · TBP class-401 supplier positions
  3. Keez General Ledger pull · per-tx ingest into cla_cd_transactions_* · server-side normalizer maps to renderer-canonical shape (date_iso · counterparty · details · bank · category · amount_native · ccy · direction)
  4. Per-IBAN detail composition · joins cash_bank entries with cla_cash_daily_iban_map (40 IBANs curated · ~26% coverage today · expanding) · emits cash_bank_per_iban_detail map for Money Status table
  5. BNR FX live · refreshes 37-currency reference rates · falls back to legacy cla_cash_daily_fx_live key on producer/consumer drift
  6. Engines run · 15 correlations + 15 analytics + variance-thresholds + refacturare-infer + PAF folder scan · writes to cla_cd_correlations_* + cla_cd_analytics_*
  7. Truth-check morning brief · 21 checks · variance verdict · emails verdict to ionut.zeche + controlling@ at 09:00 Bucharest

Daily routine:

  1. Open app.cla.com.ro/cash-daily/ mornings · default date = latest with complete data
  2. Glance at Money status · Group cash header (sum of Keez bank_accounts EUR-equivalent) · per-IBAN detail rows where iban_map is known · 🟢 Canonical row always shown for entities without per-IBAN coverage
  3. Check 🩺 Checks & Recon · should be majority OK · FAIL items have remediation hints + driver tables
  4. Check 📊 Analytics · 15 cards · focus on red/amber (cash runway, FX exposure, ICO aging) · click "drivers" for detail
  5. If something needs decision · use ⬇ Excel · 🖨 Print · ✉ Email toolbar buttons

What still needs human input:

  • Keez Bearer paste · once per session (1h TTL) at /admin/keez-bearer/ · UI header shows live countdown
  • IBAN mapping expansion · ⚙ IBAN mapping tab · accept auto-suggestions for new IBANs as banks roll over · current coverage ~26% (60+ IBANs unmapped · mostly cash registers + TREZ accounts)
  • Reviewing flagged anomalies · 1-2 FAIL items per day typical (today: ICO register vs Keez ct.451 + CLA BPS cash runway)

Access: ionut.zeche + controlling@cla.com.ro only. Cron uses CRON_SECRET (server-side) · not user auth · runs regardless of UI access state.

Architecture (Phase 1-4)

  • Data model · 11 normalized sections in hub_tool_data · entities · accounts · daily_balances · transactions · ap · ar · ico_loans · client_cash · daily_report · correlations · analytics
  • Open Banking via Keez · cash-daily-keez-balances pulls Balanță class-5 (treasury) + class-451 (intercompany) for all 13 Keez tenants daily · source=keez_balanta confidence=high
  • 10 cross-correlation engine · bank-vs-books · AR↔in · AP↔out · ICO↔ct.451 · Caz 1/2 offset · day-delta visibility · buffer covers pending · FX isolated · SPV routing · group consolidation
  • 15 analytics metrics · cash runway (operating) · AR/AP aging · DSO/DPO/CCC · client cash velocity · ICO aging · FX exposure · anomaly retrospective · concentration · deposit yield · tax calendar · seasonality · forecast · buffer adequacy · source confidence
  • Transaction categorizer · 8 categories (income · payment · tax_authority · intercompany · client_cash_in/out · bank_fee · fx_conversion · other) + Caz 1/Caz 2 inference
  • Cron orchestrator · 06:30 UTC Mon-Fri · piggyback on daily-brief · chains aux-ingest → keez-balances → ap-ar-ingest → sp-mirror → tx-categorize → engines
  • Data grid widget · sortable columns · per-column filters · CSV export · sticky headers · zebra rows · aggregation footer · in all 7 data tabs
  • YTD 2026 backfilled · 94 dates (5-Jan → 25-May) · 2.6k balance cells · 9.6k AP · 25.8k AR · 9.3k ICO · 230k client cash flows · 2.5k transactions

Change log

  • 2026-06-07 · v2.0 · Keez SPA full integration (8 reports banked · fetchPartnerBalance / fetchAging / fetchCashInBanks shipped) · operational classification (6 buckets · Special/Closed/IC/Advance/Ops+/Ops-) · per-currency RON+EUR+USD split fixed · cross-position ⇄ badge · ★ Special cluster (REGENCY/MARATHON/IPS/FLYWIRE) · ✕ Closed cluster (LEXINGTON) · 💰 ADV pre-posting · 30-min cron + /admin/keez-bearer/ paste UI · aging buckets chip-row · bank-feed staleness banner · per-entity drill-down on Cover
  • 2026-06-06 · v1.5 · Live AP+AR Detaliat per-invoice (was per-vendor aggregate) · TransactionType column · 📄 invoice deep-link · special-invoice cluster · bank-sync status banner
  • 2026-05-26 · v1.0 · production · all 13 tabs · YTD 2026 backfilled · 10 correlations + 15 analytics live · 97 invariants hold
  • 2026-05-26 · v0.9 · DataGrid widget across 7 tabs · sortable/filter/CSV · typed AP/AR renderers
  • 2026-05-26 · v0.8 · Phase 4 · Keez ct.451 extractor · correlation #4 (ICO ↔ books) now produces real divergence per entity
  • 2026-05-26 · v0.7 · 3 correlations refined (Caz scope · day-delta as visibility ratio · buffer scope) · cash_runway operating-only · entity floors tuned
  • 2026-05-26 · v0.6 · Keez Balanță as primary source · class-5 treasury per entity · 13 tenants · YTD 30d backfilled
  • 2026-05-26 · v0.5 · /api/cash-daily-cron orchestrator + daily-brief piggyback at 06:30 UTC Mon-Fri
  • 2026-05-26 · v0.4 · AP/AR tab renderers · typed column parser (Document · Company · Vendor · Recharge to · Amount RON · Aging)
  • 2026-05-26 · v0.3 · /api/cash-daily-aux-ingest + 5 tabs wired (Cash withdrawal · Dobanda ON · ICO loans · Client cash · Transactions)
  • 2026-05-26 · v0.2 · Cover & Manual + Checks & Reconciliation tabs added
  • 2026-05-26 · v0.1 · Hub-native scaffold · 11 tabs · BNR FX + Keez ICO + Summary live · access locked to 2 emails
📅 Refreshed:
Loading...
📅 Today's transactions loading...
Only transactions dated the same day as the report (top-left date picker). Use this when checking what actually moved today, isolated from the rolling 90-day window of the Transaction details tab.
Transaction details loading...
Per-transaction view · last 5 working days · sourced from the Power Query Transaction details sheet (1M+ row file · trimmed for Hub storage). Filter by company/bank/date.
Awaiting aux ingest · click "Refresh from XLSX" above
🔄 Full cycle A/P + A/R · poziție netă & e-Factura loading…
Sursă: Keez AccountsPayable + AccountsReceivable per factură · overlay e-Factura (facturi primite în SPV) · poziție netă pe contraparte (A/R − A/P) · evidențiază facturile e-Factura primite dar neînregistrate în Keez (gap de completitudine).
Se încarcă datele…
🧾 Full A/P tool — reliable Keez source · PDF per invoice · balance confirmations. ↗ open standalone ·
AP · Unpaid Invoices loading...
Keez AccountsPayable · 13 entities · last sync never. Status: Ready / Missing IBAN / Intercompany. Click ↗ to open vendor's open-invoices view in Keez.
📄 Documents (RO/EN):
Click "⟳ Sync from Keez" to pull live AP across all 13 entities · or "XLSX (legacy)" for the deprecated XLSX path
🧾 Full A/R tool — reliable Keez source · PDF per invoice · balance confirmations. ↗ open standalone ·
AR · Outstanding Invoices loading...
Keez AccountsReceivable · 13 entities · last sync never. Negative balances = loan/advance positions. Cash-to-collect = positives only. Click ↗ to open client's open-invoices view in Keez.
📄 Documents (RO/EN):
Click "⟳ Sync from Keez" to pull live AR across all 13 entities
Cash withdrawal loading...
Cash withdrawals across entities · Date · Amount (RON) · Company · Destination. Source: Cash withdrawal sheet in the daily XLSX.
Awaiting aux ingest
Dobanda ON · overnight deposit interest loading...
Pivot from the Dobanda ON sheet · Sum of Income LEI per entity per bank. Source = Banca Transilvania + BRD overnight deposit interest credits.
Awaiting aux ingest
🔄 ICO Reconciliation · facturi intercompany loading…
Facturi intercompany deschise (furnizor = entitate de grup CLA) · grupate pe pereche emitent → plătitor, cu brut (+/−) și net. Mai jos: registrul de împrumuturi intercompany (ct.451).
Loading…
Intercompany loans loading...
Registru împrumuturi intercompany (Lender · Borrower · Amount · Date). Sursa XLSX e goală — împrumuturile reale (multiple) se re-aduc din Keez ct.451 + acordurile din SharePoint (în lucru).
Registru gol — sursa XLSX nu a fost încărcată
Summary · per-entity + consolidated
Computing Total cash + AR · Total payables · Net (EUR) per entity...
💰 Cash Reconciliation · per-entity per-source loading...
📖 How to read this tab

Purpose: Reconciles the Money Status "Group total" headline against its building blocks · identifies entities where Keez Open Banking can't see the full cash position (the gap class Ionut called "missing bank statements").

Three Keez columns per entity:

  • Bank accounts · sum of class 5121 + 5124 in Keez trial balance · pure bank money · what the Money Status banner uses
  • Liquid full · full class-5 position · bank + cash on hand + accreditive + treasury advances · what Keez calls "liquid assets"
  • Non-bank class 5 · the delta · treasury items that aren't bank money (LCs, supplier advances, cash, etc.)

Coverage status badge:

  • COVERED · Keez bank_accounts ≥ 50% of liquid_full · Open Banking sees most of the money
  • PARTIAL · 10-50% coverage · some money sits in accounts Keez doesn't pull
  • MISSING BANK STATEMENT · < 10% coverage AND liquid > 100K RON · real money exists outside Keez (action item for Stelian / Open Banking expansion)
  • DORMANT · < 1K RON total · entity has no meaningful position today

Known holes (from project memory, surfaced as annotations at the bottom): BCI 1M EUR account · BPS/TC&R BRD client-money in 462/419 accounts.

Loading...
🩺 Checks & Reconciliation · 10 cross-correlations loading...
📖 How to read this tab

Purpose: 10 automated checks that validate the daily report's internal consistency. Run every morning at 06:30 UTC via cron · also on-demand via "⟳ Re-run correlations". Each check returns OK / WARN / FAIL with concrete remediation hint and per-driver detail.

Status pills:

  • OK · check passed · no action needed
  • WARN · threshold breached but not critical · monitor · drill into drivers
  • FAIL · threshold crossed materially · investigate before partner sign-off

The 10 checks (in order):

  1. bank_real_vs_keez_books · per-entity reconciliation between Money Status (bank-real) and Keez Balanță class-5 (books). FAIL = booking lag >15% · investigate missing entries.
  2. ar_drop_matches_cash_in · when AR for client X drops €Y, expect cash inflow of €Y to entity owning that client. Mismatches surface AR write-offs or collection lag.
  3. ap_drop_matches_cash_out · symmetric to AR drop · AP cleared should match cash outflows to vendors.
  4. ico_register_vs_keez_ct451 · Excel loans register (formal ICO loans) vs Keez ct.451 net (includes operational intercompany invoicing). EXPECTED divergence on operational-invoicing entities (e.g. CLA ROMANIA · ~€1.4M from intercompany operational, not loans). Register tracks formal loans only.
  5. client_cash_caz_offset_balanced · per (entity, client), Caz 1 ins should net to zero with Caz 2 outs. Scope: last 90 days · Caz-inferred buckets only. data-quality flag separates sign-flipped source rows from real reconciliation gaps.
  6. day_delta_equals_net_tx · balance change today should be covered by recorded transactions. Reframed as "visibility ratio" since transactions feed is sparse · <30% coverage = FAIL. Normal sub-100% under current Open Banking scope (comisioane / dobânzi / FX conversions not all recorded as discrete tx).
  7. buffer_covers_pending_tax · BRD buffer balance ≥ 110% of pending tax payments due. Last 60d scope.
  8. fx_isolated_from_real_movement · separates FX revaluation impact from real cash movement (helpful when EUR balances move purely because of RON FX shift).
  9. spv_routes_to_authorized_entity · for each AR invoice, the issuing entity should be in the Latitude SPV-authorized list for that client. WARN threshold = 10%/10ct mismatch. Cross-practice billing is normal (e.g. CLA CORPORATE invoicing while CLA TC&R holds the ANAF authorization) · WARN only fires above threshold.
  10. group_consolidation_integrity · sanity that the 9 operating + 3 family-office + 1 non-profit cluster split adds up · CLA ROMANIA is consolidating parent.

When to act:

  • FAIL on a check that was OK yesterday · investigate today's drivers · likely a data ingestion gap or a real reconciliation issue
  • Persistent FAIL across multiple days · process gap rather than data quality · refer to Cover/Manual procedures for documented interpretations · escalate to Ionut if unsure
  • All OK · partner sign-off ready · no action needed

📡 Source: shared/cash-daily-correlations.js · 10 functions · each returns {check_id, status, detail, drivers, threshold_applied}. Re-run writes to cla_cd_correlations_YYYYMMDD.

No correlation run yet for today · click "Re-run correlations" or wait for the 06:30 UTC cron
📡 Live freshness probes
Running checks...
🏗️ Source Infrastructure loading...
Per-connector status of the data sources feeding the Hub. Every balance shown above eventually reads from one of these. Until live bank-API feeds land, all values route through Keez book-side (last-posted closing balance per 5121.03 account) · dormant-account entities flatline · the brief's Stale balances (>2d) callout surfaces that.
Bank-feed connectors
Connector Kind Status Coverage Blocked on · Next step
Loading connector registry…
Per-entity book-side freshness
Entity Latest balance (RON) Last book posting Freshness
Loading entity freshness…
Source: cla_cd_balances_YYYYMMDD (daily snapshot) · freshness derived from source_metadata.keez_invoice_date per IBAN · connector registry hardcoded in api/cash-infrastructure-status.js until live-status backing wired. BT API integration in flight · last escalation Resend ff4840b8 (2026-06-10).
✅ Validation history · Hub vs Controlling format-compare loading...
Side-by-side cell-by-cell comparison between the Controlling team's Daily Report XLSX and the Hub-generated parallel file. IDENTICAL = 100% cell match · CLOSE_MATCH = ≥95% · DIVERGENT = <80%. Cutover criterion: ≥10 working days at IDENTICAL or CLOSE_MATCH ≥95%.
Click "Last 14 days" above to run format-compare across recent dates · ~15s for 14 days
📊 Analytics · 15 decision-driving metrics loading...
Each metric carries a decisioning hint — what action this number drives. Vanity charts without decisions don't ship here.
No analytics run yet for today · click "Re-run analytics" or wait for the 06:30 UTC cron
Client cash · pass-through with offset logic loading...
Client cash pass-through (BRD client · BT partner HERO · etc). Each transaction shows base amount RON + offset column. Offset logic preserves Caz 1 / Caz 2 from "Logica input date": a Cash-in from client is offset by the matching Cash-out to authority (taxes / refacturare), preventing double-count vs Transaction details.
Awaiting aux ingest
⚙ IBAN → entity mapping auto-suggested from last 30d
📖 How to use this tab

Purpose: Maps each bank IBAN to a CLA entity + account type. This is the bridge between raw bank statements (which know only IBANs) and the Money Status grid (which is organized by entity × account-type).

When this matters: Every time a bank statement is uploaded via the ⬆ Upload tab, Hub looks up each IBAN here to route the closing balance to the correct cell in Money Status. Without a mapping, the row is marked "unmapped · auto-suggest pending" and isn't auto-applied.

How to add or correct a row:

  1. Click + Add IBAN at the bottom
  2. Paste the IBAN (24 chars · starts with RO) in the IBAN field
  3. Pick Currency (RON / EUR / USD / GBP)
  4. Pick Bank (BT / BRD / other)
  5. Pick Entity from the 13-entity dropdown (CLA AUDIT, CLA TC&R, etc.)
  6. Pick Account type (BT current · BRD client · BRD buffer · BT partner HERO · other)
  7. Click 💾 Save mapping when done · saves to hub_tool_data.cla_cash_daily_iban_map · audit-logged

Auto-suggest mechanism: /api/cash-daily-iban-map-suggest proposes entity + currency + account label for any unmapped IBAN based on the last 30 days of observed cash_bank groupings. Empty entity field = no observation yet · UI lets you accept-one-click when suggestion appears.

Pro tip: When importing a new bank statement and seeing "unmapped" rows in the Upload preview, return here, add the IBAN with proper entity + account type, then re-upload. The next pass will route correctly.

📡 Downstream: this map flows into /api/cash-daily-bank-parse (IBAN auto-match) + Money Status renderer (entity column resolver) + Settings tab (account master view).

IBAN
Currency
Bank
Entity
Account type
⬆ Upload bank exports · daily heuristic v1
📖 How to import bank exports

Purpose: Update today's Money Status grid from real bank statement exports · one file per bank account. Hub auto-detects IBAN + closing balance + currency · maps to the right entity column via the ⚙ IBAN mapping tab · shows you the preview · you commit.

Step 1 · Export from your bank:

  • BT (Banca Transilvania) · BT24 / BT Pay → Account → Export statement → CSV (recommended) or XLSX · pick today's date
  • BRD · BRD@ffice → Account → Statement → XLSX export · today's date
  • Partner HERO · same as BT (it's a BT account)
  • Format expected: Standard Romanian bank export · IBAN in header or first column · closing balance labeled "Sold final / Sold curent / Sold disponibil"

Step 2 · Drop or browse:

  • Click the upload zone below · OR drag-and-drop files directly
  • You can upload multiple files at once (one per bank account)
  • Max file size 25 MB per file · CSV / XLSX / XLS accepted

Step 3 · Review preview: For each file dropped, Hub shows:

  • IBAN(s) detected · should match what you exported
  • Currency · auto-detected from headers
  • Closing balance · the last "Sold" value in the file
  • Mapped to: the entity + account-type your IBAN map says · OR unmapped · auto-suggest pending if IBAN not in the map yet
  • Money Status preview · which cell(s) will be updated and to what value

Step 4 · Apply (or fix):

  • If the preview looks correct · click ✓ Apply N ready updates · writes to Money Status · audit-logged
  • If an IBAN shows "unmapped" · open ⚙ IBAN mapping tab · add the row · come back here and re-upload
  • If a number looks wrong · the parser missed the right "Sold" line · you can inline-edit the cell on Money Status after applying

⚠ Heuristic v1 caveat: Today's parser detects IBAN + closing balance heuristically (regex for RO IBANs · last "Sold final / Sold curent / Closing balance" cell · auto-detected delimiter for CSV). Confidence = medium. Open Banking via Keez is already wired for the 13 entities · so even before parser hardens to named-column extraction, the books-side view is current and the upload path is a fallback only.

📡 Source: shared/cash-daily-bank-parsers.js/api/cash-daily-bank-parse · audit-logged with action cash_daily_bank_parse_preview (review-only) or cash_daily_bank_parse_applied (committed).

📂
Click to upload or drag-and-drop
CSV · XLSX · XLS · max 25 MB · multiple files OK

❓ Help & Q&A

Daily Cash Report · self-service guidance

Entity

Loading...
🔧 Settings · entity master · accounts · thresholds read-only
Configuration values driving the correlations + analytics. Read-only view today · edit-in-UI on roadmap (low priority because thresholds rarely change · current values were calibrated 2026-05 and have held). Source: hub_tool_data.cla_cd_entities + cla_cd_accounts + hardcoded correlation thresholds in shared/cash-daily-correlations.js. To adjust a threshold in the meantime · edit the file + push (covered by the cash-daily-correlations invariant suite).
🏦 Bank API · live feed + payments · BT + BRD framework built · not live
Direct bank connectivity for live balances (and later, outgoing payments). The code is built and self-tested but stays inert until credentials + egress are provisioned — that is what makes the daily report "as of yesterday" instead of live. Run the checks to see exactly what is ready and what is blocking go-live. All calls are gated server-side to Ionut + Controlling.
Click "Check readiness" to probe both banks.
🟦 BT · BTFlow API unknown
Live balances · MT940 statements · payments (RON / valută / bulk). Auth: mTLS client cert + OAuth2 + HMAC. Endpoint: /api/btflow-accounts.
To go live: run the check above
🟥 BRD · Finbricks (Corporate PSD2) unknown
Live balances + transactions via Finbricks (BRD's corporate provider · no TPP licence needed). Auth: detached JWS RS256 (4096-bit key). Endpoint: /api/finbricks-accounts.
To go live: run the check above