Beam Help
Get help now

How-to · Zoho DESK

How to get task time entries by billing type in Zoho Desk

Retrieve time entries for a task filtered by billing type.

Retrieving task time entries filtered by billing type in Zoho Desk requires a single authenticated GET request to the task-specific time entries endpoint, passing the task ID as a path parameter.


Why this matters


When managing support operations, you often need to distinguish between billable and non-billable time logged against tasks — for invoicing, reporting, or client transparency. Zoho Desk's API exposes a dedicated billing-type filter endpoint for tasks, making it straightforward to pull only the time entries relevant to a specific billing category without post-processing a full time entry list.


Step-by-step


Step 1. Identify the taskId for the task whose time entries you want to retrieve. This is the unique identifier Zoho Desk assigns to the task record — you can obtain it from a prior task list API call or directly from the Zoho Desk UI URL when viewing the task. [1]


Step 2. Construct your GET request to the billing-type endpoint. The path follows this pattern: [1]


GET /api/v1/tasks/{taskId}/timeEntries/billingType

Replace {taskId} with the actual task identifier string.


Step 3. Include any optional query parameters by passing them as a dictionary (referred to as p in the SDK). These parameters allow you to paginate or filter the results returned by the endpoint. [1]


Step 4. Send the authenticated request. Using the Python SDK wrapper, the call looks like this: [1]


result = client.get_task_time_entries_by(taskId="your_task_id_here", p={"billingType": "Billable"})

The method issues a GET request to /api/v1/tasks/{taskId}/timeEntries/billingType, forwarding your query parameters, and returns the matching time entries grouped or filtered by billing type. [1]


Step 5. Parse the response. The returned payload will contain the time entries associated with that task, segmented by their billing classification, which you can then feed into your reporting pipeline or invoicing workflow. [1]


---


> Note from Beam Help: We are independent expert support for Zoho — not official Zoho support. The steps above reflect our analysis of the Zoho Desk API surface.


---


Related endpoints worth knowing


Billing-type filtering is available across several Zoho Desk entity types, not just tasks. Depending on your reporting needs, you may also want to query: [2][3][4][6]


  • Account-level time entries by billing type: GET /api/v1/accounts/{accountId}/timeEntries/billingType [2]
  • Contact-level time entries by billing type: GET /api/v1/contacts/{contactId}/timeEntries/billingType [3]
  • Ticket-level time entries by billing type: GET /api/v1/tickets/{ticketId}/timeEntries/billingType [4]
  • Agent-level time entries by billing type: GET /api/v1/agents/{agentId}/timeEntries/billingType [6]

Each follows the same pattern — swap the entity name and its corresponding ID in the path.


Common pitfalls


  • Wrong entity endpoint: If you accidentally call the ticket endpoint (/tickets/{ticketId}/timeEntries/billingType) when you mean to query a task, you will receive ticket-level data rather than task-level data. Always confirm whether your record is a *task* or a *ticket* before choosing the endpoint. [1][4]
  • Missing or malformed taskId: Passing an incorrect or non-existent task ID will result in an error response. Double-check the ID against your task records before making the call. [1]
  • Unpopulated p parameter: The p dictionary is optional, but if your integration expects filtered or paginated results, omitting it will return the default result set. Pass your filter keys explicitly inside the dictionary. [1]

What to check


  • Correct task ID: Verify that the taskId in your request path corresponds to an existing task in your Zoho Desk organisation, not a ticket or contact ID. [1]
  • Authentication and org context: Confirm that your API credentials are valid and that the correct Desk organisation ID is set in your client configuration before making the call. [7]
  • Response structure: Inspect the returned payload to ensure time entries are present and that the billing type segmentation matches your expectations — an empty result may indicate no entries of that billing type exist for the task, rather than an error. [1]

Sources cited

  1. [1] GET /api/v1/tasks/{taskId}/timeEntries/billingType
  2. [2] GET /api/v1/accounts/{accountId}/timeEntries/billingType
  3. [3] GET /api/v1/contacts/{contactId}/timeEntries/billingType
  4. [4] GET /api/v1/tickets/{ticketId}/timeEntries/billingType
  5. [5] server.py: build_zoho_links
  6. [6] GET /api/v1/agents/{agentId}/timeEntries/billingType
  7. [7] server.py: get_zoho_api
  8. [8] app.js
Get Task Time Entries by Billing Type | Beam Help