enhancementgood first issueintegrationnew-featurenew-integration
Repository metrics
- Stars
- (1,930 stars)
- PR merge metrics
- (Avg merge 3h 2m) (10 merged PRs in 30d)
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