Getting California sales tax right in NetSuite and your CRM

A California cloud hosting company quotes in their CRM and invoices in NetSuite. Both systems calculate California sales tax, and both need to land on the same rate. When the quote says one number and the invoice says another, someone in finance has to stop and figure out why, and the customer notices.

That is what kept happening. Over the past year, 31% of their taxable invoices were recorded with the wrong tax.

Where the rates went wrong

The client uses NetSuite's Legacy Tax engine. For US addresses, Legacy Tax can look up a rate from the shipping address. Most of the time that works.

California is harder than most states. On top of the statewide base rate, cities, counties and special districts add their own district taxes. Those district lines don't follow ZIP codes, so one city and ZIP combination can cover streets in more than one district, each with its own rate.

Legacy Tax geolocation only looks at city and ZIP. When that pair maps to more than one tax group, picking the right one takes the street address, and Legacy Tax can't go to that level. It takes the first tax group in the list. For this client, that put the wrong rate on some invoices, and the CRM's rate didn't match either.

The source of truth: CDTFA

The California Department of Tax and Fee Administration (CDTFA) publishes the official rate for any address in the state, down to the street address. It offers a free rate lookup that can be called from another system, so there is no subscription to pay for. That street-level detail is exactly what Legacy Tax was missing.

If the CDTFA says an address is in a given district at a given rate, that is the rate the state expects you to charge. So we made it the one rate both systems use.

What we built

  1. The CRM asks the CDTFA. When a rep enters or updates an address in the CRM, the CRM calls the CDTFA lookup and gets the rate back right away. The quote uses that rate.

  2. A matching table connects the CDTFA rates to NetSuite. NetSuite Legacy Tax works with tax groups, and each group adds up to a total rate. We built a table that maps every rate the CDTFA can return to the NetSuite tax group with the same rate and jurisdictions.

  3. NetSuite uses the mapped tax group. The tax group from the table goes into the Tax Item field on the transaction. That overrides the geolocation lookup, so the invoice carries the same rate as the quote.

Using AI to build the table

The matching table was the tedious part. California has hundreds of district tax combinations, and NetSuite had its own list of tax groups with names that didn't line up neatly with the CDTFA's.

We used Claude, an AI assistant, to compare the two lists and propose a match for each CDTFA rate. Then the client tested it the way they work: they created a batch of new customers in the CRM, entered the addresses, synced a batch of invoices to NetSuite, and confirmed that the tax group on each NetSuite invoice matched the exact jurisdiction and rate on the CDTFA website.

This is the kind of AI use we like: a well-defined comparison with a clear right answer, and a person checking the output before it touches an invoice.

What changed

  • Quotes and invoices show the same California rate.

  • Addresses that share a city and ZIP with another tax district get the rate for their street, not the first one on a list.

  • Finance stopped chasing mismatches between the CRM and NetSuite.

Keeping it current

California district rates change, usually at the start of a quarter. The CDTFA lookup always returns the current rate, so the CRM side needs no upkeep. On the NetSuite side, once a quarter we run the State Tax Import to bring in the updated tax groups, refresh the matching table with Claude and load it into the CRM. It is a small quarterly task, not a project.

Does this apply to you?

It might if you sell into California, you use NetSuite Legacy Tax rather than SuiteTax, and you see rate differences between NetSuite and a CRM, quoting tool or ecommerce site. The same idea works with other states that publish an official rate lookup.

If your quotes and invoices disagree on tax, book a call and we'll look at where the rates are coming from.

Need help with this in your NetSuite account?

Book a 30-minute call with a consultant. Or email info@supportyoursuite.com.

Book a 30-minute call
Next
Next

From Carve-Out to Competitive: Why PE-Backed Companies Choose NetSuite