Tax Prep Document Intake: Parse W-2s, 1099s, and 1040s Automatically

W-21099 (NEC / MISC / INT / DIV)1040Schedule CK-1

The problem

Tax preparers get buried every intake season re-keying client-submitted W-2s, 1099s, and prior-year returns by hand — and the bottleneck is worst exactly when volume peaks, January through April.

How Dokyumi solves it

Build one schema per form type — a W-2 schema, a 1099 schema, a 1040 schema — each with its own endpoint. Give clients a white-label upload portal (available on every plan, with more portals on Growth and Enterprise) so they submit documents directly instead of emailing PDFs back and forth.

Dokyumi returns structured JSON you can drop straight into your tax software's intake step, with a confidence score on every box or field.

Only need ONE of these form types — say, just W-2s — and don't need custom schemas or a client portal? Our sibling single-form tools are purpose-built and cheaper; see which tool fits.

Example schema and result

A real schema shape for tax prep documents, and the JSON you get back from one extraction.

Schema — GET /api/v1/schemas

{
  "slug": "w2-parser",
  "name": "W-2 Parser",
  "description": "Extracts wage and withholding data from employee W-2 forms",
  "ocr_mode": "standard",
  "fields": [
    {
      "key": "employer_name",
      "type": "string",
      "required": true
    },
    {
      "key": "employer_ein",
      "type": "string",
      "required": true
    },
    {
      "key": "employee_name",
      "type": "string",
      "required": true
    },
    {
      "key": "wages_box1",
      "type": "currency",
      "required": true
    },
    {
      "key": "federal_tax_withheld_box2",
      "type": "currency",
      "required": false
    },
    {
      "key": "ss_wages_box3",
      "type": "currency",
      "required": false
    },
    {
      "key": "medicare_wages_box5",
      "type": "currency",
      "required": false
    },
    {
      "key": "state",
      "type": "string",
      "required": false
    }
  ]
}

Result — POST /api/v1/extract

{
  "id": "ext_tx6w1z",
  "status": "completed",
  "schema": "w2-parser",
  "data": {
    "employer_name": "Brightline Manufacturing Inc.",
    "employer_ein": "84-1234567",
    "employee_name": "R. Chen",
    "wages_box1": 68450,
    "federal_tax_withheld_box2": 8760,
    "ss_wages_box3": 68450,
    "medicare_wages_box5": 68450,
    "state": "CA"
  },
  "confidence": {
    "wages_box1": 0.99,
    "employer_ein": 0.97,
    "federal_tax_withheld_box2": 0.98
  },
  "meta": {
    "processing_time_ms": 1050,
    "page_count": 1,
    "ocr_cached": false
  }
}

How it works

1

Build a schema per form type

W-2, 1099, and 1040 each get their own schema.

2

Send clients a branded portal link

Or accept uploads directly via the API.

3

Get structured JSON back

Every box or field, validated, with a confidence score.

4

Import into your tax software

Push via webhook or pull from the API during intake.

Tax Prep FAQ

Does this replace my tax prep software?+
No — Dokyumi handles document intake and data extraction only. It feeds structured data into whatever tax software you already use; it doesn't calculate returns.
Can clients upload documents themselves?+
Yes, via a white-label portal branded to your firm — no client needs a Dokyumi account.
What if a client only needs W-2 or 1099 parsing, not a custom schema?+
Our single-document sibling tools (w2extractor.com, 1099parser.com, 1040parser.com) are purpose-built for exactly one form type at a lower price point — see /which-tool.
How does Dokyumi handle SSNs and other sensitive fields on tax forms?+
You control your schema, so you decide which fields to capture. See /security for how we handle encryption, retention, and access.
Can one schema handle every 1099 variant (NEC, MISC, INT, DIV)?+
Each variant has different boxes, so for best accuracy we recommend a schema per 1099 variant you process regularly, or a broader schema if you only need a few common fields shared across variants.

Stop re-keying w-2 by hand.

100 free extractions every month — no credit card, no AWS account, no setup hell.