---
title: Mobile app (Android)
order: 6
updated: 2026-07-12
---

# Mobile app (Android)

The Intigra Android app puts the parts of the SaaS you need in the field — enquiries, sales and purchase orders, inventory, stock scanning, HR, and dashboards — on your phone, running natively and talking to the *same* backend as the web and desktop apps. Sign in with the same *Company ID*, *Username*, and *Password* you use on the web, and everything you do syncs both ways instantly. What you can see and do is governed by your own permissions, exactly as on the web — the phone shows fewer tabs, not fewer rules. iOS is in progress; this page covers Android.

The app talks to the live server for every screen — it is not an offline app. You need a working internet connection to sign in and to load or change anything. Your login is remembered securely on the device between sessions, so you don't retype it each time.

## Install the Android app

The Android build is distributed as an APK from the same download page as the desktop installers — there is no Play Store listing.

1. On your phone's browser, open [/app/download](/app/download).
2. Scroll to the *Android* card and tap the *APK* link. The file downloads to your phone (the exact size is shown on the download link).
3. When the download finishes, tap the notification or open the file from *Downloads*. Android warns that the file came from outside the Play Store — that is expected for a direct APK. Approve *Install anyway*. The first time, Android may send you to *Settings → Apps → Special access → Install unknown apps* to allow your browser to install; turn that on, then return and install.
4. Open *Intigra* and sign in.

Every APK is signed with the same release key, so a later APK upgrades the installed app in place — your login and data stay intact rather than installing a second copy.

> The iOS app is not yet released. The download page shows an *iOS · in progress* badge; there is nothing to install on iPhone yet.

## Sign in

The sign-in screen asks for three things — the same three the web asks for:

- *Company ID* — your firm's identifier (the login shows it as `your-company`). Required.
- *Username* — your personal username inside that firm. Required.
- *Password* — your password. Tap the eye icon to reveal it while typing. Required.

