# Invoice object

Source: https://developer.avalara.com/products/communications/integration-guides/communications-integration/iyc9104516116911/

Guide: Communications

# Invoice object

The `Invoice` object contains information about one or more **transactions**. Note that AFC allows up to 1,000 invoice (`inv`) objects in a transaction.

Table 1. 

Object/field

Description

`doc`

`[string]` Document Code The Document Code is a unique string that is used to Commit or Uncommit transactions. It is required when Commit is `true`. Max length: 150 bytes

`cmmt`

`[bool]` Commit Indicates if invoice should be committed as soon as it is processed

-   `true`: The transaction should be committed
-   `false`: The transaction should be uncommitted

`bill`

`[Location]` required Bill To Location This can be overridden at the line level.

`cust`

`[int]` required Customer Type

-   `0`: Residential
-   `1`: Business
-   `2`: Senior Citizen
-   `3`: Industrial

This can be overridden at the line level.

`lfln`

`[bool]` Lifeline

-   `true`: The customer is a Lifeline participant
-   `false`: The customer is not a Lifeline participant

Lifeline is a federal program that subsidizes the cost of phone and internet for eligible customers. This can be overridden at the line level.

`date`

`[timestamp]` required Invoice Date _ex._ `2009-12-01T03:00:00` The date when the transaction took place. **An accurate timestamp in this field is important!** This affects the rules our tax engine applies when calculating taxes. For example, if you submit a `CalcTaxes` request with a `date` of`7/1/2018`, the tax engine uses the rules that apply for your jurisdiction on`7/1/2018`. If the transaction _actually_ occurred on`7/25/2018`, and the tax rate for this transaction changed after`7/1/2018`, you may receive incorrect tax information. This can be overridden at the line level.

`exms`

`[Exemption]` Exemptions A list of Exemptions to apply to this transaction.

`itms`

`[LineItem]` required Line Items A list of Line Items to process for this transaction. Limit 10,000 line items per request.

`invm`

`[bool]` [Invoice Mode](https://developer.avalara.com/communications-integration/design-considerations/invoice-mode) Indicates if all line items within invoice should be processed in invoice mode

-   `true`: Line Items are part of a single invoice; caps, thresholds, tax brackets, and tiers applied per invoice as a whole
-   `false`: Line Items are unrelated; caps, thresholds, tax brackets, and tiers applied per line item individually

`dtl`

`[bool]` Return Detail Indicates if individual line item taxes should be included in a response

-   `true`: Return Line Item level tax results
-   `false`: Do not return Line Item level tax results

`summ`

`[bool]` Return Summary Indicates if the summarized taxes for the invoice should be included in a response

-   `true`: Return summarized tax results
-   `false`: Do not return summarized tax results

Summarized tax results are only returned in Invoice Mode.

`opt`

`[KeyValuePair]` Optional Fields A list of [Optional](https://developer.avalara.com/api-reference/communications/v2/models/KeyValuePair/) fields to apply to this invoice

`acct`

`[string]` Account Reference field for use in reporting. Maximum length is 150 bytes.

`custref`

`[string]` Customer Reference Customer Reference field for use in reporting. Maximum length is 150 bytes.

`invn`

`[string]` Invoice Number Reference Invoice Number Reference field for use in reporting. Maximum length is 150 bytes.

`bcyc`

`[string]` Bill Cycle Reference Bill Cycle Reference field for use in reporting. Maximum length is 150 bytes.

`bpd`

`[BillingPeriod]` Billing Period The [Billing Period](https://developer.avalara.com/api-reference/communications/v2/models/BillingPeriod/) for the invoice.

`ccycd`

`[string]` Currency Code

Currency code for the invoice. Example: use `USD` for United States Dollar.