Mon – Sat: 9:00 AM – 7:00 PM IST
iDempiere Mobile · Android & iOS

The ERP in the hand of the person doing the work

iDempiere Mobile is a Flutter app for Android and iOS that talks to your iDempiere instance over its REST API. It is built for the warehouse aisle, the customer car park and the approver between meetings — not for someone sitting in front of the full web client.

iDempiere Mobile app — workflow approvals screen on Android
Why a mobile client matters

Most ERP data is entered late, by someone who wasn't there

The classic failure of a desktop-only ERP is not the software — it is the gap between where a transaction happens and where it gets keyed in. A stock move happens in an aisle, a delivery is signed for on a loading dock, an order is agreed across a counter. If the only way into iDempiere is a browser on a workstation, all of that is written on paper first and typed in hours later.

That lag is where errors, disputes and stale stock figures come from. iDempiere Mobile closes it by putting the specific tasks each person needs directly on the device already in their pocket.

  • Warehouse teams pick, receive and count against live Storage On Hand instead of a printout from this morning.
  • Field sales raise a real C_Order with the correct Price List Version and an instant credit check, standing in front of the customer.
  • Approvers clear a purchase order or expense from a push notification, so the document workflow doesn't stall while they travel.
The Feature Set

Task apps, not a shrunken desktop

Each screen maps to a real iDempiere document or process. Nothing here is a novelty — it is the handful of jobs that genuinely belong on a phone or a rugged handheld.

Sales order capture

Raise an order against the right Business Partner and Price List Version, with live pricing, tax and a real-time credit-limit check before it is submitted. The order posts into iDempiere as a normal C_Order for the back office to confirm and invoice.

Stock enquiry

Scan or search a product and see on-hand, reserved and available quantities across every warehouse and locator — with lot, serial and Product Attribute Set detail where you use them.

Barcode & QR scanning

The camera or an attached scanner drives pick, pack and ship. Scanning validates the right product, lot and quantity against the shipment line, so the wrong case never leaves the building.

Goods receipt

Receive against a purchase order at the dock. Confirm quantities, capture lot and expiry, flag short or damaged lines, and create the M_InOut receipt without walking back to a terminal.

Delivery confirmation

Confirm the shipment, capture the recipient's name and an on-screen signature, add a photo of the delivered pallet, and complete the M_InOut — proof of delivery attached to the document itself.

Physical inventory counts

Run cycle counts and full stocktakes by locator. Enter counted quantities, see the variance against the system figure, and post a Physical Inventory document for review — no double-keying from tally sheets.

Workflow approvals

Approve or reject documents routed to you through iDempiere's document workflow — orders, requisitions, invoices, expenses. A push notification arrives the moment something needs you, with the full context to decide.

Expense capture

Log an expense with a photo of the receipt attached, coded to the right account and project, and send it into the same approval flow — instead of a shoebox reconciled at month-end.

Customer visit logging

Record a visit against the Business Partner — notes, next action, and geolocation — so the CRM history reflects what actually happened in the field, not what someone remembers to type on Friday.

Offline queue & sync

Cold stores and steel-clad warehouses lose signal. The app keeps working offline, queues what you do, and syncs when the connection returns — with conflict-safe rules so two people never silently overwrite each other.

A Day in the Life

What it looks like on the floor and in the field

Two people, two very different jobs, one ERP behind both.

Priya, warehouse picker

Priya starts her shift and logs in with her iDempiere user; the app opens straight to her pick queue because that is all her role is allowed to touch. She scans a shipment barcode and the app shows her the pick list for order lines, sorted by locator so she walks the aisles once, not five times.

At each bin she scans the product. If she reaches for the wrong lot the app stops her before the case is on the trolley. When a location is short she flags it, and a replenishment request is raised without her leaving the aisle. She confirms the pick, moves to pack, scans the carton, and the M_InOut shipment is confirmed. Two of the aisles are in a chilled room with no signal; the app simply queues her scans and syncs them the moment she is back in range. Her despatch paperwork is a memory.

Karan, field sales rep

Karan is parked outside a distributor. He opens the customer, sees their current balance, credit limit and the three invoices going overdue this week — so he raises those before he talks new business. He starts an order, and every line prices itself from the customer's Price List Version with the correct tax; the running total and the remaining credit update as he adds items.

One line would push the customer over their limit, so the app warns him and the order is held for approval rather than blocked outright. He submits it, logs the visit with a note and the next action, and photographs a competitor's shelf display against the account. By the time he is back in the car the order is a live C_Order in iDempiere and his sales manager has already seen the visit. Nothing waits for an evening of data entry.

Screens by Role

People see their work, and only their work

The app respects the same role, organisation and window access you configured in iDempiere. A picker never sees pricing; a rep never sees the count sheet.

RolePrimary screensiDempiere documents behind them
Warehouse pickerPick queue, barcode scan, pack & ship confirmM_InOut (customer shipment), Storage On Hand
Goods-in operatorReceive against PO, lot/expiry capture, short/damage flagM_InOut (vendor receipt), C_Order (purchase)
Stock controllerStock enquiry, cycle count, physical inventoryPhysical Inventory, Storage On Hand, Attribute Sets
Field sales repOrder capture, price & credit check, visit logC_Order (sales), Business Partner, Price List Version
Delivery driverDelivery list, signature, photo PODM_InOut, document attachments
Approver / managerApproval inbox, push alerts, expense reviewDocument workflow, Expense Report
Any employeeExpense capture with receipt photoExpense Report, GL account & project coding

