🔧 Fix Motor Imports — All-Risk missing market value
Policies typed Motor – All Risk with missing or suspicious market value (MV < $2,000). Tick TP to retype as Motor – TP. Enter / correct MV for genuine All-Risk cars. Yellow background = import stored a low MV — verify and correct it. Pre-ticked as TP if premium ≤ $150.
Client
Reference
Type
Insurer
Premium
Expires
Status
TP?
Market Value (USD)
Loading…
🏢 Pay Insurer — 3-line VCH (Net of Commission)
DR Insurer (full premium) · CR Insurer (commission kept) · CR Cash (net paid out). Pick an insurer to load their unpaid policies — tick the ones being settled to auto-fill Premium + Commission.
Policy Year-Chain
—
📥 Bulk Import Client Groups (from v3)
In your v3 HTML browser, open DevTools → Console and run this:
That copies the groups JSON to your clipboard. Paste it below and click Import.
📄 Broker Commission Statement
Generates a printable monthly statement showing every policy placed by the broker, gross commission, his override share, 8.5% WHT, and net payable.
💰 Receive Commission from Insurer
Posts: DR Cash · CR Insurer.
Use this when the insurer remits the commission you were owed from a client-direct payment.
🧾 Commission Statement
A printable commission statement for this insurer, in the insurer-bordereau style.
Lists each policy (premium · commission · %) for the chosen period from your book.
💼 Commission Receivable from Insurers
These insurers have a positive debit balance on their 401XXX account — meaning they owe us money,
typically because a client paid them the gross premium directly (the commission portion sits with them until they refund it).
Search policies by reference, insurer ref, client name, plate, or PIN and add them to the JV.
Mix multiple insurers in a single voucher — the system groups by insurer and auto-balances cash.
↻ Search again after adding a policy to add another line — repeat for as many policies as you need. ⚡ Compound mode: set each line's Funded By to 👤 Client AR (collect from client + pay insurer + keep commission), 🤝 Client → Insurer Direct (client paid insurer the full amount; we just clear both sides — no cash, no commission split), or 🧾 Broker Payable (settle broker debt). Default 💵 Cash = classic pay-to-company.
JV Lines0 policiesEdit Premium/Commission inline if needed
No policies added yet — search above to add lines.
📥 Receipt Voucher — Money In From Client(s)
Filter by client name / PIN, broker, or month. Tick the policies being collected, edit the amount per line, post one combined REC voucher.
Journal: DR Cash · CR Client(s). Policy outstanding (OS) is reduced automatically.
Books 3 lines: DR Cash (net) · DR Broker Payable (broker's share) · CR Client AR (gross)
—Edit amount per line — defaults to outstanding
Type a search above to list unpaid policies.
Gross (Client Total)
$0
Broker's Share (kept)
−$0
Net Cash to Us
$0
My Commission
$0
📊 Breakdown by broker (selected lines only)
⚖ Insurer Reconciliation — Paste Excel
Paste rows from the insurer's Excel statement (one per line, columns separated by Tab or comma).
System matches each line to our books by Policy Ref + amount within $1.
📤 Payment Voucher — Pay Sub-Broker
Pick a broker and (optionally) a month. The grid lists the broker's policies with their commission share (override %).
Tick the lines being paid, edit the amount if needed, post one PV.
Journal: DR 412000XXX Broker Payable · CR Cash.
—Amount defaults to broker share (Comm × Override %)
Pick a broker to list their policies.
↔ Client Paid Insurer Directly
For when the client paid the insurance company directly (no cash through the brokerage). Posts a 2-line offset: DR Insurer / CR Client.
🔍 Audit Tool — Data Integrity
Eight integrity checks. Click a row to expand the sample; use the Fix button (where available) to apply the suggested repair to selected IDs.
🩺 Health Check
⚙️ Company Settings
These appear on every printed Cover Note, Debit Note, Statement, and report.
Adds a "Get live motor quotes" button in the Quotation builder.
Daily at 08:00, each All-Risk policy expiring within this window gets one live CompareLinqs comparison emailed (once per policy). Blank email = use the server default.
No logo
PNG, JPG or SVG · stored inline · ~500KB max recommended
← Pick a client from the list to see their full portfolio.
👨👩👧 Group Renewal View—
Group / Holder
Members
Policies
Premium
Outstanding
Paid
Status
Switch to this tab to load
Quick filters:
Client
Type
Vehicle / Plate
Insurer
Ref
📒 Source Year
📅 Renewal Year
Broker
Status
Actions
Premium
O/S
Premium
O/S
Switch to this tab to load
📊 Book Growth
Loading…
#
Policy
Client
Type
Effective
Δ Premium
Prorated
Status
Actions
Switch to this tab to load
📌 My TasksBroker follow-ups + manual reminders
Title
Due
Related
Created
Status
Actions
—
📅 X-Date Renewal RemindersAuto-generated per policy expiry — renewal pipeline
Urgency
Reminder
Client / Policy
Policy Ref
Expiry Date
Status
Actions
Switch to this tab to load
🔔 Renewals Pipeline — policies expiring soon. Click any row to act: 💬 WhatsApp, ✏ Edit, 🔄 Renew, ✅ Mark renewed externally, ❌ Decline.
Window:or month:
🔔 0 to renewPremium $0Commission $0Outstanding $0
Expiry
Days
Ref
Client
Type
Vehicle / Plan
Insurer
Broker
Premium
OS
Stage
Actions
🧾 Claims
Claim #
Date
Client
Policy
Insurer
Peril
Status
Claimed
Settled
Actions
Switch to this tab to load
💬 Quotations
Quote #
Date
Client / Prospect
Type
Options
Best premium
Status
Valid until
Actions
Switch to this tab to load
📧 Broker Reminder Emails
Give a broker their own email + tick which reminders they get. Every morning at 08:00 each broker receives their own renewals / past-due digest — only their own clients (policies where they are the broker). You still get the full master digest.
Broker
Policies
Email
🔔 Renewals
💰 Past-due
Actions
Switch to this tab to load
📅 Due Schedule
Switch to this tab to load
Client
Phone
Policy
Type · Insurer
Broker
Inst.
Due Date
Days Overdue
Premium
Paid
Balance Due
Action
Switch to this tab to load
📊 Inception Statements — sorted by policy issue date. Two views: what clients owe you (Unpaid by Client) and what you owe each insurer (Due to Insurer). Match these against insurer monthly bordereau.
|
Switch to this tab to load
📄 Unpaid Policies — All Clients — every client's unpaid policies in one statement. Filter by insurer, broker, type and effective-date range; group by type, insurer or broker. The OWED INSURER column is internal (admin only).
Switch to this tab to load.
⚖ Client vs Insurer — Due Now — one line per policy: what's due now to collect from the client vs due now to remit to the insurer (date-aware).
Client Due = scheduled installments past due (or full balance if unscheduled). Insurer Due = what you've collected from the client and still owe the insurer, less anything already remitted (a custom insurer schedule governs its own). Fully collected + fully paid policies are hidden unless you tick Show closed.
from
to
Month
Inception
Effective
Ref
Client
Type
Insurer
Days
Premium
👤 Client
🏛 Insurer
Status
Collected
Due now
Owed
Paid
Due now
Switch to this tab to load
🏢 Clients (Tenants) — your white-label deployments. List each client's users and reset their passwords without logging into their system. Database credentials are stored server-side only and never sent to the browser. Every reset is written to the Audit Log.
Add Client Deployment
Switch to this tab to load
Date
Client
Policy Ref
Amount
Method
Notes
Receipt
Switch to this tab to load
📊 Management Dashboard
Collection Rate
—
collected / billed
Outstanding
—
not yet collected
Active Policies
—
avg size —
Renewal Rate (90d)
—
of expiring policies renewed
Premium by Line of Business
Monthly Production — last 13 months
Top Brokers by Premium
Broker
Policies
Premium
Outstanding
Collection
Loading…
Jump to:
📊 Year-over-Year Comparison
Production & commission comparison across any two years — by month, by total, by broker.
vs
Show:
Chart:
Month
Loading…
Loading…
Broker
Loading…
📊 Broker Production Report
BROKER
POLICIES
OLD PREMIUM
NEW PREMIUM
DIFFERENCE
% CHANGE
MARKET SHARE
✓ RENEWED
★ NEW
✗ NOT RENEWED
PREMIUM AT RISK
—
🏅 Broker Scorecard
One row per broker — production · collection rate · commission kept · retention.
Outstanding balances grouped by broker, then by month, then by client. Click any row to expand.
📊 Aging Report — by Days Past Expiry
Unpaid policies grouped into 0-30 / 30-60 / 60-90 / 90+ day buckets, then by broker and client. Click rows to expand.
📈 Persistency Rate by Volume
Retained premium ÷ total decided premium
Persistency
—
Retained
—
—
Lost
—
—
Decided base
—
🆕 New Business vs 🔄 Renewals
Growth vs retention — track new policies vs renewal policies side by side.
🆕 NEW POLICIES
—
$0
— % of total
🔄 RENEWALS
—
$0
— % of total
📊 TOTAL POLICIES
—
$0
All issued this year
📈 GROWTH RATIO
—
New ÷ Renewal
—
Month
🆕 New Business
🔄 Renewals
Total Premium
Count
Premium
Comm
Count
Premium
Comm
📋 Unearned Premium Reserve (UPR)
Premium not yet earned — active policies where coverage is still running as of the selected date.
Ref
Client
Type
Insurer
Effective
Expiry
Premium
Days
Elapsed
Remaining
Earned%
Earned $
UPR $
Choose a date and click Run
Select a period and click ↻ Run.
Commission Rates — define gross % the company earns from each insurer per policy type. Broker Overrides = the % of the company's commission that's paid to the sub-broker. The rest stays with the company. Example: 60% override on a $1,000 premium at 25% commission ($250 to the company) → broker gets $150, the company keeps $100. Set 0% for owners/admins selling their own deals.
Rate Matrix (Insurer × Policy Type)
Broker Overrides
— what % of the company's commission is paid to each sub-broker
Broker
Pays Broker %
Keeps %
On $1,000 @ 25%
Resident (no WHT)
Comptabilité (Plan Comptable Libanais) — double-entry journal entries auto-generated from policies, client payments, and broker payouts. Click Rebuild Books after any data change to refresh.
Plan Comptable Libanais — full chart of accounts including parent classes (3-digit codes) and all assigned sub-accounts for clients (411XXXYYY), brokers (467XXX), and insurers (401XXX). Click any code in the Code column to open it in the Grand Livre.
—
Code
Name
Type
Tier
Entries
Total Débit
Total Crédit
Solde
—
ACTIF
PASSIF + CAPITAUX PROPRES
CHARGES (Expenses)
PRODUITS (Revenue)
Code
Compte
Type
Total Débit
Total Crédit
Solde Débit
Solde Crédit
—
— OR —
Filter results:↓ newest first
Date
Compte
Description
Tiers
Débit
Crédit
Solde
Journal des écritures — every posted voucher in one list. Search by ref number (e.g. REC-2026-5 · PAY-2026-2 · VCH-2026-12), filter by type, or by date range. Click 🖨 on a row to print the écriture.
—
→Quick:
Date
Type
Ref
Description
Debit
Credit
Lignes
🔒 Period Lock — once a month is locked, no payment / journal entry / endorsement can be posted with a date in that range. Use it after closing the books for a month.
From
To
Reason
Locked By
Locked At
Action
—
📅 Year-End Close — Lebanese fiscal-year closing.
Computes net income, zeros out class 6 (charges) and class 7 (produits), transfers to 120 Résultat,
then rolls forward to 119 Report à Nouveau (retained earnings). Auto-locks all 12 months of the closed year.
Closed Years (History)
Year
Closing Date
Revenue
Expense
Net
Closed By
Status
Action
—
📊 AR Aging Report — Client receivables bucketed by days-past-due. Shows both unpaid installments and direct policy outstanding balances. Click a client name to drill down to individual lines.
Client
Account
Total AR
Current
1–30 d
31–60 d
61–90 d
90+ d
Action
Click ↻ Refresh to load AR aging data.
TOTALS:
💎 Commission Income
Commission recognized per fully-settled installment — Yearly (1×), Half-yearly (2×), Quarterly (4×), Monthly (12×). Custom = full payment required.
Loading…
Cover Note Registry — chronological log of every cover note issued. Each one has a unique KCN-prefixed number. Click Print to re-open.
—
CN #
Issued
Client
Our Ref
Insurer Ref
Insurer
Type
Effective
Expiry
Premium
Actions
Switch to this tab to load
📊 Cash Flow — Installment Schedule
Taux de Change USD → LBP
Définissez le taux pour une date donnée. Les écritures comptables utilisent le taux en vigueur à leur date.
Historique des taux
Date effective
USD/LBP
Source
—
➕ Add Account to Plan Comptable
Add a custom account to your chart. Use a code that doesn't conflict with the standard Lebanese plan (e.g. 61200000 for a new expense, 53200000 for Petty Cash, etc.).
✏️ Écriture Manuelle (Manuel JV)
Saisissez votre écriture comptable. La référence MJE-YYYY-N sera générée automatiquement.
Les débits et crédits doivent être équilibrés avant de poster.
Account Code
Account Name
Débit $
Crédit $
Total Débit: $0.00Total Crédit: $0.00Unbalanced
🧾 Pay Expense
Records a business expense (rent, salary, telecom, taxes…). Posts a balanced entry:
DR the expense account / CR your cash, bank, or owner account. Ref EXP-YYYY-N.
POLICY INFORMATION
INSURANCE COMPANY PREMIUM
🚗 VEHICLE DETAILS
🛡 COVERS
⚙️ ADDITIONAL
🛡 TABLE OF BENEFITS & LIMITS
🚢 SHIPMENT DECLARATIONS
One open policy number — each shipment accrues onto it & posts its own JV.
🏥 HEALTH PLAN
Members: 0 · Premium sum: $0
👥 MEMBERS
Name
DOB
Relation
Gender
ID
📋 Bulk Paste Members
Paste tab- or comma-separated rows. One employee per row. Columns (in order, empty = blank): name, dob (DD-MM-YYYY), employee_no, nic, hire_date (DD-MM-YYYY), sub_class, gender (M/F), premium
📜 Activity history
Every recorded action on this policy — who did it and when (read-only).
Loading…
CLIENT PREMIUM
Payment History
COMPANY PREMIUM
OUR COMMISSION
INSTALLMENT SCHEDULE
#
Due Date
Amount
Paid
Status
➕ Add New Client
Create a client record directly. You can attach policies to them afterwards.
Pay Broker:
Insurer Manager — Use + Add to pre-create a new insurer, Rename to merge typos, Delete to remove an empty one.
Insurer
Policies
Total Premium
Unpaid
Actions
🤝 Referrals — Each referral earns a % of the total commission on policies of clients they referred. Assign a default referral on the Client edit screen; override per-policy if needed.
Name
Override %
Account Code
Phone
Email
Clients
Policies
Earned (LL)
Paid
Outstanding
Status
Actions
🎬 Demo Trial System — Generate time-limited login codes for prospects.
Each prospect gets their own login that expires automatically after a set number of days.
⚠ Only use this tab on a separate demo Railway instance — never on your production data.
Company
Trial Code
Login Email
Expires
Remaining
Status
Actions
🔢 Policy Number Maintenance
Finds policies that share the same internal "Our Ref" number (from an old counter bug) and gives each a unique one. The oldest policy in each group keeps its number; the rest are renumbered. Insurer references are never touched.
TRUEUP fake-payment scan (read-only) — finds synthetic "true-up" credits left by the migration: payments clients never made that hide real outstanding (the policy looks paid and drops off the Due list). Nothing is changed.
TRUEUP cleanup — removes the confirmed-fake migration "true-up" payments and restores each policy's O/S to the real owed. Preview first, then test on the first 10 before applying all. Deletes the fake payment + its journal entry (audit-logged).
TRUEUP diagnostic — read-only profile of the migration true-up rows (date spread, amount pattern, and whether each policy also has a real payment). Tells us if an automatic real-vs-fake split is possible. Nothing is changed.
TRUEUP worklist (risk-ranked) — every backfill policy ranked by likelihood-of-fake so you verify the most-suspect first. HIGH = full premium & no corroboration · MEDIUM = partial/over amount (looks like real data) · LOW = has a real payment or was renewed. Voiding uses the existing reversible void. Read-only until you click Void.
Renewal health scan (read-only) — lists renewals with a bad internal reference (insurer-ref / -RENEWAL / -NEW, no clean MOT number) or a missing effective date (which hides them from the Policies list).
Fix renewal references — for each renewal with a bad Our Ref (no clean number), append a freshly-minted clean code and repoint the ledger. Preview first, then apply (writes live data, audit-logged).
Normalize old prefixes so each type uses its own series: medical MED → HOS, and renewals REN → the real type prefix (MOT / HOS / FIR / LIF). Each fixed policy keeps its year and gets a fresh unique number in the correct series.
Fix Travel / WCA policies saved with a PA- reference — old Travel/WCA policies (created before the v430 form fix) carry a wrong PA- reference. This re-codes each to its correct series (Travel → TRV, WCA → WCA) and re-points its journal entries + cover notes in lockstep, so the ledger stays linked. Real Personal Accident policies are NOT touched. Run the scan first.
Resync commission splits — fixes policies issued at $0 commission then set later, whose installment splits are frozen (showing gross instead of net). Makes the insurer schedule, broker "Ready Now", and statements all read correctly.
Recompute outstanding (O/S) — re‑syncs each policy's outstanding from the accounting ledger. Fixes stale O/S left by Statement edits or reference changes (e.g. a policy showing "overdue" when the Relevé says it's paid).
Paid‑but‑shown‑unpaid (O/S drift) — finds policies that have client payments on record (matched by the reliable internal ID, which a reference rename can't break) yet still show outstanding — the "paid per receipt but shows unpaid" cases. Read‑only; co‑op commission is excluded, so genuinely‑owed policies are not flagged.
Future‑dated policies — finds policies whose "Émission police" accounting entry is dated in the future (you can't recognise premium ahead of today). Review these and we'll re‑date the entry to its real booking date. Records that merely carry a far‑future expiry (e.g. Life policies) with no émission posted are not flagged — they have no accounting impact.
Missing insurer schedules — finds policies with no insurer remittance schedule, whose freshly‑issued liability therefore reads $0 owed to the company on the Due Schedule. Creates each as a mirror of the policy's installment plan (a Bi sub‑policy with no plan gets one full‑net installment due at issuance). Read‑only preview first; never overwrites a schedule you've already set. New policies now get this automatically — this clears the historical backlog.
Medical data audit — READ‑ONLY. Shows where your Health/Medical policies actually store their class, plan tier, limits and members, so we know which of the new medical filters can match your existing book vs. which need data entry. Changes nothing.
Endorsement reconciliation — READ‑ONLY scan. Finds GROUP‑MEDICAL policies whose approved endorsements (employee joins/leaves) were booked BEFORE the v414 fix and so never posted a journal entry — their books are under/over‑stated by the change. Shows the gap; changes nothing.
Name
Email
Role
Active
Actions
Showing the last 100 entries. For per-user/per-day analysis, switch to Daily Activity.
Time
User
Action
Entity
Details
Add Policy
Leave blank to inherit the client's default referral. Set explicitly to override (or to no-referral for this one policy).
📅 Payment Schedule
Define each installment as a % of total premium. All installments become due immediately. Commission is deferred until 100% collected.
📅 Auto-fill dates:|
📋 Coverage Details (Motor — TP / All Risk / BI)
🩹 Bodily Injury (BI)
— uses the same vehicle, insured & driver entered above. Can be sold on its own (BI-only) or with TP / All Risk.
🚗 Material — TP / All Risk
🔧 Correct Policy Outstanding Balance
Use this to fix an over- or under-recorded OS directly. Installments are automatically re-synced. A suspense accounting entry is created for the audit trail.
Client installment schedule (before correction):
Client pays money in advance — not yet assigned to a policy. Credited to their account; apply to a policy later.
Apply a client advance already in their account to a specific policy — reduces the policy's outstanding balance.
Record Payment
🏷 Settle with discount
—
Add User
Dashboards this user can switch between in 🧭 My View. Tick several to give them a pill switcher. Leave all empty to let them choose. They can still ⚙ customize their own.
Uncheck to hide commission, broker payouts & insurer balances from this user — on the dashboard, My View, Client 360 and via the API.
New Endorsement
Δ Premium
$0.00
Pro-rata factor
—
Prorated charge
$0.00
🔄 Create Renewal
Note: When you save, a NEW policy row is created linked to the source via parent_policy_id. The source's renewal status is updated to "renewed". You can edit either policy independently after this.