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
| # | Case | Tech Analogy | Why It Breaks |
|---|---|---|---|
| 1 | Vendor hasn't sent bill | External API with no webhook | Data doesn't exist in any system we control |
| 2 | Pazy stuck | Blocking human-in-the-loop | No timeout, no queue visibility, no SLA |
| 3 | Wrong month (cutoff) | Schema mismatch | bill_date ≠ service_period — Zoho doesn't know the difference |
| 4 | Prepaid amortization | Data in spreadsheet | No API, no sync — Excel is the "database" |
| 5 | Advance paid | Missing state machine | Payment ↔ Service ↔ Bill lifecycle not tracked |
| 6 | Unbilled service | Data in someone's head | Zero observability — discovered during incident |
| 7 | Bill ≠ Advance | No foreign key | Can't join payment to bill — different amounts, no reference |
| 8 | Multi-service vendor | No line-item allocation | One bill, multiple service periods — can't split |
| 9 | Credit note later | No linkage | Credit note doesn't reference original invoice period |
| 10 | Normal bills | ✅ Works | This 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
| Blocker | Days 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 corrections | 2–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
| # | Problem | Solution |
|---|---|---|
| 1 | No bill received | Alert on Day 5: "service registered, no bill received" |
| 2 | Pazy stuck | Dashboard: "bills in Pazy > 5 days" |
| 3 | Wrong month | Service period tracking → expense in correct month |
| 4 | Prepaid | Auto-generate monthly amortization JVs |
| 5 | Advance paid | State machine: advance → service started → bill received |
| 6 | Unbilled service | Register all services upfront, alert when no bill |
| 7 | Variance against advance | Link advance payment to final bill, show difference |
| 8 | Multi-service vendor | Separate line items per service period |
| 9 | Credit note | Link credit note to original, adjust correct period |
| 10 | Normal bills | ✅ Still works |
Expected Impact
| Metric | Today | After |
|---|---|---|
| Month-end close | Day 15–20 | Day 7–10 |
| MIS delivery | Day 20+ | Day 10–12 |
| Accuracy | "Final final v5" revisions | First version reliable |
| Manual JV entry | ~20 entries/month | Zero (automated) |
| Unbilled surprise | Discovered during close | Day 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
| Layer | Choice | Rationale |
|---|---|---|
| Frontend | React + Tailwind | Same as other Atlance modules |
| Database | Supabase (Postgres) | Free tier, Edge Functions, real-time |
| Integration | Zoho Books Journal API | Post JVs directly |
| Hosting | Cloudflare Pages | Already in use, free |
Build time estimate: 2–3 weeks to MVP with core features.
Timeline & Effort
| Phase | What | Target |
|---|---|---|
| Phase 1: Foundation | Core system, data model, dashboard | Feb mid |
| Phase 2: India | Zoho integration + Excel migration (~100 items) | Feb end |
| Phase 3: MENA | Zoho integration + Excel migration (~15 items) | Mar mid |
| Phase 4: USA & UK | Zoho integration + migrations | Mar 3rd week |
| Phase 5: Testing & Polish | UAT, edge cases, all 4 regions validated | Mar end |
Target: end of March 2026. All 4 regions live. April close is the first month-end using the new system.
Summary
- MIS delay isn't a reporting problem — it's a data completeness problem.
- 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.
- The Expense Lifecycle Tracker creates a single source of truth for expense lifecycle — from service registration to Zoho posting.
- 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.