QAD and Gusto integration
QAD runs manufacturing and finance. Gusto runs payroll, HR, and contractor payments for small and mid-size businesses. Connecting the two keeps your workforce and your general ledger in agreement without re-keying. After each Gusto payroll run, the labor cost from gross pay, taxes, and deductions posts into QAD's general ledger, and hires and terminations in Gusto line up with QAD cost centers. ml-connector handles the very different APIs on each side and moves the data on a schedule you control.
What moves between them
The main flow runs from Gusto into QAD. After a payroll is processed, ml-connector reads the Gusto payroll, including gross pay, employer taxes, and deductions broken out by earning type, and posts the resulting labor cost journals into QAD's general ledger against the matching GL accounts and cost centers. Employee records flow the same direction so QAD reflects Gusto hires and terminations. Contractor payments from Gusto can post into QAD as accounts payable entries, the closest analog QAD recognizes. Reference data such as cost centers and locations is aligned so every payroll allocation lands on a valid QAD dimension. Gusto holds no GL postings, so ml-connector never writes ledger entries back into payroll.
How ml-connector handles it
ml-connector stores both credential sets encrypted and runs the Gusto OAuth authorization-code flow per company, since each Gusto token covers only one company. It refreshes the two-hour access token and rotates the single-use refresh token on every call that returns 401, so a customer with several Gusto companies has one token set per company. On the QAD side it accepts the full tenant URL per customer, because QAD publishes no shared base address, and validates entity paths against that instance. Gusto pushes signed webhooks such as payroll.processed and employee.terminated, and ml-connector verifies the HMAC-SHA256 X-Gusto-Signature against the raw body and returns 401 on a bad signature; QAD cloud is pull-only, so the QAD side is polled on a schedule rather than pushed. Earning types, locations, and cost centers are mapped first, so every journal line references a GL account and cost center that already exists in QAD, and Gusto dollar amounts arrive as decimal strings that are parsed without floating-point math. Gusto rate limits at 200 requests per minute and returns HTTP 429 when exceeded, so ml-connector backs off and retries. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized contract manufacturer with about 180 employees runs QAD Adaptive ERP for production, procurement, and finance, and uses Gusto for payroll, benefits, and a roster of seasonal contractors. Before the integration, the finance team downloaded each payroll summary from Gusto and re-entered the labor totals into QAD by hand, splitting them across cost centers from a spreadsheet, then spent the start of every month-end close chasing differences between headcount and the labor accounts in the ledger. With QAD and Gusto connected, each processed payroll posts into QAD automatically, allocated to the right cost center, contractor payments land as AP entries, and employee changes keep the two systems aligned. Month-end close starts with the labor accounts already reconciled, and the manual re-keying step is gone.
What you can do
- Post Gusto payroll journals into QAD's general ledger after every processed run, allocated to the correct cost centers.
- Keep QAD headcount aligned with Gusto hires and terminations.
- Post Gusto contractor payments into QAD as accounts payable entries.
- Map Gusto earning types, locations, and cost centers to QAD GL accounts so payroll lands on valid dimensions.
- Bridge Gusto per-company OAuth and QAD tenant auth, with rate-limit backoff, retries, and a full audit trail.
Questions
- Which direction does data move between QAD and Gusto?
- The main flow is Gusto into QAD. Payroll journals, employee changes, and contractor payments move from Gusto into QAD, while cost centers and locations are aligned so allocations are valid. Gusto has no general ledger concept, so ml-connector never writes ledger entries back into payroll.
- How does the integration handle Gusto's company-scoped OAuth tokens?
- Gusto issues one OAuth token per company since the 2023-05 API version, so a multi-company customer authorizes each company separately. ml-connector runs the authorization-code flow per company and stores one token set for each, refreshing the two-hour access token and rotating the single-use refresh token automatically.
- Does Gusto map cleanly to QAD's GL accounts and cost centers?
- Gusto has no GL account, supplier, or purchase order concept, so the accounting structure lives in QAD. ml-connector maps Gusto earning types, locations, and cost centers to QAD GL accounts and cost centers first, so every payroll journal line references an account and dimension that already exists in QAD.
Related integrations
More QAD integrations
Other systems that connect to Gusto
Connect QAD and Gusto
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started