X12 150 — Tax Rate Notification
The 150 transmits the official update of a tax rate from a jurisdiction to the actors that must apply it: merchants, employers, payroll providers.
Purpose
The 150 documents the official tax rate change (sales tax, use tax, unemployment insurance rate, withholding rate) issued by a state or local tax authority. It carries the jurisdiction (state, county, city), tax category, old rate, new rate, effective date, and the standardized jurisdiction code (FIPS, GeoTaxCode).
It feeds point-of-sale systems, payroll engines (ADP, Workday), and third-party services (Avalara, Vertex). Acknowledged by 997; no business response — the merchant simply applies the new rate from the effective date.
Envelope structure
The 150 travels within the three X12 envelope levels (ISA/IEA,
GS/GE with functional group TR, and ST/SE).
Didactic example in release 004010:
ISA*00* *00* *ZZ*CADOR *ZZ*MERCHANT *260514*1500*U*00401*000000150*0*P*>~
GS*TR*CADOR*MERCHANT*20260514*1500*1*X*004010~
ST*150*0001~
BGN*00*TR-2026-0042*20260514~
N1*PR*CALIFORNIA DEPT OF TAX*24*EIN-CADTFA~
LX*1~
REF*ZZ*FIPS-06-001-ALAMEDA~
REF*ZZ*SALES-TAX-DISTRICT~
AMT*PE*0.0925~
DTM*009*20260701~
LX*2~
REF*ZZ*FIPS-06-075-SAN-FRANCISCO~
REF*ZZ*SALES-TAX-DISTRICT~
AMT*PE*0.0875~
DTM*009*20260701~
SE*12*0001~
GE*1*1~
IEA*1*000000150~ Common segments
- Header —
ST,BGN. - Authority —
N1*PR(Taxing Authority). - Rate — repeated
LXloop:REF*ZZ(FIPS / jurisdiction),REF*ZZ(tax category),AMT*PE(decimal rate),DTM*009(effective date). - Old rate —
AMT*N9optional for the previous rate, useful for traceability. - Summary —
SE.
Common pitfalls
- Decimal vs percent:
AMT*PEis a decimal (0.0925 = 9.25%); sending 9.25 multiplies the rate by 100 and breaks compliance. - Retroactive effective date: a 150 with a past
DTM*009is technically valid but operationally dangerous — already-invoiced transactions must be readjusted via 812 (Credit/Debit Adjustment), not by 150 alone. - Geocoding: a FIPS code alone does not cover special districts (transit, hospital); add a
REF*ZZGeoTaxCode (Avalara) or TaxRateCode (Vertex) if the jurisdiction includes those layers.
Related transactions
Documentation
The code 150 and the name Tax Rate Notification are public and listed on x12.org/products/transaction-sets. The complete structure of loops, qualifiers and code lists is distributed by DISA via the proprietary Implementation Guides (TR3). ediverse.io covers only public concepts, the envelope and didactic examples.