Skip to contentPostalForm

Content

IRS Form 1099-NEC (Copy B) API reference

This workflow collects payer, recipient, and compensation details needed to prepare the recipient copy of IRS Form 1099-NEC.

Published Mar 25, 2026 • Updated May 31, 2026

Workflow slug: 1099-nec. Workflow version: 1. Live schema · Markdown reference.

How it works

Step 1

Fill out form

Complete the guided fields online.

Step 2

Preview PDF

Review the generated PDF before mailing.

Step 3

Mail

We print and mail it via USPS.

How does an agent prepare this form?

PostalForm uses the same workflow definition for this API reference and its guided browser form. Fetch the live schema, collect the active required fields and attachments, and validate the completed request. Review the generated PDF, resolved recipient, mailing service and price with the owner before authorizing payment.

Submission and recipient rules

Setting Current workflow value
Form slug 1099-nec
Recipient mode user
Certified Mail optional
Base U.S. mail service USPS First-Class Mail (mail_class="standard" in the API); not USPS Marketing Mail
Attachment total limit 12 MB
Validate without payment POST /api/machine/orders/validate or POST /api/machine/mpp/orders/validate
Machine order POST /api/machine/orders (x402) or POST /api/machine/mpp/orders (MPP)

Send a top-level form instead of pdf or letter; those three document sources are mutually exclusive. Workflow forms are letters, not postcards. The machine envelope requires buyer, sender and recipient fields. For predefined or computed recipients, the server binds the final recipient to the workflow rules. Inspect the resolved recipient returned by validation; do not substitute a convenient office address.

The template below is structural, not ready to submit: replace every placeholder, complete the active fields, omit unused optional attachments, and use the field options and visibility rules in the schema. Empty strings and unchecked checkboxes are not user answers. Never infer a signature, legal eligibility, factual declaration or consent from a default value.

JSON request template

{
  "request_id": "<new UUID; preserve on retry>",
  "buyer_name": "<buyer name>",
  "buyer_email": "<buyer email>",
  "sender_name": "<sender name>",
  "sender_address_type": "Manual",
  "sender_address_manual": {
    "line1": "<street address>",
    "city": "<city>",
    "state": "<state or region>",
    "zip": "<postal code>",
    "countryCode": "US"
  },
  "recipient_name": "<confirmed recipient name>",
  "recipient_address_type": "Manual",
  "recipient_address_manual": {
    "line1": "<street address>",
    "city": "<city>",
    "state": "<state or region>",
    "zip": "<postal code>",
    "countryCode": "US"
  },
  "mail_class": "standard",
  "double_sided": true,
  "color": false,
  "certified": false,
  "form": {
    "slug": "1099-nec",
    "fields": {
      "calendar_year": "",
      "corrected": false,
      "payer_name": "",
      "payer_street_address": "",
      "payer_city_state_zip_phone": "",
      "payer_tin": "",
      "recipient_tin": "",
      "recipient_name": "",
      "recipient_street_address": "",
      "recipient_city_state_zip": "",
      "account_number": "",
      "box_1_nonemployee_compensation": "",
      "box_2_direct_sales": false,
      "box_3_excess_golden_parachute_payments": "",
      "box_4_federal_income_tax_withheld": "",
      "report_state_info": false,
      "state_1_tax_withheld": "",
      "state_2_tax_withheld": "",
      "state_1_payer_state_number": "",
      "state_2_payer_state_number": "",
      "state_1_income": "",
      "state_2_income": ""
    }
  }
}

Field reference

Field ID Label Type Required when active Choices
calendar_year Tax year you're reporting text Yes See schema
corrected This is a corrected copy checkbox No See schema
payer_name Payer name text Yes See schema
payer_street_address Payer street address text Yes See schema
payer_city_state_zip_phone Payer city, state, ZIP, and phone text Yes See schema
payer_tin Your business tax ID (payer TIN) text Yes See schema
recipient_tin Contractor's SSN or tax ID (recipient TIN) text Yes See schema
recipient_name Recipient name text Yes See schema
recipient_street_address Recipient street address text Yes See schema
recipient_city_state_zip Recipient city, state, ZIP text Yes See schema
account_number Account number text No See schema
box_1_nonemployee_compensation Total you paid the contractor (Box 1) text Yes See schema
box_2_direct_sales Direct sales of $5,000 or more for resale (Box 2) checkbox No See schema
box_3_excess_golden_parachute_payments Excess golden parachute payments (Box 3) text No See schema
box_4_federal_income_tax_withheld Federal income tax withheld (Box 4) text No See schema
report_state_info I need to report state tax withholding or state income checkbox No See schema
state_1_tax_withheld State 1 tax withheld text No See schema
state_2_tax_withheld State 2 tax withheld text No See schema
state_1_payer_state_number State 1 payer state number text No See schema
state_2_payer_state_number State 2 payer state number text No See schema
state_1_income State 1 income text No See schema
state_2_income State 2 income text No See schema

