Why isn't my cycle showing?
A staff user opens the Cycles page and the cycle they expect isn't there. This is almost always one of five things; work through them top to bottom.
1. Are you filtering it out?
The cycles list defaults to a status filter and a date range. The cycle exists but the filter is hiding it.
Check:
- The status filter chips above the table — are all statuses selected, or is the list scoped to Open (which excludes
CLOSED/ARCHIVED)? - The month / year filter — is it set to the same month as your cycle?
- The client filter, if your view is global — is it scoped to a different client?
Fix: Clear the filters. The cycle should reappear.
2. Does the cycle actually exist?
The cycle hasn't been created yet — automatic initiation hasn't fired, or it tried and failed.
Check the audit log: open the client → Audit tab → look for cycle.initiated events for the month you expect. If there's no event, no cycle was created.
Why automatic initiation might not have fired:
| Cause | How to verify | Fix |
|---|---|---|
Today isn't the client's defaultScheduleDay | Open client → Settings → Schedule day | Wait, or start the cycle manually |
| It's the right day but local 09:00 hasn't happened yet | Compare the client's timezone with the current time in that zone | Wait for 09:00, or start manually |
| The client had no active submitter at 09:00 | Open client → Contacts → check canSubmit and isActive for the day in question | Add or reactivate a submitter, then start manually |
| The client lacked an active UPLOAD template at 09:00 | Open client → Templates → check that one is marked active | Activate one, then start manually |
The client's enabledProducts excludes PAYROLL | Open client → Settings → Enabled products | Enable payroll, then start manually |
If the audit log shows a cycle.initiation_failed event: open it for the specific reason. The most common is "no active submitter contact" or "no active upload template".
3. Is the cycle assigned to a different client than you think?
Not all clients have unique short names. If you have ACME Holdings Pte Ltd and ACME Logistics Pte Ltd, the cycle may be on the other one.
Check: open the cycles list with no filters and search by the client's full legal name (not just the short name).
4. Are you looking at the right month?
The cycle month is the payroll month the cycle is processing — not the calendar month it was started in. A cycle for May payroll, started on April 28, has cycle month 2026-05.
Check: the cycle list shows the cycle month, not the creation date. Switch the month filter or look at all months.
5. Do you have permission to see it?
A BOOKKEEPER or SENIOR_ACCOUNTANT won't see payroll cycles in the sidebar at all — those roles are scoped to the bookkeeping product. A PAYROLL_EXECUTIVE won't see clients outside their assignment if your tenant has assigned-portfolio scoping enabled.
Check: look at the sidebar — if Cycles isn't showing under Payroll, your role doesn't grant VIEW_CYCLE.
Fix: ask a PLATFORM_ADMIN to grant the right role, or to assign the client to your portfolio.
Still not finding it?
If you've worked through all five and the cycle is still missing, the platform has either lost the cycle (very unlikely — would show in the audit log as a cycle.deleted event, which would itself be an incident) or the cycle was never created in a way the audit log records.
Open the Activity log (/dashboard/audit) globally, filter by the client and the date range, and look for any event that mentions a cycle for the month in question. If there's nothing there, no cycle was created — proceed with Start a payroll cycle.
If the audit log shows a cycle was created but the cycles list still doesn't show it, escalate to the on-call engineer using the tenant leak suspected runbook — that's the closest match for "data exists but doesn't render". Don't poke at the database manually.