> ## Documentation Index
> Fetch the complete documentation index at: https://docs.symmetry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# The form model

> What a form is in Symmetry Payroll Forms: form IDs and their naming conventions, form types, form variants, and how to browse everything SPF supports.

SPF automates the tax paperwork employers collect during onboarding: the federal W-4, Alabama's A-4, Ontario's TD1ON, and hundreds of others. In everyday use, "a form" means that piece of paper. In SPF, a form is the paper's digital equivalent: the questions that need answering, the logic for which questions apply, and the metadata that ties it all back to the official document.

That's the form model this page covers. It's separate from determination, the step that decides which forms an employee needs in the first place, covered in [Form determination](/spf/core-concepts/form-determination). Once a form is determined, its own model (described below) governs how it gets filled out and returned.

## How a form identifies itself

Wherever SPF returns a form (in form determination, in guided flows, in the catalog, in the completed-form response), it carries the same identifying fields.

| Field          | What it tells you                                                                                             |
| -------------- | ------------------------------------------------------------------------------------------------------------- |
| `formId`       | The stable identifier you use in every API call, such as `W4101` or `AL101`                                   |
| `formName`     | The jurisdiction's short name for the document, such as `W-4` or `A-4`                                        |
| `formTitle`    | The document's official full title, such as `Employee's Withholding Certificate`                              |
| `formType`     | What the form is *for*: resident withholding, an exemption claim, a local tax, and so on                      |
| `formLocality` | The jurisdiction the form belongs to, such as `FEDERAL`, `AL`, or `ON`                                        |
| `formVersion`  | Which revision of the form this is; see [Form versions and effective dates](/spf/core-concepts/form-versions) |

Show employees `formName` and `formTitle`. Use `formId` everywhere in your code; it's the value that stays stable across revisions.

## Form IDs follow a pattern

Form IDs aren't arbitrary. Once you know the pattern, you can usually read one at a glance.

**U.S. state and local forms** combine the two-letter state abbreviation with a three-digit number. The `101` slot is generally the state's primary resident withholding form, and higher numbers are the state's other forms: nonresident certificates, exemption claims, military spouse forms, and local jurisdiction forms.

* `AL101`: Alabama's primary withholding form
* `NY102`: a New York nonresident allocation certificate
* `MI110` through `MI132`: Michigan's city income tax forms
* `PA114`: Pennsylvania's local earned income tax residency certification

**U.S. federal forms** use a `W` prefix:

* `W4101`: Form W-4, Employee's Withholding Certificate
* `W6101`: Form 673, for claiming exemption on foreign earned income
* `W8101`: Form 8233, for nonresident aliens claiming a treaty exemption

**Canadian forms** are built from the TD1 family, with the province or territory appended:

* `TD1`: the federal Personal Tax Credits Return
* `TD1ON`, `TD1AB`, `TD1BC`: Ontario, Alberta, British Columbia
* `TP1015`, `TP1016`, `T1213`: Quebec source deductions and related federal forms

**Officially translated forms** carry a language suffix: `SP` for Spanish in the U.S., `FR` for French in Canada. `W4101SP` is the IRS's own Spanish W-4; `TD1ONFR` is the CRA's French Ontario TD1. These are separate form IDs, not a display setting. See [Languages and locales](/spf/core-concepts/languages-and-locales) for when to use them.

<Note>
  Form IDs are not the same as the jurisdiction's own form numbers. Alabama calls its form "A-4"; SPF calls it `AL101`. Both appear in the response: `formName` carries the jurisdiction's name, `formId` carries Symmetry's.
</Note>

## Form types

Every form carries a `formType` describing its purpose. This is what lets you group forms sensibly in your interface, decide which ones need employer follow-up, and understand why an employee received a particular set.

These are the ones you'll see most often:

* `Resident`: the standard withholding certificate for someone who lives in the jurisdiction
* `Nonresident`: for someone who works in the jurisdiction but lives elsewhere, often under a reciprocal agreement
* `Local`: a city, county, or municipal withholding form
* `Exempt`: a claim for exemption from withholding
* `Canada Resident`: federal and provincial Canadian withholding forms

The remainder are narrower, and several are specific to one jurisdiction or population: `Resident working outside state`, `military`, `Earned income credit`, `Pension`, `Exempt-student`, `Exempt Native American`, `Nonresident employer`, `Resident allowance adjustment`, `Nonresident Fort Campbell`, `Exempt tax credit`, `Resident Pittsburgh`, `Nonresident Pittsburgh`, `Tax adjustment`, and `Exempt military spouse`.

To identify local forms programmatically, `formType` reports `Local` in the API, and Hosted postback clients get `"isLocalForm": true` in the transaction log. See [Local withholding forms](/spf/references/local-withholding-forms) for the full list of local forms SPF supports.

## Variants of the same form

Some forms exist in more than one version at the same time, for reasons other than an annual revision:

* **Language variants**: the officially published Spanish or French edition of a form, such as `CA101` and `CA101SP`
* **Jurisdiction variants**: several states build their withholding form directly on the federal W-4. Colorado (`CO101`), North Dakota (`ND104`), New Mexico (`NM101`), and Utah (`UT101`) all use the W-4 document itself, which is why passing an employee's existing federal elections into those forms shortens the interview considerably

Variants are independent form IDs. Determine which one the employee needs, then work with that ID consistently for the rest of the session.

## Browsing everything SPF supports

You have three ways to see the full set of forms, depending on what you need.

<CardGroup cols={3}>
  <Card title="SPF catalog" icon="table" href="/spf/references/tax-parameter-catalog-and-schema">
    The published catalog of every supported form and its tax parameter outputs, updated each release.
  </Card>

  <Card title="getAllFormIds" icon="list" href="/spf/getting-started/api-quickstart#full-endpoint-reference">
    A live list of every form ID SPF currently supports.
  </Card>

  <Card title="getAllFormsCatalog" icon="code-branch" href="/spf/getting-started/api-quickstart#full-endpoint-reference">
    Every form ID paired with the version currently in effect.
  </Card>
</CardGroup>

## Related

<CardGroup cols={2}>
  <Card title="Form determination" icon="map-location-dot" href="/spf/core-concepts/form-determination">
    How SPF decides which of these forms a given employee actually needs.
  </Card>

  <Card title="Question sets and navigation" icon="diagram-project" href="/spf/core-concepts/question-sets-and-navigation">
    How the interview inside a form is structured and served.
  </Card>
</CardGroup>
