Zoho Books REST API v3

The Zoho Books REST API v3 provides full programmatic access to the Zoho Books accounting data model including contacts, invoices, estimates, sales orders, purchase orders, bills, expenses, banking, items, taxes, projects, and financial reports. Authentication uses OAuth 2.0 with the Zoho-oauthtoken header, and base URLs vary by regional data center (.com, .eu, .in, .com.au, .jp, .ca, .com.cn, .sa). Standard pagination, filtering, and rate limiting are supported with up to 100 requests per minute per organization.

OpenAPI Specification

zoho-books-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Zoho Books API
  description: REST API for Zoho Books, covering invoices, contacts, items, and organizations.
  version: v3
servers:
  - url: https://www.zohoapis.com/books/v3
    description: Production (US data center; regional domains include .eu, .in, .com.au, .jp, .ca, .com.cn, .sa)
security:
  - ZohoOAuth: []
paths:
  /organizations:
    get:
      summary: List organizations
      operationId: listOrganizations
      responses:
        '200':
          description: OK
  /invoices:
    get:
      summary: List invoices
      operationId: listInvoices
      responses:
        '200':
          description: OK
    post:
      summary: Create invoice
      operationId: createInvoice
      responses:
        '201':
          description: Created
  /invoices/{invoice_id}:
    parameters:
      - name: invoice_id
        in: path
        required: true
        schema:
          type: string
    get:
      summary: Retrieve an invoice
      operationId: getInvoice
      responses:
        '200':
          description: OK
    put:
      summary: Update an invoice
      operationId: updateInvoice
      responses:
        '200':
          description: OK
    delete:
      summary: Delete an invoice
      operationId: deleteInvoice
      responses:
        '200':
          description: OK
  /invoices/{invoice_id}/email:
    post:
      summary: Email an invoice
      operationId: emailInvoice
      parameters:
        - name: invoice_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /invoices/{invoice_id}/status/sent:
    post:
      summary: Mark invoice as sent
      operationId: markInvoiceSent
      parameters:
        - name: invoice_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /invoices/{invoice_id}/status/void:
    post:
      summary: Void an invoice
      operationId: voidInvoice
      parameters:
        - name: invoice_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /contacts:
    get:
      summary: List contacts
      operationId: listContacts
      responses:
        '200':
          description: OK
    post:
      summary: Create a contact
      operationId: createContact
      responses:
        '201':
          description: Created
  /contacts/{contact_id}:
    parameters:
      - name: contact_id
        in: path
        required: true
        schema:
          type: string
    get:
      summary: Retrieve a contact
      operationId: getContact
      responses:
        '200':
          description: OK
    put:
      summary: Update a contact
      operationId: updateContact
      responses:
        '200':
          description: OK
    delete:
      summary: Delete a contact
      operationId: deleteContact
      responses:
        '200':
          description: OK
  /contacts/{contact_id}/active:
    post:
      summary: Mark contact active
      operationId: markContactActive
      parameters:
        - name: contact_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /contacts/{contact_id}/inactive:
    post:
      summary: Mark contact inactive
      operationId: markContactInactive
      parameters:
        - name: contact_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /items:
    get:
      summary: List items
      operationId: listItems
      responses:
        '200':
          description: OK
    post:
      summary: Create an item
      operationId: createItem
      responses:
        '201':
          description: Created
  /items/{item_id}:
    parameters:
      - name: item_id
        in: path
        required: true
        schema:
          type: string
    get:
      summary: Retrieve an item
      operationId: getItem
      responses:
        '200':
          description: OK
    put:
      summary: Update an item
      operationId: updateItem
      responses:
        '200':
          description: OK
    delete:
      summary: Delete an item
      operationId: deleteItem
      responses:
        '200':
          description: OK
components:
  securitySchemes:
    ZohoOAuth:
      type: apiKey
      in: header
      name: Authorization
      description: OAuth 2.0 access token sent as 'Authorization: Zoho-oauthtoken {access_token}'.