Smokeball Fees API

The Fees API from Smokeball — 2 operation(s) for fees.

Operations 6

GET /matters/{matterId}/fees Get fees #
POST /matters/{matterId}/fees Create a fee #
GET /matters/{matterId}/fees/{id} Get a fee #
PUT /matters/{matterId}/fees/{id} Update a fee #
PATCH /matters/{matterId}/fees/{id} Patch a fee #
DELETE /matters/{matterId}/fees/{id} Delete a fee #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/smokeball-fees-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

smokeball-fees-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Smokeball Fees API
  version: '1.0'
  description: REST API for integrating with Smokeball legal practice management software. Supports matters, contacts, documents, time entries, billing, trust accounting, staff, webhooks, and law firm workflows across US, AU, and UK regions. Uses OAuth 2.0 (client credentials) authentication.
  contact:
    name: Smokeball Developer Support
    url: https://docs.smokeball.com/docs/api-docs/1e13a13124aee-introduction
  x-api-id: smokeball
  x-audience: external-public
servers:
- url: https://api.smokeball.com
- url: https://api.smokeball.com.au
- url: https://api.smokeball.co.uk
- url: https://stagingapi.smokeball.com
- url: https://stagingapi.smokeball.com.au
- url: https://stagingapi.smokeball.co.uk
security:
- api-key: []
  token: []
