OptionsAhoy QSBS API

Section 1202 qualification

Operations 1

POST /api/v1/qsbs Section 1202 QSBS qualification check #

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/optionsahoy-com-qsbs-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

optionsahoy-com-qsbs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: OptionsAhoy Calculator QSBS API
  summary: Deterministic equity-compensation calculator endpoints. JSON in, JSON out.
  description: Multi-year equity-compensation optimization engine.
  version: 1.10.1
  contact:
    name: AlphaLatitude Inc.
    email: andrew@alphalatitude.com
    url: https://optionsahoy.com/for-agents
  license:
    name: Proprietary. Free for non-commercial use during beta.
    url: https://optionsahoy.com/terms
servers:
- url: https://optionsahoy.com
  description: Production
tags:
- name: QSBS
  description: Section 1202 qualification
paths:
  /api/v1/qsbs:
    post:
      summary: Section 1202 QSBS qualification check
      description: Evaluates Section 1202 Qualified Small Business Stock (QSBS) against the six statutory tests, returning the verdict, exclusion percentage, federal tax saved, and state conformity under OBBBA 2026 tiered exclusion rules.
      operationId: checkQsbs
      tags:
      - QSBS
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QsbsInput'
            example:
              acquisitionDate: '2020-01-15'
              saleDate: '2026-06-01'
              entityType: us-c-corp
              acquisitionMethod: original-issuance
              assetCategory: under-50m
              industry: tech-software
              activeBusiness: 'yes'
              adjustedBasis: 100000
              expectedGain: 5000000
              stateCode: CA
              ordinaryIncome: 250000
              filingStatus: single
      responses:
        '200':
          $ref: '#/components/responses/QsbsSuccess'
        '400':
          $ref: '#/components/responses/BadRequest'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