Tap *Sign In* (or press the keyboard's *go* key on the password field). All three fields are checked on the device before anything is sent; missing fields are flagged inline. The firm, the user, the password, and your firm's status are then all re-checked on the server — a wrong firm, a deactivated firm or account, or a bad password each come back as a red message.

A few sign-in notes specific to the phone:

- **No password reset on the phone.** The mobile sign-in screen has no *Forgot password?* or *Forgot username?* links — only a *Sign Up* link that opens the Intigra website. If you're locked out, reset your password from the **web** sign-in page (see [Signing in](/docs/getting-started/signing-in#forgot-your-password)) or ask your administrator.
- **Where you land.** After sign-in the app opens the first screen your permissions allow — the *Enquiries* list if you can view enquiries, otherwise *Inventory*, otherwise *Settings*.
- **Out-of-date app.** If the server no longer accepts your app version, sign-in fails with *App update required* and the app shows the *Update Required* screen (see [How updates work](#how-updates-work)).
- **Storage full.** If your firm has hit its storage limit, only the firm `admin` user can sign in until space is freed; everyone else is turned away with a storage message. See [Billing](/docs/settings/billing).

## Find your way around

A floating **bottom navigation bar** is the app's spine. It shows up to four tabs, and each tab only appears if you hold a permission that gives it something to show:

- *Deals* — enquiries, orders, purchase orders, and the dashboard. Shown if you can view enquiries (`enquiry.view`), view placed purchase orders (`procurement.viewAlreadyPlacedPurchaseOrders`), or are an admin.
- *Inventory* — stock by product, by location, plus scanning and stock movements. Shown if you can view inventory (`inventory.viewInventory`) or are an admin.
- *HR* — expenses and attendance. Shown if you can view your own attendance (`attendence.viewOwnAttendance`), your own expenses (`expense.viewOwnExpenses`), your own ledger (`expense.viewOwnLedger`), or are an admin.
- *Settings* — always shown.

The bar highlights the tab you're inside with a sliding pill and a filled icon. *Deals* and *HR* don't jump straight to a screen — tapping them **morphs the bar upward into a short menu**; tapping the same tab again (or tapping the dimmed backdrop, or navigating anywhere) closes it. *Inventory* and *Settings* open their screen directly.

### Deals menu

Tapping *Deals* opens a menu whose rows are, again, permission-gated:

- *Dashboard* — reports and business insights. Shown if you can see at least one dashboard report (see [What you can do](#what-you-can-do)).
- *Add Enquiry* — create a new enquiry. Needs `enquiry.add`.
- *Enquiries* — the full enquiry list. Needs `enquiry.view`.
- *Sales Orders* — the sales-order list. Needs `enquiry.view`.
- *Purchase Orders* — the purchase-order list. Needs `procurement.viewAlreadyPlacedPurchaseOrders`.

### HR menu

Tapping *HR* opens:

- *Expenses* — ledger, travel, and vouchers. Needs `expense.viewOwnExpenses` or `expense.viewOwnLedger`.
- *Attendance* — attendance records. Needs `attendence.viewOwnAttendance`.

Every list on the phone works the same way as its web equivalent — a search box, filters, infinite scroll (more rows load as you reach the bottom), and pull-down-to-refresh. For the concepts behind lists and row actions, see [Navigating](/docs/getting-started/navigating) and [Tables and actions](/docs/getting-started/tables-and-actions).

## What you can do

The phone mirrors the web's business flows, subject to the same permissions. In short:

- **Enquiries** — browse and search the [enquiry list](/docs/enquiry-bank/enquiry-bank-list), open an enquiry to see its products, history, and mail log, and (with `enquiry.add`) [create a new enquiry](/docs/enquiry-bank/add-enquiry).
- **Sales orders & purchase orders** — open an [order](/docs/enquiry-bank/orders) or a [purchase order](/docs/procurement/view-purchase-order), see its products, delivery/arrival history, and email log.
- **Inventory** — the *Inventory* screen lists stock grouped by product head, with a **location picker** (godown → room → rack) at the top to narrow the view, a search box, and per-head stock figures. Stock value and future (not-yet-arrived) stock only show if you hold `inventory.viewInventoryStockValue` and `inventory.showFutureStock` respectively. The overflow (`⋮`) menu offers *Scan* and, by permission, the stock-in ([arrivals](/docs/inventory/in-stock)) and stock-out ([deliveries](/docs/inventory/out-stock)) flows and the stock ledger ([stock history](/docs/inventory/stock-history)).
- **Dashboard** — see below.
- **HR** — view your own [expenses](/docs/human-resources/log-expense) and [attendance](/docs/human-resources/attendance); admins and users with wider permissions see more.

### Dashboard

The *Dashboard* screen shows the same reports as the web, one tab per report, and each tab appears only if you have its permission:

- *Sales* — needs `dashboard.salesReport`.
- *Customers* — needs `dashboard.customerReport`.
- *Products* — needs `dashboard.productReport`.
- *Inventory & Supply* — needs `dashboard.supplyChainReport`.
- *Procurement* — needs `dashboard.procurementReport`.
- *Expenses* — needs `expense.viewAllExpenses`, `expense.approveExpense`, or `expense.viewAllLedgers`.
- *HR / Staff* — needs `dashboard.hrReport`.

Each tab has a period selector and (where the report supports it) a **filter sheet** to drill into one customer, product, supplier, or staff member. Firm administrators see every tab. See the web report pages for what each one contains: [Sales report](/docs/reports/sales-report), [Product report](/docs/reports/product-report), [Supply chain](/docs/reports/supply-chain), [Staff report](/docs/reports/staff-report).

## Scan QR codes and barcodes

The *Scan* screen (reached from the *Inventory* overflow menu) opens the camera to read a code. On first use it asks for camera permission with a *Camera access needed* prompt; grant it to continue.

- It reads **QR codes and common 1-D/2-D barcodes** — `qr`, `ean13`, `ean8`, `code128`, `code39`, `code93`, `upc_a`, `upc_e`, `pdf417`, `aztec`, and `datamatrix`.
- Point the camera so the code sits inside the on-screen frame. A short **success/warning haptic** fires on each scan.
- **Intigra inventory QR** (a code printed on a storage location) jumps straight to that godown/room/rack's stock in *Inventory*.
- **Intigra product QR** shows the product it points to.
- Any **other code** is shown as raw *Not compatible data* so you can read it, with a *Scan again* button.
- A **torch** toggle and a **front/back camera** switch sit in the top-right corner.

## Notifications

The app can notify you about firm activity — new enquiries, stock arrivals, expense approvals, and more — even when it is closed, using your phone's system push service (Firebase Cloud Messaging).

- **In-app.** While the app is open, notifications arrive over the live connection and appear as toasts. Past notifications are listed under *Settings → Notification History*.
- **Push (app closed).** The first time you sign in, the app shows a *Stay in the loop* explanation and, if you tap *Enable Notifications*, then asks Android's own permission prompt (required on Android 13 and newer). If you tap *Not Now*, it simply asks again next time you open the app — declining is "not right now," not permanent. You can also change the OS permission any time from your phone's app settings.
- What actually reaches you depends on the **per-notification-type mode** your firm and you have set (e.g. push vs in-app only) — those modes are configured on the web under [Notifications](/docs/settings/notifications).

Signing out (or being signed out) unregisters this device so notifications stop going to a phone you've left.

## Light and dark theme

Under *Settings*, the top card toggles *Light Mode* / *Dark Mode*. By default the app follows your phone's system appearance; flipping the switch sets an explicit choice that is remembered on the device (and applied instantly, with no restart). Every screen, including the sign-in screen, respects the choice.

## Exporting and printing PDFs

Where a screen offers an export or print — dashboard reports, inventory summaries, and similar — the app requests the PDF from the server, saves it to the phone, and opens it in your default PDF viewer (or the Android share sheet), so you can print, save, or forward it. No separate storage permission is needed for this; the file is written to the app's own cache.

## How updates work

The app updates itself in two different ways.

### Over-the-air updates (the usual case)

Most updates — new screens, fixes, tweaks — ship **over the air** and need no reinstall. The check runs silently on every launch:

- While it checks, you see and use the app normally.
- If a new bundle is found, the app shows a full-screen *Updating Intigra…* screen with a sweeping progress bar. You **cannot** tap past it or use the Android back button during this moment.
- Once downloaded, the screen briefly reads *Restarting Intigra…* and the app **relaunches itself into the new version** — no prompt, no manual reload.
- If you're offline or the update server can't be reached, the app skips the update and opens normally on the version you already have. It tries again on the next launch.

### Reinstall updates (rare)

Some updates change the underlying native shell (for example, a new device capability). Those can't be delivered over the air. When that happens the update server simply doesn't offer a new bundle to your older shell, and — if your version has been retired on the server — the app shows a full-screen *Update Required* notice with an *Update Now* button that opens the Intigra site so you can install the new APK from [/app/download](/app/download). Because APKs are signed with the same key, the new one upgrades in place. This is uncommon and only happens on deliberate, breaking releases — a routine version bump never locks you out.

## Sessions and multiple devices

- **Phone and computer at the same time — fine.** The phone signs in as a *mobile* session, which is a **separate slot** from your computer's session. Signing in on the phone does **not** sign you out of the web or desktop app, and vice versa. You can genuinely use both at once.
- **One phone at a time.** If you sign in to the same account on a *second phone*, the first phone is signed out and shows *Logged in from another location* with a *Sign In Again* button. Only one mobile session per user is allowed.
- **Automatic sign-out.** You'll also be returned to the login screen if your session expires or is revoked (for example, after a password reset, which signs out all devices).

## Permissions the app asks for

- **Camera** — requested the first time you open *Scan*, only for reading QR codes and barcodes.
- **Notifications** — requested (with the *Stay in the loop* explanation first) so the app can alert you when it's closed. On Android 13+ this is a formal OS permission.

The app does not ask for your photos, contacts, or location. Note that the app process itself doesn't run continuously in the background — push notifications are delivered by the phone's system service, so you still get alerts without the app draining battery while closed.

## Network and slow connections

Every request has a built-in patience budget so a bad signal never leaves you staring at a frozen screen:

- After about `10s` on a slow request you'll see a *Slow internet — Still trying, please wait…* notice.
- After about `20s`, a *Still trying…* notice.
- At `30s` the request is given up and the action reports a timeout — pull to refresh or try again once you have signal.

## Sign out

Open *Settings* and tap *Logout*. A *Logout?* confirmation appears — confirm it to end the session on the server and clear your login from the device. On Android the app then closes; reopen it to sign in again as someone else. (See [Security](/docs/settings/security) for the equivalent on the web.)

## Troubleshooting

- **The APK won't install.** Your phone is blocking installs from outside the Play Store. Open *Settings → Apps → Special access → Install unknown apps*, find the browser you downloaded with, turn on *Allow from this source*, and install again.
- **A tab I expect is missing.** Bottom-nav tabs and menu rows only appear when you hold the matching permission. If *Deals*, *Inventory*, or *HR* is missing, ask your administrator to check your permissions (see [Users and permissions](/docs/settings/users-and-permissions)).
- **"Update Required" screen.** Your app version has been retired on the server. Tap *Update Now* (or open [/app/download](/app/download)) and install the latest APK.
- **Stuck on "Updating Intigra…".** It's downloading a new version; this is usually a few seconds on Wi-Fi, longer on mobile data. The app restarts itself when done — you needn't tap anything. If it sits for more than a minute, force-close and reopen; the next launch retries on the version you already have.
- **"Logged in from another location."** Someone signed in to your account on another phone. Tap *Sign In Again* to reclaim the mobile session on this device. If it wasn't you, change your password from the web and tell your administrator.
- **Not getting notifications.** Make sure you accepted the notification permission (re-check it in your phone's app settings), and confirm the notification type isn't set to in-app-only on the web under [Notifications](/docs/settings/notifications).

## Common questions

### Do I need the Play Store?

No. Intigra is installed directly from the APK on [/app/download](/app/download). Because there's no store listing, Android will ask you to allow the install once — that's normal for a direct APK.

### Will using the phone log me out of my computer?

No. The phone uses a separate *mobile* session that coexists with your computer's session. Only signing in on a **second phone** ends the session on the first phone.

### Does the app work offline?

No. It loads and saves everything against the live server, so you need a connection. Your login is stored securely on the device so you don't have to retype it, but the data itself is not cached for offline use.

### How do I reset my password from the phone?

You can't do it on the mobile sign-in screen — it has no reset link. Reset your password from the **web** sign-in page (see [Signing in](/docs/getting-started/signing-in#forgot-your-password)), or ask your administrator. After a reset you're signed out of every device, including the phone.

### Why is a feature I use on the web missing on my phone?

The phone focuses on field-friendly flows — enquiries, orders, inventory, scanning, HR, and dashboards. Some web-only administration lives on the web app. Anything you can see is still limited by your permissions, which are identical across web and phone.

### How do I switch between light and dark mode?

Open *Settings* and use the theme toggle at the top. By default the app follows your phone's system theme; the toggle sets and remembers an explicit choice.

### Do updates cost me anything or interrupt my work?

Over-the-air updates download in the background and apply on launch with a brief *Updating Intigra…* screen — nothing to buy, nothing to click. Only the rare native-shell change needs you to reinstall the APK, and the app tells you clearly when that's the case.
