# Transaction lines

Source: https://developer.avalara.com/avatax-for-ap/bde7914026999070/

# Transaction lines

Understand the required fields for accurate tax calculation on transaction lines.

To accurately calculate tax, you must provide details about what is being sold. There are various options that you can provide (refer to the [LineItemModel API](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)), but at minimum we require you to send the fields below on a single line item.

-   `number`: AvaTax automatically numbers the lines on your invoice starting with 1. If you prefer to use your own line numbers, specify them in this value.

-   `quantity`: This specifies the quantity of goods or services being sold. This value doesn't affect any totals; to determine the price-per-each, divide the `amount` value by the `quantity` value. If you don't provide a `quantity`, AvaTax assumes a value of `1`. Although this field is optional, keep in mind that some taxes are affected by dollar-amount thresholds and caps per item. AvaTax uses the `quantity` and `amount` values to calculate this correctly. We strongly recommend providing the correct `quantity` for each line. In addition, the `quantity` must be a positive value.

-   `amount`: This specifies the total price of goods or services for this line item. This is the total, fully extended value. For example, if you specify a `quantity` of 2 and an `amount` of 10 on a sales document, this means that you sold two $5 items for a total price of $10. The `amount` can be a positive value for sales transactions or a negative value for refund transactions. The `amount` can also be 0.

-   `taxCode`: This specifies the type of good or service that being sold. If you omit a `taxCode` value, AvaTax defaults to treating the item as taxable Tangible Personal Property using the tax code `P0000000`.

-   `addresses`: Each invoice line can have its own custom addresses. If we make one sale that includes multiple separate shipments, we attach the correct address to each line. If the `addresses` field on a line is null or missing, the line will be assumed to use the `addresses` from the document level; but if the value is non-null, the line will have its own custom `addresses` and won't inherit any `addresses` from the document level.