# Revenue Recognition Health

> ASC 606 / IFRS 15 health check: deferred vs recognized revenue, waterfall variance, and anomaly flags for the controller or finance team. Use when the user asks about revenue recognition, deferred revenue, rev-rec health, or month-end close compliance. Do NOT use for MRR, ARR, or cash collection questions.

- Skill: `zoho/revenue-recognition-health` (Agent Skill)
- Install (CLI): `npx skillmds@latest add zoho/revenue-recognition-health`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zoho/revenue-recognition-health/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: zoho (https://skillmd.com/u/zoho)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zoho/revenue-recognition-health

---


# Revenue Recognition Health

ASC 606 / IFRS 15 health monitor for finance and controllers. Notify-only.

## Setup

Resolve org ID via `ZohoBilling_List_all_Organizations`.
Default period: last month (typical use is month-end close).

## Fetch (run in parallel)

| # | Tool | Purpose |
|---|------|---------|
| 1 | `ZohoBilling_Get_Recognized_Revenue_Report` | Total recognized revenue |
| 2 | `ZohoBilling_Get_Recognized_Revenue_Details_Report` | Per-item recognized detail |
| 3 | `ZohoBilling_Get_Recognized_Revenue_by_Customer_Report` | Customer-level outliers |
| 4 | `ZohoBilling_Get_Deferred_Revenue_Report` | Total deferred revenue |
| 5 | `ZohoBilling_Get_Deferred_Revenue_Details_Report` | Per-item deferred detail |
| 6 | `ZohoBilling_Get_Deferred_Revenue_by_Customer_Report` | Customer-level deferred |
| 7 | `ZohoBilling_Get_Revenue_Waterfall_Report` | Starting → earned → ending |
| 8 | `ZohoBilling_Get_Revenue_Waterfall_Details_Report` | Line-item waterfall |

## Output

```
Revenue Recognition Health — [Period]
────────────────────────────────────────────────────────────────────────
Recognized this period:  $XXX,XXX
Deferred (balance):      $XXX,XXX
Deferred-to-recognized:  X.X× ratio  [🟢 Healthy | 🟡 Watch | 🔴 Review]

REVENUE WATERFALL
  Opening deferred:    $XXX,XXX
  + New bookings:      +$XX,XXX
  − Earned (recognized): −$XX,XXX
  Closing deferred:    $XXX,XXX  (Δ +/-$X,XXX vs last period)

ANOMALY FLAGS
  ⚠ [Customer X]: $XX,XXX deferred — unusually large single-customer concentration
  ⚠ Recognized revenue variance: actual $X vs expected $Y — investigate timing

MONTH-END CLOSE CHECKLIST
  ☐ Deferred balance reconciles to contract values
  ☐ No items recognized before delivery (early recognition risk)
  ☐ Large deferred balances > $10,000 reviewed individually
  ☐ Waterfall closing balance matches prior-period opening
────────────────────────────────────────────────────────────────────────
```

**Deferred-to-recognized ratio bands:**
| Ratio | Call |
|---|---|
| < 1.5× | 🟢 Healthy — earning out at a good pace |
| 1.5–3× | 🟡 Watch — large deferred balance building |
| > 3× | 🔴 Review — potential recognition timing issue |

## Constraints

- Month-end checklist is static — always include it regardless of anomalies
- Customer concentration = single customer > 20% of total deferred
- Propose-only: no journal entries, no revenue schedule changes

## Edge cases

- No deferred revenue: "No deferred revenue balance — all revenue recognised immediately (check if deferred tracking is enabled)"
- Waterfall doesn't reconcile (closing ≠ opening + new − earned): flag as "⚠ Waterfall does not reconcile — manual review required"

