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:
| Data | Cached for offline read |
|---|---|
| Dashboard summary | Yes |
| Subscriptions, invoices, clients | Yes |
| Contracts, missed billing queue | Yes |
| Generated invoice drafts | Yes |
| Settings and integration status | Partial — 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 kind | Used for |
|---|---|
| Missed billing action | Snooze, ignore, mark reviewed |
| Missed billing apply | Apply mapping (single or bulk item) |
| Generated invoice line tax edit | Change tax code/rate on draft lines |
| Contract line tax edit | Change 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:
- The offline sync engine processes the queue in order
- Successful writes remove from queue and refresh affected stores
- 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:
- Open BillingOne Mobile on Wi‑Fi
- Run Sync All from Home
- 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
Related Guides
- Missed Billing
- Generated Invoices
- Contracts
- Dashboard — Sync All