LENSOWEB DESIGN Zoho automation
Case study · Zoho Creator · Manufacturing

Zoho Creator ERP case study: how a manufacturer moved purchasing, approvals and vendor payments into one system

By Sushil Kumar · Published October 5, 2026 · 15 min read

Zoho Creator ERP case study: purchase-to-pay with OCR payment checks and push alerts

Client name changed for confidentiality. "Apex Precast" is a pseudonym for a real construction-materials manufacturer. Screens and examples use demo data.

In short: Apex Precast ran purchasing on WhatsApp, email and spreadsheets. We built a custom Zoho Creator system that covers the full purchase-to-pay cycle, from stock demand to verified vendor payment, in ten named workflows. It adds three things Zoho doesn't do on its own: Google Vision OCR that reads every payment slip and checks the amount, free Firebase push notifications to the management team's phones and iPads, and role-based mobile dashboards in a Creator portal.
IndustryConstruction materials manufacturing
Users5 roles: MD, Production Head, Purchase Manager, Accounts, Stock Manager
PlatformZoho Creator app + Creator customer portal
IntegrationsGoogle Cloud Vision, Firebase Cloud Messaging, PHP on shared hosting, Zoho Mail
Workflows10 (WF-01 to WF-10)
Extra running costFirebase messaging free; OCR within Google's free 1,000 scans a month

The challenge

Apex Precast makes construction materials and buys raw materials and consumables from a wide base of vendors every week. Before the project, a purchase passed through five people and four tools:

The goal was one system of record for the whole cycle, approvals that reach the right person on their phone the moment they're needed, and a check that every payment matches its proof.

Design principles

1. Zoho Creator is the single system of record

Every demand, approval, quotation, purchase order, GRN, bill and payment is a Creator record. Dashboards, reports and alerts all read from it.

2. "Creator calls out. Nothing calls back in."

Every external service is called from Deluge with invokeUrl, and returns a value that Deluge writes back to a Creator field itself. No outside service holds Creator credentials or inserts records.

Why it matters: records created through the API skip form workflows. Rate codes, vendor emails, stock roll-ups and validations would silently stop firing. Keeping every write inside Creator keeps every rule running.

3. Portal users, not extra licences

Management and staff work through a Zoho Creator customer portal with role-based pages. Push notifications go to their phones without each person needing a full Creator licence.

4. Compute live, don't store verdicts

Checks like "does the slip match the paid amount?" are calculated on the page from the two stored values, not saved as a status. A saved verdict goes stale the moment someone edits the paid amount.

The purchase-to-pay workflows (WF-01 to WF-10)

We gave every stage a standard name so the client, the team and the documentation all use the same words.

IDWorkflowOwnerWhat happens in Zoho Creator
WF-01Demand RequisitionStock ManagerRaises a stock demand with items and quantities. On create, the Production Head, Stock Manager and MD get a push alert.
WF-02Demand ApprovalProduction HeadApproves or rejects each item. Rejections record the reason and who rejected, and the demand message shows per-item decisions.
WF-03Purchase ConfirmationPurchase ManagerGives the final confirmation that the demand should be bought.
WF-04Request for Quotation (RFQ)Purchase ManagerRate requests go to mapped vendors only when the send icon is pressed, not automatically, so the manager controls which vendors are asked.
WF-05Quotation ComparisonPurchase ManagerVendor rates are recorded against the demand and one winning quotation is selected.
WF-06Purchase OrderPurchase Manager / MDBelow the approval threshold, the Purchase Manager issues the PO directly. Above it, the MD approves first.
WF-07Goods Receipt Note (GRN)Stock ManagerGoods received are recorded against the PO, and stock levels update.
WF-08Bill Booking & Payment RequestAccounts / MDThe vendor bill is linked to the PO; one shared function calculates the payable amount. Payments above the threshold need MD approval.
WF-09Payment Proof VerificationAccountsThe bank slip is uploaded, read by OCR, and its amount compared live with the amount paid.
WF-10Role-Based Push AlertsSystemEach event sends a phone notification to the right roles, opening straight into their dashboard.

Approval rules and thresholds

Early versions sent every purchase and every payment to the MD. That made the MD the bottleneck. After real use, the client changed the rules, and the system changed with them:

