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

# Retrieve completed form PDF and tax parameters

> Return a completed form PDF and relevant tax parameters based on submitted employee data.



## OpenAPI

````yaml /spf/api-reference/payroll-forms-api.yaml post /fillPdf
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:
  /fillPdf:
    post:
      tags:
        - PDF and Tax Parameters
      summary: Retrieve completed form PDF and tax parameters
      description: >-
        Return a completed form PDF and relevant tax parameters based on
        submitted employee data.
      operationId: fillPdfPost
      parameters:
        - name: Timezone
          in: header
          description: >-
            A Timezone ID. If not specified, defaults to ETC/UTC. Documented
            here:
            [Timezones](https://docs.symmetry.com/spf/references/timezones)
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FormFields'
            examples:
              Completing the Alabama A-4, filing as single with a masked SSN and not signed.:
                summary: US Filing single
                description: >-
                  Completing the Alabama A-4, filing as single with a masked SSN
                  and not signed.
                value:
                  formId: AL101
                  employee:
                    firstName: John
                    lastName: Smith
                    socialSecurityNumber: 123-45-6789
                    address:
                      streetAddress1: 11 S Union St
                      city: Montgomery
                      state: AL
                      zipCode: '36130'
                  employer:
                    name: Symmetry
                    federalEIN: 98-7654321
                    telephoneNumber: 456-867-5309
                    address:
                      streetAddress1: 64 N Union St
                      city: Montgomery
                      state: AL
                      zipCode: '36130'
                  fields:
                    filingStatus: SINGLE
                    dependents: 1
                    additionalStateWithholding: 25
              Completing the Alabama A-4, filing as exempt with a masked SSN and not signed.:
                summary: US Filing exempt
                description: >-
                  Completing the Alabama A-4, filing as exempt with a masked SSN
                  and not signed.
                value:
                  formId: AL101
                  employee:
                    firstName: John
                    lastName: Smith
                    socialSecurityNumber: 123-45-6789
                    address:
                      streetAddress1: 11 S Union St
                      city: Montgomery
                      state: AL
                      zipCode: '36130'
                  employer:
                    name: Symmetry
                    federalEIN: 98-7654321
                    telephoneNumber: 456-867-5309
                    address:
                      streetAddress1: 64 N Union St
                      city: Montgomery
                      state: AL
                      zipCode: '36130'
                  signForm: PREVIEW
                  fields:
                    filingStatus: EXEMPT
              Completing the Alabama A-4, filing as exempt with an unmasked SSN, electronically signed and flattened.:
                summary: US Filing exempt with electronic signature
                description: >-
                  Completing the Alabama A-4, filing as exempt with an unmasked
                  SSN, electronically signed and flattened.
                value:
                  formId: AL101
                  employee:
                    firstName: John
                    lastName: Smith
                    socialSecurityNumber: 123-45-6789
                    address:
                      streetAddress1: 11 S Union St
                      city: Montgomery
                      state: AL
                      zipCode: '36130'
                  employer:
                    name: Symmetry
                    federalEIN: 98-7654321
                    telephoneNumber: 456-867-5309
                    address:
                      streetAddress1: 64 N Union St
                      city: Montgomery
                      state: AL
                      zipCode: '36130'
                  signForm: SIGN
                  fields:
                    filingStatus: EXEMPT
              Completing the Alabama A-4, filing as exempt with an unmasked SSN, flattening all fields except the signature and signature date fields so that it may be signed and dated externally.:
                summary: US Filing exempt with externally signing
                description: >-
                  Completing the Alabama A-4, filing as exempt with an unmasked
                  SSN, flattening all fields except the signature and signature
                  date fields so that it may be signed and dated externally.
                value:
                  formId: AL101
                  employee:
                    firstName: John
                    lastName: Smith
                    socialSecurityNumber: 123-45-6789
                    address:
                      streetAddress1: 11 S Union St
                      city: Montgomery
                      state: AL
                      zipCode: '36130'
                  employer:
                    name: Symmetry
                    federalEIN: 98-7654321
                    telephoneNumber: 456-867-5309
                    address:
                      streetAddress1: 64 N Union St
                      city: Montgomery
                      state: AL
                      zipCode: '36130'
                  signForm: SIGN_EXTERNALLY
                  fields:
                    filingStatus: EXEMPT
              Completing the Illinois IL-W-4, with multi-select checkbox questions answered.:
                summary: US filing with multi-select checkbox
                description: >-
                  Completing the Illinois IL-W-4, with multi-select checkbox
                  questions answered.
                value:
                  formId: IL101
                  formVersion: 2023.08.0
                  employee:
                    address:
                      streetAddress1: '345 Illinois Ave '
                      city: Wood River
                      state: IL
                      zipCode: '62095'
                    firstName: DevEmployee
                    lastName: Local
                    socialSecurityNumber: 123-45-0010
                  employer:
                    address:
                      streetAddress1: '111 141st Ct NE '
                      city: Bradenton
                      state: FL
                      zipCode: '34212'
                    federalEIN: 12-2323232
                    name: The Paper Company
                    telephoneNumber: 213-123-2321
                  fields:
                    noTaxLiability: false
                    incomeSurvey: noneOfTheAbove
                    dependents: '0'
                    basicAllowances: '0'
                    over65: true
                    blind: false
                    w4_line4_amount: '0'
                    additionalAllowances: '0'
                    additionalStateWithholding: '0'
              Completing the TD1AB form, filing as having filled out another TD1AB, electronically signed and flattened.:
                summary: Canada Filing with with electronic signature.
                description: >-
                  Completing the TD1AB form, filing as having filled out another
                  TD1AB, electronically signed and flattened.
                value:
                  formId: TD1AB
                  employee:
                    firstName: Alejandro
                    middleInitial: ''
                    lastName: Perez
                    socialInsuranceNumber: 964-977-441
                    socialInsuranceNumberExpiryDate: '2032-09-22'
                    address:
                      streetAddress1: 2070 Harvey Ave
                      streetAddress2: '#22'
                      city: Kelowna
                      provinceTerritory: BC
                      postalCode: V1Y 8P8
                  fields:
                    isEligible: 'true'
                    hasMultipleEmployers: 'true'
                    dateOfBirth: '1990-11-23'
                    employeeNumber: '132143'
                  signForm: SIGN
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PdfFillerResponse'
              examples:
                This US response will include form ID with other relavent form information, a tax parameters object, and a pdf object containing base64:
                  summary: Example response when of filling out the Alabama A-4
                  description: >-
                    This US response will include form ID with other relavent
                    form information, a tax parameters object, and a pdf object
                    containing base64
                  value:
                    form: AL101
                    pdf: BASE 64 PDF DATA...
                    taxParameters:
                      - id: AL.dependents
                        value: '0'
                      - id: AL.filingStatus
                        value: '0'
                      - id: additionalStateWithholding
                        value: '0.00'
                      - id: mustFileWithState
                        value: 'false'
                      - id: employerIntervention
                        value: 'false'
                      - id: employerInterventionReason
                        value: 'null'
                This Canadian response will include form ID with other relavent form information, a tax parameters object, and a pdf object containing base64:
                  summary: Example response when of filling out the TD1AB
                  description: >-
                    This Canadian response will include form ID with other
                    relavent form information, a tax parameters object, and a
                    pdf object containing base64
                  value:
                    form: TD1AB
                    pdf: BASE 64 PDF DATA...
                    taxParameters:
                      - id: CA.hasMoreThanOnePayer
                        value: 'true'
                        valueType: boolean
                      - id: CA.hasTotalIncomeLessThanTotalClaim
                        value: 'false'
                        valueType: boolean
                      - id: CA.totalClaimAmount
                        value: '0.00'
                        valueType: dollarAmount
        '400':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              example:
                path: uri=/spf/fillPdf
                status: BadRequest
                statusCode: 400
                timestamp: '2020-01-01 12:00:00'
                errors:
                  - field: dependents
                    message: 'Expected: ^[1-9]{1}[0-9]+|[0-9]{1}$'
                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:
    FormFields:
      required:
        - employee
        - fields
        - formId
      type: object
      properties:
        formId:
          $ref: '#/components/schemas/WithholdingForm'
        formVersion:
          type: string
        employee:
          $ref: '#/components/schemas/Employee'
        employer:
          $ref: '#/components/schemas/Employer'
        fields:
          type: object
          additionalProperties:
            type: string
        signForm:
          type: string
          enum:
            - PREVIEW
            - SIGN
            - SIGN_EXTERNALLY
          default: PREVIEW
        signatureFormat:
          type: string
          description: >-
            Use the following variables to set a format: %name% (full name),
            %firstName, %middleInitial%, %lastName%, %date%, and %dateTime%
          default: '%name% %dateTime%'
        federalValues:
          $ref: '#/components/schemas/FederalValues'
        hasFederalLockInLetter:
          type: boolean
          description: >-
            Indicates that the employee has a Federal lock in letter.  SPF US
            only.
    PdfFillerResponse:
      type: object
      properties:
        form:
          $ref: '#/components/schemas/WithholdingForm'
        notice:
          $ref: '#/components/schemas/Notice'
        formVersion:
          type: string
        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
        name:
          type: string
        title:
          type: string
        locality:
          type: string
          description: States and territories
        taxParameters:
          type: array
          items:
            $ref: '#/components/schemas/TaxParameter'
        pdf:
          type: string
    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
    WithholdingForm:
      type: string
      description: >-
        Form IDs - Use the /getAllFormIds endpoint to get all withholding form
        IDs available
    Employee:
      required:
        - address
        - firstName
        - lastName
      type: object
      properties:
        firstName:
          pattern: ^[A-Za-z0-9#.', "\-–-—‘-’“-”À-ÖØ-öø-ÿ]{1,}$
          type: string
          description: Employee's first name. Length must be greater than 0.
        middleInitial:
          pattern: ^[A-Za-zÀ-ÖØ-öø-ÿ]{0,1}$
          type: string
          description: Employee's middle initial.
        lastName:
          pattern: ^[A-Za-z0-9#.', "\-–-—‘-’“-”À-ÖØ-öø-ÿ]{1,}$
          type: string
          description: Employee's last name. Length must be greater than 0.
        address:
          $ref: '#/components/schemas/Address'
        socialSecurityNumber:
          pattern: ^([0-9]{3}-[0-9]{2}-[0-9]{4}|[0-9]{9})$
          type: string
          description: >-
            Employee's Social Security Number. Must be exactly 9 digits. All
            non-numeric characters will be automatically removed before
            validation (for example, 123-45-6789 will be validated as
            123456789). For SPF US only.
        socialInsuranceNumber:
          pattern: ^([0-9]{3}-[0-9]{3}-[0-9]{3}|[0-9]{9}|[0-9]{3} [0-9]{3} [0-9]{3})$
          type: string
          description: >-
            Employee's Social Insurance Number. Must be exactly 9 digits. All
            non-numeric characters will be automatically removed before
            validation (for example, 123-456-789 will be validated as
            123456789). For Canadian SPF only.
        socialInsuranceNumberExpiryDate:
          pattern: >-
            ^(?:(?:0[13578]|1[02])(\/)(?:31)(\/)|(?:(?:0[13-9]|1[0-2])(\/)(?:29|30)(\/)))(?:(?:1[6-9]|[2-9]\d){1}\d{2})$|^(?:02(\/)29(\/)(?:(?:(?:1[6-9]|[2-9]\d){1}(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0[1-9])|(?:1[0-2]))(\/)(?:0[1-9]|1\d|2[0-8])(\/)(?:(?:1[6-9]|[2-9]\d){1}\d{2})$|^(?:(?:1[6-9]|[2-9]\d){1}\d{2})(-)(?:(?:0[13578]|1[02])(-)(?:31)|(?:(?:0[13-9]|1[0-2])(-)(?:29|30)))$|^((?:(?:(?:1[6-9]|[2-9]\d){1}(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(-)02(-)29)$|^(?:(?:1[6-9]|[2-9]\d){1}\d{2})(-)(?:(?:0[1-9])|(?:1[0-2]))(-)(?:0[1-9]|1\d|2[0-8])$
          type: string
          description: >-
            Employee's Social Insurance Number expiration data, used for
            temporary Social Insurance Numbers. For Canadian SPF only.
    Employer:
      type: object
      properties:
        name:
          pattern: ^(.*)$
          type: string
          description: Company name of employer.
        federalEIN:
          pattern: ^[0-9]{2}[-]?[0-9]{7}$|^[0-9]{9}$
          type: string
          description: >-
            Employer's Federal Employer Information Number. Must be exactly 9
            digits.
        stateEIN:
          pattern: ^[0-9a-zA-Z /_-]+$
          type: string
          description: >-
            Employer's state tax identification number. This field is deprecated
            - please use the stateEIN field on the employer address object.
          deprecated: true
        contactPerson:
          pattern: ^[A-Za-z0-9#.', "\-–-—‘-’“-”À-ÖØ-öø-ÿ]{1,}$
          type: string
          description: The name of the company's contact person.
        telephoneNumber:
          pattern: >-
            ^([2-9]{1}[0-9]{2}-[2-9]{1}[0-9]{2}-[0-9]{4}|[2-9]{1}[0-9]{2}[2-9]{1}[0-9]{2}[0-9]{4})$
          type: string
          description: The phone number of the company's contact person (contactPerson).
        faxNumber:
          pattern: >-
            ^([2-9]{1}[0-9]{2}-[2-9]{1}[0-9]{2}-[0-9]{4}|[2-9]{1}[0-9]{2}[2-9]{1}[0-9]{2}[0-9]{4})$
          type: string
          description: The fax number for the employer or contact person.
        firstDateOfEmployment:
          pattern: >-
            ^(?:(?:0[13578]|1[02])(\/)(?:31)(\/)|(?:(?:0[13-9]|1[0-2])(\/)(?:29|30)(\/)))(?:(?:1[6-9]|[2-9]\d){1}\d{2})$|^(?:02(\/)29(\/)(?:(?:(?:1[6-9]|[2-9]\d){1}(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0[1-9])|(?:1[0-2]))(\/)(?:0[1-9]|1\d|2[0-8])(\/)(?:(?:1[6-9]|[2-9]\d){1}\d{2})$|^(?:(?:1[6-9]|[2-9]\d){1}\d{2})(-)(?:(?:0[13578]|1[02])(-)(?:31)|(?:(?:0[13-9]|1[0-2])(-)(?:29|30)))$|^((?:(?:(?:1[6-9]|[2-9]\d){1}(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(-)02(-)29)$|^(?:(?:1[6-9]|[2-9]\d){1}\d{2})(-)(?:(?:0[1-9])|(?:1[0-2]))(-)(?:0[1-9]|1\d|2[0-8])$
          type: string
          description: The employee's first date of employment
        address:
          $ref: '#/components/schemas/Address'
    FederalValues:
      required:
        - isExempt
      type: object
      properties:
        filingStatus:
          $ref: '#/components/schemas/FederalFilingStatus'
        isExempt:
          type: boolean
          description: Employee is exempt from federal withholding
        isNonResidentAlien:
          type: boolean
          description: >-
            Flag indicating that the employee is a nonresident alien, required
            if isExempt is false
        twoJobs:
          type: boolean
          description: >-
            Flag indicated that employee has select option c on step 2 of the
            form
        additionalWithholding:
          type: number
          description: >-
            Amount of additional withholding, claimed by the employee, to be
            withheld each pay period
        dependentsAmt:
          type: number
          description: >-
            Amount under the dependents credit claimed by employee.  This value
            is the sum of the dependentsUnder17, otherDependents, and
            otherCredits fields from the Federal W4
        deductions:
          type: number
          description: >-
            Amount of deductions, other than the standard deduction, claimed by
            the employee.  This value is the sum of deductionsWorksheetLine1,
            deductionsWorksheetLine2, deductionsWorksheetLine3,
            deductionsWorksheetLine4, and deductionsWorksheetLine5 fields from
            the Federal W4
        otherIncome:
          type: number
          description: Other tax credits claimed by employee
      description: >-
        Object representation of the Federal W4 (W4101) tax parameters.  This
        object will also accept the tax parameters directly, ex:  filingStatus
        or FED.filingStatus
    Notice:
      type: object
      properties:
        type:
          type: string
          enum:
            - WARNING
            - DEPRECATION
            - INFORMATION
        message:
          type: string
    TaxParameter:
      type: object
      properties:
        id:
          type: string
          description: Tax parameter's ID
        value:
          type: object
          description: Tax parameter's value
          nullable: true
        valueType:
          type: string
          description: Data type of the tax parameter's value field
        regexOptions:
          type: string
          description: Tax parameter's allowed values when valueType is 'regex'
          nullable: true
        description:
          type: string
          description: >-
            Description of the tax parameter, this is field is not returned
            outside of a documentation context
          nullable: true
    ValidationError:
      type: object
      properties:
        field:
          type: string
        message:
          type: string
        rejectedValue:
          type: string
    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.
    FederalFilingStatus:
      type: string
      description: >-
        Federal filing status. Allowed values are:
        'SINGLE_OR_MARRIED_FILING_SEPARATELY', 'MARRIED_FILING_JOINTLY',
        'HEAD_OF_HOUSEHOLD', or 'NOT_APPLICABLE'. Values also allow W4101 tax
        parameter values as aliases, 'S', 'M', and 'H'.
  securitySchemes:
    jwtToken:
      type: http
      scheme: bearer
      bearerFormat: JWT

````