Clio Bills API

Bills are statements of what a user’s client owes for their services over a particular billing period, including legal fees, expenses, and taxes. Users customize, preview, edit, and approve bills before sending them to a client. [Support Link](https://help.clio.com/hc/en-us/articles/9285169278747-Generate-Bills)

OpenAPI Specification

clio-bills-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Clio API Documentation Activities Bills API
  contact:
    name: Clio API Support
    email: api@clio.com
  description: "# Developer Support and Feedback\n* Clio takes the availability and stability of our API seriously; please report any **degradations** or **breakages** to Clio's API Support team at [api@clio.com](mailto:api@clio.com).\n* For business and partnership inquiries, contact our API Partnerships team at [api.partnerships@clio.com](mailto:api.partnerships@clio.com).\n* For best practices and tips from the Clio development community, join the conversation in the [Clio Developer Slack Channel](https://join.slack.com/t/clio-public/shared_invite/zt-36i0eqgo1-7POORPtMJpp2N0~_auL2IQ).\n\nA community-driven [Clio Developers Stack Overflow Group](https://stackoverflow.com/questions/tagged/clio-api) also exists where you can connect and ask questions from other Clio API users.\n# Getting Started\n> **Note:** The API is available in four distinct data regions: Australia (au.app.clio.com), Canada (ca.app.clio.com), EU (eu.app.clio.com) and US (app.clio.com).\n>\n> Likewise, the developer portal is available at region-specific links for the [Australia](https://au.developers.clio.com), [Canada](https://ca.developers.clio.com), [EU](https://eu.developers.clio.com), and [US](https://developers.clio.com) regions.\n>\n> This document assumes the US region is being used (app.clio.com). If you're building in one of the other regions, you should adapt the links and examples as necessary.\n\nTo start building on the Clio API, you’ll need a Clio account – you can review our [Developer Handbook](https://docs.developers.clio.com/) and follow the steps to sign up for an account.\n\nOnce you have an account, you can [create a developer application](https://docs.developers.clio.com/api-docs/applications) from the [Developer Portal](https://developers.clio.com) and start building!\n# Authorization with OAuth 2.0\nSee our [Authorization documentation →](https://docs.developers.clio.com/api-docs/authorization)\n# Permissions\nSee our [Permissions documentation →](https://docs.developers.clio.com/api-docs/permissions)\n# Fields\nSee our [Fields documentation →](https://docs.developers.clio.com/api-docs/fields)\n# Rate Limiting\nSee our [Rate Limits documentation →](https://docs.developers.clio.com/api-docs/rate-limits)\n# Paging\nSee our [Pagination documentation →](https://docs.developers.clio.com/api-docs/paging)\n# ETags\nSee our [ETags documentation →](https://docs.developers.clio.com/api-docs/etags)\n# Minor Versions\nAPI v4 supports multiple minor versions. Versions are of the form '4.X.Y'. To request a specific version, you can use an `X-API-VERSION` header in your request, with the header value set to the API version you're requesting. If this header is omitted, it will be treated as a request for the default API version. If the header is present but invalid, it will return a `410 Gone` response. If the header is present and valid, but it is no longer supported, it will return a `410 Gone` response.\n\nAn `X-API-VERSION` will be included in all successful responses, with the value being set to the API version used.\n\nYou can find our [API Versioning Policy and Guidelines](https://docs.developers.clio.com/api-docs/api-versioning-policy) in our documentation hub.\n\nThe [API Changelog](https://docs.developers.clio.com/api-docs/api-changelog) explains each version's changes in further detail.\n### [4.0.4](https://docs.developers.clio.com/api-docs/api-changelog#404)\n\n  * Update `quantity` field to return values in seconds rather than hours for Activities\n\n### [4.0.5](https://docs.developers.clio.com/api-docs/api-changelog#405)\n\n  * Remove `matter_balances` field from Bills\n* Standardize status/state enum values\n* Add a Document association to completed DocumentAutomations\n* Add rate visibility handling for Activity's price and total\n\n### [4.0.6](https://docs.developers.clio.com/api-docs/api-changelog#406)\n\n  * Remove `document_versions` collection field from Documents\n\n### [4.0.7](https://docs.developers.clio.com/api-docs/api-changelog#407)\n\n  * Change secure link format\n\n### [4.0.8](https://docs.developers.clio.com/api-docs/api-changelog#408)\n\n  * `Activity` hours are redacted in the response based on the activity hours visibility setting for the user\n  * Add `quantity_redacted` field to activities\n\n### [4.0.9](https://docs.developers.clio.com/api-docs/api-changelog#409)\n\n  * Contacts are filtered and redacted in the response based on the new 'Contacts Visibility' user permission setting.\n\n### [4.0.10](https://docs.developers.clio.com/api-docs/api-changelog#4010)\n\n  * Fixed validation of `type` query parameter when querying Notes\n\n### [4.0.12](https://docs.developers.clio.com/api-docs/api-changelog#4012)\n\n  * Restrict fields for CalendarEntry that should only be visible to event owners, editors, and viewers\n\n### [4.0.13](https://docs.developers.clio.com/api-docs/api-changelog#4013)\n\n  **This is the default version**\n\n  * Add association limits to Contacts\n* Returns 422 Unprocessable Entity when association limits are exceeded\n\n\n"
  version: v4
  x-logo:
    url: https://www.clio.com/wp-content/uploads/2015/05/Container-5-Logo.png
servers:
- url: https://app.clio.com/api/v4
  description: US region Production Server
- url: https://eu.app.clio.com/api/v4
  description: Europe region Production Server
- url: https://ca.app.clio.com/api/v4
  description: Canada region Production Server
- url: https://au.app.clio.com/api/v4
  description: Australia region Production Server
tags:
- name: Bills
  description: 'Bills are statements of what a user’s client owes for their services over a particular billing period, including legal fees, expenses, and taxes.


    Users customize, preview, edit, and approve bills before sending them to a client.


    [Support Link](https://help.clio.com/hc/en-us/articles/9285169278747-Generate-Bills)

    '
paths:
  /bills/{id}/preview.json:
    get:
      tags:
      - Bills
      summary: Returns the pre-rendered html for the Bill
      operationId: Bill#preview
      description: 'This endpoint returns a pre-rendered HTML object that you can use to view a preview of your bills.

        The HTML provided contains all of the CSS rules it requires to show the bill correctly,

        as well as the DOCTYPE setting it requires.

        It''s best to use an iframe, or similar object, to render the results of this endpoint.

        '
      parameters:
      - name: id
        in: path
        description: The unique identifier for the Bill.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Ok
        '400':
          description: Bad Request
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
  /bills.json:
    get:
      tags:
      - Bills
      summary: Return the data for all Bills
      operationId: Bill#index
      description: Outlines the parameters, optional and required, used when requesting the data for all Bills
      parameters:
      - name: X-API-VERSION
        in: header
        description: 'The [API minor version](#section/Minor-Versions). Default: latest version.'
        required: false
        schema:
          type: string
      - name: bill_number
        in: query
        description: Filter Bill records to those with this exact bill number
        required: false
        schema:
          type: string
      - name: client_id
        in: query
        description: The unique identifier for a single Contact. The keyword `null` is not valid for this field. The list will be filtered to include only the Bill records with the matching property.
        required: false
        schema:
          type: integer
          format: int64
      - name: created_since
        in: query
        description: Filter Bill records to those having the `created_at` field after a specific time. (Expects an ISO-8601 timestamp).
        required: false
        schema:
          type: string
          format: date-time
      - name: currency_id
        in: query
        description: Filter Bill records to those of a specific currency.
        required: false
        schema:
          type: integer
          format: int64
      - name: custom_field_values
        in: query
        description: 'Filter records to only those with the given custom field(s) set. The value is compared using the operator provided, or,

          if the value type only supports one operator, the supported operator is used. In the latter case, no check for operator is performed on the input string.

          The key for the custom field value filter is the custom_field.id. e.g. `custom_field_values[12345]`

          If an operator is used for a type that does not support it, an `400 Bad Request` is returned.


          *Supported operators:*

          * `checkbox`, `contact`, `matter`, `picklist` : `=`


          e.g. `?custom_field_values[1]=42`


          * `currency`, `date`, `time`, `numeric` : `=`, `<`, `>`, `<=`, `>=`


          e.g. `?custom_field_values[1]=>=105.4`


          * `email`, `text_area`, `text_line`, `url` : `=`


          e.g. `?custom_field_values[1]=url_encoded`


          *Multiple conditions for the same custom field:*


          If you want to use more than one operator to filter a custom field, you can do so by passing in an array of values.

          e.g. `?custom_field_values[1]=[<=50, >=45]`

          '
        required: false
        schema:
          type: string
          enum:
          - '='
          - <
          - '>'
          - <=
          - '>='
      - name: due_after
        in: query
        description: Filter Bill records to those that have a `due_date` after the one provided (Expects an ISO-8601 date).
        required: false
        schema:
          type: string
          format: date
      - name: due_at
        in: query
        description: Filter Bill records to those that have a specific `due_date` (Expects an ISO-8601 date).
        required: false
        schema:
          type: string
          format: date
      - name: due_before
        in: query
        description: Filter Bill records to those that have a `due_date` before the one provided (Expects an ISO-8601 date).
        required: false
        schema:
          type: string
          format: date
      - name: fields
        in: query
        description: The fields to be returned. See response samples for what fields are available. For more information see the [fields section](#section/Fields).
        required: false
        schema:
          type: string
      - name: ids[]
        in: query
        description: Filter Bill records to those having the specified unique identifiers.
        required: false
        schema:
          type: integer
          format: int64
      - name: issued_after
        in: query
        description: Filter Bill records to those that have an `issue_date` after the one provided (Expects an ISO-8601 date).
        required: false
        schema:
          type: string
          format: date
      - name: issued_before
        in: query
        description: Filter Bill records to those that have an `issue_date` before the one provided (Expects an ISO-8601 date).
        required: false
        schema:
          type: string
          format: date
      - name: last_sent_end_date
        in: query
        description: Filter Bill records for those whose bills have been sent before the specified date
        required: false
        schema:
          type: string
          format: date
      - name: last_sent_start_date
        in: query
        description: Filter Bill records for those whose bills have been sent after the specified date
        required: false
        schema:
          type: string
          format: date
      - name: limit
        in: query
        description: 'A limit on the number of Bill records to be returned. Limit can range between 1 and 200. Default: `200`.'
        required: false
        schema:
          type: integer
          format: int32
      - name: matter_id
        in: query
        description: The unique identifier for a single Matter. Use the keyword `null` to match those without a Bill. The list will be filtered to include only the Bill records with the matching property.
        required: false
        schema:
          type: integer
          format: int64
      - name: order
        in: query
        description: 'Orders the Bill records by the given field. Default: `id(asc)`.'
        required: false
        schema:
          type: string
          enum:
          - id(asc)
          - id(desc)
          - due_at(asc)
          - due_at(desc)
          - issued_at(asc)
          - issued_at(desc)
          - paid_at(asc)
          - paid_at(desc)
          - last_sent_at(asc)
          - last_sent_at(desc)
          - client_name(asc)
          - client_name(desc)
          - matter_display_number(asc)
          - matter_display_number(desc)
          - balance(asc)
          - balance(desc)
          - number(asc)
          - number(desc)
      - name: originating_attorney_id
        in: query
        description: The unique identifier for a single User. Use the keyword `null` to match those without a Bill. The list will be filtered to include only the Bill records with the matching property.
        required: false
        schema:
          type: integer
          format: int64
      - name: overdue_only
        in: query
        description: Filter Bill records to those that are overdue.
        required: false
        schema:
          type: boolean
      - name: page_token
        in: query
        description: A token specifying which page to return.
        required: false
        schema:
          type: string
      - name: query
        in: query
        description: Allows matching search on invoice number.
        required: false
        schema:
          type: integer
          format: int32
      - name: responsible_attorney_id
        in: query
        description: The unique identifier for a single User. Use the keyword `null` to match those without a Bill. The list will be filtered to include only the Bill records with the matching property.
        required: false
        schema:
          type: integer
          format: int64
      - name: state
        in: query
        description: Filter Bill records to those in a given state.
        required: false
        schema:
          type: string
          enum:
          - draft
          - awaiting_approval
          - awaiting_payment
          - paid
          - void
          - deleted
      - name: status
        in: query
        description: Filter Bill records to those with particular payment status.
        required: false
        schema:
          type: string
          enum:
          - all
          - overdue
      - name: type
        in: query
        description: Filter Bill records to those of a specific type.
        required: false
        schema:
          type: string
          enum:
          - revenue
          - trust
      - name: updated_since
        in: query
        description: Filter Bill records to those having the `updated_at` field after a specific time. (Expects an ISO-8601 timestamp).
        required: false
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: Ok
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Bill_List'
        '400':
          description: Bad Request
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
  /bills/{id}.json:
    get:
      tags:
      - Bills
      summary: Return the data for a single Bill
      operationId: Bill#show
      description: Outlines the parameters, optional and required, used when requesting the data for a single Bill
      parameters:
      - name: IF-MODIFIED-SINCE
        in: header
        description: The server will send the requested resource with a 200 status, but only if it has been modified after the given date. (Expects an RFC 2822 timestamp).
        required: false
        schema:
          type: string
          format: date
      - name: IF-NONE-MATCH
        in: header
        description: The server will send the requested resource with a 200 status, but only if the existing resource's [ETag](#section/ETags) doesn't match any of the values listed.
        required: false
        schema:
          type: string
      - name: X-API-VERSION
        in: header
        description: 'The [API minor version](#section/Minor-Versions). Default: latest version.'
        required: false
        schema:
          type: string
      - name: fields
        in: query
        description: The fields to be returned. See response samples for what fields are available. For more information see the [fields section](#section/Fields).
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: The unique identifier for the Bill.
        required: true
        schema:
          type: integer
          format: int64
      - name: navigation.next
        in: query
        description: The id of the next *Bill* available for viewing
        required: false
        schema:
          type: integer
          format: int32
      - name: navigation.previous
        in: query
        description: The id of the previous *Bill* available for viewing
        required: false
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: Ok
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Bill_Show'
        '400':
          description: Bad Request
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '304':
          description: Not Modified
    patch:
      tags:
      - Bills
      summary: Update a single Bill
      operationId: Bill#update
      description: Outlines the parameters and data fields used when updating a single Bill
      parameters:
      - name: IF-MATCH
        in: header
        description: The server will update the requested resource and send back a 200 status, but only if value in the header matches the existing resource's [ETag](#section/ETags).
        required: false
        schema:
          type: string
      - name: X-API-VERSION
        in: header
        description: 'The [API minor version](#section/Minor-Versions). Default: latest version.'
        required: false
        schema:
          type: string
      - name: fields
        in: query
        description: The fields to be returned. See response samples for what fields are available. For more information see the [fields section](#section/Fields).
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: The unique identifier for the Bill.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Ok
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Bill_Show'
        '400':
          description: Bad Request
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Unprocessable Entity
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
        '412':
          description: Precondition Failed
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request Body for Bills
        content:
          application/json:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  type: object
                  properties:
                    bill_theme:
                      type: object
                      properties:
                        id:
                          type: integer
                          format: int64
                          description: The unique identifier of the bill theme applied to the Bill.
                    currency_id:
                      type: integer
                      format: int64
                      description: ID of the currency applied to the Bill.
                    discount:
                      type: object
                      properties:
                        rate:
                          type: number
                          format: double
                          description: Discount amount for the Bill. This can either be a percentage or monetary value, this is determined by the `discount[type]`.
                        type:
                          type: string
                          enum:
                          - percentage
                          - money
                          description: The type of discount you are applying to your Bill with the `discount[rate]`.
                        note:
                          type: string
                          description: A note for your Bill's discount.
                    due_at:
                      type: string
                      format: date
                      description: Date the Bill is due. If `use_grace_period` is true, this field is ignored.
                    interest:
                      type: object
                      properties:
                        rate:
                          type: number
                          format: double
                          description: Interest amount for the Bill as percentage.
                        type:
                          type: string
                          enum:
                          - simple
                          - compound
                          description: The type of interest you are applying to your Bill with the `interest[rate]`.
                        period:
                          type: integer
                          format: int32
                          description: The interest period for how frequently your Bill will charge interest.
                    issued_at:
                      type: string
                      format: date
                      description: Date the Bill was issued.
                    memo:
                      type: string
                      description: Memo for the Bill.
                    number:
                      type: string
                      description: Bill's number.
                    purchase_order:
                      type: string
                      description: Purchase order information for the Bill.
                    secondary_tax_rate:
                      type: number
                      format: double
                      description: Secondary tax rate as percentage for the Bill.
                    state:
                      type: string
                      enum:
                      - draft
                      - awaiting_approval
                      - awaiting_payment
                      - paid
                      - void
                      - deleted
                      description: Bill's state.
                    subject:
                      type: string
                      description: Subject details for the Bill.
                    tax_rate:
                      type: number
                      format: double
                      description: Tax rate as percentage for the Bill
                    use_grace_period:
                      type: boolean
                      description: When true, sets the bill's due date based on the client's grace period. This setting overrides the `due_at` parameter.
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  type: object
                  properties:
                    bill_theme:
                      type: object
                      properties:
                        id:
                          type: integer
                          format: int64
                          description: The unique identifier of the bill theme applied to the Bill.
                    currency_id:
                      type: integer
                      format: int64
                      description: ID of the currency applied to the Bill.
                    discount:
                      type: object
                      properties:
                        rate:
                          type: number
                          format: double
                          description: Discount amount for the Bill. This can either be a percentage or monetary value, this is determined by the `discount[type]`.
                        type:
                          type: string
                          enum:
                          - percentage
                          - money
                          description: The type of discount you are applying to your Bill with the `discount[rate]`.
                        note:
                          type: string
                          description: A note for your Bill's discount.
                    due_at:
                      type: string
                      format: date
                      description: Date the Bill is due. If `use_grace_period` is true, this field is ignored.
                    interest:
                      type: object
                      properties:
                        rate:
                          type: number
                          format: double
                          description: Interest amount for the Bill as percentage.
                        type:
                          type: string
                          enum:
                          - simple
                          - compound
                          description: The type of interest you are applying to your Bill with the `interest[rate]`.
                        period:
                          type: integer
                          format: int32
                          description: The interest period for how frequently your Bill will charge interest.
                    issued_at:
                      type: string
                      format: date
                      description: Date the Bill was issued.
                    memo:
                      type: string
                      description: Memo for the Bill.
                    number:
                      type: string
                      description: Bill's number.
                    purchase_order:
                      type: string
                      description: Purchase order information for the Bill.
                    secondary_tax_rate:
                      type: number
                      format: double
                      description: Secondary tax rate as percentage for the Bill.
                    state:
                      type: string
                      enum:
                      - draft
                      - awaiting_approval
                      - awaiting_payment
                      - paid
                      - void
                      - deleted
                      description: Bill's state.
                    subject:
                      type: string
                      description: Subject details for the Bill.
                    tax_rate:
                      type: number
                      format: double
                      description: Tax rate as percentage for the Bill
                    use_grace_period:
                      type: boolean
                      description: When true, sets the bill's due date based on the client's grace period. This setting overrides the `due_at` parameter.
          multipart/form-data:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  type: object
                  properties:
                    bill_theme:
                      type: object
                      properties:
                        id:
                          type: integer
                          format: int64
                          description: The unique identifier of the bill theme applied to the Bill.
                    currency_id:
                      type: integer
                      format: int64
                      description: ID of the currency applied to the Bill.
                    discount:
                      type: object
                      properties:
                        rate:
                          type: number
                          format: double
                          description: Discount amount for the Bill. This can either be a percentage or monetary value, this is determined by the `discount[type]`.
                        type:
                          type: string
                          enum:
                          - percentage
                     

# --- truncated at 32 KB (74 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/clio/refs/heads/main/openapi/clio-bills-api-openapi.yml