Troubleshooting & FAQ
The “I’m stuck” chapter — organised in the order you’d hit things: signing in, seeing features, doing daily work, filing, and integrations. Every entry states the actual cause, not just a workaround. If your issue isn’t here, press ⌘I and ask, or use the contact form on /dashboard/help.
Signing in & sessions
I keep getting logged out / a hard refresh logs me out
OnGravy re-verifies your session before ever signing you out — a hard refresh alone should never log you out. If it happens repeatedly: your browser may be blocking storage (private/incognito windows, or “block third-party cookies” set to block ALL site data). Allow site data for
ongravy.com and sign in again.“Signed in on another device” — my session was ended
By design: one web session + one mobile session per user (anti-sharing policy). Signing in on a second browser ends the first. If you and a colleague share one login, that’s the signal to give them their own seat — see Teams & permissions; seats are transferable and deleting a departed employee frees theirs.
“No business found” after signing up
Your account exists but no business is linked to it yet. Complete onboarding at
/onboarding — if you were invited as staff, ask the owner to re-send the invite (Settings → Team) and accept the 6-character join code on WhatsApp with the same phone number the invite was sent to.“Where did the feature go?”
A feature I saw before is missing from my sidebar
Three causes, in likelihood order: (1) Jurisdiction gating— the sidebar only shows features for the active business’s country; if you switched businesses (top-left switcher), India-only items like GST vanish for a UAE business. Switch back and they return. (2) Simple mode— the sidebar has a density toggle; click “Show every tool” at the bottom of the nav. (3) Role permissions— your role may not include that module; an owner/admin can check Settings → Permissions. Tip: the sidebar search (just start typing) finds anything you’re entitled to see.
“Forbidden” / 403 on a page my colleague can open
Permissions are enforced server-side per role, with per-user overrides. Ask an owner/admin to open Settings → Permissions, find your role and the module, and grant it (click a cell to override, double-click to revert to default). Changes apply immediately — reload the page.
My country shows Beta — can I rely on it?
Beta = the engine is code-complete for the real regime (rates verified against primary sources, dated in the engine notes) but local processor/e-filing credentials or CA sign-off are still pending. Your books, invoices, payroll and reports are fully functional; live e-filing switches on per-country as credentials land. The compliance changelog records every change.
Daily work
A customer/supplier doesn’t appear in a picker
Check the party’s type on
/dashboard/parties— a party marked only “supplier” won’t appear in customer pickers and vice versa. Set the type to “Both” for parties you both buy from and sell to; every picker honours it.I emailed a bill but nothing appeared
Checklist: (1) the address must be
bills@<your-slug>.ongravy.in (or.com) — find your exact slug on the OCR inbox page; (2) drafts land in/dashboard/ocr-inbox as pending review — nothing auto-posts, so look there, not in Bills; (3) attachments must be PDF or an image. Forwarding from the registered business email helps our sender checks.My invoice PDF fails to render / logo missing
Invoice logos must be PNG or JPG and publicly reachable. SVG or an expired/private URL makes the PDF renderer skip the logo (the invoice still generates). Re-upload as PNG/JPG in Settings → Business.
Bank statement import mis-reads columns
Import auto-detects 40+ banks by header signature. If yours mis-parses: export the statement fresh from netbanking as CSV/Excel (not PDF), don’t edit headers, and keep the bank’s original column names. Still wrong? Send the first 3 rows (redact amounts) via the help form — adding a bank format is quick on our side.
I can’t edit a posted entry
Posted entries are protected by maker-checker: use the quick-correct flow on the entry — your edit becomes an approval request for a reviewer (or applies instantly if your business has no reviewer roles). Locked periods (Settings → Period locks) additionally block edits regardless of role — that’s the point of locking.
Filing blocks (India)
GSTR-3B is blocked: “differs from your filed GSTR-1”
Working as intended — the portal auto-populates 3B liability from your GSTR-1 and forbids manual edits (since the July 2025 period), so filing a diverging 3B would strand you. Fix the source: file GSTR-1A (
/dashboard/gst/gstr1a) with the correction before 3B. One 1A per period — batch all corrections into it. Full explanation in GST & compliance.“Permanently time-barred” on an old return
GSTN blocks any return 3 years past its due date (rolling since Aug 2025) — nobody can file it, on any software or the portal itself. OnGravy warns 90 days before each period falls off the cliff; act on those warnings. For the barred period, talk to your CA about assessment implications.
E-invoice IRN generation is refused
In production OnGravy refuses to mint an IRN without your business’s own IRP login — a fake IRN is an illegal artefact, so this is a safety stop, not a bug. Register on
einvoice1.gst.gov.in, then add the API user + password under Settings → Partner credentials (per GSTIN). Cancellation is only possible within 24 hours of generation — after that, use a credit note.“ITC exceeds GSTR-2B” warning on 3B
Your books claim more ITC than suppliers have reported. It files today (warning only), but the expected Table-4A lock will make the 2B figure a hard cap — reconcile now: open the IMS tracker, chase suppliers who haven’t filed, and defer unmatched credit. Rejecting a supplier’s credit note raises their liability, so use remarks.
Integrations & sync
Gmail connected but no bills are coming in
Scans run every 15 minutes — give it one cycle. Then check the mode you chose at connect time (invoices / notices / both) in Settings → Integrations: “notices” mode deliberately ignores bills. Reconnect to change modes. Only unread-window mail is scanned; historic backfill isn’t (forward old bills to the email-in address instead).
WhatsApp assistant stopped replying
Confirm you’re messaging from the phone number registered on your account (the assistant authenticates by number). Media too large or an unsupported format gets a polite refusal. If a specific message type consistently fails, report it via the help form with the timestamp.
Slack/Teams channel gets no notifications
Check three things in Settings → Notifications: the webhook URL is the incoming-webhookURL (not a channel link), the channel is enabled, and the event types you expect are ticked for that channel — events are opt-in per channel, and a channel with no events selected stays silent.
Calendar feed shows old deadlines
Subscribed calendars refresh on the calendar provider’s schedule (Google can take up to 24h). The feed itself is always current — force a refresh by removing and re-adding the subscription URL. Regenerating the URL revokes the old one everywhere (use that if it leaked).
Mobile/PWA push notifications stopped
In order: (1) check the OS-level notification permission for the app/site; (2) on the PWA, re-enable notifications in the browser site settings, then toggle them off/on in OnGravy; (3) fully close and reopen the app — a stale service worker is the usual culprit; reinstalling the PWA resets it cleanly.
API returns 401/403 with a valid-looking key
401: the key is wrong, expired, or revoked — keys are shown once at creation; if lost, create a new one (Settings → API keys). 403: the key’s scope doesn’t cover the operation — writes need a
write-scope key. Webhook signature failures: verify you’re HMAC-SHA256-ing the raw request body with the endpoint secret and comparing againstX-OnGravy-Signature — details in API & webhooks.Still stuck?
Press ⌘Iand describe the problem — the assistant knows this entire guide plus your books’ context. Or open /dashboard/help → contact form (include the page URL and what you clicked). Response times are listed on the form. For suspected bugs, the bug-bounty page (/dashboard/help/bug-bounty) explains how to report responsibly.