> ## 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.

# Return applicable forms for given home and work addresses

> Retrieve all applicable forms and address normalization and geocoding data for specified home and work address.



## OpenAPI

````yaml /spf/api-reference/payroll-forms-api.yaml post /forms
openapi: 3.0.1
info:
  title: SPF Api
  contact:
    name: Symmetry Software
    url: https://www.symmetry.com
    email: support@symmetry.com
  license:
    name: Symmetry Software/Subscription & Service Agreement
    url: http://www.symmetry.com/software-subscription-license
  version: 1.94.0
  x-release-name:
    value: 2026.7.1
  x-endpoint-versions:
    fill_pdf_post_version: 1.95.0
    forms_version: 1.95.0
    form_questions_version: 1.95.0
    docs_version: 1.93.0
    guided_flows_version: 1.95.0
    flow_questions_version: 1.95.0
    getPdf_version: 1.95.0
    ste_mapping_version: 1.1.0
    fill_pdf_get_version: 1.95.0
    /v2/forms_version: 1.95.0
    form_ids_version: 1.95.0
    form_catalog_version: 1.87.0
servers:
  - url: https://api.symmetry.com/spf
    description: prod2
security: []
tags:
  - name: Forms
    description: Determine all applicable forms and retrieve information for each
  - name: Questions
    description: Retrieve form and guide flow questions
  - name: PDF and Tax Parameters
    description: Retrieve pdf and tax parameter schemas and generate filled documents
  - name: Documentation
    description: Retrieve OpenApi configuration yaml and use it to generate a client api
  - name: Postman
    description: Resources for Postman
  - name: STE Mapping
    description: Retrieve SPF-to-STE tax parameter mappings