tags:
- name: Fees
paths:
  /matters/{matterId}/fees:
    get:
      tags:
      - Fees
      summary: Get fees
      description: Returns a list of fees for the specified matter.
      operationId: GetFees
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      - name: Offset
        in: query
        schema:
          maximum: 2147483647
          minimum: 0
          type: integer
          format: int32
      - name: Limit
        in: query
        schema:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
      - name: UpdatedSince
        in: query
        description: Returns fees updated since a specified time (.net ticks representation of the UTC datetime).
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: When request is successful. Returns a paged collection of 'Fee' objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeePagedCollection'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    post:
      tags:
      - Fees
      summary: Create a fee
      description: Creates a fee for the specified matter.
      operationId: CreateFee
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/FeeDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/FeeDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/FeeDto'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the fee to be created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /matters/{matterId}/fees/{id}:
    get:
      tags:
      - Fees
      summary: Get a fee
      description: Retrieves a specified fee.
      operationId: GetFeeById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: When request is successful. Returns a 'Fee' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Fee'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When fee with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When fee with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - Fees
      summary: Update a fee
      description: Updates a fee for the specified matter.
      operationId: UpdateFee
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/FeeDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/FeeDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/FeeDto'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the fee to be updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When fee with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When fee with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    patch:
      tags:
      - Fees
      summary: Patch a fee
      description: Patches a fee for the specified matter.
      operationId: PatchFee
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/FeeDto'
          application/json:
            schema:
              $ref: '#/components/schemas/FeeDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/FeeDto'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the fee to be patched.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When fee with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When fee with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - Fees
      summary: Delete a fee
      description: Deletes a fee.
      operationId: DeleteFee
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the fee to be deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When fee with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When fee with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    Link:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
      additionalProperties: false
    FeeType:
      enum:
      - 0
      - 1
      type: integer
      description: The type of the fee (Fixed = 0, Time = 1).
      format: int32
    Fee:
      type: object
      properties:
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        id:
          type:
          - string
          - 'null'
          description: Unique identifier of the fee.
          example: b471682e-fa17-4e46-b7fe-9b2b8fdcb3c2
        versionId:
          type:
          - string
          - 'null'
          description: Unique version identifier of the fee.
          example: 750eb5c5-ac0b-7d11-4997-e0ce9d8896c8
        matter:
          allOf:
          - $ref: '#/components/schemas/Link'
          description: The matter associated to the fee.
        staff:
          allOf:
          - $ref: '#/components/schemas/Link'
          description: The staff member associated to the fee.
        matterId:
          type:
          - string
          - 'null'
          description: Deprecated, use Matter.
        staffId:
          type:
          - string
          - 'null'
          description: Deprecated, use Staff.
        createdByUserId:
          type:
          - string
          - 'null'
          description: Unique identifier of the user that created the fee.
          example: 750eb5c5-ac0b-7d11-4997-e0ce9d8896c8
        createdDate:
          type: string
          description: Date the fee was created.
          format: date-time
          example: '2026-04-13T11:00:00Z'
        lastUpdatedByUserId:
          type:
          - string
          - 'null'
          description: Unique identifier of the user that updated the fee.
          example: 750eb5c5-ac0b-7d11-4997-e0ce9d8896c8
        invoiceId:
          type:
          - string
          - 'null'
          description: Unique identifier of the associated invoice.
          example: 750eb5c5-ac0b-7d11-4997-e0ce9d8896c8
        activityCode:
          type:
          - string
          - 'null'
          description: The activity code associated to the fee.
          example: PRT
        utbmsTaskCode:
          type:
          - string
          - 'null'
          description: The UTBMS task code associated to the fee, where UTBMS is enabled. Only applicable in US.
          example: L110
        subject:
          type:
          - string
          - 'null'
          description: The subject - this should be a short description of the fee.
          example: Review contract
        description:
          type:
          - string
          - 'null'
          description: Optional detailed description of the fee.
          example: Print documents
        feeDate:
          type: string
          description: The date of the fee.
          format: date-time
          example: '2022-07-01'
        feeType:
          allOf:
          - $ref: '#/components/schemas/FeeType'
          description: The type of the fee (Fixed = 0, Time = 1).
          example: 0
        finalized:
          type: boolean
          description: True if the fee has been finalized.
          example: false
        isInvoicedExternally:
          type: boolean
          description: True if the fee is invoiced externally.
          example: false
        isWrittenOff:
          type: boolean
          description: 'True if the fee is written off. True only allowed if IsBillable is true.


            Written off fee will show on an invoice with their amount, but will not be counted in the invoice total.'
          example: false
        isBillable:
          type:
          - boolean
          - 'null'
          description: True if the fee is billable. Non-billable fee will, by default, not be shown on invoices (and, if shown, the amount will be 0).
          example: false
        tax:
          type: number
          description: GST amount of the fee in dollars. Only applicable in AU.
          format: double
          example: 35
        taxInclusive:
          type: boolean
          description: 'If true, the amount is GST inclusive, otherwise GST exclusive. Only applicable in AU.


            GST inclusive means: Amount exc. GST = Amount - GST, Amount inc. GST = Amount.


            GST exclusive means: Amount exc. GST = Amount, Amount inc. GST = Amount + GST.'
          example: false
        taxExempt:
          type: boolean
          description: True if the fee is tax exempt. In that case, Tax will always be 0.
          example: false
        taxOutOfScope:
          type: boolean
          description: True if the fee is out of scope for tax. In that case, Tax will always be 0.
          example: false
        duration:
          type: integer
          description: The duration billed - in minutes.
          format: int64
          example: 60
        durationWorked:
          type:
          - integer
          - 'null'
          description: The duration worked - in minutes.
          format: int64
          example: 50
        rate:
          type: number
          description: The rate of the fee in dollars.
          format: double
          example: 350
        amount:
          type: number
          description: 'Total amount of the fee in dollars. Calculated using Rate and Duration depending on the fee type.


            This amount includes tax depending on the TaxInclusive property. See AmountExcTax and AmountIncTax.'
          format: double
          example: 350
        amountExcTax:
          type: number
          description: 'Amount excluding tax in dollars. Calculated from Amount and Tax depending on the TaxInclusive property.


            If tax is not applicable (outside AU), this will be the same as Amount.'
          format: double
          example: 315
        amountIncTax:
          type: number
          description: 'Amount including tax in dollars. Calculated from Amount and Tax depending on the TaxInclusive property.


            If tax is not applicable (outside AU), this will be the same as Amount.'
          format: double
          example: 350
        billableAmountExcTax:
          type: number
          description: 'Billable amount excluding tax in dollars. If fee is billable, value will be the same as AmountExcTax. If it''s non-billable,

            value will be 0.


            If the fee is partially billable (i.e. has source items, some of which are billable and some not),

            this value will contain the amount calculated from billable items only.'
          format: double
          example: 315
        billableTax:
          type: number
          description: 'Billable tax in dollars. If fee is billable, value will be the same as Tax. If it''s non-billable,

            value will be 0.


            If the fee is partially billable (i.e. has source items, some of which are billable

            and some not), this value will contain the tax calculated from billable items only.

            In all other cases, the value will be the same as Tax.'
          format: double
          example: 35
        isDeleted:
          type: boolean
          description: True if the fee is deleted.
          example: false
        sourceItems:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/FeeSourceItem'
          description: The source items on the fee.
        createdFromActivityId:
          type:
          - string
          - 'null'
          description: Unique identifier of the Activity used to create the fee, if applicable.
          example: 504b9f77-20c7-4dee-8227-d3007c8f6cea
      additionalProperties: false
    FeePagedCollection:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        value:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Fee'
        offset:
          type:
          - integer
          - 'null'
          format: int32
        limit:
          type:
          - integer
          - 'null'
          format: int32
        size:
          type: integer
          format: int64
        first:
          allOf:
          - $ref: '#/components/schemas/Link'
        previous:
          allOf:
          - $ref: '#/components/schemas/Link'
        next:
          allOf:
          - $ref: '#/components/schemas/Link'
        last:
          allOf:
          - $ref: '#/components/schemas/Link'
      additionalProperties: false
    FeeSourceItemDto:
      type: object
      properties:
        description:
          type:
          - string
          - 'null'
          description: The description.
          example: Print document
        duration:
          type: integer
          description: The duration in minutes.
          format: int64
          example: 5
        isBillable:
          type: boolean
          description: True if the fee source item is billable.
          example: false
      additionalProperties: false
    FeeSourceItem:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        description:
          type:
          - string
          - 'null'
          description: The description.
        duration:
          type: integer
          description: The duration in minutes.
          format: int64
        isBillable:
          type: boolean
          description: True if the fee source item is billable.
      additionalProperties: false
    FeeDto:
      required:
      - feeDate
      - subject
      type: object
      properties:
        updatedByUserId:
          type:
          - string
          - 'null'
          description: 'Unique identifier of the user updating the fee.


            This field is reserved for server-to-server operations.'
          example: 750eb5c5-ac0b-7d11-4997-e0ce9d8896c8
        staffId:
          type:
          - string
          - 'null'
          description: 'Unique identifier of the associated staff member.


            When StaffId is not provided, the API will attempt to match your User Id to a Staff Id automatically.'
          example: 750eb5c5-ac0b-7d11-4997-e0ce9d8896c8
        invoiceId:
          type:
          - string
          - 'null'
          description: Unique identifier of the associated invoice.
          example: 750eb5c5-ac0b-7d11-4997-e0ce9d8896c8
        activityCode:
          type:
          - string
          - 'null'
          description: The activity code associated to the fee.
          example: PRT
        feeType:
          allOf:
          - $ref: '#/components/schemas/FeeType'
          description: The type of the fee (Fixed = 0, Time = 1).
          example: 0
        feeDate:
          type: string
          description: The date of the fee.
          format: date-time
          example: '2022-07-01'
        subject:
          minLength: 1
          type: string
          description: The subject - this should be a short description of the fee.
          example: Review contract
        description:
          type:
          - string
          - 'null'
          description: Optional detailed description of the fee.
          example: Print documents
        duration:
          type: integer
          description: The duration billed - in minutes. This duration is used if there are no sub activities.
          format: int64
          example: 60
        durationWorked:
          type:
          - integer
          - 'null'
          description: The duration worked - in minutes. This duration is used if there are no sub activities.
          format: int64
          example: 50
        rate:
          type: number
          description: The rate of the fee in dollars.
          format: double
          example: 350
        tax:
          type:
          - number
          - 'null'
          description: 'Tax amount of the fee in dollars. Only applicable in AU and UK regions.


            When TaxOutOfScope or TaxExempt is true, this value must be 0.'
          format: double
          example: 35
        taxInclusive:
          type: boolean
          description: 'If true, the amount is tax inclusive, otherwise tax exclusive. Only applicable in AU and UK regions.


            Tax inclusive means: Amount exc. tax = Amount - Tax, Amount inc. tax = Amount.


            Tax exclusive means: Amount exc. tax = Amount, Amount inc. tax = Amount + Tax.


            (Amount = Rate for fixed fees, or Rate * Duration for time fees, Tax = value of the Tax field)'
          example: false
        taxExempt:
          type: boolean
          description: 'True if the fee is exempt from tax.


            This field is mutually exclusive with TaxOutOfScope.

            When true, Tax must be 0.'
          example: false
        taxOutOfScope:
          type: boolean
          description: 'True if the fee is out of scope for tax purposes. Only supported in UK regions.


            This field is mutually exclusive with TaxExempt.

            When true, Tax must be 0.'
          example: false
        finalized:
          type: boolean
          description: True if the fee has been finalized.
          example: false
        isWrittenOff:
          type: boolean
          description: 'True if the fee is written off. True only allowed if IsBillable is true.


            Written off fee will show on an invoice with their amount, but will not be counted in the invoice total.'
          example: false
        isBillable:
          type: boolean
          description: True if the fee is billable. Non-billable fee will, by default, not be shown on invoices (and, if shown, the amount will be 0).
          example: false
        isInvoicedExternally:
          type: boolean
          description: True if the fee is invoiced externally.
          example: false
        sourceItems:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/FeeSourceItemDto'
          description: The source items on the fee.
        createdFromActivityId:
          type:
          - string
          - 'null'
          description: "Associates an existing activity id to a fee.\nOnly valid for Fee creation. \nValue is supplied by Smokeball for some partners."
          example: 504b9f77-20c7-4dee-8227-d3007c8f6cea
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type:
          - string
          - 'null'
        title:
          type:
          - string
          - 'null'
        status:
          type:
          - integer
          - 'null'
          format: int32
        detail:
          type:
          - string
          - 'null'
        instance:
          type:
          - string
          - 'null'
      additionalProperties: {}
  securitySchemes:
    api-key:
      type: apiKey
      name: x-api-key
      in: header
    token:
      type: apiKey
      name: Authorization
      in: header
      x-amazon-apigateway-authtype: cognito_user_pools