Finance template

US Form W-9

Request for Taxpayer Identification Number and Certification (IRS Form W-9, Rev. March 2024). Used by US payers to collect TIN/EIN before issuing 1099 forms.

Pro, Business & Scale plansCountry: USLanguage: enUS-IRS
slug: us-w9Rendered 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-w9",
    "data": {
      "revision": "Rev. March 2024",
      "name": "Jordan T. Reyes",
      "businessName": "Reyes Studio LLC",
      "classifications": [
        {
          "label": "Individual / sole proprietor",
          "selected": false
        },
        {
          "label": "C Corporation",
          "selected": false
        },
        {
          "label": "S Corporation",
          "selected": false
        },
        {
          "label": "Partnership",
          "selected": false
        },
        {
          "label": "Trust / estate",
          "selected": false
        },
        {
          "label": "LLC (treated as: S corp)",
          "selected": true
      // …
    }
  }'
node.js
import { Kamy } from "@kamydev/sdk";

const kamy = new Kamy({ apiKey: process.env.KAMY_API_KEY! });

const { url } = await kamy.render({
  templateSlug: "us-w9",
  data: {
    "revision": "Rev. March 2024",
    "name": "Jordan T. Reyes",
    "businessName": "Reyes Studio LLC",
    "classifications": [
      {
        "label": "Individual / sole proprietor",
        "selected": false
      },
      {
        "label": "C Corporation",
        "selected": false
      },
      {
        "label": "S Corporation",
        "selected": false
      },
      {
        "label": "Partnership",
        "selected": false
      },
      {
        "label": "Trust / estate",
        "selected": false
      },
      {
        "label": "LLC (treated as: S corp)",
        "selected": true
    // …
  },
});

console.log(url); // signed URL, valid for 1 hour
python
import os, requests

resp = requests.post(
    "https://kamy.dev/api/v1/render",
    headers={"Authorization": f"Bearer {os.environ['KAMY_API_KEY']}"},
    json={
        "templateSlug": "us-w9",
        "data": {
          "revision": "Rev. March 2024",
          "name": "Jordan T. Reyes",
          "businessName": "Reyes Studio LLC",
          "classifications": [
            {
              "label": "Individual / sole proprietor",
              "selected": false
            },
            {
              "label": "C Corporation",
              "selected": false
            },
            {
              "label": "S Corporation",
              "selected": false
            },
            {
              "label": "Partnership",
              "selected": false
            },
            {
              "label": "Trust / estate",
              "selected": false
            },
            {
              "label": "LLC (treated as: S corp)",
              "selected": true
          // …
        },
    },
)
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
{
  "revision": "Rev. March 2024",
  "name": "Jordan T. Reyes",
  "businessName": "Reyes Studio LLC",
  "classifications": [
    {
      "label": "Individual / sole proprietor",
      "selected": false
    },
    {
      "label": "C Corporation",
      "selected": false
    },
    {
      "label": "S Corporation",
      "selected": false
    },
    {
      "label": "Partnership",
      "selected": false
    },
    {
      "label": "Trust / estate",
      "selected": false
    },
    {
      "label": "LLC (treated as: S corp)",
      "selected": true
    },
    {
      "label": "Other (see instructions)",
      "selected": false
    }
  ],
  "exemptions": {
    "payeeCode": "",
    "fatcaCode": ""
  },
  "address": {
    "street": "1234 Market Street, Suite 410",
    "city": "San Francisco",
    "state": "CA",
    "zip": "94103"
  },
  "requesterName": "Globex Holdings, Inc.",
  "requesterAddress": "500 Pine Avenue, Seattle, WA 98101",
  "ssn": "",
  "ein": "88-1234567",
  "signature": {
    "name": "Jordan T. Reyes",
    "date": "2026-04-15"
  }
}
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": [
    "name",
    "address",
    "signature"
  ],
  "properties": {
    "revision": {
      "type": "string"
    },
    "name": {
      "type": "string",
      "minLength": 1
    },
    "businessName": {
      "type": "string"
    },
    "classifications": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "label"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "selected": {
            "type": "boolean"
          }
        }
      }
    },
    "exemptions": {
      "type": "object",
      "properties": {
        "payeeCode": {
          "type": "string"
        },
        "fatcaCode": {
          "type": "string"
        }
      }
    },
    "address": {
      "type": "object",
      "required": [
        "street",
        "city",
        "state",
        "zip"
      ],
      "properties": {
        "street": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "zip": {
          "type": "string"
        }
      }
    },
    "requesterName": {
      "type": "string"
    },
    "requesterAddress": {
      "type": "string"
    },
    "ssn": {
      "type": "string"
    },
    "ein": {
      "type": "string"
    },
    "signature": {
      "type": "object",
      "required": [
        "name",
        "date"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "date": {
          "type": "string"
        }
      }
    }
  }
}
US Form W-9 template — Kamy PDF API — Kamy