Compound fields use nested objects keyed by subfield ID. Evaluate group and field visibility before deciding which fields are active. Conditional requirements, validation rules, recipient rules, attachment formats and compliance policies are preserved in the complete schema below.

Complete workflow schema

{
  "schema_version": 1,
  "workflow_version": 1,
  "slug": "1099-nec",
  "name": "IRS Form 1099-NEC (Copy B)",
  "description": "Fill out IRS Form 1099-NEC Copy B online, review the recipient PDF, and mail it to a contractor or other payee.",
  "agent_summary": "This workflow collects payer, recipient, and compensation details needed to prepare the recipient copy of IRS Form 1099-NEC.",
  "form_summary": "Use this workflow to prepare IRS Form 1099-NEC Copy B for the recipient. PostalForm generates a reviewable PDF and mails the recipient copy to the payee after approval. This workflow does not file Copy A with the IRS.",
  "data_collected": [
    "Calendar year and corrected-status indicator",
    "Payer name, address, phone number, and payer TIN",
    "Recipient name, address, and recipient TIN",
    "Nonemployee compensation, withholding, and optional state reporting amounts"
  ],
  "topics": [
    "tax",
    "contractor payments",
    "information returns",
    "1099"
  ],
  "publish_state": "published",
  "llms": true,
  "indexable": true,
  "certified_mail": "optional",
  "recipient": {
    "mode": "user"
  },
  "checkout_flow": "home",
  "published_at": "2026-03-25",
  "updated_at": "2026-05-31",
  "groups": [
    {
      "id": "form-status",
      "label": "Form status",
      "depends_on": []
    },
    {
      "id": "payer-details",
      "label": "Payer details",
      "depends_on": []
    },
    {
      "id": "recipient-details",
      "label": "Recipient details",
      "depends_on": []
    },
    {
      "id": "compensation",
      "label": "Compensation and withholding",
      "depends_on": []
    },
    {
      "id": "state-reporting",
      "label": "State reporting",
      "description": "Complete this only if state tax was withheld or you need to report state income.",
      "visibility": {
        "fieldId": "report_state_info",
        "operator": "truthy"
      },
      "depends_on": [
        "report_state_info"
      ]
    }
  ],
  "fields": [
    {
      "id": "calendar_year",
      "label": "Tax year you're reporting",
      "type": "text",
      "required": true,
      "meta_class": "tax_year",
      "ui_width": null,
      "group_id": "form-status",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "validation": {
        "maxLength": 4
      },
      "compound": null
    },
    {
      "id": "corrected",
      "label": "This is a corrected copy",
      "type": "checkbox",
      "required": false,
      "meta_class": "plain_checkbox",
      "ui_width": null,
      "group_id": "form-status",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "payer_name",
      "label": "Payer name",
      "type": "text",
      "required": true,
      "meta_class": "name",
      "ui_width": null,
      "group_id": "payer-details",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "payer_street_address",
      "label": "Payer street address",
      "type": "text",
      "required": true,
      "meta_class": "address",
      "ui_width": null,
      "group_id": "payer-details",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "payer_city_state_zip_phone",
      "label": "Payer city, state, ZIP, and phone",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "payer-details",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "payer_tin",
      "label": "Your business tax ID (payer TIN)",
      "type": "text",
      "required": true,
      "meta_class": "ein",
      "ui_width": null,
      "group_id": "payer-details",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "validation": {
        "maxLength": 10
      },
      "compound": null
    },
    {
      "id": "recipient_tin",
      "label": "Contractor's SSN or tax ID (recipient TIN)",
      "type": "text",
      "required": true,
      "meta_class": "tin",
      "ui_width": null,
      "group_id": "recipient-details",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "validation": {
        "maxLength": 11
      },
      "compound": null
    },
    {
      "id": "recipient_name",
      "label": "Recipient name",
      "type": "text",
      "required": true,
      "meta_class": "name",
      "ui_width": null,
      "group_id": "recipient-details",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "recipient_street_address",
      "label": "Recipient street address",
      "type": "text",
      "required": true,
      "meta_class": "address",
      "ui_width": null,
      "group_id": "recipient-details",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "recipient_city_state_zip",
      "label": "Recipient city, state, ZIP",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "recipient-details",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "account_number",
      "label": "Account number",
      "type": "text",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "recipient-details",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "validation": {
        "maxLength": 24
      },
      "compound": null
    },
    {
      "id": "box_1_nonemployee_compensation",
      "label": "Total you paid the contractor (Box 1)",
      "type": "text",
      "required": true,
      "meta_class": "currency",
      "ui_width": null,
      "group_id": "compensation",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "box_2_direct_sales",
      "label": "Direct sales of $5,000 or more for resale (Box 2)",
      "type": "checkbox",
      "required": false,
      "meta_class": "plain_checkbox",
      "ui_width": null,
      "group_id": "compensation",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "box_3_excess_golden_parachute_payments",
      "label": "Excess golden parachute payments (Box 3)",
      "type": "text",
      "required": false,
      "meta_class": "currency",
      "ui_width": null,
      "group_id": "compensation",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "box_4_federal_income_tax_withheld",
      "label": "Federal income tax withheld (Box 4)",
      "type": "text",
      "required": false,
      "meta_class": "currency",
      "ui_width": null,
      "group_id": "compensation",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "report_state_info",
      "label": "I need to report state tax withholding or state income",
      "type": "checkbox",
      "required": false,
      "meta_class": "plain_checkbox",
      "ui_width": null,
      "group_id": "state-reporting",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "state_1_tax_withheld",
      "label": "State 1 tax withheld",
      "type": "text",
      "required": false,
      "meta_class": "currency",
      "ui_width": null,
      "group_id": "state-reporting",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "state_2_tax_withheld",
      "label": "State 2 tax withheld",
      "type": "text",
      "required": false,
      "meta_class": "currency",
      "ui_width": null,
      "group_id": "state-reporting",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "state_1_tax_withheld",
        "operator": "truthy"
      },
      "depends_on": [
        "state_1_tax_withheld"
      ],
      "compound": null
    },
    {
      "id": "state_1_payer_state_number",
      "label": "State 1 payer state number",
      "type": "text",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "state-reporting",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "state_2_payer_state_number",
      "label": "State 2 payer state number",
      "type": "text",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "state-reporting",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "state_1_tax_withheld",
        "operator": "truthy"
      },
      "depends_on": [
        "state_1_tax_withheld"
      ],
      "compound": null
    },
    {
      "id": "state_1_income",
      "label": "State 1 income",
      "type": "text",
      "required": false,
      "meta_class": "currency",
      "ui_width": null,
      "group_id": "state-reporting",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "state_2_income",
      "label": "State 2 income",
      "type": "text",
      "required": false,
      "meta_class": "currency",
      "ui_width": null,
      "group_id": "state-reporting",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "state_1_tax_withheld",
        "operator": "truthy"
      },
      "depends_on": [
        "state_1_tax_withheld"
      ],
      "compound": null
    }
  ],
  "attachments": [],
  "attachments_max_total_size_mb": 12,
  "machine_submission": {
    "payload_property": "form",
    "create_paths": {
      "x402": "/api/machine/orders",
      "mpp": "/api/machine/mpp/orders"
    }
  }
}

Preview, payment and retries

Validation does not mail the document. For a human checkout, use MCP postalform.create_form_order_draft and present the returned preview, total and checkout URL. Machine API clients must handle the returned MPP or x402 challenge only within owner-approved spending authority. Preserve request_id and the exact payload for retries; changing the content requires a new request ID. After an uncertain payment, retrieve order status before creating another order. Provider handoff is not USPS delivery.

Ready to get started?

Upload your PDF and we will handle printing and mailing.

Resources