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

# Calculate state taxes and fees

> Stateless new-business, non-admitted calculation using the same state rules as Cover Whale quoting.



## OpenAPI

````yaml post /submission/tax-calculations
openapi: 3.0.0
info:
  title: Cover Whale API V1
  contact:
    name: Cover Whale API Team
  version: '1.0'
servers:
  - url: https://api.coverwhale.dev/v1
security:
  - AccessToken: []
tags:
  - name: Authentication
    description: Authenticating & Interacting with the API
paths:
  /submission/tax-calculations:
    post:
      tags:
        - Submission Data
      summary: Calculate state taxes and fees
      description: >-
        Stateless new-business, non-admitted calculation using the same state
        rules as Cover Whale quoting.
      operationId: calculateTaxesAndFees
      parameters:
        - name: AccessToken
          in: header
          description: >-
            JWT returned by Cover Whale authentication as AccessToken (the
            Cognito ID token)
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - state
                - effective_date
                - quote_created_at
                - coverage_type
                - premium
                - policy_fee
                - underwriting_fee
              properties:
                state:
                  type: string
                  example: CA
                effective_date:
                  type: string
                  format: date
                  example: '2026-07-30'
                quote_created_at:
                  description: >-
                    RFC 3339 quote-creation cohort timestamp used by Cover Whale
                    SLAS eligibility; accepts an explicit offset or Z and
                    optional fractional seconds
                  type: string
                  format: date-time
                  example: '2026-07-30T12:00:00Z'
                coverage_type:
                  type: string
                  enum:
                    - AL
                    - APD
                    - MTC
                    - TGL
                    - NTL
                  example: AL
                premium:
                  type: string
                  pattern: ^\d+(\.\d{1,2})?$
                  example: '1000.00'
                policy_fee:
                  type: string
                  pattern: ^\d+(\.\d{1,2})?$
                  example: '100.00'
                underwriting_fee:
                  type: string
                  pattern: ^\d+(\.\d{1,2})?$
                  example: '50.00'
              type: object
      responses:
        '200':
          description: Applicable tax and fee calculations
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties:
                      state:
                        type: string
                        example: CA
                      effective_date:
                        type: string
                        format: date
                      quote_created_at:
                        type: string
                        format: date-time
                      coverage_type:
                        type: string
                        example: AL
                      inputs:
                        type: object
                      calculations:
                        type: array
                        items:
                          properties:
                            code:
                              type: string
                              example: surplus_lines_tax
                            label:
                              type: string
                              example: Surplus lines tax
                            calculation_type:
                              type: string
                              enum:
                                - percentage
                                - flat
                            rate:
                              type: string
                              example: '0.03'
                              nullable: true
                            flat_amount:
                              type: string
                              nullable: true
                            taxable_base:
                              type: string
                              example: '1150.00'
                              nullable: true
                            amount:
                              type: string
                              example: '34.50'
                          type: object
                      total:
                        type: string
                        example: '36.57'
                    type: object
                  meta:
                    properties:
                      currency:
                        type: string
                        example: USD
                      assumptions:
                        type: array
                        items:
                          type: string
                    type: object
                type: object
        '401':
          description: Missing or invalid Cognito AccessToken
        '422':
          description: Invalid calculator input
        '429':
          description: Quote-scope rate limit exceeded
components:
  securitySchemes:
    AccessToken:
      type: apiKey
      description: >-
        JWT returned as AccessToken by the /authentication endpoint (the Cognito
        ID token carrying the email claim). It expires after 3600 seconds.
      name: AccessToken
      in: header

````