Skip to main content
The TD1 form is the more casual term for the Canada Revenue Agency (CRA) TD1 Personal Tax Credits Returns form. Employers collect these forms from their employees to figure out how much tax they need to collect when they run payroll so they can send the right amounts to the CRA. These tax deductions take into account both wages and additional income earned. Working with TD1 forms is fairly simple. They aren’t sent to the CRA, nor does the employee use them for their taxes — it’s just for employers to make their income tax calculations and input the right TD1 code. In addition to the federal TD1, employees also need to fill out their relevant provincial TD1 form. Both these forms are given out by employers to employees when they start a new job and at the beginning of every calendar year. Employees need to complete and submit both federal and provincial forms to their employer whenever they:
  • Begin a new job
  • Want to increase the amount of tax deducted from their pay
  • Want to claim extra deductions
  • Have significant life changes (like going back to school, taking care of a dependent, etc.)
If an employee doesn’t hand in their TD1s, employers can deduct tax based on the default amount set by the CRA for each year. Employees working two jobs are only allowed to claim tax credits on one of their TD1 forms. Nmbr provides access to all federal and provincial TD1 forms via our Forms API. You can use the /form_types API route to lookup the available form types. Use the /form_types/:type API route to get the fields for a given form. Request
curl --request GET \
     --url https://sandbox.nmbr.co/services/payroll/form_types/td1 \
     --header 'Authorization: Bearer <access_token>' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
Response
{
  "data": {
    "type": "td1",
    "month": "january",
    "year": "2023",
    "fields": [
      {
        "key": "line_2_infirm_children_caregiver_amount",
        "label": "Line 2 Infirm Children Caregiver Amount",
        "type": "text",
        "required": false,
        "validations": { "min": 0 }
      }
    ]
  }
}
To create a form for a given employee’s work assignment, initialize the form using a POST request: Request
curl --request POST \
     --url https://sandbox.nmbr.co/services/payroll/forms \
     --header 'Authorization: Bearer <access_token>' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '{
          "owner_id": "wrkas_1hhcy3hg60x3dq8hfj31hgye",
          "type": "td1"
          "line_2_infirm_children_caregiver_amount": 300
        }'
Even if you only update one field, the response should contain all the remaining fields for the given form. Response
{
    "id": "form_01JSCE1S1CF5C0VFPZZVBS6X5R",
    "data": {
        "owner_id": "wrkas_1hhcy3hg60x3dq8hfj31hgye",
        "line_1_basic_personal_amount": null,
        "line_2_infirm_children_caregiver_amount": 300,
        "line_3_age_amount": null,
        ...
    }
}
To make changes to a form, perform a PUT request to the form API endpoint: Request
curl --request PUT \
     --url https://sandbox.nmbr.co/services/payroll/forms/form_01JSCE1S1CF5C0VFPZZVBS6X5R \
     --header 'Authorization: Bearer <access_token>' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '{
          "line_1_basic_personal_amount": 13000,
        }'