How Gusto Processes Billions Of Dollars In Annual Payroll

1,820
Gusto
Gusto is delightful, modern payroll. Our comprehensive payroll service enables businesses to get set up and run payroll in minutes, from any web enabled device. All government payroll taxes and reporting are taken care of automatically and paperlessly. We've processed millions of dollars in payroll and our customers span a wide variety of businesses, from flower shops to technology start-ups. We would be delighted to provide you modern payroll.
Background

ZenPayroll is on a mission to help small business owners succeed by providing a simple and intuitive way to pay and appreciate their employees. We automate the complexities of tax payments and form filings and let small business owners focus on running their business. We currently service over 10,000 companies across the country and we are processing billions of dollars in annual payroll.

I joined ZenPayroll almost three years ago as the first engineering hire, and I currently lead the engineering team that keeps our clients compliant and builds tools to make sure our customer care team can do their job efficiently. Before joining ZenPayroll, I spent a year working with Pivotal labs doing Ruby on Rails consulting. Prior to that I was in a completely different industry and worked at a nuclear power plant after finishing my degree in electrical engineering.

Architecture

Our basic stack is Ruby on Rails and MySQL. We originally chose Rails because of the speed at which we could get our app up and running, and it is still working out great for us. We also use AWS services extensively in combination with Chef, having recently migrated to AWS from Rackspace. On the front end, most of our site is using Backbone, but we’ve been moving more and more to ReactJS.

Background processing is an integral piece to our system, and we have built a robust out-of-band infrastructure using Sidekiq Pro. A lot is happening behind the scenes and running payroll is just the beginning of the process. Throughout the day, payrolls are created, contractors are paid, bank accounts are verified via test transactions, and reversals are processed. It’s critical to our system to ensure all these actions are properly accounted for. Every time one of these actions is taken, we create bank transactions (via ACH) that tell our bank where money should be moved.

Timing is critical when paying employees, so we adhere to a strict schedule when communicating with our bank. At periodic intervals throughout the day, we batch these transactions by type, and consolidate them into files that the bank can process. Before our evening deadline, we upload all files created throughout the day to the bank so employees will be paid out the following day. The last part of the daily process requires us to confirm acknowledgement files provided from the bank and reconcile any discrepancies.

Most of the time, that is all we need to make sure our customers are properly taken care of, but occasionally bank transactions fail due to incorrect bank numbers or insufficient funds. If a transaction is unsuccessful, our bank sends us a response for the transaction and an associated error code, usually 2-3 days later. Every morning we download those files, stop any pending payments, and contact the administrator of the account to resolve the issue.

Sidekiq has been a great tool for us to robustly support our customers by allowing us to gracefully handle errors and highly parallelize our processing to scale with us as we grow.

Upcoming Architecture Changes

ZenPayroll is at a really exciting point right now, because the company and our customer base is growing so rapidly. In order to accommodate this growing user base as well as our expanding product vision, we’re currently in the process of architecting a system that can scale robustly. People depend on us for their livelihood, and we take that trust very seriously.

At a high level, we’re moving towards a service-oriented architecture (SOA). Currently our fraud and balance tracking systems are separated out into services, and we’ll be building out additional services in the coming months. More specifically, we’re in the middle of defining how these services will communicate with each other. We evaluated a handful of message-queuing systems and ultimately selected AWS’s SQS/SNS service. We’ve also been experimenting with Grape and have had a lot of success so far using it for our internal APIs. Grape makes it easy to implement our internal APIs, and we’re writing a gem, dubbed GrapeEater, that will make it easy to communicate with Grape APIs. GrapeEater consumes a Grape API and programmatically generates and maintains a client gem for that API. On startup, the client gem dynamically generates a request method for each endpoint from JSON swagger documentation generated for the Grape API. We hope to open source GrapeEater very soon!

So far, all of our services have also been in Rails, which allows developers to move around code bases easily. We haven’t yet found a good use case to use something else - but that could always change.

On the frontend, we’re transitioning to using ReactJS more heavily. Our original customer dashboard is a thick Backbone app that consumes our Rails API. Our Backbone paradigm has been effective over the past two years, but as we have added more and more features, we have found that our views have started to become a little unmanageable. While Backbone has provided us with great data management and API interaction, we found that we need a more powerful tool for creating UI.

