Jan 23, 2026 · Memo

Why MIS Takes 15 Days (And How We're Fixing It)

An internal memo from January 23, 2026 — what I sent when my boss asked why month-end MIS takes 15 days. Reproduced as sent, with vendor names genericized and the response thread trimmed.

The Question

"You have all the expense data. Just automate it. Why is MIS delayed?"

The Short Answer

The data you think exists in Zoho… doesn't exist in Zoho.

When I query "give me January expenses" from Zoho, I get maybe 60–70% of reality. The rest is scattered across 9 other places — vendor systems, Pazy queues, Excel sheets, and people's heads.

You can't automate a report if the underlying data doesn't exist in any single system.

The 10 Places Expense Data Gets Stuck

Here's the complete picture. Each case has a real example.

┌─────────────────────────────────────────────────────────────────┐
│                WHERE JANUARY EXPENSES ACTUALLY ARE              │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1. VENDOR HASN'T SENT BILL                                     │
│  ┌─────────────┐                                                │
│  │ Vendor      │── "We'll send invoice next week" ──► ❌ Not in │
│  │ system      │   (no SLA, no webhook, no visibility)  Zoho    │
│  └─────────────┘                                                │
│                                                                 │
│  2. BILL STUCK IN PAZY APPROVAL                                 │
│  ┌─────────────┐                                                │
│  │ Pazy        │── L1 ✓ → L2 ✓ → L3 ⏳ → L4 ❓ ──► ❌ Not in    │
│  │ queue       │   (no timeout, no alert, no SLA)       Zoho    │
│  └─────────────┘                                                │
│                                                                 │
│  3. BILL DATED WRONG MONTH — CUTOFF (AWS)                       │
│  ┌─────────────┐                                                │
│  │ Zoho        │── Bill date: Feb 3 ──────────────► ✅ In Zoho  │
│  │ Books       │   Service: January                  BUT WRONG  │
│  └─────────────┘                                       MONTH    │
│                                                                 │
│  4. PREPAID AMORTIZATION (SaaS subs, office rent)               │
│  ┌─────────────┐                                                │
│  │ Excel       │── ₹12L paid Apr-24 ──────────────► ❌ Not in   │
│  │ tracker     │   Jan portion = ₹1L                  Zoho      │
│  └─────────────┘   (manual JV needed)                           │
│                                                                 │
│  5. PAID ADVANCE, SERVICE NOT STARTED                           │
│  ┌─────────────┐                                                │
│  │ Bank        │── Paid ₹6L in Jan ───────────────► ❓ Where    │
│  │ account     │   Service starts April               is it?    │
│  └─────────────┘   (no state machine)                           │
│                                                                 │
│  6. USING SERVICE, NO BILL                                      │
│  ┌─────────────┐                                                │
│  │ Someone's   │── "Oh we've been using this" ────► ❌ Not in   │
│  │ head        │   (discovered months later)         Zoho       │
│  └─────────────┘   (not anywhere)                               │
│                                                                 │
│  7. BILL ≠ ADVANCE PAID (offsite events — 50% advance)          │
│  ┌─────────────┐                                                │
│  │ Variance    │── Paid ₹1L advance ──────────────► ❓ Untracked│
│  │             │   Bill came ₹1.05L                  (no join)  │
│  └─────────────┘                                                │
│                                                                 │
│  8. SAME VENDOR, MULTIPLE SERVICES                              │
│  ┌─────────────┐                                                │
│  │ Vendor      │── Service A: Jan-Dec ────────────► ❓ Mixed up │
│  │             │   Service B: Mar-Mar                (no line   │
│  └─────────────┘   One bill, two periods             allocation)│
│                                                                 │
│  9. CREDIT NOTE LATER (Salesforce contract amendment)           │
│  ┌─────────────┐                                                │
│  │ Vendor      │── Jan invoice: ₹10L ─────────────► ❓ Jan      │
│  │             │   Mar credit note: ₹2L              overstated │
│  └─────────────┘   (contract amendment)              (no link)  │
│                                                                 │
│  10. NORMAL POSTED BILLS ✅                                     │
│  ┌─────────────┐                                                │
│  │ Zoho        │── Posted bills only ─────────────► ✅          │
│  │ Books       │   (this is the only part that works) Queryable │
│  └─────────────┘                                                │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

In Tech Terms

#CaseTech AnalogyWhy It Breaks
1Vendor hasn't sent billExternal API with no webhookData doesn't exist in any system we control
2Pazy stuckBlocking human-in-the-loopNo timeout, no queue visibility, no SLA
3Wrong month (cutoff)Schema mismatchbill_dateservice_period — Zoho doesn't know the difference
4Prepaid amortizationData in spreadsheetNo API, no sync — Excel is the "database"
5Advance paidMissing state machinePayment ↔ Service ↔ Bill lifecycle not tracked
6Unbilled serviceData in someone's headZero observability — discovered during incident
7Bill ≠ AdvanceNo foreign keyCan't join payment to bill — different amounts, no reference
8Multi-service vendorNo line-item allocationOne bill, multiple service periods — can't split
9Credit note laterNo linkageCredit note doesn't reference original invoice period
10Normal bills✅ WorksThis is the only queryable data

Summary: 1 out of 10 cases can be automated today. The other 9 require a system that doesn't exist.

The Pipeline View

What you think happens:
────────────────────────

    All Data ──────────► Zoho ──────────► Report
                           │
                     "Just query it"


What actually happens:
──────────────────────

    Vendor systems ─────────► ❌ (no push, no visibility)
    Pazy queue ─────────────► ❌ (stuck, no alert)
    Excel tracker ──────────► ❌ (no API)
    Someone's head ─────────► ❌ (discovered too late)
    Bank statement ─────────► ❌ (advance not linked to service)

    Zoho Books ─────────────► ✅ Queryable (60–70% of reality)

It's like querying a database replica that's two weeks behind master. The data exists somewhere — just not in Zoho yet.

The MIS Timeline Today

January Month-End Close

Jan 31        Feb 1-5         Feb 5-10        Feb 10-15      Feb 15-20
   │             │                │               │              │
   ▼             ▼                ▼               ▼              ▼
Month          Bills still     Chasing         Finally        MIS
Ends           coming in       Pazy approvals  numbers        Ready
                                               are stable
BlockerDays Lost
Bills arrive late (no vendor SLA)5 days
Pazy approval queue (no timeout)3–7 days
Unbilled services (no visibility)2 days
Prepaid amortization (manual Excel → JV)1–2 days
Cutoff corrections2–3 days

Total: 15–20 days after month-end.

What We're Building: Expense Lifecycle Tracker

One system that tracks all 10 cases.

Architecture

┌─────────────────────────────────────────────────────────────────┐
│                  EXPENSE LIFECYCLE TRACKER                      │
│                  (Observability + Automation)                   │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  DATA SOURCES                    OUR SYSTEM                     │
│  ────────────                    ──────────                     │
│                                                                 │
│  Pazy ──────────────────────────► Bill status                   │
│  Excel (migrate) ───────────────► Service periods               │
│  Manual entry ──────────────────► Unbilled services             │
│                                                                 │
│  WE ADD:                                                        │
│  ├─ Service period (start/end dates)                            │
│  ├─ Payment ↔ Service ↔ Bill linkage                            │
│  ├─ Auto-amortization schedule                                  │
│  ├─ Unbilled service registry                                   │
│  └─ Alerts & anomaly detection                                  │
│                                                                 │
│  OUTPUT:                                                        │
│  ├─ Dashboard: "What's missing for January close?"              │
│  ├─ Alerts: "AWS Jan service — Day 5, no bill"                  │
│  ├─ Alerts: "7 bills in Pazy > 5 days"                          │
│  └─ One-click JV generation → Zoho Books                        │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

What Each Case Gets

#ProblemSolution
1No bill receivedAlert on Day 5: "service registered, no bill received"
2Pazy stuckDashboard: "bills in Pazy > 5 days"
3Wrong monthService period tracking → expense in correct month
4PrepaidAuto-generate monthly amortization JVs
5Advance paidState machine: advance → service started → bill received
6Unbilled serviceRegister all services upfront, alert when no bill
7Variance against advanceLink advance payment to final bill, show difference
8Multi-service vendorSeparate line items per service period
9Credit noteLink credit note to original, adjust correct period
10Normal bills✅ Still works

Expected Impact

MetricTodayAfter
Month-end closeDay 15–20Day 7–10
MIS deliveryDay 20+Day 10–12
Accuracy"Final final v5" revisionsFirst version reliable
Manual JV entry~20 entries/monthZero (automated)
Unbilled surpriseDiscovered during closeDay 1 visibility

Why not Day 3–5? Vendors will still send bills late (external). Pazy approvals still need humans (external). But we'll know what's missing on Day 1 instead of discovering it on Day 15.

Tech Stack

LayerChoiceRationale
FrontendReact + TailwindSame as other Atlance modules
DatabaseSupabase (Postgres)Free tier, Edge Functions, real-time
IntegrationZoho Books Journal APIPost JVs directly
HostingCloudflare PagesAlready in use, free

Build time estimate: 2–3 weeks to MVP with core features.

Timeline & Effort

PhaseWhatTarget
Phase 1: FoundationCore system, data model, dashboardFeb mid
Phase 2: IndiaZoho integration + Excel migration (~100 items)Feb end
Phase 3: MENAZoho integration + Excel migration (~15 items)Mar mid
Phase 4: USA & UKZoho integration + migrationsMar 3rd week
Phase 5: Testing & PolishUAT, edge cases, all 4 regions validatedMar end

Target: end of March 2026. All 4 regions live. April close is the first month-end using the new system.

Summary

  1. MIS delay isn't a reporting problem — it's a data completeness problem.
  2. 9 out of 10 expense scenarios can't be automated today because the data is scattered across vendor systems, Pazy queues, Excel, and people's heads.
  3. The Expense Lifecycle Tracker creates a single source of truth for expense lifecycle — from service registration to Zoho posting.
  4. Expected outcome: close in 7–10 days instead of 15–20. First MIS version is reliable.

Questions? Happy to walk through any of the 10 cases in detail.