Skip to main content

Offline & Sync

Web vs mobile: Offline support is a mobile-only capability. BillingOne web requires an active browser connection. When back online, mobile flushes queued writes automatically — no manual import step.

BillingOne Mobile is built for finance triage in the field. You can read cached billing data without connectivity and queue selected writes that sync when the network returns.


Offline Reads

When offline or on a poor connection, the app serves cached envelopes from the last successful sync:

DataCached for offline read
Dashboard summaryYes
Subscriptions, invoices, clientsYes
Contracts, missed billing queueYes
Generated invoice draftsYes
Settings and integration statusPartial — last known snapshot

A banner or stale indicator may appear when data is older than the last sync timestamp. Pull to refresh when online to update caches.

Caches store under the app's cache directory and clear on sign-out.


Queued Writes

Only specific mutation types queue offline. Other actions require connectivity and show an error if attempted offline.

Write kindUsed for
Missed billing actionSnooze, ignore, mark reviewed
Missed billing applyApply mapping (single or bulk item)
Generated invoice line tax editChange tax code/rate on draft lines
Contract line tax editChange tax on draft contract lines

Each queued write stores:

  • Unique ID and payload
  • Created timestamp
  • Retry count and last error (if flush failed)

Flush Behavior

When connectivity returns:

  1. The offline sync engine processes the queue in order
  2. Successful writes remove from queue and refresh affected stores
  3. Failed writes retry with backoff; persistent failures surface in UI with Retry

You do not need to keep the app open — background refresh attempts flush when iOS permits.

Sign in while online after extended offline use to ensure the queue drains before relying on updated totals.


Realtime Updates

While online, realtime subscriptions push changes from Supabase for shared org data. Realtime reconnects with exponential backoff after network drops.

Offline reads may briefly diverge from web until the next successful sync or realtime event.


Sync All and Manual Sync

Sync All (Home) and per-integration sync (Settings → Integrations) require connectivity. They update both live stores and offline caches.

Recommended workflow before going offline:

  1. Open BillingOne Mobile on Wi‑Fi
  2. Run Sync All from Home
  3. Review any pending queue items from a previous session

Upgrading from Legacy App

If upgrading from the deprecated Expo BillingOne app, open the legacy app once while online to drain its pending offline queue before switching to the native app. See the billingone-mobile upgrade notes in the engineering repo.


What Does Not Work Offline

These require an active connection:

  • OAuth connect flows
  • Push to Xero/QBO
  • Generate invoice run (new batch)
  • Sync from Pax8/Xero
  • Marketplace install
  • Session revoke (other devices)

Attempting these offline shows a clear message to retry when online.


Tips

  • Sync before site visits — Pre-load client subscriptions and missed billing
  • Tax edits queue safely — Finish draft review on a plane; flush at the hotel
  • Watch queue errors — Resolve conflicts on web if apply fails after reconnect
  • Do not sign out with pending queue — Flush first or writes may be lost