Payroll in its entirety is rather complex, but the API is designed to shield as much complexity as possible from the end user, without sacrificing functionality. This section gives a birds-eye view of the objects that make up the Gusto system.
Let’s start with companies and employees. Companies themselves are, naturally, a collection of one to hundreds of employees. Employee data, on the payroll side, is relatively static. Compensation information, addresses, and tax information changes rather infrequently once set.
To onboard a company for payroll, key inputs include company details (e.g. name, EIN), location, bank accounts, and other information. To onboard an employee, key inputs include employee details (e.g. name, addresses), pay rates (salaried or hourly), benefits deductions, tax withholding, and so on. Once set up, these change rather infrequently.
Companies can have multiple work locations, across multiple states, but everyone on the same pay schedule gets paid at the same time. Companies can have multiple pay schedules which means there can be multiple pay dates for Employees.
Now let’s talk about the key inputs to payroll.
Regular payrolls are tied to a specific pay period and all associated information - paid time off (vacation, sick, holiday, custom policies), hours worked, bonuses, commissions, etc. - should be applied to that time range. In a regular payroll, the Company payroll admin sets the pay schedule (e.g. monthly, bi-monthly) and the start date. From there, each payroll is associated with a specific pay period with a start and end date, to make sure there are no overlapping dates.
It’s important to recognize that a company can have multiple pay schedules, typically one for salaried employees and another one for hourly employees.
Pay periods are the foundation of payroll. Compensation, time and attendance, taxes, and expense reports all rely on when they happened. These are the combination of a company, a subset of its employees, and a time range. Not every employee at a company will be a part of every payroll. Pay periods have a
start_date and an
end_date. To begin submitting information for a given payroll, we need to agree on the time period.
Majority of payrolls are run regularly, while some are ‘off-cycle’ to take care of one-off events such as corrections. Off-cycle payrolls default to using the same withholding rates, deductions, and contributions made in regular payrolls.
It all starts with what an employer owes an employee: an employee’s gross pay. Gross pay is the amount of money employees receive before any taxes and deductions are taken out. An employee can be salaried or hourly, and also receive additional earnings throughout the course of their employment. We refer to these earnings as compensation in the API. Salaries and additional earnings such as bonuses, commissions, and tips are
fixed_compensations and wages calculated by the hour are referred to as
flsa_status from a compensation endpoint to determine if an employee is hourly or salaried.
Next, employee pre-tax deductions such as health insurance are subtracted from gross pay. Then, federal, state and local taxes are calculated from that, depending on where the employee worked. From there, post-tax deductions such as garnishments are subtracted and reimbursable expenses are added. To sum it up, net pay is what the employee takes home, after the voluntary and/or mandatory deductions and taxes are subtracted, and can be received via ACH direct deposit or physical check.
With the exception of child support, Gusto does not debit for garnishments on behalf of the user, so the user will be liable to make this payment from their end. For this reason, we do not surface garnishments in the payroll totals (except child support) so you'll need to examine individual employees in the payroll response for
deductions. These will be separate line items from
employee_benefits_deductions. Gusto remits payment for most U.S States except South Carolina, US Territories, and Tribal Support Agency.
Once the payroll admin has reviewed employee pay and employer cost, they can submit payroll, which will trigger the movement of money from the Company’s bank account to the Employees and tax agencies. At this point, it will be nontrivial to cancel payroll.
To find out more about the different timelines used to process payments by direct deposit, refer to this help center article.
Gusto will initiate up to 4 separate debit transactions from a customer's bank account after each payroll is submitted:
- Employee pay(received in direct deposit) - returned as
net_pay_debitin the ‘totals’ object of the payrolls endpoints
- Employee reimbursements - returned as
- Employee and employer payroll taxes - returned as
- Child support (if applicable) - returned as
company_debit in the
payrolls response should be the total company debit for the specified payroll (all 4 combined).
We also support owner’s draws which are a tax free transfer of money from the company to an owner. These wages are not subject to payroll tax filing and deposits, but are instead taxed on the individual level with annual tax returns. Typically owners of Sole Proprietorships and LLCs may choose to use this type of payment. These types of payments are returned in
Updated almost 2 years ago