We're adopting ReactJS due to its declarative nature of creating user experiences, high performance, and ease of integration with our existing Backbone models and collections. We use Reflux to bolster our frontend architecture, as well as ImmutableJS to more easily reason about our data structures. Our new React paradigm has been a breath of new life into both our frontend development patterns and UI.

Scaling Challenges

One of the most intensive times for payroll is during the end of the quarter (and especially the end of the year!). We’re doing extensive number crunching to make sure everyone’s taxes are correct and paid when they should. We also generate tens of thousands of form PDFs (using Prawn) to file on behalf of our clients and their employees and contractors.

This is where we’ve really been able to reap the benefits of Sidekiq. We’ve moved from a collection of rake tasks to aggressively parallelizing these jobs with hundreds of sidekiq workers. Our end-of-quarter reconciliation process used to take a few hours (with a fraction of the companies). Now we can process in a matter of minutes!

Engineering Team

Currently we’re at 20 engineers, split across 5 teams - with focuses on security, fraud, state expansion, compliance tools, and product features. We believe that small, focused, autonomous teams are the most effective. At the same time, ZenPayroll has an incredibly collaborative culture, and there are many cross-team opportunities. Most of our team is comfortable working through the whole stack, and if they’re not, we’re helping them learn.

We recently announced our Series B and #1 Best Place to work in the Bay Area (for 50-99 employees), and we’re growing fast! We’re hiring for pretty much all positions currently, and in particular are looking for strong engineers who are passionate about our mission to support small businesses. We’d love to hear from you!

Gusto
Gusto is delightful, modern payroll. Our comprehensive payroll service enables businesses to get set up and run payroll in minutes, from any web enabled device. All government payroll taxes and reporting are taken care of automatically and paperlessly. We've processed millions of dollars in payroll and our customers span a wide variety of businesses, from flower shops to technology start-ups. We would be delighted to provide you modern payroll.
Tools mentioned in article
Software Engineer, Application Security
Denver

At Gusto, we serve over 60,000 small business customers with our Payroll, Benefits, and HR software suite, which allows them to move faster and gives them peace of mind about back-office tasks in their business.

We’re looking for talented and motivated application security engineers with 7+ years of experience. As part of our AppSec team, you will build tools that will help our product engineers effortlessly write code that keeps our customers’ information secure. If you’re interested in building secure software with far-reaching effects in our modern economy, join us!

Gusto processes billions of dollars in payroll for hundreds of thousands of employees. Additionally, our clients trust us with a huge amount of personally identifiable information (PII) and protected health information (PHI). Our customers put a lot of trust in us to be good stewards of this information. As a result, protecting our clients’ PII and PHI is one of the top considerations in anything we do at Gusto.

Here’s what you’ll do day-to-day:

  • Work with our product engineers to keep our web applications secure.
  • Develop easy-to-use tools and light-weight processes that will help our engineers seamlessly write secure code.
  • Be involved early in the software development life cycle so that security is built into our architecture.
  • Train engineering teams in secure coding best practices.
  • Research the latest threats and exploits and help our engineers secure the product against those threats.
  • Automate and integrate security into CI/CD pipelines, such as static code analysis and dynamic code analysis.
  • Run internal red team exercises.
  • Coordinate and manage 3rd party pen-testers and bug bounty programs.
  • Ensure proper management, encryption, and separation of secrets and keys.
  • Share our security learnings and best practices with the outside world, so we can make the world more secure.

Here’s what we’re looking for:

  • 7+ years experience in an application security role.
  • Familiarity with cloud environments like AWS.
  • Familiarity with dynamic languages and modern web development frameworks. We use Ruby, Javascript, Rails, and React.
  • A hands-on engineer who cares deeply about both the technological and social aspects of building a secure organization
  • Ability to partner well with cross-functional stakeholders.
  • Always thinking about attack vectors in which PII and PHI can be compromised.
  • Relevant security certifications (OSCP, CEH, GPEN, CISSP, etc.) are a plus.

Learn more about the team:

About Gusto

