# Zoho Subscriptions Integration via LowCodeAPI
**Last Updated**: February 10, 2026
## Overview
Zoho Subscriptions is a subscription billing and recurring revenue management platform that helps businesses manage their recurring billing, automate invoicing, and track customer subscriptions. It provides comprehensive tools for subscription lifecycle management, billing automation, and revenue tracking.
**Main Features:**
- Subscription management (create, update, cancel, reactivate)
- Customer management and billing
- Plan and pricing management
- Invoice generation and management
- Payment tracking
- Addon and coupon management
- Hosted payment pages
- Contact management
## Base Endpoint
https://api.lowcodeapi.com/zohosubscriptions
**Important**: Always include the provider name `zohosubscriptions` in the URL path after `api.lowcodeapi.com/`
## Authentication
**Type**: API Token (OAuth 2.0 based)
To connect to Zoho Subscriptions via LowCodeAPI:
1. Go to [Zoho Subscriptions](https://www.zoho.com/subscriptions/)
2. Navigate to Settings > API & Webhooks
3. Generate an API Key / OAuth Token
4. Add your API Key to LowCodeAPI's Zoho Subscriptions integration
LowCodeAPI automatically handles authentication by mapping your credentials to the Zoho Subscriptions API for each request.
## URL Format
LowCodeAPI supports two URL formats for endpoints with path parameters. Always try the **New Format first**, and only fall back to the **Old Format** if it doesn't work.
### New Format (Priority) - Dynamic Path Parameters
Path parameters stay in the URL path. Do NOT convert them to query parameters.
**Pattern:**
```
https://api.lowcodeapi.com/zohosubscriptions/{path_with_params}?api_token={api_token}
```
**Example:**
```bash
# New Format - Path parameter stays in the URL path
https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions/{subscription_id}?api_token=YOUR_API_TOKEN
```
### Old Format (Fallback) - Sanitized Path + Query Parameters
Path parameters become query parameters with a sanitized path.
**Pattern:**
```
https://api.lowcodeapi.com/zohosubscriptions/{sanitized_path}?{path_params}&api_token={api_token}
```
**Example:**
```bash
# Old Format - Path parameter becomes a query parameter
https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions/subscription_id?subscription_id={subscription_id}&api_token=YOUR_API_TOKEN
```
### Decision Flow for AI Agents
1. **Always use New Format first** - Keep path parameters in the URL path
2. If you get a 404 or error, try **Old Format** with sanitized path
3. Log which format worked for future requests to this provider
### Multiple Path Parameters Handling
For endpoints with multiple path parameters:
```bash
# New Format (Priority)
https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions/{subscription_id}/invoices/{invoice_id}?api_token=XXX
# Old Format (Fallback)
https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions/subscription_id/invoices/invoice_id?subscription_id={subscription_id}&invoice_id={invoice_id}&api_token=XXX
```
## API Categories
- **Subscriptions** - Manage subscription lifecycle
- **Customers** - Customer management
- **Plans** - Plan and pricing management
- **Invoices** - Invoice generation and management
- **Payments** - Payment tracking
- **Addons** - Addon management
- **Coupons** - Coupon and discount management
- **Hosted Pages** - Hosted payment pages
- **Contacts** - Contact management
## Common Endpoints
### Subscriptions
#### List Subscriptions
Retrieve a list of all subscriptions.
**Method**: `GET`
| LowCodeAPI Path | Method |
|----------------|--------|
| `/v1/subscriptions` | GET |
**New Format URL:**
```
https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions?api_token={api_token}
```
**Old Format URL:**
```
https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions?api_token={api_token}
```
**Query Parameters:**
| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `customer_id` | string | No | Filter subscriptions by customer ID |
| `plan_id` | string | No | Filter subscriptions by plan ID |
| `status` | string | No | Filter subscriptions by status |
| `page` | number | No | Page number for pagination |
| `per_page` | number | No | Number of results per page |
**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions?status=active&page=1&per_page=20&api_token=YOUR_API_TOKEN"
```
**Example Response:**
```json
{
"data": {
"subscriptions": [
{
"subscription_id": "123456789",
"customer_id": "987654321",
"plan_id": "plan_001",
"status": "active",
"next_billing_at": "2026-03-10"
}
]
}
}
```
**Official Documentation**: [List subscriptions](https://www.zoho.com/subscriptions/api/v1/subscriptions/#list-subscriptions)
---
#### Get Subscription
Retrieve details of a specific subscription.
**Method**: `GET`
| LowCodeAPI Path | Method |
|----------------|--------|
| `/v1/subscriptions/{subscription_id}` | GET |
**New Format URL:**
```
https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions/{subscription_id}?api_token={api_token}
```
**Old Format URL:**
```
https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions/subscription_id?subscription_id={subscription_id}&api_token={api_token}
```
**Path Parameters:**
| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `subscription_id` | string | Yes | The subscription ID |
**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions/123456789?api_token=YOUR_API_TOKEN"
```
**Official Documentation**: [Get subscription](https://www.zoho.com/subscriptions/api/v1/subscriptions/#get-subscription)
---
#### Create Subscription
Create a new subscription for a customer.
**Method**: `POST`
| LowCodeAPI Path | Method |
|----------------|--------|
| `/v1/subscriptions` | POST |
**New Format URL:**
```
https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions?api_token={api_token}
```
**Old Format URL:**
```
https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions?api_token={api_token}
```
**Request Body:**
| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `customer_id` | string | Yes | The customer ID for the subscription |
| `plan` | object | Yes | Plan details for the subscription |
| `addons` | array | No | Array of addon objects to include in the subscription |
| `coupon_code` | string | No | Coupon code to apply to the subscription |
| `starts_at` | string | No | Subscription start date (ISO 8601 format) |
**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "987654321",
"plan": {
"plan_code": "plan_001",
"quantity": 1
},
"starts_at": "2026-02-11T00:00:00Z"
}'
```
**Official Documentation**: [Create subscription](https://www.zoho.com/subscriptions/api/v1/subscriptions/#create-subscription)
---
#### Cancel Subscription
Cancel an active subscription.
**Method**: `POST`
| LowCodeAPI Path | Method |
|----------------|--------|
| `/v1/subscriptions/{subscription_id}/cancel` | POST |
**New Format URL:**
```
https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions/{subscription_id}/cancel?api_token={api_token}
```
**Old Format URL:**
```
https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions/subscription_id/cancel?subscription_id={subscription_id}&api_token={api_token}
```
**Path Parameters:**
| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `subscription_id` | string | Yes | The subscription ID |
**Request Body:**
| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `cancel_at_end` | boolean | No | Cancel at the end of the current billing period |
| `cancellation_reason` | string | No | Reason for cancellation |
**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions/123456789/cancel?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cancel_at_end": true,
"cancellation_reason": "Customer request"
}'
```
**Official Documentation**: [Cancel subscription](https://www.zoho.com/subscriptions/api/v1/subscriptions/#cancel-subscription)
---
### Customers
#### List Customers
Retrieve a list of all customers.
**Method**: `GET`
| LowCodeAPI Path | Method |
|----------------|--------|
| `/v1/customers` | GET |
**New Format URL:**
```
https://api.lowcodeapi.com/zohosubscriptions/v1/customers?api_token={api_token}
```
**Query Parameters:**
| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `search` | string | No | Search query to filter customers |
| `page` | number | No | Page number for pagination |
| `per_page` | number | No | Number of results per page |
**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/zohosubscriptions/v1/customers?search=john&page=1&per_page=20&api_token=YOUR_API_TOKEN"
```
**Official Documentation**: [List customers](https://www.zoho.com/subscriptions/api/v1/customers/#list-customers)
---
#### Create Customer
Create a new customer.
**Method**: `POST`
| LowCodeAPI Path | Method |
|----------------|--------|
| `/v1/customers` | POST |
**Request Body:**
| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `display_name` | string | Yes | Customer display name |
| `email` | string | Yes | Customer email address |
| `first_name` | string | No | Customer first name |
| `last_name` | string | No | Customer last name |
| `company_name` | string | No | Customer company name |
| `phone` | string | No | Customer phone number |
**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/zohosubscriptions/v1/customers?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "John Doe",
"email": "[email protected]",
"first_name": "John",
"last_name": "Doe",
"company_name": "Acme Corp"
}'
```
**Official Documentation**: [Create customer](https://www.zoho.com/subscriptions/api/v1/customers/#create-customer)
---
### Plans
#### List Plans
Retrieve a list of all plans.
**Method**: `GET`
| LowCodeAPI Path | Method |
|----------------|--------|
| `/v1/plans` | GET |
**Query Parameters:**
| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `status` | string | No | Filter plans by status |
| `page` | number | No | Page number for pagination |
| `per_page` | number | No | Number of results per page |
**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/zohosubscriptions/v1/plans?status=active&page=1&per_page=20&api_token=YOUR_API_TOKEN"
```
**Official Documentation**: [List plans](https://www.zoho.com/subscriptions/api/v1/plans/#list-plans)
---
#### Create Plan
Create a new plan.
**Method**: `POST`
| LowCodeAPI Path | Method |
|----------------|--------|
| `/v1/plans` | POST |
**Request Body:**
| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `name` | string | Yes | Plan name |
| `recurring_price` | number | Yes | Recurring price for the plan |
| `interval` | string | Yes | Billing interval (month, year, etc.) |
| `interval_count` | number | No | Number of intervals |
| `trial_period` | number | No | Trial period in days |
| `description` | string | No | Plan description |
**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/zohosubscriptions/v1/plans?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Pro Plan",
"recurring_price": 29.99,
"interval": "month",
"interval_count": 1,
"trial_period": 14,
"description": "Pro plan with all features"
}'
```
**Official Documentation**: [Create plan](https://www.zoho.com/subscriptions/api/v1/plans/#create-plan)
---
### Invoices
#### List Invoices
Retrieve a list of all invoices.
**Method**: `GET`
| LowCodeAPI Path | Method |
|----------------|--------|
| `/v1/invoices` | GET |
**Query Parameters:**
| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `customer_id` | string | No | Filter invoices by customer ID |
| `subscription_id` | string | No | Filter invoices by subscription ID |
| `status` | string | No | Filter invoices by status |
| `page` | number | No | Page number for pagination |
| `per_page` | number | No | Number of results per page |
**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/zohosubscriptions/v1/invoices?status=paid&page=1&per_page=20&api_token=YOUR_API_TOKEN"
```
**Official Documentation**: [List invoices](https://www.zoho.com/subscriptions/api/v1/invoices/#list-invoices)
---
#### Send Invoice
Send an invoice to the customer via email.
**Method**: `POST`
| LowCodeAPI Path | Method |
|----------------|--------|
| `/v1/invoices/{invoice_id}/send` | POST |
**New Format URL:**
```
https://api.lowcodeapi.com/zohosubscriptions/v1/invoices/{invoice_id}/send?api_token={api_token}
```
**Old Format URL:**
```
https://api.lowcodeapi.com/zohosubscriptions/v1/invoices/invoice_id/send?invoice_id={invoice_id}&api_token={api_token}
```
**Path Parameters:**
| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `invoice_id` | string | Yes | The invoice ID |
**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/zohosubscriptions/v1/invoices/123456789/send?api_token=YOUR_API_TOKEN"
```
**Official Documentation**: [Send invoice](https://www.zoho.com/subscriptions/api/v1/invoices/#send-invoice)
---
## Response Format
All responses from LowCodeAPI are wrapped in a `data` key:
```json
{
"data": {
// Actual response from provider API
}
}
```
The `data` key contains the raw response from the provider's API.
## Complete Endpoint Reference
| Category | Method | LowCodeAPI Path (New Format) | Description |
|----------|---------|---------------------------|-------------|
| Subscriptions | GET | `/v1/subscriptions` | List subscriptions |
| Subscriptions | GET | `/v1/subscriptions/{subscription_id}` | Get subscription |
| Subscriptions | POST | `/v1/subscriptions` | Create subscription |
| Subscriptions | PUT | `/v1/subscriptions/{subscription_id}` | Update subscription |
| Subscriptions | POST | `/v1/subscriptions/{subscription_id}/cancel` | Cancel subscription |
| Subscriptions | POST | `/v1/subscriptions/{subscription_id}/reactivate` | Reactivate subscription |
| Customers | GET | `/v1/customers` | List customers |
| Customers | GET | `/v1/customers/{customer_id}` | Get customer |
| Customers | POST | `/v1/customers` | Create customer |
| Customers | PUT | `/v1/customers/{customer_id}` | Update customer |
| Customers | DELETE | `/v1/customers/{customer_id}` | Delete customer |
| Plans | GET | `/v1/plans` | List plans |
| Plans | GET | `/v1/plans/{plan_id}` | Get plan |
| Plans | POST | `/v1/plans` | Create plan |
| Plans | PUT | `/v1/plans/{plan_id}` | Update plan |
| Plans | DELETE | `/v1/plans/{plan_id}` | Delete plan |
| Invoices | GET | `/v1/invoices` | List invoices |
| Invoices | GET | `/v1/invoices/{invoice_id}` | Get invoice |
| Invoices | POST | `/v1/invoices` | Create invoice |
| Invoices | PUT | `/v1/invoices/{invoice_id}` | Update invoice |
| Invoices | POST | `/v1/invoices/{invoice_id}/void` | Void invoice |
| Invoices | POST | `/v1/invoices/{invoice_id}/send` | Send invoice |
| Payments | GET | `/v1/payments` | List payments |
| Payments | GET | `/v1/payments/{payment_id}` | Get payment |
| Payments | POST | `/v1/payments` | Create payment |
| Addons | GET | `/v1/addons` | List addons |
| Addons | GET | `/v1/addons/{addon_id}` | Get addon |
| Addons | POST | `/v1/addons` | Create addon |
| Addons | PUT | `/v1/addons/{addon_id}` | Update addon |
| Addons | DELETE | `/v1/addons/{addon_id}` | Delete addon |
| Coupons | GET | `/v1/coupons` | List coupons |
| Coupons | GET | `/v1/coupons/{coupon_id}` | Get coupon |
| Coupons | POST | `/v1/coupons` | Create coupon |
| Coupons | PUT | `/v1/coupons/{coupon_id}` | Update coupon |
| Coupons | DELETE | `/v1/coupons/{coupon_id}` | Delete coupon |
| Hosted Pages | GET | `/v1/hostedpages` | List hosted pages |
| Hosted Pages | POST | `/v1/hostedpages` | Create hosted page |
| Contacts | GET | `/v1/contacts` | List contacts |
---
## API Definition Endpoints
To discover all available endpoints for Zoho Subscriptions:
| Format | URL Pattern | Description |
|--------|-------------|-------------|
| **New Format** | `https://backend.lowcodeapi.com/zohosubscriptions/openapi` | OpenAPI spec with dynamic path parameters |
| **Old Format** | `https://backend.lowcodeapi.com/zohosubscriptions/definition` | API definition with sanitized paths |
**Examples:**
```bash
# Get OpenAPI spec (New Format)
curl -X GET "https://backend.lowcodeapi.com/zohosubscriptions/openapi"
# Get API definition (Old Format)
curl -X GET "https://backend.lowcodeapi.com/zohosubscriptions/definition"
```
---
## Usage Examples
### Example 1: Complete Subscription Workflow
```bash
# Step 1: Create a customer (no ID needed - new customer)
curl -X POST "https://api.lowcodeapi.com/zohosubscriptions/v1/customers?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "John Doe",
"email": "[email protected]",
"company_name": "Acme Corp"
}'
# Response includes the new customer ID, e.g., "customer_id": "987654321"
# Use this customer_id in the next step
# Step 2: Create a subscription for the customer (uses customer_id from Step 1)
curl -X POST "https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "987654321",
"plan": {
"plan_code": "plan_001",
"quantity": 1
}
}'
# Response includes the new subscription ID, e.g., "subscription_id": "123456789"
# Step 3: List invoices for the subscription (uses subscription_id from Step 2)
curl -X GET "https://api.lowcodeapi.com/zohosubscriptions/v1/invoices?subscription_id=123456789&api_token=YOUR_API_TOKEN"
```
### Example 2: Create a Plan and Subscribe a Customer
```bash
# Step 1: Create a plan (no ID needed - new plan)
curl -X POST "https://api.lowcodeapi.com/zohosubscriptions/v1/plans?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Pro Plan",
"recurring_price": 29.99,
"interval": "month",
"trial_period": 14,
"description": "Pro plan with all features"
}'
# Response includes the plan code or ID to use for subscriptions
# Step 2: List existing customers to find customer ID (no specific ID required)
curl -X GET "https://api.lowcodeapi.com/zohosubscriptions/v1/customers?search=john&api_token=YOUR_API_TOKEN"
# Step 3: Create subscription with the new plan (uses customer_id from search)
curl -X POST "https://api.lowcodeapi.com/zohosubscriptions/v1/subscriptions?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "987654321",
"plan": {
"plan_code": "pro_monthly",
"quantity": 1
},
"starts_at": "2026-02-11T00:00:00Z"
}'
```
---
## Error Handling
| Status Code | Description |
|-------------|-------------|
| 200 | Success |
| 201 | Created |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 403 | Forbidden - Insufficient permissions |
| 404 | Not Found - Resource doesn't exist |
| 422 | Unprocessable Entity - Validation errors |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Internal Server Error |
---
## Official Documentation
For complete API details, parameter descriptions, and examples, visit the [Zoho Subscriptions API Documentation](https://www.zoho.com/subscriptions/api/).
**Setup Credentials**: [Zoho Subscriptions](https://www.zoho.com/subscriptions/)