---
title: "§83(b) election — recognize at grant vs at vest"
method: POST
path: "/v1/equity-comp/section-83b"
tags: ["Equity compensation"]
---

# §83(b) election — recognize at grant vs at vest

`POST /v1/equity-comp/section-83b`

## Request

- Base URL: `https://api.numeratica.com`
- URL: `https://api.numeratica.com/v1/equity-comp/section-83b`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Compares electing under §83(b) (recognize the spread as ordinary income now, at grant / early exercise) against the default (recognize it at vest), for restricted stock or early-exercised options. Returns the ordinary income, the tax on it (current-year brackets, via the tax engine), and the per-share basis under each, plus the appreciation the election shifts from ordinary income into future capital-gain treatment. The time-value of paying now vs at vest and the eventual capital-gains rate are out of scope. Not tax advice.

## Request body

- EquityCompSection83bRequest
  - `tax_year` integer, required: Supported tax year (2025 or 2026).
  - `filing_status` 'single' | 'mfj' | 'mfs' | 'hoh', required
  - `other_ordinary_income` number
  - `shares` number, required
  - `price_paid` number: Strike or purchase price per share (often 0 for an RSA).
  - `fmv_at_grant` number, required
  - `fmv_at_vest` number, required

## Response `200`

§83(b) comparison

- EquityCompSection83bResponse
  - `result_id` string
  - `engine_version` string
  - `inputs` EquityCompSection83bRequest
    - `tax_year` integer, required: Supported tax year (2025 or 2026).
    - `filing_status` 'single' | 'mfj' | 'mfs' | 'hoh', required
    - `other_ordinary_income` number
    - `shares` number, required
    - `price_paid` number: Strike or purchase price per share (often 0 for an RSA).
    - `fmv_at_grant` number, required
    - `fmv_at_vest` number, required
  - `result` object
    - `with_election` object: Recognize the spread at grant (§83(b) elected).
      - `ordinary_income` number
      - `estimated_tax` number
      - `per_share_basis` number: = fmv at grant.
    - `without_election` object: Recognize the spread at vest (default).
      - `ordinary_income` number
      - `estimated_tax` number
      - `per_share_basis` number: = fmv at vest.
    - `ordinary_income_shifted_to_capital` number: (fmv at vest − fmv at grant) × shares — moved from ordinary income to capital-gain treatment by electing.
  - `disclaimer` string

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key.
- `405`: Method not allowed
- `429`: The key's per-minute request budget is exceeded. Retry after the delay in the Retry-After header.
- `503`: A dependency (e.g. the key store) is temporarily unavailable, or the request exceeded its compute deadline. Retryable.

---

[API](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api.md) · [All operations](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api/llms.txt) · [OpenAPI document](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api/revisions/075bcfbd1ebf?raw)
