Zoho Inventory & Books REST API v1

Cloud-Native RFID Zoho Integration for Modern Warehouses

Connect handheld Android RFID terminals and dock door portals directly to Zoho Inventory. Perform 3-minute warehouse cycle counts, map EPC tags to serial numbers, and automatically post stock adjustments with rate-limit micro-batching.

OAuth 2.0
Multi-DC Secure Auth
100/min
Micro-Batch Aggregator
Serial #
1:1 EPC Tag Tracking
SQLite WAL
Offline Local Buffer
Zoho Inventory RFID integration for efficient asset tracking
Regional Domains & Rate Limits

Multi-DC Routing & Rate Limit Protection

Zoho hosts accounts across 6 global data centers. Our edge connector dynamically directs API calls to your registered regional domain while enforcing micro-batching to safeguard your 100 req/min quota:

India DC (.in) zohoapis.in

Primary server for Indian businesses with GST tax invoice mapping and automated state godown transfers.

US & Global DC (.com) zohoapis.com

Standard North American endpoint for enterprise 3PL fulfillment centers and Shopify multi-channel sync.

Europe DC (.eu) zohoapis.eu

GDPR-compliant data storage with serialized traceability for European apparel and luxury goods distribution.

REST API v1 Specification

Automated Stock Adjustment REST Payload

Dispatched by our edge gateway to POST https://www.zohoapis.in/inventory/v1/inventoryadjustments:

POST https://www.zohoapis.in/inventory/v1/inventoryadjustments OAuth 2.0 / JSON
{
  "mode": "quantity",
  "reference_number": "RFID-AUDIT-2026-09",
  "date": "2026-09-12",
  "reason": "RFID Warehouse Cycle Count Sweep",
  "description": "Scanned via Chainway C72 Android Handheld",
  "line_items": [
    {
      "item_id": "460000000189021",
      "name": "Industrial UHF On-Metal Tag 8535",
      "quantity_adjusted": 250,
      "warehouse_id": "460000000028101",
      "serial_numbers": [
        "E28011606000021A5288B001",
        "E28011606000021A5288B002",
        "E28011606000021A5288B003"
      ]
    }
  ]
}
              

Rate Limit Micro-Batcher

Zoho enforces a limit of 100 requests per minute. Scanning 500 items per second would crash standard webhooks. Our middleware ring-buffer holds scans in a 2.5-second dwell window, bundling up to 100 serialized items per request.

Automated OAuth Refresh

The gateway securely stores the OAuth Refresh Token. Every 50 minutes, an automated background daemon requests a fresh Access Token, guaranteeing zero interrupted scanning sessions on warehouse floors.

Offline SQLite Buffer (WAL)

If the warehouse Wi-Fi network drops during a stock sweep, scans are queued into a local SQLite database with SHA-256 deduplication and automatically flushed once connectivity is restored.

Open-Source Connector Boilerplate

Python 3 Zoho Inventory Micro-Batch Client

Production-ready script handling OAuth 2.0 token refreshes and rate-limited stock adjustments:

zoho_rfid_micro_batcher.py Python 3.10+ / requests
import time
import requests

class ZohoInventoryRfidGateway:
    def __init__(self, client_id, client_secret, refresh_token, org_id, domain="zohoapis.in"):
        self.client_id = client_id
        self.client_secret = client_secret
        self.refresh_token = refresh_token
        self.org_id = org_id
        self.domain = domain
        self.access_token = None
        self.token_expiry = 0

    def get_access_token(self):
        if time.time() < self.token_expiry and self.access_token:
            return self.access_token

        auth_domain = "accounts.zoho.in" if "zohoapis.in" in self.domain else "accounts.zoho.com"
        url = f"https://{auth_domain}/oauth/v2/token"
        params = {
            "refresh_token": self.refresh_token,
            "client_id": self.client_id,
            "client_secret": self.client_secret,
            "grant_type": "refresh_token"
        }
        res = requests.post(url, data=params, timeout=10).json()
        self.access_token = res["access_token"]
        self.token_expiry = time.time() + res.get("expires_in", 3600) - 300
        return self.access_token

    def post_adjustment(self, line_items, reference_no):
        token = self.get_access_token()
        url = f"https://www.{self.domain}/inventory/v1/inventoryadjustments?organization_id={self.org_id}"
        headers = {
            "Authorization": f"Zoho-oauthtoken {token}",
            "Content-Type": "application/json"
        }
        payload = {
            "mode": "quantity",
            "reference_number": reference_no,
            "date": time.strftime("%Y-%m-%d"),
            "reason": "RFID Handheld Cycle Count",
            "line_items": line_items
        }
        res = requests.post(url, json=payload, headers=headers, timeout=15)
        return res.json()
          

Frequently Asked Questions: Zoho RFID Integration

Technical answers for operations directors, warehouse supervisors, and software engineers.

How do you connect an RFID handheld scanner to Zoho Inventory?
Our mobile scanner app (running on Chainway, Zebra, or Seuic Android devices) uses the official Zoho Inventory REST API v1. Scanned EPC Gen2 tags are mapped to Zoho item IDs and serial numbers, and posted to endpoints like /inventoryadjustments or /purchasereceives via OAuth 2.0 HTTPS calls.
How does RFID compare to standard barcode scanning in Zoho Inventory?
Standard barcode scanning requires optical line-of-sight and scanning each item individually (approx. 200–300 items per hour). UHF RFID reads up to 700 tags per second through cartons and packaging without direct line-of-sight, enabling a full warehouse inventory count in minutes rather than days.
Can we perform annual physical inventory audits directly into Zoho Inventory using RFID handhelds?
Yes. The OpenRFID mobile handheld app downloads current stock snapshots from Zoho Inventory. As warehouse operators sweep aisles, the app reconciles physical tags against recorded quantities, displaying real-time surplus and shortage variances, and posts a consolidated Inventory Adjustment directly into Zoho upon audit completion.
How does the integration handle Zoho’s 100 requests-per-minute API rate limit?
High-speed RFID sweeps scan 700+ tags per second, which would instantly exhaust Zoho API rate limits. Our middleware implements an edge Micro-Batching Aggregator that bundles scanned tags into micro-batches of up to 100 serialized items per request, keeping API traffic well within Zoho thresholds.
Does the Zoho integration support multi-regional data centers (.in, .com, .eu)?
Yes. The OpenRFID connector automatically routes requests to your specific regional domain (accounts.zoho.in / zohoapis.in for India, accounts.zoho.com for US, accounts.zoho.eu for Europe, as well as Australia and Japan).
Can RFID track individual serial numbers in Zoho Inventory?
Yes. Each EPC Gen2 tag has a unique 96-bit identity that maps directly to Zoho serial tracking fields. During receiving or stock audits, each physical tag is verified and updated against its corresponding serialized line item.
What happens if warehouse Wi-Fi drops during a stock take?
All scans are written to a local encrypted SQLite database (WAL mode) on the handheld or edge PC. Once network connectivity is restored, the queue worker dispatches batches with deterministic SHA-256 deduplication, guaranteeing zero data loss.
Can we automate Goods Receipt against Zoho Purchase Orders using RFID?
Yes. Dock door portals or mobile scanners read arriving pallets, match EPC tags to Purchase Order line items, and trigger an automated POST /purchasereceives call in Zoho Inventory, marking the PO received in real-time.

Deploy Real-Time Zoho Inventory RFID

Get enterprise-grade RFID mobile scanners running OpenRFID configured for your Zoho organization in under two weeks. Complete with staff onboarding, multi-godown mapping, and rate-limit micro-batching.