---
title: "RSU vest → ordinary income, withholding gap, sell-to-cover"
method: POST
path: "/v1/equity-comp/rsu"
tags: ["Equity compensation"]
---

# RSU vest → ordinary income, withholding gap, sell-to-cover

`POST /v1/equity-comp/rsu`

## Request

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

Breaks down a restricted-stock-unit vest: ordinary income (fmv × shares), the flat supplemental withholding (22% to $1M, 37% above), the taxpayer's true marginal tax on the income (computed via the tax engine, so it captures bracket creep, NIIT, and the Additional Medicare Tax), the resulting under/over withholding gap, the sell-to-cover share count, and the per-share cost basis. Deterministic; not tax advice.

## Request body

- EquityCompRSURequest
  - `tax_year` integer, required: Supported tax year (2025 or 2026).
  - `filing_status` 'single' | 'mfj' | 'mfs' | 'hoh', required
  - `other_ordinary_income` number: Wages/other income, to find the marginal rate on the vest.
  - `shares` number, required
  - `fmv_at_vest` number, required

## Response `200`

RSU vest breakdown

- EquityCompRSUResponse
  - `result_id` string
  - `engine_version` string
  - `inputs` EquityCompRSURequest
    - `tax_year` integer, required: Supported tax year (2025 or 2026).
    - `filing_status` 'single' | 'mfj' | 'mfs' | 'hoh', required
    - `other_ordinary_income` number: Wages/other income, to find the marginal rate on the vest.
    - `shares` number, required
    - `fmv_at_vest` number, required
  - `result` object
    - `ordinary_income` number: fmv × shares at vest.
    - `supplemental_withholding` number: Flat 22% (37% above $1M of supplemental wages).
    - `marginal_rate` number: True marginal rate on the vest income.
    - `estimated_tax_on_vest` number: Incremental federal tax from the vest income.
    - `withholding_gap` number: estimated_tax − supplemental_withholding (positive ⇒ likely under-withheld).
    - `shares_sold_to_cover` number: Shares sold to cover the supplemental withholding.
    - `net_shares` number: Shares retained after sell-to-cover.
    - `per_share_basis` number: Cost basis per retained share (= fmv at vest).
  - `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)