DecisionBeforeNow
Demand approvalMD approved every demandProduction Head approves
Vendor rate requestSent automatically to every mapped vendorSent only when the Purchase Manager presses the send icon
Purchase orderMD approvedMD approves only above a set amount
PaymentMD approved every paymentMD approves only above a set amount
Rejected itemsNot shownListed with the reason and who rejected

Small purchases now flow without waiting, and the MD only sees the decisions that need him.

Running approvals on WhatsApp?

We build purchase-to-pay systems in Zoho Creator with mobile approvals, OCR payment checks and free push alerts. Tell us how your team buys today.

Talk to us about your workflow

WF-09: payment proof verification with OCR

Every vendor payment now carries proof, and the system checks the proof itself.

How one slip travels

  1. Upload: Accounts attach the bank slip to the vendor payment record in Creator.
  2. Store: a Deluge function sends the file to a small PHP endpoint on the client's hosting. The endpoint checks a shared token, checks the file's real type (not just its name), renames it to a random 32-character name and returns a public image link, saved on the payment.
  3. Read: a second function sends the slip to an OCR endpoint, which calls Google Cloud Vision and returns the amount, a verdict and the full text.
  4. Compare: the Accounts dashboard compares the slip amount with the paid amount, live.

Accepted files: JPG, PNG, WebP and PDF. WebP was added after staff began saving slips from a messaging app in that format, which had quietly stopped uploads.

How the OCR parser finds the right number

A bank slip is full of numbers. Most of them aren't the amount. The parser:

It was tested against every real slip exported from the system before going live.

Verdict shownMeaning
VerifiedSlip amount equals paid amount
Slip X vs paid YBoth read, they disagree: needs a look
Not a receiptToo few payment keywords: wrong file uploaded
Amount not readNo usable number: check by hand

Want the full method, including vendor bank-account checks? Read our guide: Zoho Creator OCR to verify vendor payments and automate GRNs.

WF-10: role-based push alerts

Zoho's built-in push only reaches licensed Creator users inside the Creator app. Apex Precast's managers use the portal, so we built free web push with Firebase Cloud Messaging.

How a notification travels

  1. A Creator workflow calls one function: sendAppPush(role, title, body, link).
  2. The function posts to a PHP script on the hosting server, protected by a shared secret.
  3. The script picks every registered device for that role, gets a Google access token (signed with the service account, cached for an hour) and calls the FCM HTTP v1 API once per device.
  4. On the phone, a service worker draws the notification. A tap opens the right dashboard in the portal.

Why a server is needed

Firebase's HTTP v1 API needs a token signed with RS256, which Deluge can't produce. A short PHP script on ordinary shared hosting can. The same server also gives payment slips a plain image link that dashboards can display.

Why the payload is data-only

If a Firebase message includes a notification block, the browser shows it by itself and our click handler never runs, so tapping does nothing. Sending data only puts the app in control of both the display and the tap.

Five roles, one map

The role-to-dashboard map lives inside sendAppPush. A workflow passes an empty link and the right page is chosen automatically, so a change happens in one place.

EventAlerted rolesStatus
Demand raised (WF-01)Production Head, Stock Manager, MDLive
Demand approved (WF-02)Purchase ManagerAgreed, next phase
Bill above threshold (WF-08)MDAgreed, next phase
Bill approved or rejectedPurchase ManagerAgreed, next phase
Payment requested / approvedMD / AccountsAgreed, next phase
GRN received (WF-07)Purchase Manager, Stock ManagerAgreed, next phase

Full setup guide: Free push notifications for Zoho ERP with Firebase.

Mobile dashboards

Each role opens its own page in the Creator portal: MD dashboard, demand timeline, Purchase Manager dashboard, Accounts dashboard, production dashboards and a read-only production view for the MD.

System architecture