Our customers come from all walks of life and so do we. We hire people from a wide variety of backgrounds, not just because it’s the right thing to do, but because it makes our company stronger. If you share our values and our enthusiasm for small businesses, you will find a home at Gusto.

Gusto’s mission is to create a world where work empowers a better life. By making complicated, impersonal business tasks simple and personal, Gusto is reimagining HR, payroll, and benefits for over 60,000 companies nationwide. Gusto has offices in San Francisco and Denver and the company’s investors include Google Capital, General Catalyst, Kleiner Perkins Caufield & Byers, as well as the founders of Instagram, Stripe, Nest, PayPal, Yelp, Dropbox, and Eventbrite, among others.

Comments
Open jobs at Gusto
Data Engineering
San Francisco

Gusto is fundamentally changing how the world works by empowering everyone to put people first. Gusto reimagines payroll, benefits, HR, and personal finance by automating the most complicated, impersonal business tasks and making them simple and delightful.

We are proud to have built a product that our customers love, and we’re looking for talented and motivated data engineers to join our growing team in the San Francisco office,

Here’s what you’ll do:

  • Be an owner as you architect, build, and refine our data infrastructure technologies, using our development workflow — the outcome of your work will drive decisions that affect billions of dollars of transactions
  • Build and refine a fault-tolerant data ingestion pipeline into our data warehouse, while helping guide the decisions about the future of our data infrastructure
  • Thoroughly evaluate edge cases, ambiguities, and architectural scalability
  • Write complex and efficient queries to transform raw data sources into easily accessible models for our teams (e.g., Product, Growth, Finance, Risk)
  • Work with data scientists to productize and develop predictive modeling pipelines
  • Care deeply about helping millions of small business owners focus on what they love
  • Be surrounded by people who are doing the best work of their lives and loving every moment of it

Here’s what we’re looking for:

  • At least 5 years of software engineering experience (Python, Ruby or Java), with at least 2 years experience in a data focused role
  • Passion for creating data infrastructure technologies from scratch using the right tools for the job
  • Experience building and maintaining a data warehouse in production environments
  • Experience with AWS tools
  • Expertise in building out data pipelines, efficient ETL design, implementation, and maintenance
  • Experience with systems for transforming large datasets such as Spark and Hadoop
  • Ability to turn vague requirements into clear deliverables with minimal guidance
  • Exposure to statistical and data mining techniques

ABOUT GUSTO

Gusto offers payroll, benefits, and workers’ compensation to small businesses across the United States, from bike shops in Virginia to tech startups in San Francisco. Our investors include top venture capital firms like Google Capital and Kleiner Perkins Caufield & Byers, plus the founders of Instagram, Stripe, and more. To learn more about our values, benefits, and life at Gusto, visit gusto.com/careers.

 

IT Client Platform Engineer
San Francisco

Gusto is fundamentally changing how the world works by empowering everyone to put people first. Gusto reimagines payroll, benefits, HR, and personal finance by automating the most complicated, impersonal business tasks and making them simple and delightful.

We are proud to have built a product that our customers love, and we’re looking for talented engineers across the board to join our growing team.

Here’s what you’ll do day-to-day:

  • Create the best user endpoint experience
  • Manage our fleet of Mac and Windows endpoints
  • Create efficiencies and economies of scale by delivering repeatable automated solutions
  • Improve the security of our endpoint fleet

Here’s what we’re looking for:

  • Strong knowledge in a scripting language (Ruby or Python)
  • 3+ year professional experience in managing 250+ endpoints (Mac, Windows)
  • Excellent technical writing and communication skills
  • Comfortable with full-stack projects and able to build proof of concepts quickly
  • Understands the importance of security and compliance when working with personal data

Here's more about the team with a few highlights from our Engineering Blog:

This is a full-time role based in our San Francisco office.

Find out why we’re the #1 place to work in San Francisco! To learn more about our values, life at Gusto, benefits, and perks, visit gusto.com/careers.

ABOUT GUSTO

Gusto has offices in San Francisco and Denver and its investors include Google Capital, General Catalyst, Kleiner Perkins Caufield & Byers, and the founders of Instagram, Stripe, Nest, PayPal, Yelp, Dropbox, and Eventbrite, among others. 

