> ## Documentation Index
> Fetch the complete documentation index at: https://docs.doola.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quote the annual report fee for a company

> Returns what the company's state charges for its annual report. Most states price from data doola already holds, so the amount comes back on the first call. Wyoming prices from asset figures only the customer knows: call this with no answers to be told which fields to collect, then call again with them. Nothing is stored and nothing is charged. Read filingRequired before amount: a state that files no annual report and one that files it free of charge both quote 0. Returns 404 when the company does not exist or is not owned by the calling partner.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/partner/companies/{companyId}/compliance/annual-report/fee
openapi: 3.1.0
info:
  title: doola Partner API
  description: >-
    REST API for doola partners to create and manage customers and companies,
    retrieve formation documents, and look up reference data.


    Authenticate every request with a partner API key in the `Authorization`
    header. Generate keys and manage webhooks and event subscriptions in the
    doola Partner Portal.
  contact:
    name: doola
    url: https://www.doola.com
  version: v1
servers:
  - url: https://api.test.doola.com
    description: Sandbox — use test keys (dk_test_…)
  - url: https://api.doola.com
    description: Production — use live keys (dk_live_…)
security:
  - PartnerApiKey: []
tags:
  - name: Playground (sandbox only)
    description: >-
      Sandbox-only helpers to drive a test company through the Formation and
      EinCreation milestones end to end.
  - name: Required Actions
    description: >-
      Actions doola needs you to take on a company, such as supplying new name
      options after a state rejection.
  - name: Customers
    description: Create and look up customers under your partner tenant.
  - name: Documents
    description: List and download a company's formation documents.
  - name: Compliance
    description: Track a company's compliance obligations and their due dates.
  - name: Signatures
    description: Request embedded signing sessions for pending company documents.
  - name: Companies
    description: Create companies for your customers, then track formation status.
  - name: Reference data
    description: >-
      Static lookups for building company-creation requests: NAICS codes,
      states, countries, and state filing fees.
paths:
  /v1/partner/companies/{companyId}/compliance/annual-report/fee:
    post:
      tags:
        - Compliance
      summary: Quote the annual report fee for a company
      description: >-
        Returns what the company's state charges for its annual report. Most
        states price from data doola already holds, so the amount comes back on
        the first call. Wyoming prices from asset figures only the customer
        knows: call this with no answers to be told which fields to collect,
        then call again with them. Nothing is stored and nothing is charged.
        Read filingRequired before amount: a state that files no annual report
        and one that files it free of charge both quote 0. Returns 404 when the
        company does not exist or is not owned by the calling partner.
      operationId: quoteFee
      parameters:
        - name: companyId
          in: path
          description: doola company ID (KSUID).
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PartnerAnnualReportFeeRequest'
      responses:
        '200':
          description: >-
            Either the fee, or the fields still to collect. needsInput says
            which; filingRequired says whether there is a report to file at all.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PartnerAnnualReportFeeResponse'
        '400':
          description: >-
            E_VALIDATION_FAILED: fiscalYear is outside the accepted range, an
            answer is missing its fieldId, or a fieldId is answered twice.
            Malformed bodies return E_MALFORMED_JSON.
        '404':
          description: >-
            E_COMPANY_NOT_FOUND: the company does not exist, or is not owned by
            the calling partner.
        '422':
          description: >-
            E_STATE_NOT_SUPPORTED: doola holds no annual-report data for the
            company's state and entity type. Should not occur for a company
            created through this API; a state that files no annual report
            answers 200 with filingRequired false.
components:
  schemas:
    PartnerAnnualReportFeeRequest:
      type: object
      description: Figures to price the annual report from. Every member is optional.
      properties:
        fiscalYear:
          type:
            - integer
            - 'null'
          format: int32
          description: >-
            Fiscal year the quote is for. Echoed back unchanged; the state fee
            does not vary by year today.
          example: 2026
          maximum: 2100
          minimum: 2000
        answers:
          type:
            - array
            - 'null'
          description: >-
            Answers to the fields a prior call named in inputFieldIds, each
            field at most once. A field the state does not price from is
            ignored. Omit to be told which fields are needed; send an empty list
            to declare them all zero.
          items:
            $ref: '#/components/schemas/PartnerFeeAnswerDto'
    PartnerAnnualReportFeeResponse:
      type: object
      description: What the company's state charges for its annual report.
      properties:
        doolaCompanyId:
          type: string
          description: doola company ID (KSUID).
          example: 2Ns8vJqZ1lQwErTyUiOpAsDfGhJ
        state:
          type: string
          description: US state the report is filed in.
          example: WY
        entityType:
          type: string
          description: Entity type the quote applies to.
          enum:
            - LLC
            - CCorp
          example: LLC
        fiscalYear:
          type: integer
          format: int32
          description: Fiscal year the quote was requested for.
          example: 2026
        filingRequired:
          type: boolean
          description: >-
            Whether the state requires an annual report at all. False comes with
            an amount of 0 and pricingType NO_REPORT: nothing to file and
            nothing to pay. Do not read a 0 amount on its own - a FREE state
            also charges nothing, but the report still has to be filed.
          example: true
        pricingType:
          type: string
          description: >-
            How the state arrives at the fee. FIXED is a set amount, DYNAMIC is
            computed, FREE is filed at no charge, NO_REPORT means no report is
            filed.
          enum:
            - FIXED
            - FREE
            - DYNAMIC
            - NO_REPORT
          example: FIXED
        needsInput:
          type: boolean
          description: >-
            True when the state prices from figures the customer must declare
            and none were supplied. Collect the fields in inputFieldIds and call
            again.
          example: false
        inputFieldIds:
          type:
            - array
            - 'null'
          description: >-
            Fields to collect before the fee can be quoted, null unless
            needsInput.
          example:
            - Q16
            - Q17
          items:
            type: string
        amount:
          type:
            - number
            - 'null'
          description: >-
            The state fee, null when needsInput. Zero when filingRequired is
            false, and zero for a FREE state that is filed at no charge.
          example: 202.35
        currency:
          type: string
          description: >-
            Currency of the amount. Always USD; state fees are never billed in
            anything else.
          enum:
            - USD
          example: USD
        formula:
          type:
            - string
            - 'null'
          description: How the amount was arrived at, for states that compute it.
          example: 'Assets: $1,000,000.00 x 0.0002'
        message:
          type:
            - string
            - 'null'
          description: Plain-language note about the fee.
          example: Fixed state fee
    PartnerFeeAnswerDto:
      type: object
      description: One answer to a field the requirements asked for.
      properties:
        fieldId:
          type: string
          description: Field id, as named in a prior fee call's inputFieldIds.
          example: Q17
          minLength: 1
        value:
          type:
            - string
            - 'null'
          description: >-
            What the customer declared. Blank or unparseable counts as zero
            rather than failing the quote.
          example: '1000000'
      required:
        - fieldId
  securitySchemes:
    PartnerApiKey:
      type: apiKey
      description: >-
        Partner API key. Send the raw key as the `Authorization` header value —
        e.g. `dk_test_…` in sandbox or `dk_live_…` in production. Generate and
        rotate keys in the doola Partner Portal.
      name: Authorization
      in: header

````