PieceWhy it exists
Zoho CreatorForms, approvals, reports, portal pages and all business rules
Shared hosting (PHP)Signs Firebase tokens (Deluge can't), and gives slip images a public link a page can display
Google Cloud VisionReads the amount from payment slips
Firebase Cloud MessagingDelivers alerts to portal users' phones, free, with no message cap
Zoho MailRate requests and purchase orders to vendors

Security choices

What we learned

Real projects teach things documentation doesn't. These are the issues that cost the most time, and the fixes now built in:

SymptomCause and fix
Every upload rejected as "bad token"The real key had been pasted into the placeholder-check line too. Fix: a pre-test search for placeholder values.
Notification arrived, but tapping did nothingThe message carried a notification block, so the browser handled it. Fix: data-only payloads.
Slip image blank in the pop-upLazy loading inside a hidden container. Fix: load normally, and wrap the image in a link so a tap always opens it.
"Improper statement" at invokeUrlThe parameter is body:, not content:.
Date comparison errorTwo date strings compared as text. Fix: convert with .toLong() first.
Everyone shown absentPunch-out equal to punch-in, plus a disabled schedule. Fix: require a minimum gap before marking someone as gone.
Device registration stuckTested in a private window, where service workers are restricted. Fix: register in a normal window.
Google refused to create a service-account keyTwo organisation policies blocked it. Fix: remove them with Google Cloud's org-policy tools.

Zoho Creator Procurement vs a custom Creator build

Zoho also offers Zoho Creator Procurement, a ready-made e-procurement solution built on Creator. It's a good option for many teams, so it's worth comparing honestly with a custom build like this one.

Zoho Creator Procurement (ready-made)Custom Creator build (this project)
What it coversRequisitions, purchase orders, GRNs, vendor management and ratings, quote management, budgets with multilevel approvals, taxes, multicurrency and analyticsThe same purchasing core, plus stock, production dashboards and attendance, built around this client's exact process
Approval rulesConfigurable multilevel approvalsRules written for the business: Production Head approves demands, MD only above a set amount, rejected items keep reason and approver
Vendor paymentsNot listed among its features on Zoho's pagePayment requests, MD approval above threshold, and slip upload
Payment proof checkNot listedGoogle Vision OCR reads every slip and compares it with the paid amount
Phone alerts for portal usersZoho notifications and the native Creator mobile appFree Firebase web push to five roles, tap opens their dashboard
Time to startFast: configure and goLonger: designed and built in stages
Best forTeams whose buying process fits a standard procurement flowBusinesses with their own approval rules, production links or payment controls that a standard flow can't match

How to choose: start with the ready-made solution if your process is close to the standard. Go custom when your approval rules, payment checks or production steps are what make your business different. Both run on Zoho Creator, so a custom layer can also be added on top of a standard setup later.

Results and what's next

Next phase

Tech stack

Zoho Creator · Deluge · Creator customer portal · Zoho Mail · Google Cloud Vision API · Firebase Cloud Messaging (HTTP v1) · PHP on shared hosting · service workers and web push · responsive HTML/CSS pages inside Creator.

Frequently asked questions

Can Zoho Creator handle a full purchase-to-pay process?

Yes. In this project, demands, approvals, rate requests, quotations, purchase orders, GRNs, bills and payments all run in one custom Creator app, with role-based pages in a Creator portal.

How do you send push notifications to Zoho Creator portal users?

Zoho's built-in push reaches licensed Creator users in the Creator app. For portal users, we use Firebase Cloud Messaging web push: Deluge calls a small PHP script that signs the Firebase token and sends the alert, and a tap opens the user's portal dashboard.

How does OCR verify a vendor payment?

The bank slip is uploaded, stored on the server, and read by Google Cloud Vision. A parser picks out the paid amount and ignores account numbers and references, then the dashboard compares it live with the amount recorded as paid.

Why not let external services write directly into Zoho Creator?

Records created through the API skip form workflows, so validations, emails and stock updates would stop firing. In this design, Creator calls out to each service and writes the result itself.

Should I use Zoho Creator Procurement or a custom Creator app?

Use the ready-made Zoho Creator Procurement if your buying process fits a standard requisition, quote, PO and GRN flow. Choose a custom Creator build when you need your own approval rules, vendor payment checks such as OCR slip verification, or links to stock and production.

Does this need extra paid tools?

Firebase Cloud Messaging is free with no message cap, and Google Vision gives 1,000 scans a month free, which covers typical payment volumes. The PHP scripts run on ordinary shared hosting.

Sushil Kumar is the founder of LENSO Web Design. He has built websites and business systems since 2016 and builds custom Zoho Creator ERPs for purchasing, payroll, HR, Desk and inventory, with OCR and push notification integrations. See our Zoho automation work

Related

Sources

Client name and identifying details changed for confidentiality. Zoho, Google and Firebase features and prices change over time.