Software Engineering, Development Tools
San Francisco

Gusto is fundamentally changing how the world works by empowering everyone to put people first. Gusto reimagines payroll, benefits, HR, and personal finance by automating the most complicated, impersonal business tasks and making them simple and delightful.

We are proud to have built a product that our customers love, and we’re looking for talented engineers across the board to join our growing team.

Here’s what you’ll do day-to-day:

  • Ensure our services communicate with each other seamlessly, have minimal downtime, and recover quickly.
  • Collaborate with the rest of the engineering team on coming up with best practices for writing, maintaining and running reliable services.
  • Improve our infrastructure setup and deployment strategies.
  • Impact the productivity and happiness of our entire team with the tools you build. You'll be the daily recipient of hugs and high-fives from our engineering and support teams.
  • Collaborate with the tools development team to improve our deployment pipeline.
  • Pager-duty rotation: Never fear! Most issues occur during work hours.
  • Work with our product engineering teams to ensure high performance of our services.

Here’s what we’re looking for:

  • 3+ years of experience in a Platform or SRE role using a Ruby/Chef/AWS stack or similar technologies
  • Experience developing best practices to build out and maintain secure infrastructure, CI systems, service oriented applications, and more
  • Enjoys working and deploying technologies such as Chef, AWS, Ruby, Rails, MySql, and Redis
  • Loves building tools enabling engineers to move faster, while maintaining security
  • Always have a background process running in your brain asking: "How can I automate this?"
  • Understands the importance of security and compliance when working with personal data
  • Tests infrastructure changes thoroughly and like to double and triple check everything

Here's more about the team with a few highlights from our Engineering Blog:

Find out why we’re the #1 place to work in San Francisco! To learn more about our values, life at Gusto, benefits, and perks, visit gusto.com/careers.

ABOUT GUSTO

Gusto has offices in San Francisco and Denver and its investors include Google Capital, General Catalyst, Kleiner Perkins Caufield & Byers, and the founders of Instagram, Stripe, Nest, PayPal, Yelp, Dropbox, and Eventbrite, among others.

 

Software Engineering, Full-Stack
Denver

Gusto is fundamentally changing how the world works by empowering everyone to put people first. Gusto reimagines payroll, benefits, HR, and personal finance by automating the most complicated, impersonal business tasks and making them simple and delightful.

We’re looking for talented and motivated engineers across all levels of experience. Gusto engineers own entire features in our system. You'll influence the initial specs for the feature, build/modify the backend APIs (mostly Rails), write the front-end code that consumes said APIs (mostly Backbone.js and React.js), and be responsible for ongoing improvements once the feature is deployed.

Here’s what you’ll do:

  • Own what you build as you architect, test, and refine the Gusto platform
  • Tackle a wide variety of technical problems throughout the stack and contribute daily to all parts of our code base, using our development workflow
  • Work with our product and design teams to understand customer pain points, come up with solutions, and then prototype, iterate and launch daily
  • Be surrounded by individuals who are doing the best work of their lives and loving every moment of it

Here’s what we’re looking for:

  • Passion for creating memorable experiences for customers
  • Interest in technologies such as Coffeescript, Backbone.js, React.js, Ruby, and Rails
  • Appreciation for a test-driven, code review culture
  • Successful track record building distributed, high-throughput applications that scale
  • Experience turning wireframes and mockups into elegantly executed code
  • Well-structured, easily maintainable, well-documented code that balances beauty and pragmatism

ABOUT GUSTO

Gusto offers payroll, benefits, and workers’ compensation to small businesses across the United States, from bike shops in Virginia to tech startups in San Francisco. Our investors include top venture capital firms like Google Capital and Kleiner Perkins Caufield & Byers, plus the founders of Instagram, Stripe, and more. To learn more about our values, benefits, and life at Gusto, visit gusto.com/careers.

Verified by
You may also like
E-Commerce at Scale: Inside Shopify's Tech Stack
How SendGrid Scaled to 40 Billion Emails Per Month
How Stream Built a Modern RSS Reader With JavaScript
How Heap Built an Analytics Platform that Auto-Tracks Every User Event