components:
  schemas:
    FilingStatus:
      type: string
      enum:
      - single
      - married_joint
      - head_household
      description: United States federal filing status.
    IsoDate:
      type: string
      format: date
      description: ISO 8601 date string (YYYY-MM-DD).
    QsbsResult:
      type: object
      description: Section 1202 QSBS qualification result. All dollar amounts are USD.
      properties:
        verdict:
          type: string
          enum:
          - qualifies
          - partial
          - too-soon
          - caveats
          - disqualified
          description: Overall verdict. "partial" = qualifies but at a sub-100% exclusion tier (e.g. an OBBBA 3- or 4-year hold gives 50% or 75%). "caveats" = qualifies, but one or more tests returned "unsure" (pass conditional on facts the caller marked unknown). "too-soon" = the holding period has not reached any exclusion tier yet.
        exclusionPercent:
          type: number
          enum:
          - 0
          - 0.5
          - 0.75
          - 1
          description: Fraction of the capped gain excludable from federal tax, per the era and holding-period tier.
        perIssuerCap:
          type: number
          description: 'Statutory per-issuer cap in dollars: $10M pre-OBBBA, $15M for stock acquired after July 4, 2025.'
        tenXBasisCap:
          type: number
          description: 10 x adjustedBasis cap in dollars.
        applicableCap:
          type: number
          description: 'max(perIssuerCap, tenXBasisCap): the exclusion cap actually applied, in dollars.'
        excludableGain:
          type: number
          description: Portion of expectedGain excludable from federal tax in dollars.
        taxableGain:
          type: number
          description: Portion of expectedGain still federally taxable in dollars (overage above the cap plus any non-excluded fraction).
        federalTaxSaved:
          type: number
          description: Federal LTCG tax (including NIIT) avoided on the excluded gain, in dollars.
        stateConforms:
          type: string
          enum:
          - full
          - partial
          - none
          description: Whether the user state conforms to the federal 1202 exclusion.
        stateNote:
          type: string
          description: Per-state conformity explanation. May be omitted.
        cappedOverageNote:
          type: string
          description: 'Present only when expectedGain exceeds applicableCap and an exclusion is in play: explains that the overage is fully taxable regardless of holding period and that spreading shares across separate taxpayers (e.g. non-grantor trusts) can multiply the per-issuer exclusion. Omitted otherwise.'
        holdingYears:
          type: number
          description: Calendar-aware years between acquisitionDate and saleDate.
        yearsUntilFullExclusion:
          type: number
          description: Additional years to hold before reaching the 100% exclusion tier; 0 when already reached.
        era:
          type: string
          enum:
          - pre-2009
          - pre-2010
          - pre-obbba
          - obbba
          description: Acquisition-era classification that sets the exclusion schedule (50% pre-2009 era, 75% pre-2010 era, 100% at 5y pre-OBBBA, tiered 50/75/100% at 3/4/5y under OBBBA).
        tests:
          type: array
          description: The six statutory tests with per-test status, identifying any gate that failed.
          items:
            type: object
            properties:
              id:
                type: string
                description: Stable test identifier.
              label:
                type: string
                description: Human-readable test name.
              status:
                type: string
                enum:
                - pass
                - fail
                - unsure
                - wait
                description: '"wait" means the test will pass with more holding time.'
              detail:
                type: string
                description: One-line explanation of the test outcome.
            required:
            - id
            - label
            - status
            - detail
      required:
      - verdict
      - exclusionPercent
      - perIssuerCap
      - tenXBasisCap
      - applicableCap
      - excludableGain
      - taxableGain
      - federalTaxSaved
      - stateConforms
      - holdingYears
      - yearsUntilFullExclusion
      - era
      - tests
    StateCode:
      type: string
      pattern: ^[A-Z]{2}$
      description: Two-letter United States state code (e.g. CA, NY, TX).
    QsbsInput:
      type: object
      required:
      - acquisitionDate
      - saleDate
      - entityType
      - acquisitionMethod
      - assetCategory
      - industry
      - activeBusiness
      - adjustedBasis
      - expectedGain
      - stateCode
      - ordinaryIncome
      - filingStatus
      properties:
        acquisitionDate:
          $ref: '#/components/schemas/IsoDate'
        saleDate:
          $ref: '#/components/schemas/IsoDate'
        entityType:
          type: string
          enum:
          - us-c-corp
          - other
        acquisitionMethod:
          type: string
          enum:
          - original-issuance
          - gift-or-inheritance
          - secondary
          - unsure
        assetCategory:
          type: string
          enum:
          - under-50m
          - 50m-to-75m
          - over-75m
          - unsure
        industry:
          type: string
          enum:
          - tech-software
          - manufacturing
          - biotech-research
          - retail-wholesale
          - health-services
          - law
          - engineering
          - architecture
          - accounting-actuarial
          - consulting
          - finance
          - farming
          - extraction
          - hospitality
          - performing-arts
          - other-services
          - unsure
        activeBusiness:
          type: string
          enum:
          - 'yes'
          - 'no'
          - unsure
        adjustedBasis:
          type: number
          minimum: 0
        expectedGain:
          type: number
        stateCode:
          $ref: '#/components/schemas/StateCode'
        ordinaryIncome:
          type: number
          minimum: 0
        filingStatus:
          $ref: '#/components/schemas/FilingStatus'
  responses:
    MethodNotAllowed:
      description: Endpoint accepts only POST (and OPTIONS for CORS preflight).
      content:
        application/json:
          schema:
            type: object
            required:
            - error
            properties:
              error:
                type: string
    BadRequest:
      description: Invalid input or calculation failure. The `error` string names the specific field or condition.
      content:
        application/json:
          schema:
            type: object
            required:
            - error
            properties:
              error:
                type: string
    QsbsSuccess:
      description: Successful qsbs_check result.
      content:
        application/json:
          schema:
            type: object
            required:
            - ok
            - result
            properties:
              ok:
                type: boolean
                const: true
              result:
                $ref: '#/components/schemas/QsbsResult'
              next_steps:
                type: object
                description: 'Constant per endpoint: the free interactive version of this calculator, related endpoints worth running next, and the OptionsAhoy beta for integrated multi-position optimization.'
                properties:
                  web_tool:
                    type: string
                  also_run:
                    type: array
                    items:
                      type: string
                  beta:
                    type: string
          example:
            ok: true
            result:
              verdict: qualifies
              exclusionPercent: 1
              perIssuerCap: 10000000
              tenXBasisCap: 1000000
              applicableCap: 10000000
              excludableGain: 5000000
              taxableGain: 0
              federalTaxSaved: 1190000
              stateConforms: none
              stateNote: California does not conform to §1202 — your full gain is taxable at the state level.
              holdingYears: 6.375342465753425
              yearsUntilFullExclusion: 0
              era: pre-obbba
              tests:
              - id: entity
                label: US C-corporation
                status: pass
                detail: C-corps qualify. S-corps, LLCs, partnerships, and foreign entities do not.
              - id: original-issuance
                label: Original-issuance acquisition
                status: pass
                detail: Stock acquired directly from the company qualifies.
              - id: asset-cap
                label: Gross assets ≤ $50M at issuance
                status: pass
                detail: Issuer was under the $50M aggregate gross-assets ceiling.
              - id: industry
                label: Qualified trade or business
                status: pass
                detail: Software, manufacturing, biotech R&D, retail, and similar trades qualify.
              - id: active-business
                label: 80% of assets in active business
                status: pass
                detail: At least 80% of corporate assets used in the qualified active trade.
              - id: holding
                label: Held at least 5 years
                status: pass
                detail: 6.4 years held — 100% exclusion tier.
externalDocs:
  description: Integration surface, citation guidance, and roadmap
  url: https://optionsahoy.com/for-agents