Nothing new to administer. Because access is driven by the roles, organisations and window permissions already in iDempiere, adding a user to the app is the same task as adding them to the ERP. There is no second security model to keep in step.

Security

The same permissions as the ERP, plus device control

A phone is easier to lose than a workstation. The app is built on that assumption.

  • Same roles and organisations. Every request is made as the logged-in iDempiere user; record access, org access and window permissions are enforced by the server, not the app.
  • Token authentication. Sign-in issues a bearer token over HTTPS/TLS; the password is never stored on the device, and tokens expire and refresh on your policy.
  • Device enrolment. Devices are registered before they can connect, so an unknown handset can't reach your REST endpoint even with valid credentials.
  • Remote wipe. Lost or stolen devices can be de-enrolled and their local cache and queued data cleared on next contact.
  • Least-privilege screens. Users are shown only the tasks their role allows, which shrinks the attack surface and the training burden at the same time.
  • Audit trail intact. Actions land as normal iDempiere documents, so the created-by, updated-by and change-log history is exactly what an auditor expects.
Architecture

Flutter → REST → iDempiere

No middle-tier of its own to maintain, no shadow database, no second copy of your business rules.

The app is a single Flutter codebase compiled to native Android and iOS. It talks to iDempiere's REST API — the same interface used for integrations — so every read and write goes through the ERP's own model layer. That matters: callouts, model validators, tax engine, pricing and the document workflow all fire exactly as they would in the ZK web client. The app does not re-implement any business logic, which is what keeps it honest as your configuration evolves.

Reference data such as products, price lists and business partners is cached on the device so the app is fast and usable without a live connection. Transactions you create offline are held in a local queue with their own state. When connectivity returns, the queue drains to the server in order.

What happens on a sync conflict. Each queued action carries the version of the record it was based on. On sync, the server checks whether that record changed underneath it. If the picked line is still valid, it posts. If another user already shipped or amended it, the app does not silently overwrite — it surfaces the conflict to the user with both versions and lets them re-confirm, retry or discard. Stock movements are validated against current Storage On Hand at post time, so the app can never drive on-hand below reality just because it was working from a stale cache.

Practically, the queue means a picker in a dead zone keeps working and a rep on a train keeps selling. The conflict rules mean that convenience never costs you data integrity.

Rollout & Training

Live in weeks, not a project of its own

Because the app rides on your existing iDempiere configuration, standing it up is a short exercise: expose the REST API, enrol a pilot set of devices, and pick one process to prove.

We start with a single flow — usually warehouse picking or field order capture — with a handful of users. The screens are deliberately simple, so training a picker takes minutes rather than a day. Once the pilot is confirming shipments cleanly, we widen to the rest of the team and add the next process. Rugged handhelds and standard phones are both supported; you choose the hardware.

  • Pilot one process with a small group first.
  • Short, task-shaped training — most screens are self-evident.
  • Works on consumer phones and rugged Android handhelds alike.
  • Rolls out user-by-user using your existing iDempiere roles.

Enable REST

Expose and secure iDempiere's REST API on your instance, behind TLS.

Enrol devices

Register the pilot handsets and set token and wipe policy.

Prove one flow

Run picking or order capture with a few users on real data.

Widen out

Add users and processes once the first flow is solid.

Being Honest About Scope

What iDempiere Mobile is not

It is a task app, not a replacement for the full ZK web client. You will not run month-end, design a report, edit the Application Dictionary or configure an Accounting Schema from a phone — nor should you want to. Those are seated, considered jobs that belong on the desktop.

What the app does is take the ten or so tasks that happen away from a desk and make them fast, accurate and immediate. It deliberately shows each user a narrow set of screens. If a process isn't on a phone, that is usually a decision, not a gap — we would rather add a genuinely field-shaped flow than cram the whole ERP onto a small screen and call it mobile. When you need the depth of the full client, it is still there in the browser, unchanged.

Common Questions

Straight answers

Any current iDempiere release with the REST API available. Because the app relies on the standard REST interface and your own configuration rather than patched core code, it moves with you through version upgrades. We confirm compatibility against your specific instance during the pilot.
Yes, for the field-shaped tasks. Reference data is cached and transactions are queued locally, so picking, receiving, counting and order capture continue offline. When the connection returns, the queue syncs to iDempiere with the conflict-safe checks described above. Screens that genuinely need live data — a real-time credit check, for example — tell you clearly when they are working from cached figures.
The app never silently overwrites. Each queued action records the record version it was based on, and the server rejects a post if that record has since changed. The user is shown the conflict and decides whether to re-confirm, retry or discard. Stock actions are re-validated against current on-hand at post time, so the ledger stays correct.
No. The device camera reads barcodes and QR codes out of the box, which is enough for many warehouses. Where you scan all day, a rugged Android handheld with an integrated laser scanner is faster and tougher, and the app supports those too. You choose the hardware to match the environment.
De-enrol the device to revoke its token immediately, so it can no longer reach the REST endpoint. Its local cache and any queued data are cleared on next contact via remote wipe. Because credentials are never stored and access is enforced server-side by iDempiere roles, a lost phone is an inconvenience, not a breach.
iDempiere Mobile is our own product, priced per deployment rather than per user, and delivered as part of an implementation or separately if you already run iDempiere with another partner. Talk to us about which model fits and we will quote against your scope.

See iDempiere Mobile on your own data

We will connect the app to a copy of your iDempiere instance and walk a real picking or field-sales flow with you — no licence to buy, no obligation.