RedPlanetHQ / RedPlanetHQ/core
New Integration: Zoho Invoice
Open
@AggManik is already working on this.
Since Mar 11, 2026.
enhancement
good first issue
integration
new-feature
new-integration
- Dominant language
- TypeScript
- Stars
- 2k
- Forks
- 194
- Avg merge
- 12m
- Merged PRs (30d)
- 2
Description
Description
Add Zoho Invoice integration to sync invoices, estimates, expenses, and billing activity into CORE.
Reference Implementations
Existing Integrations (use as templates)
integrations/hubspot/- Similar business tool integration with OAuthintegrations/zoho-mail/- Existing Zoho product integration (reuse OAuth patterns)integrations/linear/- For reference
Required Files Structure
integrations/zoho-invoice/
├── src/
│ ├── index.ts # Main entry, OAuth spec
│ ├── schedule.ts # Sync logic
│ ├── utils.ts # Zoho Invoice API utilities
│ ├── account-create.ts # OAuth setup
│ └── create-activity.ts # Activity formatting
├── package.json
├── tsup.config.ts
└── README.md
Zoho Invoice API Integration
OAuth Setup
- Use OAuth 2.0 for authentication
- Access tokens expire after a period; refresh tokens are permanent
- Base URL:
https://www.zohoapis.com/invoice/v3/(for .com domain) - Important: 8 different domains exist for Zoho APIs; must use the correct domain for the user's organization
Key Endpoints
GET /invoices- List invoicesGET /invoices/{invoice_id}- Get invoice detailsPOST /invoices- Create invoiceGET /estimates- List estimatesGET /items- List items/productsGET /contacts- List contacts/customersGET /expenses- List expensesGET /projects- List projectsGET /recurring-invoices- List recurring invoicesGET /creditnotes- List credit notes
Rate Limits
- 100 requests per minute per organization
- HTTP 429 returned when rate limit exceeded
Events to Track
- Invoices - Invoice created, sent, paid, overdue, voided
- Estimates - Estimate created, accepted, declined
- Payments - Payment received, refunded
- Expenses - Expense logged, categorized
- Recurring Invoices - Recurring invoice generated, payment received
- Contacts - Customer created, updated
Implementation Tasks
- Set up basic integration structure following
integrations/github/src/index.tspattern - Implement OAuth 2.0 flow in
account-create.ts(reference existingintegrations/zoho-mail/for Zoho OAuth patterns) - Create API utilities in
utils.tsfor v3 API with multi-domain support - Implement sync logic in
schedule.tsfor invoices, estimates, and expenses - Convert Zoho Invoice events to CORE activity format
- Add error handling and rate limiting (100 req/min/org)
- Create integration documentation
- Add to
integrations/README.md
Technical Notes
- Existing
integrations/zoho-mail/can be referenced for Zoho OAuth 2.0 patterns - REST-based API with predictable URL structure
- Must handle 8 different Zoho domains (
.com,.eu,.in,.com.au,.jp, etc.) - Rate limit: 100 requests/minute/organization
- Refresh tokens are permanent; access tokens expire and need refresh
- Postman collection available for API testing
Resources
- Zoho Invoice API Introduction
- Zoho Invoice Invoices API
- Zoho Invoice OAuth Documentation
- Zoho Invoice Items API
- Zoho Invoice API Collection (Postman)
Labels
enhancement, integration, new-feature
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.