Modern, async-ready Python client for Zoho APIs — complete Zoho Books v3 coverage.
- 716 API methods (358 sync + 358 async) across 57 resource types
- CLI —
zohopycommand with--jsonon every command - Multi-currency + exchange rates on all transactions
- Landed cost support on bills
- 10+ typed exceptions mapped from Zoho error codes
- Structured logging (JSON/console via structlog)
- Docker ready — Dockerfile + docker-compose
- OAuth setup wizard —
python -m zohopyorzohopy setup
pip install zohopy# Setup (interactive — generates .env)
zohopy setup
# CLI
zohopy contacts list --json
zohopy invoices create '{"customer_id":"...","line_items":[{"item_id":"...","quantity":1}]}' --json
zohopy --org OTHER_ORG_ID contacts list --json
zohopy raw get /books/v3/items --jsonfrom zohopy import ZohoConfig, SyncZohoClient
from zohopy.products.books import ZohoBooks
with SyncZohoClient(ZohoConfig()) as client:
books = ZohoBooks(client)
books.contacts.list()
books.invoices.create({"customer_id": "...", "line_items": [...]})
books.invoices.mark_sent("invoice_id")| Product | Status | Coverage |
|---|---|---|
| Zoho Books | ✅ v3 | 57 resources, 358 methods |
| Zoho Inventory | 🔜 Coming soon | — |
| Zoho CRM | 🔜 Coming soon | — |
| Zoho Payroll | 🔜 Planned | — |
| Zoho People | 🔜 Planned | — |
| Document | Description |
|---|---|
| AGENT.md | Agent/LLM reference — CLI commands, SDK quick ref, error codes |
| docs/api.md | Full API reference — all 57 resources and their methods |
| docs/errors.md | Error handling guide — exception hierarchy + Zoho error codes |
| docs/setup.md | Setup guide — OAuth flows, .env, Docker, programmatic config |
| CHANGELOG.md | Release history |
git clone https://github.com/talas9/zohopy.git && cd zohopy
pip install -e ".[dev]"
pytest && ruff check src/ && mypy src/Branch strategy: dev → PR → main. Tags trigger PyPI release.