paths:
  /forms:
    post:
      tags:
        - Forms
      summary: Return applicable forms for given home and work addresses
      description: >-
        Retrieve all applicable forms and address normalization and geocoding
        data for specified home and work address.
      operationId: getForms_1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultiStateDeterminationRequest'
            examples:
              1 US home address and 1 US work address:
                summary: Simple
                description: 1 US home address and 1 US work address
                value:
                  homeAddress:
                    streetAddress1: 11 S Union St
                    city: Montgomery
                    state: AL
                    zipCode: '36130'
                  workAddresses:
                    - streetAddress1: 64 N Union St
                      city: Montgomery
                      state: AL
                      zipCode: '36130'
              1 US home address and 1 US work address, with nexus:
                summary: Nexus
                description: 1 US home address and 1 US work address, with nexus
                value:
                  homeAddress:
                    streetAddress1: 900 North Third Street
                    city: Baton Rouge
                    state: LA
                    zipCode: '70802'
                  workAddresses:
                    - streetAddress1: 64 N Union St
                      city: Montgomery
                      state: AR
                      zipCode: '36130'
                  nexus:
                    - AR
                    - LA
              1 Canadian home address and 1 Canadian work address:
                summary: Canada
                description: 1 Canadian home address and 1 Canadian work address
                value:
                  homeAddress:
                    streetAddress1: 5003 50 St
                    streetAddress2: ''
                    city: Red Deer
                    provinceTerritory: AB
                    postalCode: T4N 1Y2
                  workAddresses:
                    - streetAddress1: 5003 50 St
                      streetAddress2: ''
                      city: Red Deer
                      provinceTerritory: AB
                      postalCode: T4N 1Y2
                    - streetAddress1: 2070 Harvey Ave
                      streetAddress2: '#22'
                      city: Kelowna
                      provinceTerritory: BC
                      postalCode: V1Y 8P8
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forms'
              examples:
                Form determination based on US resident and work address(es):
                  summary: Forms applicable based on US resident and work address(es)
                  description: Form determination based on US resident and work address(es)
                  value:
                    forms:
                      - id: W4101
                        name: W-4
                        title: Employee's Withholding Certificate
                        formVersion: 2021.1.0
                        formLocality: FEDERAL
                        formType: RESIDENT
                        recommended: true
                        initialQuestionSet: QS1
                      - id: AL101
                        name: A4
                        title: Employee's Withholding Exemption Tax Certificate
                        formVersion: 2014.3.0
                        formLocality: AL
                        formType: RESIDENT
                        recommended: true
                        initialQuestionSet: QS1
                      - id: AL101SP
                        name: A4(SP)
                        title: >-
                          Certificado para todo Empleado de Exención de
                          Retencion de Ingresos para Pago de Impuestos
                        formVersion: 2016.5.0
                        formLocality: AL
                        formType: RESIDENT
                        recommended: true
                        initialQuestionSet: QS1
                      - id: AL103
                        name: A4-MS
                        title: >-
                          Nonresident Military Spouse Withholding Tax Exemption
                          Certificate
                        formVersion: 2019.9.0
                        formLocality: AL
                        formType: EXEMPT_MILITARY_SPOUSE
                        recommended: false
                        initialQuestionSet: QS1
                      - id: W4101SP
                        name: W-4(SP)
                        title: Certificado de Retenciones del Empleado
                        formVersion: 2020.12.0
                        formLocality: FEDERAL
                        formType: RESIDENT
                        recommended: false
                        initialQuestionSet: QS1
                      - id: W6101
                        name: '673'
                        title: >-
                          Statement For Claiming Exemption From Withholding on
                          Foreign Earned Income Eligible for the Exclusion(s)
                          Provided by Section 911
                        formVersion: 2019.1.0
                        formLocality: FEDERAL
                        formType: EXEMPT
                        recommended: false
                        initialQuestionSet: QS1
                      - id: W8101
                        name: '8233'
                        title: >-
                          Exemption From Withholding on Compensation for
                          Independent (and Certain Dependent) Personal Services
                          of a Nonresident Alien Individual
                        formVersion: 2018.9.0
                        formLocality: FEDERAL
                        formType: EXEMPT
                        recommended: false
                        initialQuestionSet: QS1
                    locationData:
                      - id: home
                        inputAddress:
                          streetAddress1: 11 S Union St
                          city: Montgomery
                          state: AL
                          zipCode: '36130'
                        normalizedAddress:
                          streetAddress1: 11 S Union St
                          city: Montgomery
                          state: AL
                          zipCode: 36130-2102
                        addressResultMessages:
                          - The corrected address is valid. [AS01]
                          - >-
                            The record was coded to the street level (Zip+4 for
                            US, full postal code for CA). [GS01]
                        addressErrorMessages: []
                        latitude: '32.376634'
                        longitude: '-86.299645'
                        geocoded: false
                        verified: true
                      - id: work1
                        inputAddress:
                          streetAddress1: 64 N Union St
                          city: Montgomery
                          state: AL
                          zipCode: '36130'
                        normalizedAddress:
                          streetAddress1: 64 N Union St
                          city: Montgomery
                          state: AL
                          zipCode: 36130-3020
                        addressResultMessages:
                          - The corrected address is valid. [AS01]
                          - >-
                            The record was coded to the street level (Zip+4 for
                            US, full postal code for CA). [GS01]
                        addressErrorMessages: []
                        latitude: '32.378229'
                        longitude: '-86.299726'
                        geocoded: false
                        verified: true
                Form determination based on Canadian resident and work address(es):
                  summary: >-
                    Forms applicable based on Canadian resident and work
                    address(es)
                  description: >-
                    Form determination based on Canadian resident and work
                    address(es)
                  value:
                    forms:
                      - id: TD1
                        name: TD1
                        title: 2023 Personal Tax Credits Return
                        formVersion: 2023.01.0
                        formLocality: CANADA_FEDERAL
                        formType: CANADA_RESIDENT
                        recommended: true
                        initialQuestionSet: QS1
                      - id: TD1FR
                        name: TD1(FR)
                        title: Déclaration des crédits d'impôt personnels pour 2023
                        formVersion: 2023.01.0
                        formLocality: CANADA_FEDERAL
                        formType: CANADA_RESIDENT
                        recommended: true
                        initialQuestionSet: QS1
                      - id: TD1AB
                        name: TD1AB
                        title: 2023 Alberta Personal Tax Credits Return
                        formVersion: 2023.01.0
                        formLocality: AB
                        formType: CANADA_RESIDENT
                        recommended: false
                        initialQuestionSet: QS1
                      - id: TD1ABFR
                        name: TD1AB(FR)
                        title: >-
                          Déclaration des crédits d'impôt personnels de
                          l'Alberta pour 2023
                        formVersion: 2023.01.0
                        formLocality: AB
                        formType: CANADA_RESIDENT
                        recommended: false
                        initialQuestionSet: QS1
                      - id: TD1BC
                        name: TD1BC
                        title: 2023 British Columbia Personal Tax Credits Return
                        formVersion: 2023.01.0
                        formLocality: BC
                        formType: CANADA_RESIDENT
                        recommended: false
                        initialQuestionSet: QS1
                      - id: TD1BCFR
                        name: TD1BC(FR)
                        title: >-
                          Déclaration des crédits d'impôt personnels de la
                          Colombie-Britannique pour 2023
                        formVersion: 2023.01.0
                        formLocality: BC
                        formType: CANADA_RESIDENT
                        recommended: false
                        initialQuestionSet: QS1
                    locationData: []
        '400':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              example:
                path: uri=/spf/forms
                status: Bad Request
                statusCode: 400
                timestamp: '2020-09-15 15:57:16'
                errors:
                  - field: workAddresses
                    message: size must be between 1 and 10
                    rejectedValue: '[]'
                errorCount: 1
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: ''
          content: {}
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - jwtToken: []
components:
  schemas:
    MultiStateDeterminationRequest:
      required:
        - homeAddress
        - workAddresses
      type: object
      properties:
        homeAddress:
          $ref: '#/components/schemas/Address'
        workAddresses:
          maxItems: 10
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/Address'
        nexus:
          uniqueItems: true
          type: array
          items:
            type: string
            description: States and territories
        lockInLetters:
          uniqueItems: true
          type: array
          items:
            type: string
            description: States and territories
        interstateEmployee:
          type: boolean
        useAddressSuggestion:
          type: boolean
    Forms:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
        warnings:
          type: array
          items:
            type: string
        forms:
          type: array
          items:
            $ref: '#/components/schemas/Form'
        locationData:
          type: array
          items:
            $ref: '#/components/schemas/LocationData'
    ApiError:
      type: object
      properties:
        path:
          type: string
        status:
          type: string
        statusCode:
          type: integer
          format: int32
        timestamp:
          type: string
          format: date-time
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
        errorCount:
          type: integer
          format: int32
    Address:
      required:
        - city
        - streetAddress1
      type: object
      properties:
        streetAddress1:
          pattern: ^[A-Za-z0-9#\/,.&'"\(\)\- –-—‘-’“-”À-ÖØ-öø-ÿ]*$
          type: string
          description: >-
            Civic number and street name of the address. Cannot be null or
            empty.
        streetAddress2:
          pattern: ^[A-Za-z0-9#\/,.&'"\(\)\- –-—‘-’“-”À-ÖØ-öø-ÿ]*$
          type: string
          description: >-
            Apartment, floor, unit number, or other address designation that is
            part of the address.
        city:
          pattern: ^[A-Za-z.,&'"\- –-—‘-’“-”À-ÖØ-öø-ÿ]+$
          type: string
          description: City of the address. Cannot be null or empty.
        state:
          pattern: >-
            ^(AL|AK|AZ|AR|AS|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VA|VI|WA|WV|WI|WY)$
          type: string
          description: States and territories
        zipCode:
          pattern: ^[0-9]{5}$|^[0-9]{5}-[0-9]{4}$|^[0-9]{9}$
          type: string
          description: >-
            Address zip code. Must be exactly 5 or exactly 9 digits. All
            non-numeric characters will be automatically removed before
            validation (for example, 85260-2662 will be validated as 852602662).
            For SPF US only.
        stateEIN:
          pattern: ^[0-9a-zA-Z /_-]+$
          type: string
          description: >-
            State employer identification number. Required by some US forms.
            Should only be specified on employer addresses.
        provinceTerritory:
          pattern: ^(AB|BC|MB|NB|NL|NT|NS|NU|ON|PE|QC|SK|YT)$
          type: string
          description: States and territories
        postalCode:
          pattern: ^(?!.*[DFIOQU])[A-VXY][0-9][A-Z] ?[0-9][A-Z][0-9]$
          type: string
          description: Postal code. For Canadian SPF only.
      description: >-
        The address sub-element of the employer element contains all data
        pertaining to an employer's physical address.
    ValidationError:
      type: object
      properties:
        field:
          type: string
        message:
          type: string
        rejectedValue:
          type: string
    Form:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/WithholdingForm'
        name:
          type: string
        title:
          type: string
        formVersion:
          type: string
        formLocality:
          type: string
          description: States and territories
        formType:
          type: string
          enum:
            - CANADA_RESIDENT
            - RESIDENT
            - NON_RESIDENT
            - RESIDENT_OUT_OF_STATE
            - EXEMPT
            - MILITARY
            - EIC
            - LOCAL
            - PENSION
            - EXEMPT_STUDENT
            - EXEMPT_NATIVE_AMERICAN
            - NONRESIDENT_EMPLOYER
            - RESIDENT_ALLOWANCE_ADJ
            - NON_RESIDENT_FORT_CAMPBELL
            - EXEMPT_TAX_CREDIT
            - RESIDENT_PITTSBURGH
            - NON_RESIDENT_PITTSBURGH
            - TAX_ADJ
            - EXEMPT_MILITARY_SPOUSE
        recommended:
          type: boolean
        initialQuestionSet:
          type: string
    LocationData:
      type: object
      properties:
        id:
          type: string
          description: Location's ID
        inputAddress:
          $ref: '#/components/schemas/Address'
        normalizedAddress:
          $ref: '#/components/schemas/Address'
        addressResultMessages:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/AddressResultStatus'
          description: Map of address IDs to address normalization and geocoding results
        addressErrorMessages:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/AddressResultStatus'
          description: >-
            Map of address IDs to errors from address normalization and
            geocoding
        latitude:
          type: string
          description: Location's latitude
        longitude:
          type: string
          description: Location's longitude
        homePsdCode:
          type: string
          description: >-
            Location's Political Subdivision code, used by PA forms (e.g.
            PA114/CLGS-32-6). Only returned when at least one address is in PA.
          nullable: true
        homePsdRate:
          type: string
          description: >-
            Location's Political Subdivision tax rate, used by PA forms (e.g.
            PA114/CLGS-32-6). Only returned when at least one address is in PA.
          nullable: true
        homePsdMunicipality:
          type: string
          description: >-
            Location's Political Subdivision municipality, used by PA forms
            (e.g. PA114/CLGS-32-6). Only returned when at least one address is
            in PA.
          nullable: true
        homePsdCounty:
          type: string
          description: >-
            Location's Political Subdivision county, used by PA forms (e.g.
            PA114/CLGS-32-6). Only returned when at least one address is in PA.
          nullable: true
        workPsdCode:
          type: string
          description: >-
            Location's Political Subdivision code, used by PA forms (e.g.
            PA114/CLGS-32-6). Only returned when at least one address is in PA.
          nullable: true
        workPsdRate:
          type: string
          description: >-
            Location's Political Subdivision tax rate, used by PA forms (e.g.
            PA114/CLGS-32-6). Only returned when at least one address is in PA.
          nullable: true
        workPsdMunicipality:
          type: string
          description: >-
            Location's Political Subdivision municipality, used by PA forms
            (e.g. PA114/CLGS-32-6). Only returned when at least one address is
            in PA.
          nullable: true
        workPsdCounty:
          type: string
          description: >-
            Location's Political Subdivision county, used by PA forms (e.g.
            PA114/CLGS-32-6). Only returned when at least one address is in PA.
          nullable: true
        homeSchoolDistrictName:
          type: string
          description: >-
            Location's associated school district name, used by OH forms, only
            returned if address is a resident address in OH
          nullable: true
        homeSchoolDistrictCode:
          type: string
          description: >-
            Location's associated school district code, used by OH forms, only
            returned if address is a resident address in OH
          nullable: true
        workSchoolDistrictName:
          type: string
          description: >-
            Location's associated school district name, used by OH forms, only
            returned if address is a work address in OH
          nullable: true
        workSchoolDistrictCode:
          type: string
          description: >-
            Location's associated school district code, used by OH forms, only
            returned if address is a work address in OH
          nullable: true
        homeCountyName:
          type: string
          description: >-
            Location's county name, used by MD and IN forms, only returned if
            address is a resident address in MD/IN
          nullable: true
        workCountyName:
          type: string
          description: >-
            Location's county name, used by MD and IN forms, only returned if
            address is a work address in MD/IN
          nullable: true
        verified:
          type: boolean
        geocoded:
          type: boolean
    WithholdingForm:
      type: string
      description: >-
        Form IDs - Use the /getAllFormIds endpoint to get all withholding form
        IDs available
    AddressResultStatus:
      type: object
      properties:
        message:
          type: string
          description: Short description describing the result code response
        description:
          type: string
          description: Long description describing the result code response
      description: Address geocoding and normalization result and/or error
  securitySchemes:
    jwtToken:
      type: http
      scheme: bearer
      bearerFormat: JWT

````