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
Fill out form
Complete the guided fields online.
Preview PDF
Review the generated PDF before mailing.
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.