Finance template
US Form 1099-NEC
Nonemployee Compensation form (IRS, for tax years 2020+). Recipient-distribution layout with payer/recipient blocks, Box 1–7 amounts, and state withholding.
Pro, Business & Scale plansCountry: USLanguage: enUS-IRS
slug: us-1099-necRendered with sample data
01
Quick start
Reference the template by its slug and pass your data. The same call works from any language; pick whichever fits your stack. Replace $KAMY_API_KEY with a key from the dashboard.
curl
curl https://kamy.dev/api/v1/render \
-H "Authorization: Bearer $KAMY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateSlug": "us-1099-nec",
"data": {
"taxYear": 2025,
"copyLabel": "Copy B — For Recipient",
"payer": {
"name": "Globex Holdings, Inc.",
"tin": "91-7654321",
"street": "500 Pine Avenue, Suite 200",
"city": "Seattle",
"state": "WA",
"zip": "98101",
"phone": "+1 (206) 555-0142"
},
"recipient": {
"name": "Jordan T. Reyes (Reyes Studio LLC)",
"tin": "88-1234567",
"street": "1234 Market Street, Suite 410",
"city": "San Francisco",
"state": "CA",
"zip": "94103"
},
"accountNumber": "VENDOR-2025-0418",
"box1NonemployeeComp": 47500,
"box2DirectSales": false,
"box4FederalWithholding": 0,
"state": {
"code": "CA",
"payerStateNo": "WA-9876543",
"income": 47500,
// …
}
}'node.js
import { Kamy } from "@kamydev/sdk";
const kamy = new Kamy({ apiKey: process.env.KAMY_API_KEY! });
const { url } = await kamy.render({
templateSlug: "us-1099-nec",
data: {
"taxYear": 2025,
"copyLabel": "Copy B — For Recipient",
"payer": {
"name": "Globex Holdings, Inc.",
"tin": "91-7654321",
"street": "500 Pine Avenue, Suite 200",
"city": "Seattle",
"state": "WA",
"zip": "98101",
"phone": "+1 (206) 555-0142"
},
"recipient": {
"name": "Jordan T. Reyes (Reyes Studio LLC)",
"tin": "88-1234567",
"street": "1234 Market Street, Suite 410",
"city": "San Francisco",
"state": "CA",
"zip": "94103"
},
"accountNumber": "VENDOR-2025-0418",
"box1NonemployeeComp": 47500,
"box2DirectSales": false,
"box4FederalWithholding": 0,
"state": {
"code": "CA",
"payerStateNo": "WA-9876543",
"income": 47500,
// …
},
});
console.log(url); // signed URL, valid for 1 hourpython
import os, requests
resp = requests.post(
"https://kamy.dev/api/v1/render",
headers={"Authorization": f"Bearer {os.environ['KAMY_API_KEY']}"},
json={
"templateSlug": "us-1099-nec",
"data": {
"taxYear": 2025,
"copyLabel": "Copy B — For Recipient",
"payer": {
"name": "Globex Holdings, Inc.",
"tin": "91-7654321",
"street": "500 Pine Avenue, Suite 200",
"city": "Seattle",
"state": "WA",
"zip": "98101",
"phone": "+1 (206) 555-0142"
},
"recipient": {
"name": "Jordan T. Reyes (Reyes Studio LLC)",
"tin": "88-1234567",
"street": "1234 Market Street, Suite 410",
"city": "San Francisco",
"state": "CA",
"zip": "94103"
},
"accountNumber": "VENDOR-2025-0418",
"box1NonemployeeComp": 47500,
"box2DirectSales": false,
"box4FederalWithholding": 0,
"state": {
"code": "CA",
"payerStateNo": "WA-9876543",
"income": 47500,
// …
},
},
)
resp.raise_for_status()
print(resp.json()["url"])02
Sample payload
The full sample data the live preview above renders from. Use it as a starting point for your own integration — every field is optional except those marked required in the schema below.
json
{
"taxYear": 2025,
"copyLabel": "Copy B — For Recipient",
"payer": {
"name": "Globex Holdings, Inc.",
"tin": "91-7654321",
"street": "500 Pine Avenue, Suite 200",
"city": "Seattle",
"state": "WA",
"zip": "98101",
"phone": "+1 (206) 555-0142"
},
"recipient": {
"name": "Jordan T. Reyes (Reyes Studio LLC)",
"tin": "88-1234567",
"street": "1234 Market Street, Suite 410",
"city": "San Francisco",
"state": "CA",
"zip": "94103"
},
"accountNumber": "VENDOR-2025-0418",
"box1NonemployeeComp": 47500,
"box2DirectSales": false,
"box4FederalWithholding": 0,
"state": {
"code": "CA",
"payerStateNo": "WA-9876543",
"income": 47500,
"taxWithheld": 0
}
}03
JSON Schema
The render endpoint validates your payload against this JSON Schema before queuing the render. Validation errors come back with HTTP 400 and a VALIDATION_FAILED code listing every offending path.
json
{
"type": "object",
"required": [
"taxYear",
"payer",
"recipient",
"box1NonemployeeComp"
],
"properties": {
"taxYear": {
"type": "number"
},
"copyLabel": {
"type": "string"
},
"payer": {
"type": "object",
"required": [
"name",
"tin",
"street",
"city",
"state",
"zip"
],
"properties": {
"name": {
"type": "string"
},
"tin": {
"type": "string"
},
"street": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zip": {
"type": "string"
},
"phone": {
"type": "string"
}
}
},
"recipient": {
"type": "object",
"required": [
"name",
"tin",
"street",
"city",
"state",
"zip"
],
"properties": {
"name": {
"type": "string"
},
"tin": {
"type": "string"
},
"street": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zip": {
"type": "string"
}
}
},
"accountNumber": {
"type": "string"
},
"box1NonemployeeComp": {
"type": "number"
},
"box2DirectSales": {
"type": "boolean"
},
"box4FederalWithholding": {
"type": "number"
},
"state": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"payerStateNo": {
"type": "string"
},
"income": {
"type": "number"
},
"taxWithheld": {
"type": "number"
}
}
}
}
}