Codes · guide
How do you tell from a payroll deduction code whether it is pre-tax or post-tax?
On Paylocity you read the code's detType, whose names encode it; on Gusto you read boolean flags on the benefit type; on ADP the category is attached to the code and not restated in the API response — so on no system assessed can you infer treatment from the code string itself.
By Eli Wilson · Published
The code string will not tell you. MED125, 401K, HSA — these are labels chosen by
whoever configured the employer, and a code that looks pre-tax can be configured post-tax.
What you need is the attribute hanging off the code, and where that lives differs per system.
Where to look, per system
| System | Where treatment lives | Readable before a write? |
|---|---|---|
| Paylocity | The code’s detType | Yes — GET the company’s deduction codes |
| Gusto | pretax / posttax / imputed booleans on the benefit type | Yes |
| Finch | The BenefitType name itself | Yes |
| ADP Workforce Now | The deduction category on the code | Not documented as returned |
| Merge | Nowhere | No field exists |
Paylocity — read the detType, not the code
Paylocity’s deduction codes pair with a detType that, in its own documentation’s words,
determines how payroll treats the amount. The naming convention makes the split explicit:
HSA EE 125 Pretax Contribution and HSA EE Post Tax Contribution are two different types,
as are 401K and 401k Roth, and 403b TSA and 403b Roth.
Note what this means structurally: DeductionCodeDto itself has no pre-tax field. The
schema carries calculationCode, amount, rate, frequency, payPeriodMaximum,
annualMaximum, w2Box, exemptTaxes, blockedTaxes, benefitType and priority — and
treatment is not among them. You get it from the nested type, one level up.
Gusto — the only place it is a plain boolean
Each benefit type carries pretax, posttax and imputed flags directly, plus healthcare,
retirement and yearly_limit. This is the cleanest model we assessed and it is readable
before you write anything.
ADP — the category is on the code, and stays there
ADP’s API handles the Pre-tax and Post-tax categories, and pre-tax codes are created out of band via an authorization form that ADP processes. The guide does not document the category being returned in the deduction response, so a consumer reading a worker’s deductions has the code but not, from the API, its classification.
Dated evidence table
| Documented evidence | Paylocity’s detType list distinguishes pretax and post-tax variants by name, and DeductionCodeDto contains no treatment field. Gusto publishes pretax/posttax/imputed. Finch’s enum names the split. Merge’s schemas have no indicator. All checked 2026-09-10. |
| Strongest example | The existence of HSA EE 125 Pretax Contribution and HSA EE Post Tax Contribution as separate Paylocity detType values — treatment is a property of the type, not of the amount or the write. |
| What remains unproven | Whether detType is reliably populated in live tenants. Whether ADP surfaces the category anywhere. Whether Gusto’s flags are enforced or merely descriptive. |
The procedure
- Fetch the employer’s code list. Every system with a code-list endpoint exposes the nested type or flags alongside it.
- Read the type, never the code string. Store both, and store which one you derived treatment from.
- Where no field exists, ask and record it as reported. On Merge, and on ADP for reading purposes, this is the only route. Mark it as practitioner-reported so nobody downstream mistakes it for a vendor guarantee.
- Re-check at plan year. Codes are tenant configuration and configuration drifts.
Frequently asked
- Can I use the W-2 box to infer treatment?
- Not reliably. Paylocity's DeductionCodeDto carries a w2Box field, and W-2 reporting correlates with treatment for some deduction types, but the mapping is not one-to-one and several pre-tax types are not W-2-reported at all. Use detType, which states it directly.
- What about exemptTaxes and blockedTaxes?
- Those Paylocity fields are closer to the real answer than w2Box, since a pre-tax deduction is definitionally exempt from specified taxes. But they describe the mechanism rather than declaring the classification, and we have not verified how they are populated in practice.
Source limits
Not verified hands-on. We have not read a live deduction-code list from any tenant, so we have not confirmed that detType is populated and reliable in practice, nor that its naming convention is consistent across all 40 documented types. We do not know whether ADP exposes the deduction category anywhere in the API response, only that the guide does not document it being returned.
Sources checked
| Source | Publisher | Document date | We checked |
|---|---|---|---|
| Pay Setup — Deductions & Earnings (detType list) | Paylocity | — | 2026-09-10 |
| GET Deduction Codes by Company ID — DeductionCodeDto schema | Paylocity | — | 2026-09-10 |
| Gusto Embedded Payroll — benefits reference | Gusto | — | 2026-09-10 |
| Deduction Instruction API Guide for ADP Workforce Now | ADP | 2022-09-22 | 2026-09-10 |
Wrong or out of date? payrolldataspecs@gmail.com — corrections are free. How claims are scored: methodology.