---
title: "W-2"
method: POST
path: "/v1/users/{id}/w-2"
---

# W-2

`POST /v1/users/{id}/w-2`

## Request

- Base URL: `https://sandbox.columnapi.com`
- URL: `https://sandbox.columnapi.com/v1/users/{id}/w-2`
- Auth: HTTP basic

Create a W-2 for the user

## Path parameters

- `id` string, required

## Request body

- object
  - `tax_year` integer, required: The tax year for the document. Remember that processing for tax year 2021 happens in 2022!
  - `employer_identification_number` string: Box B - Employer identification number (EIN) without dashes (`-`)
  - `employer_name` string: Employer's name in Box C
  - `employer_address` object: Box C - Employer's address
    - `street_1` string, required: The first line of the user's address.
    - `street_2` string: The second line of the address.
    - `city` string, required
    - `state` string, required: The state as a two-letter abbreviation, e.g. "CA". Note that null should be passed if this is not known.
    - `zip_code` string, required: The ZIP code.
  - `control_number` string: Box D - Control Number
  - `wages_tips_other_comp_cents` integer: Box 1 - Wages, tips, and other compensation in cents
  - `federal_income_tax_withheld_cents` integer: Box 2 - Federal income tax withheld in cents
  - `social_security_wages_cents` integer: Box 3 - Social security wages
  - `social_security_tax_withheld_cents` integer: Box 4 - Social security tax withheld in cents
  - `medicare_wages_and_tips_cents` integer: Box 5 - Medicare wages and tips
  - `medicare_tax_withheld_cents` integer: Box 6 - Medicare tax withheld in cents
  - `social_security_tips_cents` integer: Box 7 - Social security tips in cents
  - `allocated_tips_cents` integer: Box 8 - Allocated tips in cents
  - `dependent_care_benefits_cents` integer: Box 10 - Dependent care benefits in cents
  - `non_qualified_plans_cents` integer: Box 11 - Nonqualified plans in cents
  - `codes` object[]: Array of W-2 Code objects
    - `code` '"a"' | '"b"' | '"c"' | '"d"' | '"e"' | '"f"' | '"g"' | '"h"' | '"j"' | '"k"' | '"l"' | '"m"' | '"n"' | '"p"' | '"q"' | '"r"' | '"s"' | '"t"' | '"v"' | '"w"' | '"y"' | '"z"' | '"aa"' | '"bb"' | '"dd"' | '"ee"' | '"ff"' | '"gg"' | '"hh"' | '', required: The Box 12 code (e.g. `D`)
    - `amount_cents` integer: The amount for the code in cents
  - `statutory_employee` boolean: Box 13 - Statutory Employee
  - `retirement_plan` boolean: Box 13 - Retirement Plan
  - `third_party_sick_pay` boolean: Box 13 - Third Party Sick Pay
  - `others` object[]: Box 14 - Array of "Other" objects
    - `description` string: Box 14 - Description
    - `amount_cents` integer, required: Box 14 amount in cents
  - `states` unknown[]: Array of state objects
    - unknown

## Response `200`

200

- object
  - `id` string
  - `created_timestamp` integer

## Other responses

- `400`: 400
- `401`: 401
- `404`: 404

## Changes

- **2026-11-03** `a1b57b175f2b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/columntax/apis/column-tax-api/changes/v1/users/:id/w-2/post.md)

---

[API](https://skmtc.dev/columntax/apis/column-tax-api.md) - [All operations](https://skmtc.dev/columntax/apis/column-tax-api/llms.txt) - [OpenAPI document](https://skmtc.dev/columntax/apis/column-tax-api/revisions/a1b57b175f2b?raw)
