Intuit is pleased to share the launch of the new QuickBooks Payroll API to access payroll data. If you are currently using our older APIs, you need to migrate to the new APIs.
If you are using the endpoint https://v4thirdparty.api.intuit.com/graphql, you are migrating from our Alpha API.
If you are using the endpoint https://public.api.intuit.com/2020-04/graphql, you are migrating from our Beta API.
The employee ID returned in the new API is in a new format and is not the same employee Id in existing APIs. For example, the employee Id returned from existing APIs is in a format similar to djQtLToxU5NjB65:0020715c71ba83
or djQtLToxU5NjB65:2
. In the new API, the employee ID is numeric values such as 2 or 3. The old IDs are returned in the alternateIds.id
field.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | { workerManagementEmployees { edges { node { id firstName middleName lastName alternateIds { id nameSpace } } } pageInfo { endCursor hasNextPage hasPreviousPage startCursor } totalCount } } |
alternateIds.id
field that you already have stored.If you currently use the com.intuit.quickbooks.payroll
scope, you will be able to use the new APIs for your existing customers. When new customers connect to your app or when existing users reconnect to your app, include new scopes in your authorization call. The required scopes for each resource are described on the individual reference pages.
Field in Alpha API | Field in new API |
---|---|
$type | N/A. This field isn’t available. |
id | payrollEmployeeDetails.compensations.employerCompensation.id |
name | payrollEmployeeDetails.compensations.employerCompensation.id |
statutoryCompensationPolicy | payrollEmployeeDetails.compensations.employerCompensation.type.value |
Field in Alpha API | Field in new API |
---|---|
$type | N/A. This field isn’t available. |
id | payrollEmployeeDetails.compensations.id |
entityVersion | N/A. This field isn’t available. |
meta.created | N/A. This field isn’t available. |
meta.updated | N/A. This field isn’t available. |
amount | payrollEmployeeDetails.compensations.rate.amount.value |
employee.id | id |
employerCompensation | payrollEmployeeDetails.compensations.employerCompensation |
endDate | N/A. This field isn’t available. |
Field in Alpha API | Field in new API |
---|---|
id | payrollEmployerInfo.deductions.edges.node.id |
name | payrollEmployerInfo.deductions.edges.node.name |
clientMutationId | N/A Use the ID field for mutations. |
employer | N/A |
statutoryDeductionPolicy | payrollEmployerInfo.deductions.edges.node.statutoryType.value |
Field in Alpha API | Field in new API |
---|---|
id | workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.id |
clientMutationId | N/A Use the ID field for mutations |
name | N/A |
amount | Derived from workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.amount.value and workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.amount.type |
annualMaximum | workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.employeeContributions.capping.amount.value |
active | workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.active |
endDate | N/A |
employee | workerManagementEmployees.edges.node.id OR workerManagementEmployees.edges.node.alternateIds.id |
employerDeduction.id | workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.deductionPolicy.id |
employerDeduction.name | workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.deductionPolicy.name |
Field in Alpha API | Field in new API |
---|---|
id | payrollEmployerInfo.benefits.edges.node.id |
name | payrollEmployerInfo.benefits.edges.node.name |
clientMutationId | N/A Use the ID field for mutations |
employer | N/A |
statutoryBenefitPolicy | payrollEmployerInfo.benefits.edges.node.statutoryType.value |
Field in Alpha API | Field in new API |
---|---|
employee | workerManagementEmployees.edges.node.id OR workerManagementEmployees.edges.node.alternateIds.id |
employerBenefit.id | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.deductionPolicy.id |
employerBenefit.name | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.deductionPolicy.name |
id | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.id |
clientMutationId | N/A Use the ID field for mutations |
name | N/A |
employerSetup.amount.value | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.employerContribution.amount.value |
employerSetup.cappings.amount | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.employerContribution.capping.amount.value |
employeeSetup.amount.value | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.employeeContribution.amount.value |
employeeSetup.cappings.amount | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.employeeContribution.capping.amount |
active | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.active |
Field in Alpha API | Field in new API |
---|---|
id | payrollEmployerInfo.pensions.edges.node.id |
name | payrollEmployerInfo.pensions.edges.node.name |
clientMutationId | N/A Use the ID field for mutations |
employer | N/A |
statutoryPensionPolicy | payrollEmployerInfo.pensions.edges.node.statutoryType.value |
Field in Alpha API | Field in new API |
---|---|
employee | workerManagementEmployees.edges.node.id OR workerManagementEmployees.edges.node.alternateIds.id |
employerPension.id | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.deductionPolicy.id |
employerPension.name | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.deductionPolicy.name |
id | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.id |
clientMutationId | N/A Use the ID field for mutations |
employerSetup.amount.value | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.employerContribution.amount.value |
employerSetup.cappings.amount | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.employerContribution.capping.amount.value |
employeeSetup.amount.value | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.id.employeeContributions.capping.amount.value |
employeeSetup.cappings.amount | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.id.employeeContributions.capping.amount.value |
active | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.active |
endDate | N/A |
The following tables show how to map from beta fields to the new fields.
Use our QuickBooks Online API to read company information .
Field in Beta API | Field in new API |
---|---|
Employee.payrollProfile.compensations.id | workerManagementEmployees.edges.node.payrollEmployeeDetails.compensations.id |
Employee.payrollProfile.compensations.active | workerManagementEmployees.edges.node.payrollEmployeeDetails.compensations.active |
Employee.payrollProfile.compensations.amount | payrollEmployeeDetails.compensations.rate.amount.value |
Employee.payrollProfile.compensations.timeWorked.unit | N/A |
Employee.payrollProfile.compensations.timeWorked.value | N/A |
Employee.payrollProfile.compensations.multiplier | N/A |
Employee.payrollProfile.compensations.employerCompensation.id | workerManagementEmployees.edges.node.payrollEmployeeDetails.compensations.employerCompensation.id |
Employee.payrollProfile.compensations.employerCompensation.name | workerManagementEmployees.edges.node.payrollEmployeeDetails.compensations.employerCompensation.name |
Employee.payrollProfile.compensations.employerCompensation.active | N/A |
Employee.payrollProfile.compensations.employerCompensation.amount | N/A |
Employee.payrollProfile.compensations.employerCompensation.timeWorked.unit | N/A |
Employee.payrollProfile.compensations.employerCompensation.timeWorked.value | N/A |
Employee.payrollProfile.compensations.employerCompensation.multiplier | N/A |
Employee.payrollProfile.compensations.employerCompensation.statutoryCompensationPolicy | workerManagementEmployees.edges.node.payrollEmployeeDetails.compensations.employerCompensation.type.value |
Field in Beta API | Field in new API |
---|---|
Employee.payrollProfile.deductions.id | workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.id |
Employee.payrollProfile.deductions.active | workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.active |
Employee.payrollProfile.deductions.amount.percentage | Derived from workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.amount.type |
Employee.payrollProfile.deductions.amount.value | workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.amount.value |
Employee.payrollProfile.deductions.annualMaximumAmount | workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.employeeContributions.capping.amount.value |
Employee.payrollProfile.deductions.employerDeduction.id | workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.deductionPolicy.id |
Employee.payrollProfile.deductions.employerDeduction.name | workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.deductionPolicy.name |
Employee.payrollProfile.deductions.employerDeduction.statutoryDeductionPolicy | workerManagementEmployees.edges.node.payrollEmployeeDetails.deductions.deductionPolicy.statutoryType.value |
Field in Beta API | Field in new API |
---|---|
employerBenefit.id | payrollEmployerInfo.benefits.edges.node.id |
employerBenefit.name | payrollEmployerInfo.benefits.edges.node.name |
N/A | payrollEmployerInfo.benefits.edges.node.category.description |
employerBenefit.statutoryBenefitPolicy | payrollEmployerInfo.benefits.edges.node.statutoryType.value |
Field in Beta API | Field in new API |
---|---|
Employee.payrollProfile.benefits.id | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.id |
Employee.payrollProfile.benefits.active | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.active |
Employee.payrollProfile.benefits.employerSetup.amount.value | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.employerContribution.amount.value |
Employee.payrollProfile.benefits.employerSetup.amount.percentage | Derived from workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.employerContribution.amount.type |
Employee.payrollProfile.benefits.employerSetup.cappings.amount | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.employerContribution.capping.amount.value |
Employee.payrollProfile.benefits.employerSetup.cappings.timeInterval | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.employerContribution.capping.frequency |
Employee.payrollProfile.benefits.employeeSetup.amount.value | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.employeeContribution.amount.value |
Employee.payrollProfile.benefits.employeeSetup.amount.percentage | Derived from workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.employeeContribution.amount.type |
Employee.payrollProfile.benefits.employeeSetup.cappings.amount | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.employeeContribution.capping.amount |
Employee.payrollProfile.benefits.employeeSetup.cappings.timeInterval | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.employeeContribution.capping.frequenct |
Employee.payrollProfile.benefits.employerBenefit.id | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.deductionPolicy.id |
Employee.payrollProfile.benefits.employerBenefit.name | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.deductionPolicy.name |
Employee.payrollProfile.benefits.employerBenefit.statutoryBenefitPolicy | workerManagementEmployees.edges.node.payrollEmployeeDetails.benefits.deductionPolicy.category.value |
Field in Beta API | Field in new API |
---|---|
employerPension.id | payrollEmployerInfo.pensions.edges.node.id |
employerPension.name | payrollEmployerInfo.pensions.edges.node.name |
N/A | payrollEmployerInfo.pensions.edges.node.category.description |
employerPension.statutoryPensionPolicy | payrollEmployerInfo.pensions.edges.node.statutoryType.value |
Old ID / employerPension.id | payrollEmployerInfo.pensions.edges.node.alternateIds.id |
Field in Beta API | Field in new API |
---|---|
Employee.payrollProfile.pensions.id | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.id |
Employee.payrollProfile.pensions.active | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.active |
Employee.payrollProfile.pensions.employerSetup.amount.value | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.employerContribution.amount.value |
Employee.payrollProfile.pensions.employerSetup.amount.percentage | Derived from workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.employerContribution.amount.type |
Employee.payrollProfile.pensions.employerSetup.cappings.amount | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.employerContribution.capping.amount.value |
Employee.payrollProfile.pensions.employerSetup.cappings.timeInterval | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.employerContribution.capping.frequency |
Employee.payrollProfile.pensions.employeeSetup.amount | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.employeeContributions.amount.value |
Employee.payrollProfile.pensions.employeeSetup.cappings.amount | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.id.employeeContributions.capping.amount.value |
Employee.payrollProfile.pensions.employeeSetup.cappings.timeInterval | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.id.employeeContributions.capping.frequency |
Employee.payrollProfile.pensions.employerPension.id | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.deductionPolicy.id |
Employee.payrollProfile.pensions.employerPension.name | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.deductionPolicy.name |
Employee.payrollProfile.pensions.employerPension.statutoryPensionPolicy | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.deductionPolicy.statutoryType.value |
Employee.payrollProfile.pensions.customFields.name (used to derive outside contributions) | N/A |
Employee.payrollProfile.pensions.customFields.value (used to derive outside contributions) | workerManagementEmployees.edges.node.payrollEmployeeDetails.pensions.employeeExternalContribution.amount.value |
Field in Alpha API | Field in new API |
---|---|
Employee.id | workerManagementEmployees.edges.node.id |
Employee.firstName | workerManagementEmployees.edges.node.firstName |
Employee.lastName | workerManagementEmployees.edges.node.lastName |
Employee.displayName | N/A |
Employee.middleName | workerManagementEmployees.edges.node.middleName |
Employee.birthDate | workerManagementEmployees.edges.node.limitedAccessFields.birthDate |
Employee.contactMethods.type | N/A |
Employee.contactMethods.primary | workerManagementEmployees.edges.node.contactInfo.primaryAddress |
Employee.contactMethods.active | N/A |
Employee.contactMethods.email | workerManagementEmployees.edges.node.contactInfo.primaryEmailAddress.email |
Employee.contactMethods.phone | workerManagementEmployees.edges.node.contactInfo.primaryPhoneNumber.number |
Employee.contactMethods.fax | N/A |
Employee.contactMethods.mobile | N/A |
Employee.contactMethods.address.streetAddress1 | workerManagementEmployees.edges.node.contactInfo.primaryAddress.streetAddress1 |
Employee.contactMethods.address.streetAddress2 | workerManagementEmployees.edges.node.contactInfo.primaryAddress.streetAddress2 |
Employee.contactMethods.address.state | workerManagementEmployees.edges.node.contactInfo.primaryAddress.state |
Employee.contactMethods.address.country | workerManagementEmployees.edges.node.contactInfo.primaryAddress.country |
Employee.contactMethods.address.city | workerManagementEmployees.edges.node.contactInfo.primaryAddress.city |
Employee.contactMethods.address.zipcode | workerManagementEmployees.edges.node.contactInfo.primaryAddress.zipcode |
Employee.taxIdentifiers.taxIdentifierType | N/A |
Employee.taxIdentifiers.value | workerManagementEmployees.edges.node.taxIdentifiers.value |
Employee.employmentDetail.active | workerManagementEmployees.edges.node.employmentStatus.detailedStatus (String) OR employmentStatus.active (Boolean) |
Employee.employmentDetail.hireDate | workerManagementEmployees.edges.node.employmentDetail.hireDate |
Employee.employmentDetail.terminationDate | workerManagementEmployees.edges.node.employmentDetail.terminationDate |
Employee.employmentDetail.employmentStatus | workerManagementEmployees.edges.node.employmentStatus.detailedStatus |
Employee.payrollProfile.preferredAddress.streetAddress1 | N/A |
Employee.payrollProfile.preferredAddress.streetAddress2 | N/A |
Employee.payrollProfile.preferredAddress.state | N/A |
Employee.payrollProfile.preferredAddress.country | N/A |
Employee.payrollProfile.preferredAddress.city | N/A |
Employee.payrollProfile.preferredAddress.zipcode | N/A |
Employee.payrollProfile.preferredPhone | N/A |
Employee.payrollProfile.preferredEmail | N/A |
Employee.payrollProfile.workAddress.streetAddress1 | workerManagementEmployees.edges.node.payrollEmployeeDetails.workLocation.addressComponents.streetAddressLine1 |
Employee.payrollProfile.workAddress.streetAddress2 | workerManagementEmployees.edges.node.payrollEmployeeDetails.workLocation.addressComponents.streetAddressLine2 |
Employee.payrollProfile.workAddress.state | workerManagementEmployees.edges.node.payrollEmployeeDetails.workLocation.addressComponents.state |
Employee.payrollProfile.workAddress.country | workerManagementEmployees.edges.node.payrollEmployeeDetails.workLocation.addressComponents.country |
Employee.payrollProfile.workAddress.city | workerManagementEmployees.edges.node.payrollEmployeeDetails.workLocation.addressComponents.city |
Employee.payrollProfile.workAddress.zipcode | workerManagementEmployees.edges.node.payrollEmployeeDetails.workLocation.addressComponents.zipcode |
Employee.payrollProfile.paySchedule.id | N/A |
Employee.payrollProfile.paySchedule.name | workerManagementEmployees.edges.node.payrollEmployeeDetails.paySchedule.name |
Employee.payrollProfile.paySchedule.initialPayDate | workerManagementEmployees.edges.node.payrollEmployeeDetails.paySchedule.referenceDates.initialPayDate |
Employee.payrollProfile.paySchedule.frequency | workerManagementEmployees.edges.node.payrollEmployeeDetails.paySchedule.frequency |
Payslip.id | payrollPayslips.edges.node.id |
---|---|
Payslip.payDate | payrollPayslips.edges.node.payDate |
Payslip.payrollProcessDateTime | N/A |
Payslip.grossPay.amount | payrollPayslips.edges.node.grossPay.currentAmount |
Payslip.grossPay.yearToDateAmount | payrollPayslips.edges.node.grossPay.yearToDateAmount |
Payslip.contributions.type | N/A |
Payslip.contributions.description | N/A |
Payslip.contributions.contributionAmount.amount | N/A |
Payslip.contributions.contributionAmount.yearToDateAmount | N/A |
Payslip.deductions.type | payrollPayslips.edges.node.deductions.employeeDeduction.deductionPolicy.statutoryType.value |
Payslip.deductions.description | payrollPayslips.edges.node.deductions.employeeDeduction.deductionPolicy.name |
Payslip.deductions.deductionAmount.amount | For employee contributions, deductions.employeeContributionAccumulationAmount.currentAmount.value. For employer contributions,deductions.payrollPayslips.edges.node.employerContributionAccumulationAmount.currentAmount.value |
Payslip.deductions.deductionAmount.yearToDateAmount | For employee contributions, derive from (deductions.employeeContributionAccumulationAmount.toDateAmounts.value and deductions.employeeContributionAccumulationAmount.toDateAmounts.toDateAmountType). For employer contributions, derive from (deductions.employerContributionAccumulationAmount.toDateAmounts.value and deductions.employerContributionAccumulationAmount.toDateAmounts.toDateAmountType) |
Payslip.compensations.type | payrollPayslips.edges.node.type |
Payslip.compensations.description | N/A |
Payslip.compensations.timeWorked.unit | payrollPayslips.edges.node.compensations.calculatedCompensationDetail.hours |
Payslip.compensations.timeWorked.value | payrollPayslips.edges.node.compensations.calculatedCompensationDetail.rate.amount.value |
Payslip.compensations.compensationAmount.amount | payrollPayslips.edges.node.compensations.calculatedCompensationAccumulationAmount.currentAmount.value |
Payslip.compensations.compensationAmount.yearToDateAmount | Derive from payrollPayslips.edges.node.compensations.calculatedCompensationAccumulationAmount.toDateAmounts.value AND payrollPayslips.edges.node.compensations.calculatedCompensationAccumulationAmount.toDateAmounts.toDateAmountType |
Payslip.paySchedule.id | N/A |
Payslip.paySchedule.name | workerManagementEmployees.edges.node.payrollEmployeeDetails.paySchedule.name |
Payslip.paySchedule.initialPayDate | workerManagementEmployees.edges.node.payrollEmployeeDetails.paySchedule.referenceDates.initialPayDate |
Payslip.paySchedule.frequency | workerManagementEmployees.edges.node.payrollEmployeeDetails.paySchedule.frequency |
Payslip.payPeriod.beginDate | payrollPayslips.edges.node.payPeriod.beginDate |
Payslip.payPeriod.endDate | payrollPayslips.edges.node.payPeriod.endDate |