SALES_TAX product tax code and Taxwire treats its amount as tax collected, not as something sold.
What happens to the line
Transactions. When you create or update a transaction, Taxwire removes everySALES_TAX line from line_items and adds its amount (unit_price × quantity) to the transaction’s tax_amount. The line is never taxed and never counts toward the taxable base, gross sales or economic nexus thresholds. The response shows the remaining line items and the combined tax_amount. It does not return the removed lines, so keep your own copy if you need to send them again.
Any SALES_TAX line, even one of 0, gives the transaction a provided tax: filing_tax_amount is the combined tax_amount with filing_tax_amount_source: "provided", not the tax Taxwire calculates. Transaction-level discounts apply to the remaining line items only.
Calculations. POST /calculations accepts the line and leaves it out of the taxable base. The response lists it by id with a tax_amount of 0, and the calculation’s total tax_amount does not include it. A calculation has no provided tax to add the line to, so sum your SALES_TAX lines yourself if you need the total collected.
Send the tax in one place
The tax field andSALES_TAX lines are added together. If tax_amount already includes the tax on a SALES_TAX line, don’t also send the line: Taxwire adds both, and your returns report the sum as tax collected.
Rules
ASALES_TAX line must:
- carry
SALES_TAXas its only tax attribute: no other code beside it (["SALES_TAX", "TANGIBLE_PERSONAL_PROPERTY"]) and no attribute suffix (SALES_TAX._B2B) - have no discount: no non-zero
discounts,discount_amountorvendor_discount_amount; send the tax actually collected - have a non-negative amount; for a refund, use a
credittransaction with positive amounts, as with any other line. If your system records a correction as a second, negative tax line, net the tax lines into one before sending. - have an
idno other line in the transaction uses
sales_tax is not recognised.
A line that breaks a rule is refused with HTTP 422 and the error code validation_error:
- On transactions,
detailnames the line and the rule, for exampleline item 'tax_line': a SALES_TAX line cannot carry a discount. - On
POST /calculations,detailisValidation failed: invalid_sales_tax_line, orValidation failed: multiple errorsif the request has other validation errors too (Processing failed: multiple errorsif one of them is a calculation error). It does not name the line.
Marking a product
If your line items reference products through presets, you can mark the product instead of each line. In the Taxwire App, open the product on the Products page and choose Collected sales tax (SALES_TAX) as its only tax code. It is not offered in bulk assign and can’t be your default tax code.
Every line that references the product through its preset is then treated as a SALES_TAX line, on transactions and on calculations. Tax attributes sent on the line itself take precedence over the product’s.
A marked product’s line may carry discounts: Taxwire uses the line’s amount less its own discounts, rounded to the smallest currency unit. The other rules apply as above. If that amount is negative:
- on transactions, the line is refused with HTTP 422, like a line you declared yourself;
- on
POST /calculations, the line is left out of the calculation and returned with atax_amountof0, and the request does not fail.
When a mark takes effect
- Marking or un-marking a product changes how Taxwire records the transactions it receives after the change.
- Transactions Taxwire already stored are not converted until the source sends them again: any re-sync for Stripe and NetSuite, a newer version of the order for Shopify, the document again for QuickBooks. For a transaction you created through the API, that means sending its
line_itemsagain (see Updating a transaction). If a stored transaction is recalculated before then, the marked line is left out of its sales but not added to its collected tax. - QuickBooks lines keep the tax code they arrived with, so a QuickBooks transaction stored before the mark keeps the line as a taxed sale, on recalculation and in nexus studies, until QuickBooks sends it again.
- Un-marking a product does not turn transactions already recorded as collected tax back into sales until the source sends them again.
- Nexus studies apply the product’s current mark to the line items of stored transactions from the next study. Un-marking counts a line as a sale again only on transactions that still list it; lines already recorded as collected tax stay out of nexus until the source sends the transaction again.
Updating a transaction
- Sending
line_items(draft transactions only): send the full list again, including theSALES_TAXlines. The tax amount is recomputed from these lines plus thetax_amountyou send, or the one you sent before if you omit it. ASALES_TAXline you leave out is removed from the tax amount. If noSALES_TAXline and notax_amountare left, the transaction has no provided tax and Taxwire uses the tax it calculates. - Sending only
tax_amount: it replaces thetax_amountyou sent before.SALES_TAXlines already counted in the tax amount stay counted.
draft, then send line_items with status: finalized in a second call. A filed transaction’s line items can’t be changed.
Tax-only transactions
A sale, or a credit sent withoutparent_transaction_id or parent_reference_id, whose only line items are SALES_TAX lines is stored with no line items. Taxwire reports its tax on your returns in the jurisdictions of the customer address on the SALES_TAX lines, with gross and taxable sales of 0. The tax is split equally across the jurisdictions that address reaches where you are registered. Lines at several addresses share the total equally across the jurisdictions they reach where you are registered, whatever each line held. If you are registered in none of them, the tax is on no return.
Every SALES_TAX line on a tax-only transaction needs a customer address. Without one, Taxwire stores the transaction but holds it off returns.
A tax-only credit that names a parent transaction is not reported yet; see Limitations.
Examples
Amounts are in the smallest currency unit, so635 is $6.35. The “Tax in both places” example leaves customer addresses out.
Limitations
- A credit without line items does not reverse
SALES_TAXlines. A credit with aparent_transaction_idand noline_itemscopies the parent’s stored line items, which no longer include itsSALES_TAXlines. Its tax is calculated on those line items, so it reverses the tax Taxwire calculates on them, not the tax the parent carried intax_amountor asSALES_TAXlines. To reverse all of it, send the credit’stax_amountyourself, or send the sameline_itemsandtax_amountyou sent on the sale. A tax-only sale can’t be reversed this way: its stored line items are empty, so the credit copies nothing and stays off returns. If you marked a product after the sale was calculated, the copied line on that product is left out of the credit, so the credit does not reverse the tax the sale calculated on it. - A tax-only credit that names a parent is not reported yet. Taxwire stores a credit whose only line items are
SALES_TAXlines and that has aparent_transaction_idorparent_reference_id, even one that never matches a transaction, but holds it off returns.