Sales tax is getting easier! Through the new Automated Sales Tax (AST) experience, you just need to answer few simple questions and QuickBooks Online will know what taxes apply to your business, set them up, and automatically track your sales taxes.
This means that you no longer need to select a tax rate when you create an invoice or other sales transaction. As long as your Sales Tax Center and all applicable tax agencies are set up, the system will automatically do it for you!
FAQ
What is AST?
As of November 10, 2017, all new US QuickBooks Online companies manage sales tax calculations via an Automated Sales Tax (AST) engine. Sales tax is computed automatically on the sales transaction based on the shipping address and the location of the company rather than assigning sales tax manually.
Read more about how QuickBooks Online implements AST:
Read more about using the QuickBooks Online API for Automated Sales Tax below:
- Automated Sales Tax in the QuickBooks Online API
- Automated Sales Tax in the QuickBooks Online API – Update
Is AST available to QuickBooks Online companies across all countries?
AST is currently applicable for US locale only. Any new US-based companies created after November 10, 2017 use the AST engine to do tax calculation. We will eventually be migrating all US-based companies as well.
How can I identify whether a company is AST-enabled using the API?
You can determine this by querying the Preferences API and looking at the Preferences.TaxPrefs.PartnerTax enabled attribute, available with minor version 4 or above.
- If true, AST is enabled for the company and sales tax is set up.
- If false, AST is enabled for the company but the company doesn’t have sales tax set up.
- If not present in the response payload, the company is not enabled for AST.
How does AST calculate taxes? Is it driven by shipping address or the address of the customer?
AST calculated sales tax is computed based on the shipping address and the location of the company. Read more about how QuickBooks Online implements automated sales tax here.
If the shipping address is not provided, what address does AST use for calculating taxes?
If the shipping address is empty, the billing address is used. If no billing address is provided, AST uses the company address.
The tax amounts collected in web sales might be different from what QuickBooks calculates. How can we force QuickBooks to use the actual collected amount?
The tax amount suggested by AST can be overridden using the parameter: TxnTaxDetail.TotalTax
- TxnTaxDetail.TotalTax amount is honored. The supplied tax amount is prorated across associated tax rates in the AST-assigned tax code.
- TxnTaxDetail.TxnTaxCodeRef in the response payload is changed to the AST-assigned tax code. For more details please refer to our earlier blog.
Can we override the TaxAgency that AST recommends?
No, this is not supported at this time.
Will there be a way to get all the corresponding sales tax codes and rates for all the agencies set up?
We can retrieve the Tax Code and Tax Rates associated with the default Tax Agency (which is created initially) using APIs, but not via the QuickBooks Online UI. To work around this, make sure there is at least one transaction associated with the particular TaxAgency in order to be able to retrieve them using the APIs.
Is there a way to get the estimated sales tax without committing a transaction in QuickBooks?
Yes, this functionality will be part of our V4 API.
Will, I be able to retrieve “TaxCodes” for Items as part of the V4 API?
As part of AST, a new attribute called TaxClassification a.k.a TaxCategory has been introduced for Items, which allows one to qualify items in a manner that the Tax Engine can distinguish, and yes, this will be supported in V4 API. We are also working on getting this feature added to V3 APIs.
When will AST be available for sandbox companies?
We are currently working on making this available in the sandbox, and it is tentatively planned for end of May. We will update the blog if there are any changes in the timelines.
What is the timeline for converting existing accounts to AST?
This is planned tentatively for the end of July. All existing users will get a prompt in the UI asking if they wish to migrate.
Will the “TaxExempt” status of customers be available through the API in the same manner that you can pull the Taxable status for the non-AST accounts?
Yes V3 API supports this today for non-AST accounts.
Now that sales tax is dependent on the shipping address, will there be an API to verify address?
Yes, this will be available in V4.
When will the V4 API be available?
Our team is currently working on this API and we will update once the timelines are available.
What does a sample Invoice request look like for an AST company?
Below is a sample Invoice request payload in JSON to consider AST provided sales tax:
HTTP Payload
Note: At the moment, the app cannot present the AST-recommended sales tax to the user until the transaction is saved to the QuickBooks Online company. This capability will be available in V4.
The following process is recommended for V3 apps:
- Create a TaxCode object named Sales Tax Code via the API using the TaxService resource that serves as a proxy with an arbitrary percentage like 5%. This is not visible on the QuickBooks Online Sales Tax screen, but can still be queried via the API.
- Associate this proxy TaxCode object to all transactions that are posted to QuickBooks Online.
- QuickBooks Online services swaps out the proxy TaxCode for the AST-recommended TaxCode object.
- Thereafter, when the transaction is read back, the right sales tax is returned.
See the following example:
Create a dummy Tax Code
POST /company/:companyId/taxservice/taxcode
[tabby title=”Request Body”]
Request Body :
{
"TaxCode":"ast-dummy",
"TaxRateDetails":[
{
"TaxRateName":"ast-dummy",
"RateValue":"5",
"TaxAgencyId":"1",
"TaxApplicableOn":"Sales"
}
]
}
[tabby title=”Response Body”]
Response :
{
"TaxCode":"ast-dummy",
"TaxCodeId":"8",
"TaxRateDetails":[
{
"TaxRateName":"ast-dummy",
"TaxRateId":"14",
"RateValue":5,
"TaxAgencyId":"1",
"TaxApplicableOn":"Sales"
}
]
}
[tabbyending]
What do you pass in the Payload?
TxnTaxDetail.TxnTaxCodeRef.value in the above JSON payload represents the dummy TaxCode created above.
"TxnTaxDetail": {
"TxnTaxCodeRef":{
"value":"Id of the dummy tax code"
}
}
UI Screenshot
From the above UI screenshot, you can see that the Sales Tax reflects the AST-recommended tax code by swapping the dummy tax code.
How does a sample Invoice request appear for an AST company if I want to override Tax amount?
Below is a sample Invoice request payload in JSON to override the AST-provided sales tax:
HTTP Payload
What do you pass in the Payload?
From the above JSON Payload, you can see that TxnTaxDetail.TotalTax amount is honored.
"TxnTaxDetail":{
"TotalTax":21.86
}
UI Screenshot
From the above UI screenshot, you can see that the AST-recommended tax code has been overridden.
Note: Have more questions about AST? Watch the webinar!
If you have any further questions regarding AST or any of our other services, please reach out to us on online or open a support case: https://help.developer.intuit.com/s/
Leave a Reply