All of Zeal's responses follow HTTP Status Codes.
HTTP Status | Meaning |
---|---|
200 - OK | Everything worked as expected |
400 - Bad Request | The request was unacceptable, often due to a missing or incorrect required parameter |
401 - Unauthorized | No valid API Key provided |
402 - Request Failed | The parameters were valid but the request failed |
403 - Forbidden | The API key doesn't have permission to perform the request |
404 - Not Found | The requested resource doesn't exist |
409 - Conflict | The request conflicts with another request |
429 - Too Many Requests | Too many requests hit the API too quickly. We recommend an exponential backoff of your requests |
500, 502, 503, 504 - Server Errors | Something went wrong on Zeal's end |
Zeal API error messages are returned in JSON format.
{
"success": false,
"errors": [
{
"message": "Employee does not exist",
"code": 30
}
]
}
Error Code | Message | Description |
---|---|---|
0 | This account does not have access to live payroll. You may only use Test Keys/Test Mode for now | Corresponds with HTTP 403 The account does not have access to live payroll yet. Please contact [email protected] to gain access. |
1 | No Authorization Header | Corresponds with HTTP 400 No authorization header or Bearer Token was found in the request |
2 | No companyID in the request query | Corresponds with HTTP 400 No companyID was found in the query of request when expected. |
3 | No companyID in the request body | Corresponds with HTTP 400 No companyID was found in the body of the request when expected. |
4 | No user with this companyID exists | Corresponds with HTTP 400 No user with the given companyID exists. |
6 | No partnerID in the body or query of request | Corresponds with HTTP 400 No partnerID was found in the body or query of the request when expected |
7 | No Zeal Partner with this partnerID exists | Corresponds with HTTP 400 No Zeal Partner with the given partner ID exists. |
8 | Error with Key | Corresponds with HTTP 401 Given API key does not exist for Zeal partner with given partnerID |
9 | Invalid format for the time given in the query | Corresponds with HTTP 400 The format of the time parameter for the request does not adhere to the ISO-8601 format. |
10 | Reporting Period with this ID does not exist | Corresponds with HTTP 400 No Reporting Period with this ID exists. |
11 | No 'shifts' array found in the body of the request | Corresponds with HTTP 400 |
12 | Worker(s) with given employeeID(s) in the body of the request does not exist | Corresponds with HTTP 400 |
13 | Object(s) is missing required fields or have improperly formatted data | Corresponds with HTTP 400. Consult API reference for proper formatting. |
14 | Shift(s) with given shiftID(s) is not found for this user | Corresponds with HTTP 404 This could have occurred because of an improperly formatted shiftID. |
16 | No employeeCheckID found in the query of the request | Corresponds with HTTP 400 |
17 | Object with this ID does not exist | Corresponds with HTTP 400 |
18 | No end date found in the query of the request | Corresponds with HTTP 400 |
19 | No start date found in the query of the request | Corresponds with HTTP 400 |
20 | Dates provided in the query of request are invalid/inappropriately formatted | Corresponds with HTTP 400. Please format dates as YYYY-MM-DD |
21 | End Date occurs before Start Date | Corresponds with HTTP 400 |
22 | No 'employees' array found in the body of the request | Corresponds with HTTP 400 |
23 | Employee with this employeeID does not exist | Corresponds with HTTP 400 |
24 | Zeal Partner does not have access to this company's information | Corresponds with HTTP 400 |
25 | This is only a Live Mode feature. Test Key does not have permission to perform this request | Corresponds with HTTP 403. |
26 | No shiftID in the query of request | Corresponds with HTTP 400 |
27 | No 'new_employees' array found in the body of the request | Corresponds with HTTP 400 |
28 | Employee object(s) are missing the required fields. | Corresponds with HTTP 400 |
29 | Worker(s) with given email(s) already exist. Please try again | Corresponds with HTTP 404 |
30 | Employee is already onboarded/on leave/terminated | Corresponds with HTTP 404 |
31 | No Pending Employee Check exists within the given employeeCheckID | Corresponds with HTTP 404 |
32 | Employee Check for this employee and check date already exists. Error object will include an employeeID and check date | Corresponds with HTTP 400 |
33 | This employee is working in a state for which a State Payroll Tax Number has not been submitted. This error only applies in Live Mode | Corresponds with HTTP 400 |
34 | The address provided is not suitable for taxation. Address fields where wholly invalid or resolved to a taxable location with is_suitable_for_taxation equal to false. Use the Resolve Taxable Location endpoint for more details | Corresponds with HTTP 400 |
35 | No contractorID in the body/query of the request | Corresponds with HTTP 400 |
36 | Object(s) does not have a bank account | Corresponds with HTTP 400 |
37 | Cannot onboard employee: missing property | Corresponds with HTTP 400 |
38 | Employee is already onboarded | Corresponds with HTTP 400 |
39 | Internal Server Error | Corresponds with 500. Message will relay actual server error. |
40 | CompanyID mismatch in body and query of request | Corresponds with HTTP 400 |
41 | Key is not authorized to perform this request | Corresponds with HTTP 403 |
42 | No contractorID or employeeID in the body/query of the request | Corresponds with HTTP 400 |
43 | Employee Check with this check ID does not exist | Corresponds with HTTP 400 |
44 | Date is not a valid date | Corresponds with HTTP 400 |
45 | Date must not be in the past | Corresponds with HTTP 400 |
46 | Contractor Payment with this payment ID does not exist | Contractor Payment with this payment ID does not exist |
47 | Validation Error | Corresponds with HTTP 403 |
48 | The address provided is not a valid, mail-deliverable address | Corresponds with HTTP 400 |
49 | Company must be live | Corresponds with HTTP 403 |
50 | Must provide a valid companyID | Corresponds with HTTP 400 |
51 | No company with this companyID exists | Corresponds with HTTP 404 |
52 | No document with this document ID exists | Corresponds with HTTP 404 |
53 | No document of this type within the given scope exists | Corresponds with HTTP 404 |
54 | No document with this jurisdiction and company ID has been submitted | Corresponds with HTTP 404 |
55 | Shifts with negative wages not currently supported | Corresponds with HTTP 400 |
56 | Routing number is invalid | Corresponds with HTTP 400 |
57 | Employee or contractor has not finished onboarding | Corresponds with HTTP 400 |
58 | Work Location(s) not found | Corresponds with HTTP 400 |
59 | Failed to update/upsert Work Location | Corresponds with HTTP 400 |
60 | Failed to create Work Location | Corresponds with HTTP 400 |
61 | Another employee in this company already has the same SSN | Corresponds with HTTP 400 |
62 | Create employees payload contains duplicate SSNs | Corresponds with HTTP 400 |
63 | SSN must be an optional property or of type string | Corresponds with HTTP 400 |
64 | Request is not of the expected shape | Corresponds with HTTP 400 |
65 | Maximum number of allowed checks exceeded | Corresponds with HTTP 400 |
66 | Only pending checks can be previewed. Received non-pending check(s) | Corresponds with HTTP 400 |
67 | No workLocationID in the body of the request | Corresponds with HTTP 400 |
68 | Bank Account with this employeeID or contractorID does not exist | Corresponds with HTTP 400 |
69 | Another employee in this company already has the same external ID | Corresponds with HTTP 400 |
70 | Another contractor in this company already has the same external ID | Corresponds with HTTP 400 |
71 | No W-4 exists for this jurisdiction | Corresponds with HTTP 400 |
72 | Employee or Contractor ID is not formatted correctly | Corresponds with HTTP 400 |
73 | Contractor with this contractorID does not exist | Corresponds with HTTP 400 |
74 | Invalid check date | Corresponds with HTTP 400 |
75 | Must be valid SSN format - eg. XXXYYZZZZ | Corresponds with HTTP 400 |
76 | Another contractor in this company already has the same SSN | Corresponds with HTTP 409 |
77 | Start date cannot be after end date | Corresponds with HTTP 400 |
78 | Email already exists | Corresponds with HTTP 409 |
79 | Migration failed | Corresponds with HTTP 400 |
80 | Please provide a file to upload | Corresponds with HTTP 400 |
81 | Contractor Payment for this contractor and pay date already exists. Error object will include a contractorID and pay_date | Corresponds with HTTP 400 |
82 | CompanyID was not found | Corresponds with HTTP 400 |
83 | Failed to retrieve Partner Information by ID | Corresponds with HTTP 400 |
84 | Email or password is incorrect | Corresponds with HTTP 401 |
85 | Partner not found | Corresponds with HTTP 400 |
86 | Either document ID or type, jurisdiction, and scope are required | Corresponds with HTTP 400 |
87 | Employee has missing or invalid residency | Corresponds with HTTP 422 |
88 | Contractor is already onboarded | Corresponds with HTTP 400 |
89 | The given date is on a weekend/bank holiday or the current time is after 2 PM two days before the given date. Please correct the date and resubmit | Corresponds with HTTP 400 |
90 | Only able to regenerate requirement for state-scoped requirements | Corresponds with HTTP 400 |
91 | Invalid tax parameter jurisdiction | Corresponds with HTTP 400 |
92 | Invalid tax requirement ID | Corresponds with HTTP 400 |
93 | Invalid tax parameter value | Corresponds with HTTP 400 |
94 | Employee's default wage has not been set so please provide an appropriate wage in the shifts object(s) | Corresponds with HTTP 400 |
95 | The requested feature is disabled | Corresponds with HTTP 403 |
96 | Value must be positive | Corresponds with HTTP 400 |
97 | Email must be valid | Corresponds with HTTP 400 |
98 | This account does not have access to this endpoint | Corresponds with HTTP 403 |
99 | This employee is not onboarded | Corresponds with HTTP 400 |
100 | This employee is on leave/terminated | Corresponds with HTTP 400 |
101 | Forbidden | Corresponds with HTTP 403 |
102 | You must create between 1 and 100 checks | Corresponds with HTTP 400 |
103 | Unauthorized | Corresponds with HTTP 401 |
104 | Provided deduction template id(s) not found under companyID | Corresponds with HTTP 404 |
105 | Parameter is expected to be of type objectid string | Corresponds with HTTP 400 |
106 | Net pay negative - this check will fail | Corresponds with HTTP 422 |
107 | Bad Form Data | Corresponds with HTTP 422 |
108 | Provided check is invalid | Corresponds with HTTP 400 |
109 | Accrual policy with this policy code not found | Corresponds with HTTP 404 |
110 | Historical shift would be modified by overtime calculation | Corresponds with HTTP 422 |
111 | Value for earning type must be less than 0 | Corresponds with HTTP 400 |
112 | Value must be negative | Corresponds with HTTP 400 |
113 | Jurisdiction does not exist | Corresponds with HTTP 404 |
114 | Company not setup for regular payroll | Corresponds with HTTP 400 |
115 | Account not found | Corresponds with HTTP 404 |
116 | Value must be a decimal | Corresponds with HTTP 400 |