conductor-node 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1128 +1,2182 @@
1
- interface ParentRef {
2
- ListID?: string;
3
- FullName?: string;
4
- }
5
- declare type AccountType = "AccountsPayable" | "AccountsReceivable" | "Bank" | "CostOfGoodsSold" | "CreditCard" | "Equity" | "Expense" | "FixedAsset" | "Income" | "LongTermLiability" | "NonPosting" | "OtherAsset" | "OtherCurrentAsset" | "OtherCurrentLiability" | "OtherExpense" | "OtherIncome";
6
- interface SalesTaxCodeRef {
7
- ListID?: string;
8
- FullName?: string;
9
- }
10
- interface CurrencyRef {
11
- ListID?: string;
12
- FullName?: string;
13
- }
14
1
  interface AccountAdd {
2
+ /** The case-insensitive name of a list object, not including the names of its ancestors. `Name` must be unique, unless it is the `Name` of a “hierarchical” list object. List objects in different hierarchies can have duplicate names because their `FullNames` will still be unique. For example, two objects could both have the `Name` kitchen, but they could have unique `FullNames`, such as Job12:kitchen and Baker:kitchen.
3
+
4
+ For built-in currencies, `Name` is the internationally accepted currency name and is not editable. */
15
5
  Name: string;
6
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
16
7
  IsActive?: boolean;
8
+ /** A reference to the list object that is one level above this one. For example, an inventory item with the `FullName` of `GermanCars`:Mercedes-Benz:`CL500I99AA` might have a parent object with the `FullName` of `GermanCars`:Mercedes-Benz. In a request, if a `ParentRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
17
9
  ParentRef?: ParentRef;
10
+ /** The type of QuickBooks account. You cannot create or modify a non-posting account through the SDK, because QuickBooks creates these accounts behind the scenes. This means that you cannot send an `AccountAdd` request with an `AccountType` of `NonPosting`. */
18
11
  AccountType: AccountType;
12
+ /** Account numbers appear in the QuickBooks chart of accounts, Account fields, and reports and graphs. If the `IsUsingAccountNumber` preference is false (that is, if the QuickBooks user has the account numbers Preference turned off), you can still set account numbers through the SDK, but the numbers will not be visible in the user interface. */
19
13
  AccountNumber?: string;
14
+ /** The bank account number or an identifying note about the account. If a `BankNumber` exists in a QuickBooks company file, it will only be returned to applications that have been granted permission to access sensitive data and that are using SDK v2.0 or greater. */
20
15
  BankNumber?: string;
16
+ /** A descriptive text field. */
21
17
  Desc?: string;
18
+ /** The amount of money in, or the value of, this account as of `OpenBalanceDate`. On a bank statement, the amount of money in the account at the beginning of the statement period. */
22
19
  OpenBalance?: string;
20
+ /** The date when an opening balance was entered for this account. */
23
21
  OpenBalanceDate?: string;
22
+ /** Each item on a sales form is assigned a sales-tax code that indicates whether the item is taxable or non-taxable, and why. Two general codes, which can be modified but not deleted, appear on the sales-tax code list by default:
23
+
24
+ Non-taxable (`Name` = NON; `Desc` = Non-Taxable; `IsTaxable` = false) Taxable (`Name` = TAX; `Desc` = Taxable; `IsTaxable` = true)
25
+
26
+ A sales-tax code can be deleted only if it is no longer associated with any customer, item, or transaction. If the “Do You Charge Sales Tax?” preference within QuickBooks is set to No, QuickBooks will assign the default non-taxable sales-tax code to all sales.
27
+
28
+ A `SalesTaxCodeRef` aggregate refers to a sales-tax code on the list. In a request, if a `SalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In a Customer message, `SalesTaxCodeRef` refers to the sales-tax code that will be used for items related to this customer. In an `ItemInventory` message, `SalesTaxCodeRef` refers to the type of sales tax that will be charged for this item, if it is a taxable item and if sales tax is set up within QuickBooks. */
24
29
  SalesTaxCodeRef?: SalesTaxCodeRef;
30
+ /** An internal representation of the tax line associated with this account. */
25
31
  TaxLineID?: number;
32
+ /** The currency object contains all of the information needed by QuickBooks to display and use. For built-in currencies, the name and currency code values are internationally accepted values and thus are not editable. The comma format is editable, as is the `IsActive` status. For user-defined currencies, every value in the object is editable including name and currency code.
33
+
34
+ When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
26
35
  CurrencyRef?: CurrencyRef;
27
36
  }
28
37
  export interface AccountAddRq {
29
38
  AccountAdd: AccountAdd;
39
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address.
40
+
41
+ The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name.
42
+
43
+ Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
30
44
  IncludeRetElement?: string[] | string;
31
45
  }
32
- declare type SpecialAccountType = "AccountsPayable" | "AccountsReceivable" | "CondenseItemAdjustmentExpenses" | "CostOfGoodsSold" | "DirectDepositLiabilities" | "Estimates" | "ExchangeGainLoss" | "InventoryAssets" | "ItemReceiptAccount" | "OpeningBalanceEquity" | "PayrollExpenses" | "PayrollLiabilities" | "PettyCash" | "PurchaseOrders" | "ReconciliationDifferences" | "RetainedEarnings" | "SalesOrders" | "SalesTaxPayable" | "UncategorizedExpenses" | "UncategorizedIncome" | "UndepositedFunds";
33
- interface TaxLineInfoRet {
34
- TaxLineID: number;
35
- TaxLineName?: string;
36
- }
37
- declare type CashFlowClassification = "Financing" | "Investing" | "None" | "NotApplicable" | "Operating";
38
- declare type DataExtType = "AMTTYPE" | "DATETIMETYPE" | "INTTYPE" | "PERCENTTYPE" | "PRICETYPE" | "QUANTYPE" | "STR255TYPE" | "STR1024TYPE";
39
- interface DataExtRet {
40
- OwnerID?: string;
41
- DataExtName: string;
42
- DataExtType: DataExtType;
43
- DataExtValue: string;
44
- }
45
- interface AccountRet {
46
- ListID: string;
47
- TimeCreated: string;
48
- TimeModified: string;
49
- EditSequence: string;
50
- Name: string;
51
- FullName: string;
52
- IsActive?: boolean;
53
- ParentRef?: ParentRef;
54
- Sublevel: number;
55
- AccountType: AccountType;
56
- SpecialAccountType?: SpecialAccountType;
57
- IsTaxAccount?: boolean;
58
- AccountNumber?: string;
59
- BankNumber?: string;
60
- Desc?: string;
61
- Balance?: string;
62
- TotalBalance?: string;
63
- SalesTaxCodeRef?: SalesTaxCodeRef;
64
- TaxLineInfoRet?: TaxLineInfoRet;
65
- CashFlowClassification?: CashFlowClassification;
66
- CurrencyRef?: CurrencyRef;
67
- DataExtRet?: DataExtRet | DataExtRet[];
68
- }
69
- interface ErrorRecovery {
70
- ListID?: string;
71
- OwnerID?: string;
72
- TxnID?: string;
73
- TxnNumber?: number;
74
- EditSequence?: string;
75
- ExternalGUID?: string;
76
- }
77
46
  export interface AccountAddRs {
78
47
  AccountRet?: AccountRet;
79
48
  ErrorRecovery?: ErrorRecovery;
80
49
  }
50
+ interface AccountFilter {
51
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
52
+ ListID?: string[] | string;
53
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
54
+ FullName?: string[] | string;
55
+ /** Allows you to filter for data that relates to the specified object and its descendants. */
56
+ ListIDWithChildren?: string;
57
+ /** Allows you to filter for data that relates to the specified object and its descendants. For names that do not have children, `FullNameWithChildren` is exactly the same as `FullName`. */
58
+ FullNameWithChildren?: string;
59
+ }
81
60
  interface AccountMod {
61
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
82
62
  ListID: string;
63
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
83
64
  EditSequence: string;
65
+ /** The case-insensitive name of a list object, not including the names of its ancestors. `Name` must be unique, unless it is the `Name` of a “hierarchical” list object. List objects in different hierarchies can have duplicate names because their `FullNames` will still be unique. For example, two objects could both have the `Name` kitchen, but they could have unique `FullNames`, such as Job12:kitchen and Baker:kitchen.
66
+
67
+ For built-in currencies, `Name` is the internationally accepted currency name and is not editable. */
84
68
  Name?: string;
69
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
85
70
  IsActive?: boolean;
71
+ /** A reference to the list object that is one level above this one. For example, an inventory item with the `FullName` of `GermanCars`:Mercedes-Benz:`CL500I99AA` might have a parent object with the `FullName` of `GermanCars`:Mercedes-Benz. In a request, if a `ParentRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
86
72
  ParentRef?: ParentRef;
73
+ /** The type of QuickBooks account. You cannot create or modify a non-posting account through the SDK, because QuickBooks creates these accounts behind the scenes. This means that you cannot send an `AccountAdd` request with an `AccountType` of `NonPosting`. */
87
74
  AccountType?: AccountType;
75
+ /** Account numbers appear in the QuickBooks chart of accounts, Account fields, and reports and graphs. If the `IsUsingAccountNumber` preference is false (that is, if the QuickBooks user has the account numbers Preference turned off), you can still set account numbers through the SDK, but the numbers will not be visible in the user interface. */
88
76
  AccountNumber?: string;
77
+ /** The bank account number or an identifying note about the account. If a `BankNumber` exists in a QuickBooks company file, it will only be returned to applications that have been granted permission to access sensitive data and that are using SDK v2.0 or greater. */
89
78
  BankNumber?: string;
79
+ /** A descriptive text field. */
90
80
  Desc?: string;
81
+ /** The amount of money in, or the value of, this account as of `OpenBalanceDate`. On a bank statement, the amount of money in the account at the beginning of the statement period. */
91
82
  OpenBalance?: string;
83
+ /** The date when an opening balance was entered for this account. */
92
84
  OpenBalanceDate?: string;
85
+ /** Each item on a sales form is assigned a sales-tax code that indicates whether the item is taxable or non-taxable, and why. Two general codes, which can be modified but not deleted, appear on the sales-tax code list by default:
86
+
87
+ Non-taxable (`Name` = NON; `Desc` = Non-Taxable; `IsTaxable` = false) Taxable (`Name` = TAX; `Desc` = Taxable; `IsTaxable` = true)
88
+
89
+ A sales-tax code can be deleted only if it is no longer associated with any customer, item, or transaction. If the “Do You Charge Sales Tax?” preference within QuickBooks is set to No, QuickBooks will assign the default non-taxable sales-tax code to all sales.
90
+
91
+ A `SalesTaxCodeRef` aggregate refers to a sales-tax code on the list. In a request, if a `SalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In a Customer message, `SalesTaxCodeRef` refers to the sales-tax code that will be used for items related to this customer. In an `ItemInventory` message, `SalesTaxCodeRef` refers to the type of sales tax that will be charged for this item, if it is a taxable item and if sales tax is set up within QuickBooks. */
93
92
  SalesTaxCodeRef?: SalesTaxCodeRef;
93
+ /** An internal representation of the tax line associated with this account. */
94
94
  TaxLineID?: number;
95
+ /** The currency object contains all of the information needed by QuickBooks to display and use. For built-in currencies, the name and currency code values are internationally accepted values and thus are not editable. The comma format is editable, as is the `IsActive` status. For user-defined currencies, every value in the object is editable including name and currency code.
96
+
97
+ When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
95
98
  CurrencyRef?: CurrencyRef;
96
99
  }
97
100
  export interface AccountModRq {
98
101
  AccountMod: AccountMod;
102
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address.
103
+
104
+ The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name.
105
+
106
+ Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
99
107
  IncludeRetElement?: string[] | string;
100
108
  }
101
109
  export interface AccountModRs {
102
110
  AccountRet?: AccountRet;
103
111
  ErrorRecovery?: ErrorRecovery;
104
112
  }
105
- /** @default: ActiveOnly */
106
- declare type ActiveStatus = "ActiveOnly" | "All" | "InactiveOnly";
107
- declare type MatchCriterion = "Contains" | "EndsWith" | "StartsWith";
108
- interface NameFilter {
109
- MatchCriterion: MatchCriterion;
110
- Name: string;
111
- }
112
- interface NameRangeFilter {
113
- FromName?: string;
114
- ToName?: string;
115
- }
116
- interface CurrencyFilter {
117
- ListID?: string[] | string;
118
- FullName?: string[] | string;
119
- }
120
113
  export interface AccountQueryRq {
114
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`.
115
+
116
+ A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
121
117
  ListID?: string[] | string;
118
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
122
119
  FullName?: string[] | string;
120
+ /** Limits the number of objects that a query returns. (To get a count of how many objects could possibly be returned, use the `metaData` query attribute.) If you include a `MaxReturned` value, it must be at least 1. */
123
121
  MaxReturned?: number;
122
+ /** Used in filters to select list objects based on whether or not they are currently enabled for use by QuickBooks. The default value is `asActiveOnly`, which selects only list objects that are active. */
124
123
  ActiveStatus?: ActiveStatus;
124
+ /** Selects objects modified on or after this date. See the note below regarding QBFC usage.
125
+
126
+ For desktop versions of QuickBooks, the `FromModifiedDate` and `ToModifiedDate` must be between 1970-01-01 and 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). (The time portion of the field was not supported in qbXML version 1.0 or 1.1.) Also, for desktop versions of QuickBooks, if `FromModifiedDate` includes a date but not a time (for example, if you set `FromModifiedDate` to 2003-02-14), the time is assumed to be zero (2003-02-14T00:00:00). If you omit `FromModifiedDate`, it will be set to 1970-01-01T00:00:00 (1969-12-31T16:00:00-08:00 PST).
127
+
128
+ For QBOE, the `FromModifiedDate` and `ToModifiedDate` must be between 1900-01-01T00:00:00 and 9999-12-31T00:00:00. If `FromModifiedDate` includes a date but not a time (for example, if you set `FromModifiedDate` to 2003-02-14), the time is assumed to be zero (2003-02-14T00:00:00). If you omit `FromModifiedDate`, it will be set to 1900-01-01T00:00:00.
129
+
130
+ Note: When specifying this in QBFC, you need to supply the parameter `asDateOnly`, which is a Boolean. If `asDateOnly` is true, the date value will be represented as a date only (without a time). If `asDateOnly` is false, the date value will be represented as date and time, padded with zeros if necessary, and set to the beginning of the day if no time is provided. The `asDateOnly` parameter is especially useful in the `ToModifiedDate` field of a query: If `asDateOnly` is set to true in the `ToModifiedDate` field of a query, then the query includes elements modified up to the end of the day. If `asDateOnly` is false, the query includes elements modified up to the specified time (or up to the beginning of the day if no time is included). */
125
131
  FromModifiedDate?: string;
132
+ /** Selects objects modified on or before this date. See the note below on QBFC usage.
133
+
134
+ For desktop versions of QuickBooks, the `ToModifiedDate` and `FromModifiedDate` must be between 01/01/1970 and 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). (Note that the time portion of the field was not supported in qbXML version 1.0 or 1.1.) If `ToModifiedDate` includes a date but not a time (for example, if you set `ToModifiedDate` to 2003-02-14), the time is assumed to be the end of the day (2003-02-14T23:59:59). If you omit `ToModifiedDate` altogether, it will be set to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST).
135
+
136
+ For QBOE, the `ToModifiedDate` and `FromModifiedDate` must be between 01/01/1900 and 9999-12-31T00:00:00. If `ToModifiedDate` includes a date but not a time (for example, if you set `ToModifiedDate` to 2003-02-14), the time is assumed to be the end of the day (2003-02-14T23:59:59). If you omit `ToModifiedDate` altogether, it will be set to 9999-12-31T00:00:00.
137
+
138
+ Note: When specifying this in QBFC, you need to supply the parameter `asDateOnly`, which is a Boolean. If `asDateOnly` is true, the date value will be represented as a date only (without a time). If `asDateOnly` is false, the date value will be represented as date and time, padded with zeros if necessary, and set to the beginning of the day if no time is provided. The `asDateOnly` parameter is especially useful in the `ToModifiedDate` field of a query: If `asDateOnly` is set to true in the `ToModifiedDate` field of a query, then the query includes elements modified up to the end of the day. If `asDateOnly` is false, the query includes elements modified up to the specified time (or up to the beginning of the day if no time is included). */
126
139
  ToModifiedDate?: string;
140
+ /** Filters according to the object’s `Name`. */
127
141
  NameFilter?: NameFilter;
142
+ /** Filters according to the object’s `Name`. */
128
143
  NameRangeFilter?: NameRangeFilter;
144
+ /** A list of QuickBooks account types. */
129
145
  AccountType?: AccountType | AccountType[];
146
+ /** Filters by the specified currency. */
130
147
  CurrencyFilter?: CurrencyFilter;
148
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address.
149
+
150
+ The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name.
151
+
152
+ Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
131
153
  IncludeRetElement?: string[] | string;
154
+ /** Zero or more `OwnerID` values. `OwnerID` refers to the owner of a data extension: If `OwnerID` is 0, this is a public data extension, also known as a custom field. Custom fields appear in the QuickBooks UI. If `OwnerID` is a GUID, for example `{6B063959-81B0-4622-85D6-F548C8CCB517}`, this field is a private data extension defined by an integrated application. Private data extensions do not appear in the QuickBooks UI.
155
+
156
+ Note that `OwnerID` values are not case-sensitive, meaning that if you enter an `OwnerID` value with lower-case letters, the value will be saved and returned with upper-case letters.
157
+
158
+ When you share a private data extension with another application, the other application must know both the `OwnerID` and the `DataExtName`, as these together form a data extension’s unique name. */
132
159
  OwnerID?: string[] | string;
133
160
  }
134
161
  export interface AccountQueryRs {
135
162
  AccountRet?: AccountRet | AccountRet[];
136
163
  }
137
- interface ClassRef {
164
+ interface AccountRef {
165
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
138
166
  ListID?: string;
167
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
139
168
  FullName?: string;
140
169
  }
170
+ interface AccountRet {
171
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
172
+ ListID: string;
173
+ /** Time the object was created. */
174
+ TimeCreated: string;
175
+ /** Time the object was last modified. */
176
+ TimeModified: string;
177
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
178
+ EditSequence: string;
179
+ /** The case-insensitive name of a list object, not including the names of its ancestors. `Name` must be unique, unless it is the `Name` of a “hierarchical” list object. List objects in different hierarchies can have duplicate names because their `FullNames` will still be unique. For example, two objects could both have the `Name` kitchen, but they could have unique `FullNames`, such as Job12:kitchen and Baker:kitchen.
180
+
181
+ For built-in currencies, `Name` is the internationally accepted currency name and is not editable. */
182
+ Name: string;
183
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
184
+ FullName: string;
185
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
186
+ IsActive?: boolean;
187
+ /** A reference to the list object that is one level above this one. For example, an inventory item with the `FullName` of `GermanCars`:Mercedes-Benz:`CL500I99AA` might have a parent object with the `FullName` of `GermanCars`:Mercedes-Benz. In a request, if a `ParentRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
188
+ ParentRef?: ParentRef;
189
+ /** The number of ancestors. For example, The customer job with `Name` = carpets and `FullName` = Jones:Building2:carpets would have a sublevel of 2. */
190
+ Sublevel: number;
191
+ /** The type of QuickBooks account. You cannot create or modify a non-posting account through the SDK, because QuickBooks creates these accounts behind the scenes. This means that you cannot send an `AccountAdd` request with an `AccountType` of `NonPosting`. */
192
+ AccountType: AccountType;
193
+ /** If `SpecialAccountType` returns a value, then QuickBooks automatically created this account when it was needed. Some special accounts cannot be overridden, because QuickBooks uses them exclusively for special purposes. */
194
+ SpecialAccountType?: SpecialAccountType;
195
+ /** Indicates whether the account is used for tax. */
196
+ IsTaxAccount?: boolean;
197
+ /** Account numbers appear in the QuickBooks chart of accounts, Account fields, and reports and graphs. If the `IsUsingAccountNumber` preference is false (that is, if the QuickBooks user has the account numbers Preference turned off), you can still set account numbers through the SDK, but the numbers will not be visible in the user interface. */
198
+ AccountNumber?: string;
199
+ /** The bank account number or an identifying note about the account. If a `BankNumber` exists in a QuickBooks company file, it will only be returned to applications that have been granted permission to access sensitive data and that are using SDK v2.0 or greater. */
200
+ BankNumber?: string;
201
+ /** A descriptive text field. */
202
+ Desc?: string;
203
+ /** Current balance of this account only (versus `TotalBalance`). Income accounts and balance sheet accounts do not necessarily have balances. */
204
+ Balance?: string;
205
+ /** The balance for this object and all its subordinate objects. For example, the `TotalBalance` for XYZ Bank would be the total of the balances of all its subaccounts (checking, savings, and so on). If XYZ Bank did not have any subaccounts, `TotalBalance` and `Balance` would be the same. */
206
+ TotalBalance?: string;
207
+ /** Each item on a sales form is assigned a sales-tax code that indicates whether the item is taxable or non-taxable, and why. Two general codes, which can be modified but not deleted, appear on the sales-tax code list by default:
208
+
209
+ Non-taxable (`Name` = NON; `Desc` = Non-Taxable; `IsTaxable` = false) Taxable (`Name` = TAX; `Desc` = Taxable; `IsTaxable` = true)
210
+
211
+ A sales-tax code can be deleted only if it is no longer associated with any customer, item, or transaction. If the “Do You Charge Sales Tax?” preference within QuickBooks is set to No, QuickBooks will assign the default non-taxable sales-tax code to all sales.
212
+
213
+ A `SalesTaxCodeRef` aggregate refers to a sales-tax code on the list. In a request, if a `SalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In a Customer message, `SalesTaxCodeRef` refers to the sales-tax code that will be used for items related to this customer. In an `ItemInventory` message, `SalesTaxCodeRef` refers to the type of sales tax that will be charged for this item, if it is a taxable item and if sales tax is set up within QuickBooks. */
214
+ SalesTaxCodeRef?: SalesTaxCodeRef;
215
+ /** If the QuickBooks user has associated a tax form with this company file, they can also associate each account in the company file with a line of that tax form. (To check which tax form, if any, is associated with this company file, do a `CompanyQuery` and check the returned `TaxForm` value.) */
216
+ TaxLineInfoRet?: TaxLineInfoRet;
217
+ /** Indicates how this account is classified for cash flow reporting. If the value is `cfcNone`, the account has not been classified. If the value is `cfcNotApplicable`, the account does not qualify to be classified. (For example, a bank account that tracks cash transactions is not part of a cash flow report.) */
218
+ CashFlowClassification?: CashFlowClassification;
219
+ /** The currency object contains all of the information needed by QuickBooks to display and use. For built-in currencies, the name and currency code values are internationally accepted values and thus are not editable. The comma format is editable, as is the `IsActive` status. For user-defined currencies, every value in the object is editable including name and currency code.
220
+
221
+ When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
222
+ CurrencyRef?: CurrencyRef;
223
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
224
+ DataExtRet?: DataExtRet | DataExtRet[];
225
+ }
226
+ declare type AccountType = "AccountsPayable" | "AccountsReceivable" | "Bank" | "CostOfGoodsSold" | "CreditCard" | "Equity" | "Expense" | "FixedAsset" | "Income" | "LongTermLiability" | "NonPosting" | "OtherAsset" | "OtherCurrentAsset" | "OtherCurrentLiability" | "OtherExpense" | "OtherIncome";
227
+ declare type AccrualPeriod = "BeginningOfYear" | "EveryHourOnPaycheck" | "EveryPaycheck";
228
+ /** @default: ActiveOnly */
229
+ declare type ActiveStatus = "ActiveOnly" | "All" | "InactiveOnly";
230
+ interface AdditionalContactRef {
231
+ /** The name of the contact. */
232
+ ContactName: string;
233
+ /** The value of the contact field. */
234
+ ContactValue: string;
235
+ }
236
+ interface AdditionalNotes {
237
+ /** In a `BillAddress` or `ShipAddress` aggregate, the `Note` field value is written at the bottom of the address in the form in which it appears, such as the invoice form. */
238
+ Note: string;
239
+ }
240
+ interface AdditionalNotesMod {
241
+ /** The ID of the note. */
242
+ NoteID: number;
243
+ /** In a `BillAddress` or `ShipAddress` aggregate, the `Note` field value is written at the bottom of the address in the form in which it appears, such as the invoice form. */
244
+ Note: string;
245
+ }
246
+ interface AdditionalNotesRet {
247
+ /** The ID of the note. */
248
+ NoteID: number;
249
+ /** The date the note was updated. */
250
+ Date: string;
251
+ /** In a `BillAddress` or `ShipAddress` aggregate, the `Note` field value is written at the bottom of the address in the form in which it appears, such as the invoice form. */
252
+ Note: string;
253
+ }
254
+ declare type BillableStatus = "Billable" | "HasBeenBilled" | "NotBillable";
141
255
  interface BillAddress {
256
+ /** The first line of an address. */
142
257
  Addr1?: string;
258
+ /** The second line of an address (if a second line is needed). */
143
259
  Addr2?: string;
260
+ /** The third line of an address (if a third line is needed). */
144
261
  Addr3?: string;
262
+ /** The fourth line of an address (if a fourth line is needed). */
145
263
  Addr4?: string;
264
+ /** The fifth line of an address (if a fifth line is needed). */
146
265
  Addr5?: string;
266
+ /** The city name in an address. */
147
267
  City?: string;
268
+ /** The state name in an address. */
148
269
  State?: string;
270
+ /** The postal code in an address. */
149
271
  PostalCode?: string;
272
+ /** The country name in an address, or, in returned Host information (`HostRet` or `HostInfo`), the country for which this edition of QuickBooks was designed. (Possible values are US, CA, UK, and AU.) */
150
273
  Country?: string;
274
+ /** In a `BillAddress` or `ShipAddress` aggregate, the `Note` field value is written at the bottom of the address in the form in which it appears, such as the invoice form. */
151
275
  Note?: string;
152
276
  }
153
- interface ShipAddress {
277
+ interface BillAddressBlock {
278
+ /** The first line of an address. */
154
279
  Addr1?: string;
280
+ /** The second line of an address (if a second line is needed). */
155
281
  Addr2?: string;
282
+ /** The third line of an address (if a third line is needed). */
156
283
  Addr3?: string;
284
+ /** The fourth line of an address (if a fourth line is needed). */
157
285
  Addr4?: string;
286
+ /** The fifth line of an address (if a fifth line is needed). */
158
287
  Addr5?: string;
159
- City?: string;
160
- State?: string;
161
- PostalCode?: string;
162
- Country?: string;
163
- Note?: string;
164
288
  }
165
- interface ShipToAddress {
166
- Name: string;
167
- Addr1?: string;
168
- Addr2?: string;
169
- Addr3?: string;
170
- Addr4?: string;
171
- Addr5?: string;
172
- City?: string;
173
- State?: string;
174
- PostalCode?: string;
175
- Country?: string;
176
- Note?: string;
177
- DefaultShipTo?: boolean;
289
+ interface BillingRateRef {
290
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
291
+ ListID?: string;
292
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
293
+ FullName?: string;
178
294
  }
179
- interface AdditionalContactRef {
180
- ContactName: string;
181
- ContactValue: string;
295
+ declare type CashFlowClassification = "Financing" | "Investing" | "None" | "NotApplicable" | "Operating";
296
+ interface ClassFilter {
297
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
298
+ ListID?: string[] | string;
299
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
300
+ FullName?: string[] | string;
301
+ /** Allows you to filter for data that relates to the specified object and its descendants. */
302
+ ListIDWithChildren?: string;
303
+ /** Allows you to filter for data that relates to the specified object and its descendants. For names that do not have children, `FullNameWithChildren` is exactly the same as `FullName`. */
304
+ FullNameWithChildren?: string;
305
+ }
306
+ interface ClassRef {
307
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
308
+ ListID?: string;
309
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
310
+ FullName?: string;
182
311
  }
183
312
  interface Contacts {
313
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
184
314
  Salutation?: string;
315
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
185
316
  FirstName: string;
317
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
186
318
  MiddleName?: string;
319
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
187
320
  LastName?: string;
321
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
188
322
  JobTitle?: string;
323
+ /** List of additional contacts. */
189
324
  AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
190
325
  }
191
- interface CustomerTypeRef {
192
- ListID?: string;
193
- FullName?: string;
194
- }
195
- interface TermsRef {
196
- ListID?: string;
197
- FullName?: string;
198
- }
199
- interface SalesRepRef {
200
- ListID?: string;
201
- FullName?: string;
202
- }
203
- interface ItemSalesTaxRef {
204
- ListID?: string;
205
- FullName?: string;
326
+ interface ContactsMod {
327
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
328
+ ListID: string;
329
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
330
+ EditSequence: string;
331
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
332
+ Salutation?: string;
333
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
334
+ FirstName: string;
335
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
336
+ MiddleName?: string;
337
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
338
+ LastName?: string;
339
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
340
+ JobTitle?: string;
341
+ /** List of additional contacts. */
342
+ AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
206
343
  }
207
- /** @default: Canada */
208
- declare type SalesTaxCountry = "Australia" | "Canada" | "UK" | "US";
209
- interface PreferredPaymentMethodRef {
210
- ListID?: string;
211
- FullName?: string;
344
+ interface ContactsRet {
345
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
346
+ ListID: string;
347
+ /** Time the object was created. */
348
+ TimeCreated: string;
349
+ /** Time the object was last modified. */
350
+ TimeModified: string;
351
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
352
+ EditSequence: string;
353
+ /** The name of a contact person for a customer or vendor. */
354
+ Contact?: string;
355
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
356
+ Salutation?: string;
357
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
358
+ FirstName: string;
359
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
360
+ MiddleName?: string;
361
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
362
+ LastName?: string;
363
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
364
+ JobTitle?: string;
365
+ /** List of additional contacts. */
366
+ AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
212
367
  }
213
368
  interface CreditCardInfo {
369
+ /** Credit-card number for this customer or this payment. Beginning with qbXML spec 6.0 and QuickBooks 2007, you must mask the credit card number with lower case “x” and no dashes. For example, xxxxxxxxxxxx1234. */
214
370
  CreditCardNumber?: string;
371
+ /** The month when the credit card expires. */
215
372
  ExpirationMonth?: number;
373
+ /** The year when the credit card expires. */
216
374
  ExpirationYear?: number;
375
+ /** The name on the customer’s credit card. */
217
376
  NameOnCard?: string;
377
+ /** The address associated with this credit card. */
218
378
  CreditCardAddress?: string;
379
+ /** The postal code associated with the address for this credit card. */
219
380
  CreditCardPostalCode?: string;
220
381
  }
221
- /** @default: None */
222
- declare type JobStatus = "Awarded" | "Closed" | "InProgress" | "None" | "NotAwarded" | "Pending";
223
- interface JobTypeRef {
224
- ListID?: string;
225
- FullName?: string;
226
- }
227
- interface AdditionalNotes {
228
- Note: string;
382
+ interface CurrencyFilter {
383
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`.
384
+
385
+ A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
386
+ ListID?: string[] | string;
387
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
388
+ FullName?: string[] | string;
229
389
  }
230
- /** @default: None */
231
- declare type PreferredDeliveryMethod = "Email" | "Fax" | "None";
232
- interface PriceLevelRef {
390
+ interface CurrencyRef {
391
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
233
392
  ListID?: string;
393
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
234
394
  FullName?: string;
235
395
  }
236
396
  interface CustomerAdd {
397
+ /** The case-insensitive name of a list object, not including the names of its ancestors. `Name` must be unique, unless it is the `Name` of a “hierarchical” list object. List objects in different hierarchies can have duplicate names because their `FullNames` will still be unique. For example, two objects could both have the `Name` kitchen, but they could have unique `FullNames`, such as Job12:kitchen and Baker:kitchen. For built-in currencies, `Name` is the internationally accepted currency name and is not editable. */
237
398
  Name: string;
399
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
238
400
  IsActive?: boolean;
401
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
239
402
  ClassRef?: ClassRef;
403
+ /** A reference to the list object that is one level above this one. For example, an inventory item with the `FullName` of `GermanCars`:Mercedes-Benz:`CL500I99AA` might have a parent object with the `FullName` of `GermanCars`:Mercedes-Benz.In a request, if a `ParentRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
240
404
  ParentRef?: ParentRef;
405
+ /** The name of the QuickBooks user’s business, as specified in QuickBooks. `CompanyName` and Address are used on invoices, checks, and other forms. (`LegalCompanyName` and `LegalAddress`, on the other hand, are used on a company’s tax forms and pay stubs.) */
241
406
  CompanyName?: string;
407
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
242
408
  Salutation?: string;
409
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
243
410
  FirstName?: string;
411
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
244
412
  MiddleName?: string;
413
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
245
414
  LastName?: string;
415
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
246
416
  JobTitle?: string;
417
+ /** Whatever address you specify in this aggregate must not result in an address greater than 5 lines, otherwise you’ll get a runtime error, because QuickBooks doesn’t support addresses more than 5 lines. There are two ways to specify an address within this aggregate: Using `Addr1` through `Addr3` along with the other possible aggregate elements, such as `City`, `State`, Postalcode.Using `Addr1`, `Addr2`, `Addr3`, `Addr4`, and `Addr5` to fully specify the address. If you use this so called “address block” approach, you cannot use any other address elements, such as `City`, `State`, etc. (Note: this approach is not valid for `EmployeeAdd`/Mod/Query) If you use the address block approach above, the lines `Addr1`…`Addr5` are each printed as a separate line on the transaction, and the values are returned in the Ret object under the aggregate `ShipAddressBlock` or `BillAddressBlock`. */
247
418
  BillAddress?: BillAddress;
419
+ /** Whatever address you specify in this aggregate must not result in an address greater than 5 lines, otherwise you’ll get a runtime error, because QuickBooks doesn’t support addresses more than 5 lines. There are two ways to specify an address within this aggregate: Using `Addr1` through `Addr3` along with the other possible aggregate elements, such as `City`, `State`, Postalcode.Using `Addr1`, `Addr2`, `Addr3`, `Addr4`, and `Addr5` to fully specify the address. If you use this so called “address block” approach, you cannot use any other address elements, such as `City`, `State`, etc. (Note: this approach is not valid for `EmployeeAdd`/Mod/Query) If you use the address block approach above, the lines `Addr1`…`Addr5` are each printed as a separate line on the transaction, and the values are returned in the Ret object under the aggregate `ShipAddressBlock` or `BillAddressBlock`. */
248
420
  ShipAddress?: ShipAddress;
421
+ /** List of ship to addresses. */
249
422
  ShipToAddress?: ShipToAddress | ShipToAddress[];
423
+ /** The telephone number. */
250
424
  Phone?: string;
425
+ /** A telephone number given as an alternative to `Phone`. */
251
426
  AltPhone?: string;
427
+ /** Fax number. */
252
428
  Fax?: string;
429
+ /** E-mail address. */
253
430
  Email?: string;
431
+ /** Email address that would be carbon copied or CC. */
254
432
  Cc?: string;
433
+ /** The name of a contact person for a customer or vendor. */
255
434
  Contact?: string;
435
+ /** The name of an alternate contact person for a vendor, customer, or “other name” entry. */
256
436
  AltContact?: string;
437
+ /** List of additional contacts. */
257
438
  AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
439
+ /** A list of contact records. */
258
440
  Contacts?: Contacts | Contacts[];
441
+ /** Customer types allow business owners to categorize customers in ways that are meaningful for their businesses. For example, a customer type might indicate which industry a customer represents, or which part of the country a customer is in. A `CustomerTypeRef` aggregate refers to one of the types on the `CustomerType` list. In a request, if a `CustomerTypeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
259
442
  CustomerTypeRef?: CustomerTypeRef;
443
+ /** Refers to the payment terms associated with this entity. (This will be an item on the `DateDrivenTerms` or `StandardTerms` list.) If a `TermsRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
260
444
  TermsRef?: TermsRef;
445
+ /** A sales representative must be on the Employee, Vendor, or Other Names list within QuickBooks. Sales representative’s names and initials appear on the Rep drop-down list on QuickBooks sales forms. A `SalesRepRef` refers to a person on the `SalesRep` list. In a request, if a `SalesRepRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
261
446
  SalesRepRef?: SalesRepRef;
447
+ /** The opening balance of this customer’s account. A positive number indicates money owed by the customer. */
262
448
  OpenBalance?: string;
449
+ /** The date of the opening balance for this customer. */
263
450
  OpenBalanceDate?: string;
451
+ /** Each item on a sales form is assigned a sales-tax code that indicates whether the item is taxable or non-taxable, and why. Two general codes, which can be modified but not deleted, appear on the sales-tax code list by default:Non-taxable (`Name` = NON; `Desc` = Non-Taxable; `IsTaxable` = false)Taxable (`Name` = TAX; `Desc` = Taxable; `IsTaxable` = true) A sales-tax code can be deleted only if it is no longer associated with any customer, item, or transaction. If the “Do You Charge Sales Tax?” preference within QuickBooks is set to No, QuickBooks will assign the default non-taxable sales-tax code to all sales. A `SalesTaxCodeRef` aggregate refers to a sales-tax code on the list. In a request, if a `SalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In a Customer message, `SalesTaxCodeRef` refers to the sales-tax code that will be used for items related to this customer. In an `ItemInventory` message, `SalesTaxCodeRef` refers to the type of sales tax that will be charged for this item, if it is a taxable item and if sales tax is set up within QuickBooks. */
264
452
  SalesTaxCodeRef?: SalesTaxCodeRef;
453
+ /** A sales-tax item is used to calculate a single sales tax that is collected at a specified rate and paid to a single agency. (Compare with the `ItemSalesTaxGroupAdd` message.) An `ItemSalesTaxRef` aggregate refers to an item on this list. In a request, if an `ItemSalesTaxRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Taxes can be reflected in transaction line items The following information refers to invoices specifically, but it also applies to sales receipts. Generally its best to assign a tax item or tax group item to an invoice and allow QuickBooks to apply the same tax to all taxable items on the invoice. However in some situations multiple tax combinations are required, so this method doesn’t work. In this case one must use techniques to apply the taxes in the invoice itself as line items. Using lines to apply taxes isn’t always straight forward. When applying taxes as line items, only single tax items can be used, tax groups can only be used for the entire invoice. If you have multiple taxes which apply to all taxable items, and one or more other taxes that only apply to some of the items on an invoice its better to use a tax group which applies to the entire invoice for the taxes which applies to all taxable items and then apply the other taxes in the invoice itself. One applies a tax or tax group to an entire invoice by using the `ItemSalesTaxRef` aggregate. One can use subtotals to apply a single tax line to multiple items in an invoice, but the tax is only applied automatically for the first tax line after the subtotal line. Any other tax lines which need to be applied to the subtotal line must supply their own amount. If you don’t supply an amount the amount comes out as zero and the tax line is useless. When one does supply an amount, the amount of tax on the subtotal also shows up in the rate column for that tax line. There isn’t any way for the rate to show up as anything other than the amount of the tax. If you have a complicated tax situation where no single tax applies to all taxable items on the invoice, you must choose a zero percent tax to apply for the entire invoice. It is recommended to name such a tax item “Tax Calculated On Invoice” so that it’s clear that the tax is not being applied by QuickBooks on the entire invoice. */
265
454
  ItemSalesTaxRef?: ItemSalesTaxRef;
455
+ /** Country that sales tax is collected for. */
266
456
  SalesTaxCountry?: SalesTaxCountry;
457
+ /** The customer’s resale number, if they have one. This number will not affect reports or sales tax calculations. */
267
458
  ResaleNumber?: string;
459
+ /** Account numbers appear in the QuickBooks chart of accounts, Account fields, and reports and graphs. If the `IsUsingAccountNumber` preference is false (that is, if the QuickBooks user has the account numbers Preference turned off), you can still set account numbers through the SDK, but the numbers will not be visible in the user interface. */
268
460
  AccountNumber?: string;
461
+ /** Set and returned as a positive number that indicates a customer’s or vendor’s credit limit. If no value has been defined, there is no credit limit. */
269
462
  CreditLimit?: string;
463
+ /** Refers to a `PaymentMethod` object. In a request, if a `PreferredPaymentMethodRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
270
464
  PreferredPaymentMethodRef?: PreferredPaymentMethodRef;
465
+ /** Customer’s credit-card information. */
271
466
  CreditCardInfo?: CreditCardInfo;
467
+ /** `JobStatus` Status information about a sub-customer; used in reports. The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
272
468
  JobStatus?: JobStatus;
469
+ /** The date on which work for a sub-customer was started; used in reports. The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
273
470
  JobStartDate?: string;
471
+ /** The date on which work for a sub-customer is expected to be complete; used in reports. The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
274
472
  JobProjectedEndDate?: string;
473
+ /** The date on which work for a sub-customer was completed; used in reports.The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
275
474
  JobEndDate?: string;
475
+ /** A short job description for a sub-customer; used in reports.The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
276
476
  JobDesc?: string;
477
+ /** Job type can be used to separate jobs into any categories that are meaningful to the business. A `JobTypeRef` aggregate refers to a job type on the `JobType` list. In a request, if a `JobTypeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
277
478
  JobTypeRef?: JobTypeRef;
479
+ /** Not supported. */
278
480
  Notes?: string;
481
+ /** List of notes. */
279
482
  AdditionalNotes?: AdditionalNotes | AdditionalNotes[];
483
+ /** Preference for how invoices are delivered. */
280
484
  PreferredDeliveryMethod?: PreferredDeliveryMethod;
485
+ /** You can use price levels to specify custom pricing for specific customers. Once you create a price level for a customer, QuickBooks will automatically use the custom price in new invoices, sales receipts, sales orders or credit memos for that customer. You can override this automatic feature, however, when you create the invoices, sales receipts, etc.) The user can now specify a price level on line items in the following supported sales transactions: invoices, sales receipts, credit memos, and sales orders. Notice that the response data for the affected sales transaction does not list the price level that was used. The response simply lists the `Rate` for the item, which was set using the price level. */
281
486
  PriceLevelRef?: PriceLevelRef;
487
+ /** Allows for the attachment of a user defined GUID value. */
282
488
  ExternalGUID?: string;
489
+ /** Tax registration number used in CA and UK. */
283
490
  TaxRegistrationNumber?: string;
491
+ /** The currency object contains all of the information needed by QuickBooks to display and use. For built-in currencies, the name and currency code values are internationally accepted values and thus are not editable. The comma format is editable, as is the `IsActive` status. For user-defined currencies, every value in the object is editable including name and currency code. When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
284
492
  CurrencyRef?: CurrencyRef;
285
493
  }
286
494
  export interface CustomerAddRq {
287
495
  CustomerAdd: CustomerAdd;
496
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
288
497
  IncludeRetElement?: string[] | string;
289
498
  }
290
- interface BillAddressBlock {
291
- Addr1?: string;
292
- Addr2?: string;
293
- Addr3?: string;
294
- Addr4?: string;
295
- Addr5?: string;
296
- }
297
- interface ShipAddressBlock {
298
- Addr1?: string;
299
- Addr2?: string;
300
- Addr3?: string;
301
- Addr4?: string;
302
- Addr5?: string;
303
- }
304
- interface ContactsRet {
305
- ListID: string;
306
- TimeCreated: string;
307
- TimeModified: string;
308
- EditSequence: string;
309
- Contact?: string;
310
- Salutation?: string;
311
- FirstName: string;
312
- MiddleName?: string;
313
- LastName?: string;
314
- JobTitle?: string;
315
- AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
316
- }
317
- interface AdditionalNotesRet {
318
- NoteID: number;
319
- Date: string;
320
- Note: string;
499
+ export interface CustomerAddRs {
500
+ CustomerRet?: CustomerRet;
501
+ ErrorRecovery?: ErrorRecovery;
321
502
  }
322
- interface CustomerRet {
503
+ interface CustomerMod {
504
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
323
505
  ListID: string;
324
- TimeCreated: string;
325
- TimeModified: string;
506
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
326
507
  EditSequence: string;
327
- Name: string;
328
- FullName: string;
508
+ /** The case-insensitive name of a list object, not including the names of its ancestors. `Name` must be unique, unless it is the `Name` of a “hierarchical” list object. List objects in different hierarchies can have duplicate names because their `FullNames` will still be unique. For example, two objects could both have the `Name` kitchen, but they could have unique `FullNames`, such as Job12:kitchen and Baker:kitchen. For built-in currencies, `Name` is the internationally accepted currency name and is not editable. */
509
+ Name?: string;
510
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
329
511
  IsActive?: boolean;
512
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
330
513
  ClassRef?: ClassRef;
514
+ /** A reference to the list object that is one level above this one. For example, an inventory item with the `FullName` of `GermanCars`:Mercedes-Benz:`CL500I99AA` might have a parent object with the `FullName` of `GermanCars`:Mercedes-Benz.In a request, if a `ParentRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
331
515
  ParentRef?: ParentRef;
332
- Sublevel: number;
516
+ /** The name of the QuickBooks user’s business, as specified in QuickBooks. `CompanyName` and Address are used on invoices, checks, and other forms. (`LegalCompanyName` and `LegalAddress`, on the other hand, are used on a company’s tax forms and pay stubs.) */
333
517
  CompanyName?: string;
518
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
334
519
  Salutation?: string;
520
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
335
521
  FirstName?: string;
522
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
336
523
  MiddleName?: string;
524
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
337
525
  LastName?: string;
526
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
338
527
  JobTitle?: string;
528
+ /** Whatever address you specify in this aggregate must not result in an address greater than 5 lines, otherwise you’ll get a runtime error, because QuickBooks doesn’t support addresses more than 5 lines. There are two ways to specify an address within this aggregate: Using `Addr1` through `Addr3` along with the other possible aggregate elements, such as `City`, `State`, Postalcode.Using `Addr1`, `Addr2`, `Addr3`, `Addr4`, and `Addr5` to fully specify the address. If you use this so called “address block” approach, you cannot use any other address elements, such as `City`, `State`, etc. (Note: this approach is not valid for `EmployeeAdd`/Mod/Query) If you use the address block approach above, the lines `Addr1`…`Addr5` are each printed as a separate line on the transaction, and the values are returned in the Ret object under the aggregate `ShipAddressBlock` or `BillAddressBlock`. */
339
529
  BillAddress?: BillAddress;
340
- BillAddressBlock?: BillAddressBlock;
530
+ /** Whatever address you specify in this aggregate must not result in an address greater than 5 lines, otherwise you’ll get a runtime error, because QuickBooks doesn’t support addresses more than 5 lines. There are two ways to specify an address within this aggregate: Using `Addr1` through `Addr3` along with the other possible aggregate elements, such as `City`, `State`, Postalcode.Using `Addr1`, `Addr2`, `Addr3`, `Addr4`, and `Addr5` to fully specify the address. If you use this so called “address block” approach, you cannot use any other address elements, such as `City`, `State`, etc. (Note: this approach is not valid for `EmployeeAdd`/Mod/Query) If you use the address block approach above, the lines `Addr1`…`Addr5` are each printed as a separate line on the transaction, and the values are returned in the Ret object under the aggregate `ShipAddressBlock` or `BillAddressBlock`. */
341
531
  ShipAddress?: ShipAddress;
342
- ShipAddressBlock?: ShipAddressBlock;
532
+ /** List of ship to addresses. */
343
533
  ShipToAddress?: ShipToAddress | ShipToAddress[];
534
+ /** The telephone number. */
344
535
  Phone?: string;
536
+ /** A telephone number given as an alternative to `Phone`. */
345
537
  AltPhone?: string;
538
+ /** Fax number. */
346
539
  Fax?: string;
540
+ /** E-mail address. */
347
541
  Email?: string;
542
+ /** Email address that would be carbon copied or CC. */
348
543
  Cc?: string;
544
+ /** The name of a contact person for a customer or vendor. */
349
545
  Contact?: string;
546
+ /** The name of an alternate contact person for a vendor, customer, or “other name” entry. */
350
547
  AltContact?: string;
548
+ /** List of additional contacts. */
351
549
  AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
352
- ContactsRet?: ContactsRet | ContactsRet[];
550
+ /** A list of contact records. */
551
+ ContactsMod?: ContactsMod | ContactsMod[];
552
+ /** Customer types allow business owners to categorize customers in ways that are meaningful for their businesses. For example, a customer type might indicate which industry a customer represents, or which part of the country a customer is in. A `CustomerTypeRef` aggregate refers to one of the types on the `CustomerType` list. In a request, if a `CustomerTypeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
353
553
  CustomerTypeRef?: CustomerTypeRef;
554
+ /** Refers to the payment terms associated with this entity. (This will be an item on the `DateDrivenTerms` or `StandardTerms` list.) If a `TermsRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
354
555
  TermsRef?: TermsRef;
556
+ /** A sales representative must be on the Employee, Vendor, or Other Names list within QuickBooks. Sales representative’s names and initials appear on the Rep drop-down list on QuickBooks sales forms. A `SalesRepRef` refers to a person on the `SalesRep` list. In a request, if a `SalesRepRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
355
557
  SalesRepRef?: SalesRepRef;
356
- Balance?: string;
357
- TotalBalance?: string;
558
+ /** Each item on a sales form is assigned a sales-tax code that indicates whether the item is taxable or non-taxable, and why. Two general codes, which can be modified but not deleted, appear on the sales-tax code list by default:Non-taxable (`Name` = NON; `Desc` = Non-Taxable; `IsTaxable` = false)Taxable (`Name` = TAX; `Desc` = Taxable; `IsTaxable` = true) A sales-tax code can be deleted only if it is no longer associated with any customer, item, or transaction. If the “Do You Charge Sales Tax?” preference within QuickBooks is set to No, QuickBooks will assign the default non-taxable sales-tax code to all sales. A `SalesTaxCodeRef` aggregate refers to a sales-tax code on the list. In a request, if a `SalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In a Customer message, `SalesTaxCodeRef` refers to the sales-tax code that will be used for items related to this customer. In an `ItemInventory` message, `SalesTaxCodeRef` refers to the type of sales tax that will be charged for this item, if it is a taxable item and if sales tax is set up within QuickBooks. */
358
559
  SalesTaxCodeRef?: SalesTaxCodeRef;
560
+ /** A sales-tax item is used to calculate a single sales tax that is collected at a specified rate and paid to a single agency. (Compare with the `ItemSalesTaxGroupAdd` message.) An `ItemSalesTaxRef` aggregate refers to an item on this list. In a request, if an `ItemSalesTaxRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Taxes can be reflected in transaction line items The following information refers to invoices specifically, but it also applies to sales receipts. Generally its best to assign a tax item or tax group item to an invoice and allow QuickBooks to apply the same tax to all taxable items on the invoice. However in some situations multiple tax combinations are required, so this method doesn’t work. In this case one must use techniques to apply the taxes in the invoice itself as line items. Using lines to apply taxes isn’t always straight forward. When applying taxes as line items, only single tax items can be used, tax groups can only be used for the entire invoice. If you have multiple taxes which apply to all taxable items, and one or more other taxes that only apply to some of the items on an invoice its better to use a tax group which applies to the entire invoice for the taxes which applies to all taxable items and then apply the other taxes in the invoice itself. One applies a tax or tax group to an entire invoice by using the `ItemSalesTaxRef` aggregate. One can use subtotals to apply a single tax line to multiple items in an invoice, but the tax is only applied automatically for the first tax line after the subtotal line. Any other tax lines which need to be applied to the subtotal line must supply their own amount. If you don’t supply an amount the amount comes out as zero and the tax line is useless. When one does supply an amount, the amount of tax on the subtotal also shows up in the rate column for that tax line. There isn’t any way for the rate to show up as anything other than the amount of the tax. If you have a complicated tax situation where no single tax applies to all taxable items on the invoice, you must choose a zero percent tax to apply for the entire invoice. It is recommended to name such a tax item “Tax Calculated On Invoice” so that it’s clear that the tax is not being applied by QuickBooks on the entire invoice. */
359
561
  ItemSalesTaxRef?: ItemSalesTaxRef;
562
+ /** The country that sales tax is collected for. */
360
563
  SalesTaxCountry?: SalesTaxCountry;
564
+ /** The customer’s resale number, if they have one. This number will not affect reports or sales tax calculations. */
361
565
  ResaleNumber?: string;
566
+ /** Account numbers appear in the QuickBooks chart of accounts, Account fields, and reports and graphs. If the `IsUsingAccountNumber` preference is false (that is, if the QuickBooks user has the account numbers Preference turned off), you can still set account numbers through the SDK, but the numbers will not be visible in the user interface. */
362
567
  AccountNumber?: string;
568
+ /** Set and returned as a positive number that indicates a customer’s or vendor’s credit limit. If no value has been defined, there is no credit limit. */
363
569
  CreditLimit?: string;
570
+ /** Refers to a `PaymentMethod` object. In a request, if a `PreferredPaymentMethodRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
364
571
  PreferredPaymentMethodRef?: PreferredPaymentMethodRef;
572
+ /** Customer’s credit-card information. */
365
573
  CreditCardInfo?: CreditCardInfo;
574
+ /** `JobStatus` Status information about a sub-customer; used in reports. The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
366
575
  JobStatus?: JobStatus;
576
+ /** The date on which work for a sub-customer was started; used in reports. The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
367
577
  JobStartDate?: string;
578
+ /** The date on which work for a sub-customer is expected to be complete; used in reports. The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
368
579
  JobProjectedEndDate?: string;
580
+ /** The date on which work for a sub-customer was completed; used in reports.The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
369
581
  JobEndDate?: string;
582
+ /** A short job description for a sub-customer; used in reports.The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
370
583
  JobDesc?: string;
584
+ /** Job type can be used to separate jobs into any categories that are meaningful to the business. A `JobTypeRef` aggregate refers to a job type on the `JobType` list. In a request, if a `JobTypeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
371
585
  JobTypeRef?: JobTypeRef;
586
+ /** Not supported. */
372
587
  Notes?: string;
373
- AdditionalNotesRet?: AdditionalNotesRet | AdditionalNotesRet[];
588
+ /** List of notes. */
589
+ AdditionalNotesMod?: AdditionalNotesMod | AdditionalNotesMod[];
590
+ /** Preference for how invoices are delivered. */
374
591
  PreferredDeliveryMethod?: PreferredDeliveryMethod;
592
+ /** You can use price levels to specify custom pricing for specific customers. Once you create a price level for a customer, QuickBooks will automatically use the custom price in new invoices, sales receipts, sales orders or credit memos for that customer. You can override this automatic feature, however, when you create the invoices, sales receipts, etc.) The user can now specify a price level on line items in the following supported sales transactions: invoices, sales receipts, credit memos, and sales orders. Notice that the response data for the affected sales transaction does not list the price level that was used. The response simply lists the `Rate` for the item, which was set using the price level. */
375
593
  PriceLevelRef?: PriceLevelRef;
376
- ExternalGUID?: string;
594
+ /** The tax registration number used in CA and UK. */
377
595
  TaxRegistrationNumber?: string;
596
+ /** The currency object contains all of the information needed by QuickBooks to display and use. For built-in currencies, the name and currency code values are internationally accepted values and thus are not editable. The comma format is editable, as is the `IsActive` status. For user-defined currencies, every value in the object is editable including name and currency code. When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
378
597
  CurrencyRef?: CurrencyRef;
379
- DataExtRet?: DataExtRet | DataExtRet[];
380
598
  }
381
- export interface CustomerAddRs {
599
+ export interface CustomerModRq {
600
+ CustomerMod: CustomerMod;
601
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
602
+ IncludeRetElement?: string[] | string;
603
+ }
604
+ export interface CustomerModRs {
382
605
  CustomerRet?: CustomerRet;
383
606
  ErrorRecovery?: ErrorRecovery;
384
607
  }
385
- interface ContactsMod {
386
- ListID: string;
387
- EditSequence: string;
388
- Salutation?: string;
389
- FirstName: string;
390
- MiddleName?: string;
391
- LastName?: string;
392
- JobTitle?: string;
393
- AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
608
+ export interface CustomerQueryRq {
609
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
610
+ ListID?: string[] | string;
611
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
612
+ FullName?: string[] | string;
613
+ /** Limits the number of objects that a query returns. (To get a count of how many objects could possibly be returned, use the `metaData` query attribute.) If you include a `MaxReturned` value, it must be at least 1. */
614
+ MaxReturned?: number;
615
+ /** Used in filters to select list objects based on whether or not they are currently enabled for use by QuickBooks. The default value is `asActiveOnly`, which selects only list objects that are active. */
616
+ ActiveStatus?: ActiveStatus;
617
+ /** Selects objects modified on or after this date. See the note below regarding QBFC usage.For desktop versions of QuickBooks, the `FromModifiedDate` and `ToModifiedDate` must be between 1970-01-01 and 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). (The time portion of the field was not supported in qbXML version 1.0 or 1.1.) Also, for desktop versions of QuickBooks, if `FromModifiedDate` includes a date but not a time (for example, if you set `FromModifiedDate` to 2003-02-14), the time is assumed to be zero (2003-02-14T00:00:00). If you omit `FromModifiedDate`, it will be set to 1970-01-01T00:00:00 (1969-12-31T16:00:00-08:00 PST).For QBOE, the `FromModifiedDate` and `ToModifiedDate` must be between 1900-01-01T00:00:00 and 9999-12-31T00:00:00. If `FromModifiedDate` includes a date but not a time (for example, if you set `FromModifiedDate` to 2003-02-14), the time is assumed to be zero (2003-02-14T00:00:00). If you omit `FromModifiedDate`, it will be set to 1900-01-01T00:00:00.`Note`: When specifying this in QBFC, you need to supply the parameter `asDateOnly`, which is a Boolean. If `asDateOnly` is true, the date value will be represented as a date only (without a time). If `asDateOnly` is false, the date value will be represented as date and time, padded with zeros if necessary, and set to the beginning of the day if no time is provided. The `asDateOnly` parameter is especially useful in the `ToModifiedDate` field of a query: If `asDateOnly` is set to true in the `ToModifiedDate` field of a query, then the query includes elements modified up to the end of the day. If `asDateOnly` is false, the query includes elements modified up to the specified time (or up to the beginning of the day if no time is included). */
618
+ FromModifiedDate?: string;
619
+ /** Selects objects modified on or before this date. See the note below on QBFC usage.For desktop versions of QuickBooks, the `ToModifiedDate` and `FromModifiedDate` must be between 01/01/1970 and 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). (Note that the time portion of the field was not supported in qbXML version 1.0 or 1.1.) If `ToModifiedDate` includes a date but not a time (for example, if you set `ToModifiedDate` to 2003-02-14), the time is assumed to be the end of the day (2003-02-14T23:59:59). If you omit `ToModifiedDate` altogether, it will be set to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST).For QBOE, the `ToModifiedDate` and `FromModifiedDate` must be between 01/01/1900 and 9999-12-31T00:00:00. If `ToModifiedDate` includes a date but not a time (for example, if you set `ToModifiedDate` to 2003-02-14), the time is assumed to be the end of the day (2003-02-14T23:59:59). If you omit `ToModifiedDate` altogether, it will be set to 9999-12-31T00:00:00.`Note`: When specifying this in QBFC, you need to supply the parameter `asDateOnly`, which is a Boolean. If `asDateOnly` is true, the date value will be represented as a date only (without a time). If `asDateOnly` is false, the date value will be represented as date and time, padded with zeros if necessary, and set to the beginning of the day if no time is provided. The `asDateOnly` parameter is especially useful in the `ToModifiedDate` field of a query: If `asDateOnly` is set to true in the `ToModifiedDate` field of a query, then the query includes elements modified up to the end of the day. If `asDateOnly` is false, the query includes elements modified up to the specified time (or up to the beginning of the day if no time is included). */
620
+ ToModifiedDate?: string;
621
+ /** Filters according to the object’s `Name`. */
622
+ NameFilter?: NameFilter;
623
+ /** Filters according to the object’s `Name`. */
624
+ NameRangeFilter?: NameRangeFilter;
625
+ /** Filters according to total balance. Total balance includes the balance for all subaccounts; for example, a customer’s `TotalBalance` would include all the jobs for that customer. */
626
+ TotalBalanceFilter?: TotalBalanceFilter;
627
+ /** Filters by the specified currency. */
628
+ CurrencyFilter?: CurrencyFilter;
629
+ /** Filter according to class. */
630
+ ClassFilter?: ClassFilter;
631
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
632
+ IncludeRetElement?: string[] | string;
633
+ /** Zero or more `OwnerID` values. `OwnerID` refers to the owner of a data extension:If `OwnerID` is 0, this is a public data extension, also known as a custom field. Custom fields appear in the QuickBooks UI.If `OwnerID` is a GUID, for example `{6B063959-81B0-4622-85D6-F548C8CCB517}`, this field is a private data extension defined by an integrated application. Private data extensions do not appear in the QuickBooks UI. Note that `OwnerID` values are not case-sensitive, meaning that if you enter an `OwnerID` value with lower-case letters, the value will be saved and returned with upper-case letters. When you share a private data extension with another application, the other application must know both the `OwnerID` and the `DataExtName`, as these together form a data extension’s unique name. */
634
+ OwnerID?: string[] | string;
394
635
  }
395
- interface AdditionalNotesMod {
396
- NoteID: number;
397
- Note: string;
636
+ export interface CustomerQueryRs {
637
+ CustomerRet?: CustomerRet | CustomerRet[];
398
638
  }
399
- interface CustomerMod {
639
+ interface CustomerRef {
640
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
641
+ ListID?: string;
642
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
643
+ FullName?: string;
644
+ }
645
+ interface CustomerRet {
646
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
400
647
  ListID: string;
648
+ /** Time the object was created. */
649
+ TimeCreated: string;
650
+ /** Time the object was last modified. */
651
+ TimeModified: string;
652
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
401
653
  EditSequence: string;
402
- Name?: string;
654
+ /** The case-insensitive name of a list object, not including the names of its ancestors. `Name` must be unique, unless it is the `Name` of a “hierarchical” list object. List objects in different hierarchies can have duplicate names because their `FullNames` will still be unique. For example, two objects could both have the `Name` kitchen, but they could have unique `FullNames`, such as Job12:kitchen and Baker:kitchen. For built-in currencies, `Name` is the internationally accepted currency name and is not editable. */
655
+ Name: string;
656
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
657
+ FullName: string;
658
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
403
659
  IsActive?: boolean;
660
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
404
661
  ClassRef?: ClassRef;
662
+ /** A reference to the list object that is one level above this one. For example, an inventory item with the `FullName` of `GermanCars`:Mercedes-Benz:`CL500I99AA` might have a parent object with the `FullName` of `GermanCars`:Mercedes-Benz.In a request, if a `ParentRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
405
663
  ParentRef?: ParentRef;
664
+ /** The number of ancestors. For example, The customer job with `Name` = carpets and `FullName` = Jones:Building2:carpets would have a sublevel of 2. */
665
+ Sublevel: number;
666
+ /** The name of the QuickBooks user’s business, as specified in QuickBooks. `CompanyName` and Address are used on invoices, checks, and other forms. (`LegalCompanyName` and `LegalAddress`, on the other hand, are used on a company’s tax forms and pay stubs.) */
406
667
  CompanyName?: string;
668
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
407
669
  Salutation?: string;
670
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
408
671
  FirstName?: string;
672
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
409
673
  MiddleName?: string;
674
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
410
675
  LastName?: string;
676
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
411
677
  JobTitle?: string;
678
+ /** Whatever address you specify in this aggregate must not result in an address greater than 5 lines, otherwise you’ll get a runtime error, because QuickBooks doesn’t support addresses more than 5 lines. There are two ways to specify an address within this aggregate: Using `Addr1` through `Addr3` along with the other possible aggregate elements, such as `City`, `State`, Postalcode.Using `Addr1`, `Addr2`, `Addr3`, `Addr4`, and `Addr5` to fully specify the address. If you use this so called “address block” approach, you cannot use any other address elements, such as `City`, `State`, etc. (Note: this approach is not valid for `EmployeeAdd`/Mod/Query) If you use the address block approach above, the lines `Addr1`…`Addr5` are each printed as a separate line on the transaction, and the values are returned in the Ret object under the aggregate `ShipAddressBlock` or `BillAddressBlock`. */
412
679
  BillAddress?: BillAddress;
680
+ /** The address expressed as an address block of `Addr1` through `Addr5`, depending on the number of lines in the original request that created the address. */
681
+ BillAddressBlock?: BillAddressBlock;
682
+ /** Whatever address you specify in this aggregate must not result in an address greater than 5 lines, otherwise you’ll get a runtime error, because QuickBooks doesn’t support addresses more than 5 lines. There are two ways to specify an address within this aggregate: Using `Addr1` through `Addr3` along with the other possible aggregate elements, such as `City`, `State`, Postalcode.Using `Addr1`, `Addr2`, `Addr3`, `Addr4`, and `Addr5` to fully specify the address. If you use this so called “address block” approach, you cannot use any other address elements, such as `City`, `State`, etc. (Note: this approach is not valid for `EmployeeAdd`/Mod/Query) If you use the address block approach above, the lines `Addr1`…`Addr5` are each printed as a separate line on the transaction, and the values are returned in the Ret object under the aggregate `ShipAddressBlock` or `BillAddressBlock`. */
413
683
  ShipAddress?: ShipAddress;
684
+ /** The address expressed as an address block of `Addr1` through `Addr5`, depending on the number of lines in the original request that created the address. */
685
+ ShipAddressBlock?: ShipAddressBlock;
686
+ /** List of ship to addresses. */
414
687
  ShipToAddress?: ShipToAddress | ShipToAddress[];
688
+ /** The telephone number. */
415
689
  Phone?: string;
690
+ /** A telephone number given as an alternative to `Phone`. */
416
691
  AltPhone?: string;
692
+ /** Fax number. */
417
693
  Fax?: string;
694
+ /** E-mail address. */
418
695
  Email?: string;
696
+ /** Email address that would be carbon copied or CC. */
419
697
  Cc?: string;
698
+ /** The name of a contact person for a customer or vendor. */
420
699
  Contact?: string;
700
+ /** The name of an alternate contact person for a vendor, customer, or “other name” entry. */
421
701
  AltContact?: string;
702
+ /** List of additional contacts. */
422
703
  AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
423
- ContactsMod?: ContactsMod | ContactsMod[];
704
+ /** A list of contact records. */
705
+ ContactsRet?: ContactsRet | ContactsRet[];
706
+ /** Customer types allow business owners to categorize customers in ways that are meaningful for their businesses. For example, a customer type might indicate which industry a customer represents, or which part of the country a customer is in. A `CustomerTypeRef` aggregate refers to one of the types on the `CustomerType` list. In a request, if a `CustomerTypeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
424
707
  CustomerTypeRef?: CustomerTypeRef;
708
+ /** Refers to the payment terms associated with this entity. (This will be an item on the `DateDrivenTerms` or `StandardTerms` list.) If a `TermsRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
425
709
  TermsRef?: TermsRef;
710
+ /** A sales representative must be on the Employee, Vendor, or Other Names list within QuickBooks. Sales representative’s names and initials appear on the Rep drop-down list on QuickBooks sales forms. A `SalesRepRef` refers to a person on the `SalesRep` list. In a request, if a `SalesRepRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
426
711
  SalesRepRef?: SalesRepRef;
712
+ /** A positive number indicates money owed by the customer. Compare with `TotalBalance`. */
713
+ Balance?: string;
714
+ /** Total balance for this customer, including all this customer’s jobs (subcustomers). A positive number indicates money that the customer owes. If a customer does not have any subcustomers, `TotalBalance` and `Balance` are the same. */
715
+ TotalBalance?: string;
716
+ /** Each item on a sales form is assigned a sales-tax code that indicates whether the item is taxable or non-taxable, and why. Two general codes, which can be modified but not deleted, appear on the sales-tax code list by default:Non-taxable (`Name` = NON; `Desc` = Non-Taxable; `IsTaxable` = false)Taxable (`Name` = TAX; `Desc` = Taxable; `IsTaxable` = true) A sales-tax code can be deleted only if it is no longer associated with any customer, item, or transaction. If the “Do You Charge Sales Tax?” preference within QuickBooks is set to No, QuickBooks will assign the default non-taxable sales-tax code to all sales. A `SalesTaxCodeRef` aggregate refers to a sales-tax code on the list. In a request, if a `SalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In a Customer message, `SalesTaxCodeRef` refers to the sales-tax code that will be used for items related to this customer. In an `ItemInventory` message, `SalesTaxCodeRef` refers to the type of sales tax that will be charged for this item, if it is a taxable item and if sales tax is set up within QuickBooks. */
427
717
  SalesTaxCodeRef?: SalesTaxCodeRef;
718
+ /** A sales-tax item is used to calculate a single sales tax that is collected at a specified rate and paid to a single agency. (Compare with the `ItemSalesTaxGroupAdd` message.) An `ItemSalesTaxRef` aggregate refers to an item on this list. In a request, if an `ItemSalesTaxRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Taxes can be reflected in transaction line items The following information refers to invoices specifically, but it also applies to sales receipts. Generally its best to assign a tax item or tax group item to an invoice and allow QuickBooks to apply the same tax to all taxable items on the invoice. However in some situations multiple tax combinations are required, so this method doesn’t work. In this case one must use techniques to apply the taxes in the invoice itself as line items. Using lines to apply taxes isn’t always straight forward. When applying taxes as line items, only single tax items can be used, tax groups can only be used for the entire invoice. If you have multiple taxes which apply to all taxable items, and one or more other taxes that only apply to some of the items on an invoice its better to use a tax group which applies to the entire invoice for the taxes which applies to all taxable items and then apply the other taxes in the invoice itself. One applies a tax or tax group to an entire invoice by using the `ItemSalesTaxRef` aggregate. One can use subtotals to apply a single tax line to multiple items in an invoice, but the tax is only applied automatically for the first tax line after the subtotal line. Any other tax lines which need to be applied to the subtotal line must supply their own amount. If you don’t supply an amount the amount comes out as zero and the tax line is useless. When one does supply an amount, the amount of tax on the subtotal also shows up in the rate column for that tax line. There isn’t any way for the rate to show up as anything other than the amount of the tax. If you have a complicated tax situation where no single tax applies to all taxable items on the invoice, you must choose a zero percent tax to apply for the entire invoice. It is recommended to name such a tax item “Tax Calculated On Invoice” so that it’s clear that the tax is not being applied by QuickBooks on the entire invoice. */
428
719
  ItemSalesTaxRef?: ItemSalesTaxRef;
720
+ /** The country that sales tax is collected for. */
429
721
  SalesTaxCountry?: SalesTaxCountry;
722
+ /** The customer’s resale number, if they have one. This number will not affect reports or sales tax calculations. */
430
723
  ResaleNumber?: string;
724
+ /** Account numbers appear in the QuickBooks chart of accounts, Account fields, and reports and graphs. If the `IsUsingAccountNumber` preference is false (that is, if the QuickBooks user has the account numbers Preference turned off), you can still set account numbers through the SDK, but the numbers will not be visible in the user interface. */
431
725
  AccountNumber?: string;
726
+ /** Set and returned as a positive number that indicates a customer’s or vendor’s credit limit. If no value has been defined, there is no credit limit. */
432
727
  CreditLimit?: string;
728
+ /** Refers to a `PaymentMethod` object. In a request, if a `PreferredPaymentMethodRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
433
729
  PreferredPaymentMethodRef?: PreferredPaymentMethodRef;
730
+ /** Customer’s credit-card information. */
434
731
  CreditCardInfo?: CreditCardInfo;
732
+ /** `JobStatus` Status information about a sub-customer; used in reports. The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
435
733
  JobStatus?: JobStatus;
734
+ /** The date on which work for a sub-customer was started; used in reports. The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
436
735
  JobStartDate?: string;
736
+ /** The date on which work for a sub-customer is expected to be complete; used in reports. The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
437
737
  JobProjectedEndDate?: string;
738
+ /** The date on which work for a sub-customer was completed; used in reports.The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
438
739
  JobEndDate?: string;
740
+ /** A short job description for a sub-customer; used in reports.The Job- elements (`JobDesc`, `JobEndDate`, `JobProjectedEndDate`, `JobStartDate`, and `JobStatus`) correspond to the fields in the Job Info tab of the Edit Job window in QuickBooks. */
439
741
  JobDesc?: string;
742
+ /** Job type can be used to separate jobs into any categories that are meaningful to the business. A `JobTypeRef` aggregate refers to a job type on the `JobType` list. In a request, if a `JobTypeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
440
743
  JobTypeRef?: JobTypeRef;
744
+ /** Not supported. */
441
745
  Notes?: string;
442
- AdditionalNotesMod?: AdditionalNotesMod | AdditionalNotesMod[];
746
+ /** List of notes. */
747
+ AdditionalNotesRet?: AdditionalNotesRet | AdditionalNotesRet[];
748
+ /** Preference for how invoices are delivered. */
443
749
  PreferredDeliveryMethod?: PreferredDeliveryMethod;
750
+ /** You can use price levels to specify custom pricing for specific customers. Once you create a price level for a customer, QuickBooks will automatically use the custom price in new invoices, sales receipts, sales orders or credit memos for that customer. You can override this automatic feature, however, when you create the invoices, sales receipts, etc.) The user can now specify a price level on line items in the following supported sales transactions: invoices, sales receipts, credit memos, and sales orders. Notice that the response data for the affected sales transaction does not list the price level that was used. The response simply lists the `Rate` for the item, which was set using the price level. */
444
751
  PriceLevelRef?: PriceLevelRef;
752
+ /** Allows for the attachment of a user defined GUID value. */
753
+ ExternalGUID?: string;
754
+ /** The tax registration number used in CA and UK. */
445
755
  TaxRegistrationNumber?: string;
756
+ /** The currency object contains all of the information needed by QuickBooks to display and use. For built-in currencies, the name and currency code values are internationally accepted values and thus are not editable. The comma format is editable, as is the `IsActive` status. For user-defined currencies, every value in the object is editable including name and currency code. When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
446
757
  CurrencyRef?: CurrencyRef;
758
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
759
+ DataExtRet?: DataExtRet | DataExtRet[];
447
760
  }
448
- export interface CustomerModRq {
449
- CustomerMod: CustomerMod;
450
- IncludeRetElement?: string[] | string;
451
- }
452
- export interface CustomerModRs {
453
- CustomerRet?: CustomerRet;
454
- ErrorRecovery?: ErrorRecovery;
455
- }
456
- declare type Operator = "Equal" | "GreaterThan" | "GreaterThanEqual" | "LessThan" | "LessThanEqual";
457
- interface TotalBalanceFilter {
458
- Operator: Operator;
459
- Amount: string;
460
- }
461
- interface ClassFilter {
462
- ListID?: string[] | string;
463
- FullName?: string[] | string;
464
- ListIDWithChildren?: string;
465
- FullNameWithChildren?: string;
466
- }
467
- export interface CustomerQueryRq {
468
- ListID?: string[] | string;
469
- FullName?: string[] | string;
470
- MaxReturned?: number;
471
- ActiveStatus?: ActiveStatus;
472
- FromModifiedDate?: string;
473
- ToModifiedDate?: string;
474
- NameFilter?: NameFilter;
475
- NameRangeFilter?: NameRangeFilter;
476
- TotalBalanceFilter?: TotalBalanceFilter;
477
- CurrencyFilter?: CurrencyFilter;
478
- ClassFilter?: ClassFilter;
479
- IncludeRetElement?: string[] | string;
480
- OwnerID?: string[] | string;
481
- }
482
- export interface CustomerQueryRs {
483
- CustomerRet?: CustomerRet | CustomerRet[];
484
- }
485
- interface SupervisorRef {
486
- ListID?: string;
487
- FullName?: string;
488
- }
489
- interface EmployeeAddress {
490
- Addr1?: string;
491
- Addr2?: string;
492
- City?: string;
493
- State?: string;
494
- PostalCode?: string;
495
- }
496
- declare type Relation = "Brother" | "Daughter" | "Father" | "Friend" | "Mother" | "Other" | "Partner" | "Sister" | "Son" | "Spouse";
497
- interface PrimaryContact {
498
- ContactName: string;
499
- ContactValue: string;
500
- Relation?: Relation;
501
- }
502
- interface SecondaryContact {
503
- ContactName: string;
504
- ContactValue: string;
505
- Relation?: Relation;
506
- }
507
- interface EmergencyContacts {
508
- PrimaryContact?: PrimaryContact;
509
- SecondaryContact?: SecondaryContact;
510
- }
511
- /** @default: Regular */
512
- declare type EmployeeType = "Officer" | "Owner" | "Regular" | "Statutory";
513
- declare type PartOrFullTime = "FullTime" | "PartTime";
514
- declare type Exempt = "Exempt" | "NonExempt";
515
- declare type KeyEmployee = "No" | "Yes";
516
- declare type Gender = "Female" | "Male";
517
- declare type USCitizen = "No" | "Yes";
518
- declare type Ethnicity = "AmericianIndian" | "Asian" | "Black" | "Hawaiian" | "Hispanic" | "TwoOrMoreRaces" | "White";
519
- declare type Disabled = "No" | "Yes";
520
- declare type OnFile = "No" | "Yes";
521
- declare type USVeteran = "No" | "Yes";
522
- declare type MilitaryStatus = "Active" | "Reserve";
523
- interface BillingRateRef {
524
- ListID?: string;
525
- FullName?: string;
526
- }
527
- declare type PayPeriod = "Biweekly" | "Daily" | "Monthly" | "Quarterly" | "Semimonthly" | "Weekly" | "Yearly";
528
- interface PayrollItemWageRef {
761
+ interface CustomerTypeRef {
762
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
529
763
  ListID?: string;
764
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
530
765
  FullName?: string;
531
766
  }
532
- interface Earnings {
533
- PayrollItemWageRef: PayrollItemWageRef;
534
- Rate?: string;
535
- RatePercent?: string;
536
- }
537
- declare type UseTimeDataToCreatePaychecks = "DoNotUseTimeData" | "NotSet" | "UseTimeData";
538
- declare type AccrualPeriod = "BeginningOfYear" | "EveryHourOnPaycheck" | "EveryPaycheck";
539
- interface SickHours {
540
- HoursAvailable?: string;
541
- AccrualPeriod?: AccrualPeriod;
542
- HoursAccrued?: string;
543
- MaximumHours?: string;
544
- IsResettingHoursEachNewYear?: boolean;
545
- HoursUsed?: string;
546
- AccrualStartDate?: string;
547
- }
548
- interface VacationHours {
549
- HoursAvailable?: string;
550
- AccrualPeriod?: AccrualPeriod;
551
- HoursAccrued?: string;
552
- MaximumHours?: string;
553
- IsResettingHoursEachNewYear?: boolean;
554
- HoursUsed?: string;
555
- AccrualStartDate?: string;
767
+ interface DataExtRet {
768
+ /** `OwnerID` refers to the owner of a data extension, and must be 0 or a valid GUID. (Custom fields, which are visible in the QuickBooks UI, always have an `OwnerID` of 0. )
769
+
770
+ Usually you would keep your application’s GUID confidential to prevent other applications from accessing your data extensions. But if you want to share data extensions with another application, the applications need to use the same GUID. In this case, each application could use two GUIDs, one for shared data extensions and one for confidential data extensions. (An application can have any number of GUIDs.)
771
+
772
+ When you share a data extension with another application, the other application must know both the `OwnerID` and the `DataExtName`, as these together form a data extension’s unique name. */
773
+ OwnerID?: string;
774
+ /** The name of the data extension. If this is a custom field, `DataExtName` will be visible as a label in the QuickBooks user interface. Also because `OwnerID` and `DataExtName` together make the data extension unique, and because custom fields all have the same `OwnerID` of zero, the `DataExtName` must be a unique value among existing custom fields. In contrast, the `DataExtName` for private data extensions must be unique only for the specified `OwnerID` GUID. */
775
+ DataExtName: string;
776
+ /** The field’s data type, which corresponds to a qbXML data type. In an `IDataExtDefAdd` request object, if this is a custom field, `DataExtType` must be `detSTR255TYPE`. */
777
+ DataExtType: DataExtType;
778
+ /** The data in this field. The maximum length of `DataExtValue` will depend on the `DataExtType` of this data extension. For example, if `DataExtType` is `STR255TYPE`, the maximum length of `DataExtValue` is 255 characters. If `DataExtType` is `STR1024TYPE`, the maximum size of `DataExtValue` is `1KB`. */
779
+ DataExtValue: string;
556
780
  }
557
- interface EmployeePayrollInfo {
558
- PayPeriod?: PayPeriod;
559
- ClassRef?: ClassRef;
560
- ClearEarnings?: boolean;
561
- Earnings?: Earnings | Earnings[];
562
- IsUsingTimeDataToCreatePaychecks?: boolean;
563
- UseTimeDataToCreatePaychecks?: UseTimeDataToCreatePaychecks;
564
- SickHours?: SickHours;
565
- VacationHours?: VacationHours;
781
+ declare type DataExtType = "AMTTYPE" | "DATETIMETYPE" | "INTTYPE" | "PERCENTTYPE" | "PRICETYPE" | "QUANTYPE" | "STR255TYPE" | "STR1024TYPE";
782
+ declare type DateMacro = "All" | "LastCalendarQuarter" | "LastCalendarQuarterToDate" | "LastCalendarYear" | "LastCalendarYearToDate" | "LastFiscalQuarter" | "LastFiscalQuarterToDate" | "LastFiscalYear" | "LastFiscalYearToDate" | "LastMonth" | "LastMonthToDate" | "LastWeek" | "LastWeekToDate" | "NextCalendarQuarter" | "NextCalendarYear" | "NextFiscalQuarter" | "NextFiscalYear" | "NextFourWeeks" | "NextMonth" | "NextWeek" | "ThisCalendarQuarter" | "ThisCalendarQuarterToDate" | "ThisCalendarYear" | "ThisCalendarYearToDate" | "ThisFiscalQuarter" | "ThisFiscalQuarterToDate" | "ThisFiscalYear" | "ThisFiscalYearToDate" | "ThisMonth" | "ThisMonthToDate" | "ThisWeek" | "ThisWeekToDate" | "Today" | "Yesterday";
783
+ declare type Disabled = "No" | "Yes";
784
+ interface Earnings {
785
+ /** Each payroll wage item describes and names a payment scheme, for example, Regular Pay or Overtime Pay. A `PayrollItemWageRef` aggregate refers to one of these wage items. In a request, if a `PayrollItemWageRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Within QuickBooks, a timesheet can specify a payroll wage item only if the following criteria are met: The name on the timesheet (which corresponds to the `EntityRef` in the `TimeTracking` object) is on the QuickBooks Employee list, and The “Use time data to create paychecks” preference is turned on in the QuickBooks Payroll Info window that provides detailed employee information employee. */
786
+ PayrollItemWageRef: PayrollItemWageRef;
787
+ /** Indicates the price of something. */
788
+ Rate?: string;
789
+ /** Indicates the price of something as a percent. */
790
+ RatePercent?: string;
791
+ }
792
+ interface EmergencyContacts {
793
+ /** Primary emergency contact information for the employee. */
794
+ PrimaryContact?: PrimaryContact;
795
+ /** Secondary emergency contact information for the employee. */
796
+ SecondaryContact?: SecondaryContact;
566
797
  }
567
798
  interface EmployeeAdd {
799
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
568
800
  IsActive?: boolean;
801
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
569
802
  Salutation?: string;
803
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
570
804
  FirstName?: string;
805
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
571
806
  MiddleName?: string;
807
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
572
808
  LastName?: string;
809
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
573
810
  JobTitle?: string;
811
+ /** The name of a customer, vendor, employee, or person on the “other names” list in the employment job details section. */
574
812
  SupervisorRef?: SupervisorRef;
813
+ /** The name of the department in the employment job details section. */
575
814
  Department?: string;
815
+ /** The description details in the employment job details section. */
576
816
  Description?: string;
817
+ /** The target bonus amount in the employment job details section. */
577
818
  TargetBonus?: string;
819
+ /** If an address request fails, some combination of address fields might be too long. If you use payroll, you must specify the employee’s city, state (or province), ZIP (or postal) code, and at least one line of the street address. (Note that the `State` element has restrictions when it’s used in the `EmployeeAddress` aggregate. For more information, click `State` in the table.) */
578
820
  EmployeeAddress?: EmployeeAddress;
821
+ /** By default within QuickBooks, the `PrintAs` element is the same as the `Name` element. */
579
822
  PrintAs?: string;
823
+ /** The telephone number. */
580
824
  Phone?: string;
825
+ /** Mobile telephone number. */
581
826
  Mobile?: string;
827
+ /** The pager number. */
582
828
  Pager?: string;
829
+ /** A personal identification number for this employee’s pager. */
583
830
  PagerPIN?: string;
831
+ /** A telephone number given as an alternative to `Phone`. */
584
832
  AltPhone?: string;
833
+ /** Fax number. */
585
834
  Fax?: string;
835
+ /** Social security number. When you add an `SSN` value to an employee record, it does not have to include dashes; for example, either 123-45-6789 or 123456789 would be valid. */
586
836
  SSN?: string;
837
+ /** E-mail address. */
587
838
  Email?: string;
839
+ /** List of additional contacts. */
588
840
  AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
841
+ /** Emergency `Contact` information for the employee. */
589
842
  EmergencyContacts?: EmergencyContacts;
843
+ /** `EmployeeType` can affect payroll taxes for an employee. A statutory employee is a person who is defined as an employee by statute. Usually an owner or partner will be on the Other Names list, but if they are on the Employee list, their `EmployeeType` will be Owner. */
590
844
  EmployeeType?: EmployeeType;
845
+ /** Full or Part time status of the employee. */
591
846
  PartOrFullTime?: PartOrFullTime;
847
+ /** Exempt or Non-exempt status of the employee. */
592
848
  Exempt?: Exempt;
849
+ /** Is employee a key or critical employee. */
593
850
  KeyEmployee?: KeyEmployee;
851
+ /** The gender of this employee. */
594
852
  Gender?: Gender;
853
+ /** An employee’s date of hire. */
595
854
  HiredDate?: string;
855
+ /** Original hire date the employee was hired. */
596
856
  OriginalHireDate?: string;
857
+ /** Adjusted service date for the employee. */
597
858
  AdjustedServiceDate?: string;
859
+ /** The date on which this person’s employment with the company ended. */
598
860
  ReleasedDate?: string;
861
+ /** Date of birth. */
599
862
  BirthDate?: string;
863
+ /** Is employee a US citizen? */
600
864
  USCitizen?: USCitizen;
865
+ /** Ethnicity of employee from `AmericianIndian`, Asian, Black, Hawaiian, Hispanic, White, `TwoOrMoreRaces` */
601
866
  Ethnicity?: Ethnicity;
867
+ /** Is employee disabled? */
602
868
  Disabled?: Disabled;
869
+ /** Description of employee’s disablitily. */
603
870
  DisabilityDesc?: string;
871
+ /** Is the employee’s I-9 on file? */
604
872
  OnFile?: OnFile;
873
+ /** Date the employee’s work authorization expires. */
605
874
  WorkAuthExpireDate?: string;
875
+ /** Is employee a US veteran? */
606
876
  USVeteran?: USVeteran;
877
+ /** Military status if the employee is a US veteran. */
607
878
  MilitaryStatus?: MilitaryStatus;
879
+ /** Account numbers appear in the QuickBooks chart of accounts, Account fields, and reports and graphs. If the `IsUsingAccountNumber` preference is false (that is, if the QuickBooks user has the account numbers Preference turned off), you can still set account numbers through the SDK, but the numbers will not be visible in the user interface. */
608
880
  AccountNumber?: string;
881
+ /** Additional information. */
609
882
  Notes?: string;
883
+ /** List of notes. */
610
884
  AdditionalNotes?: AdditionalNotes | AdditionalNotes[];
885
+ /** Billing rates are used to override the service item rate in a time transaction (`TimeTrackingAdd`) based on the employee or vendor performing the work. Billing rates are assigned to an employee or a vendor to specify overrides to service items. */
611
886
  BillingRateRef?: BillingRateRef;
887
+ /** Pay information for this employee. */
612
888
  EmployeePayrollInfo?: EmployeePayrollInfo;
889
+ /** Allows for the attachment of a user defined GUID value. */
613
890
  ExternalGUID?: string;
614
891
  }
892
+ interface EmployeeAddress {
893
+ /** The first line of an address. */
894
+ Addr1?: string;
895
+ /** The second line of an address (if a second line is needed). */
896
+ Addr2?: string;
897
+ /** The city name in an address. */
898
+ City?: string;
899
+ /** When it appears in the `EmployeeAddress` aggregate, the `State` element acts like an ENUMTYPE with the following possible values: None, AA (military), AE (military), AK, AL, AP (military), AR, AZ, CA, CO, CT, DC, DE, FL, GA, HI, IA, ID, IL, IN, KS, KY, LA, MA, MD, ME, MI, MN, MO, MS, MT, NC, ND, NE, NH, NJ, NM, NV, NY, OH, OK, OR, PA, PR, RI, SC, SD, TN, TX, UT, VA, VT, WA, WI, WV, and WY. */
900
+ State?: string;
901
+ /** The postal code in an address. */
902
+ PostalCode?: string;
903
+ }
615
904
  export interface EmployeeAddRq {
616
905
  EmployeeAdd: EmployeeAdd;
906
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
617
907
  IncludeRetElement?: string[] | string;
618
908
  }
619
- interface EmployeeRet {
909
+ export interface EmployeeAddRs {
910
+ EmployeeRet?: EmployeeRet;
911
+ ErrorRecovery?: ErrorRecovery;
912
+ }
913
+ interface EmployeeMod {
914
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
620
915
  ListID: string;
621
- TimeCreated: string;
622
- TimeModified: string;
916
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
623
917
  EditSequence: string;
624
- Name: string;
918
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
625
919
  IsActive?: boolean;
920
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
626
921
  Salutation?: string;
922
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
627
923
  FirstName?: string;
924
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
628
925
  MiddleName?: string;
926
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
629
927
  LastName?: string;
928
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
630
929
  JobTitle?: string;
930
+ /** The name of a customer, vendor, employee, or person on the “other names” list in the employment job details section. */
631
931
  SupervisorRef?: SupervisorRef;
932
+ /** The name of the department in the employment job details section. */
632
933
  Department?: string;
934
+ /** The description details in the employment job details section. */
633
935
  Description?: string;
936
+ /** The target bonus amount in the employment job details section. */
634
937
  TargetBonus?: string;
938
+ /** If an address request fails, some combination of address fields might be too long. If you use payroll, you must specify the employee’s city, state (or province), ZIP (or postal) code, and at least one line of the street address. (Note that the `State` element has restrictions when it’s used in the `EmployeeAddress` aggregate. For more information, click `State` in the table.) */
635
939
  EmployeeAddress?: EmployeeAddress;
940
+ /** By default within QuickBooks, the `PrintAs` element is the same as the `Name` element. */
636
941
  PrintAs?: string;
942
+ /** The telephone number. */
637
943
  Phone?: string;
944
+ /** Mobile telephone number. */
638
945
  Mobile?: string;
946
+ /** The pager number. */
639
947
  Pager?: string;
948
+ /** A personal identification number for this employee’s pager. */
640
949
  PagerPIN?: string;
950
+ /** A telephone number given as an alternative to `Phone`. */
641
951
  AltPhone?: string;
952
+ /** Fax number. */
642
953
  Fax?: string;
643
- SSN?: string;
954
+ /** E-mail address. */
644
955
  Email?: string;
956
+ /** List of additional contacts. */
645
957
  AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
958
+ /** Emergency `Contact` information for the employee. */
646
959
  EmergencyContacts?: EmergencyContacts;
960
+ /** `EmployeeType` can affect payroll taxes for an employee. A statutory employee is a person who is defined as an employee by statute. Usually an owner or partner will be on the Other Names list, but if they are on the Employee list, their `EmployeeType` will be Owner. */
647
961
  EmployeeType?: EmployeeType;
962
+ /** Full or Part time status of the employee. */
648
963
  PartOrFullTime?: PartOrFullTime;
964
+ /** Exempt or Non-exempt status of the employee. */
649
965
  Exempt?: Exempt;
966
+ /** Is employee a key or critical employee. */
650
967
  KeyEmployee?: KeyEmployee;
651
- Gender?: Gender;
968
+ /** An employee’s date of hire. */
652
969
  HiredDate?: string;
970
+ /** Original hire date the employee was hired. */
653
971
  OriginalHireDate?: string;
972
+ /** Adjusted service date for the employee. */
654
973
  AdjustedServiceDate?: string;
974
+ /** The date on which this person’s employment with the company ended. */
655
975
  ReleasedDate?: string;
976
+ /** Date of birth. */
656
977
  BirthDate?: string;
978
+ /** Is employee a US citizen? */
657
979
  USCitizen?: USCitizen;
980
+ /** Ethnicity of employee from `AmericianIndian`, Asian, Black, Hawaiian, Hispanic, White, `TwoOrMoreRaces`. */
658
981
  Ethnicity?: Ethnicity;
982
+ /** Is employee disabled? */
659
983
  Disabled?: Disabled;
984
+ /** Description of employee’s disablitily. */
660
985
  DisabilityDesc?: string;
986
+ /** Is the employee’s I-9 on file? */
661
987
  OnFile?: OnFile;
988
+ /** Date the employee’s work authorization expires. */
662
989
  WorkAuthExpireDate?: string;
990
+ /** Is employee a US veteran? */
663
991
  USVeteran?: USVeteran;
992
+ /** Military status if the employee is a US veteran. */
664
993
  MilitaryStatus?: MilitaryStatus;
994
+ /** Account numbers appear in the QuickBooks chart of accounts, Account fields, and reports and graphs. If the `IsUsingAccountNumber` preference is false (that is, if the QuickBooks user has the account numbers Preference turned off), you can still set account numbers through the SDK, but the numbers will not be visible in the user interface. */
665
995
  AccountNumber?: string;
996
+ /** Additional information. */
666
997
  Notes?: string;
667
- AdditionalNotesRet?: AdditionalNotesRet | AdditionalNotesRet[];
998
+ /** List of notes. */
999
+ AdditionalNotesMod?: AdditionalNotesMod | AdditionalNotesMod[];
1000
+ /** Billing rates are used to override the service item rate in a time transaction (`TimeTrackingAdd`) based on the employee or vendor performing the work. Billing rates are assigned to an employee or a vendor to specify overrides to service items. */
668
1001
  BillingRateRef?: BillingRateRef;
669
- EmployeePayrollInfo?: EmployeePayrollInfo;
670
- ExternalGUID?: string;
671
- DataExtRet?: DataExtRet | DataExtRet[];
1002
+ /** Pay information for this employee. */
1003
+ EmployeePayrollInfoMod?: EmployeePayrollInfoMod;
672
1004
  }
673
- export interface EmployeeAddRs {
1005
+ export interface EmployeeModRq {
1006
+ EmployeeMod: EmployeeMod;
1007
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
1008
+ IncludeRetElement?: string[] | string;
1009
+ }
1010
+ export interface EmployeeModRs {
674
1011
  EmployeeRet?: EmployeeRet;
675
1012
  ErrorRecovery?: ErrorRecovery;
676
1013
  }
1014
+ interface EmployeePayrollInfo {
1015
+ /** Indicates how often employees are paid. If you include a blank `PayPeriod` element in an `EmployeeMod` message, you’ll receive an error. The default value is whatever the QuickBooks user has set in the QuickBooks Employee Preferences. */
1016
+ PayPeriod?: PayPeriod;
1017
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
1018
+ ClassRef?: ClassRef;
1019
+ /** If `ClearEarnings` is set to true, the earnings will be deleted for this employee. */
1020
+ ClearEarnings?: boolean;
1021
+ /** A list of `IEarnings` aggregate objects. If an `EmployeeMod` request does not include any `IEarnings` objects, the earnings table for that employee will not change. If `EmployeeMod` includes at least one `IEarnings` object, all existing earnings information will be deleted for that employee, and all the earnings information in the -Mod request will be added. (To delete all the earnings information, set the `ClearEarnings` field to true in an `EmployeeMod` request.) */
1022
+ Earnings?: Earnings | Earnings[];
1023
+ /** Indicates whether or not paychecks are generated from time-tracking data. If you include a blank `IsUsingTimeDataToCreatePaychecks` element in an `EmployeeMod` message, you’ll receive an error. */
1024
+ IsUsingTimeDataToCreatePaychecks?: boolean;
1025
+ /** Indicates whether time data is used to create paychecks for this employee. */
1026
+ UseTimeDataToCreatePaychecks?: UseTimeDataToCreatePaychecks;
1027
+ /** Describes how “sick time” is accrued for this employee, along with how many sick hours the employee has accrued. */
1028
+ SickHours?: SickHours;
1029
+ /** Describes how vacation time is accrued for this employee, along with how many vacation hours the employee has accrued. */
1030
+ VacationHours?: VacationHours;
1031
+ }
677
1032
  interface EmployeePayrollInfoMod {
1033
+ /** Indicates how often employees are paid. If you include a blank `PayPeriod` element in an `EmployeeMod` message, you’ll receive an error. The default value is whatever the QuickBooks user has set in the QuickBooks Employee Preferences. */
678
1034
  PayPeriod?: PayPeriod;
1035
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
679
1036
  ClassRef?: ClassRef;
1037
+ /** If `ClearEarnings` is set to true, the earnings will be deleted for this employee. */
680
1038
  ClearEarnings?: boolean;
1039
+ /** A list of `IEarnings` aggregate objects. If an `EmployeeMod` request does not include any `IEarnings` objects, the earnings table for that employee will not change. If `EmployeeMod` includes at least one `IEarnings` object, all existing earnings information will be deleted for that employee, and all the earnings information in the -Mod request will be added. (To delete all the earnings information, set the `ClearEarnings` field to true in an `EmployeeMod` request.) */
681
1040
  Earnings?: Earnings | Earnings[];
1041
+ /** Indicates whether or not paychecks are generated from time-tracking data. If you include a blank `IsUsingTimeDataToCreatePaychecks` element in an `EmployeeMod` message, you’ll receive an error. */
682
1042
  IsUsingTimeDataToCreatePaychecks?: boolean;
1043
+ /** Indicates whether time data is used to create paychecks for this employee. */
683
1044
  UseTimeDataToCreatePaychecks?: UseTimeDataToCreatePaychecks;
1045
+ /** Describes how “sick time” is accrued for this employee, along with how many sick hours the employee has accrued. */
684
1046
  SickHours?: SickHours;
1047
+ /** Describes how vacation time is accrued for this employee, along with how many vacation hours the employee has accrued. */
685
1048
  VacationHours?: VacationHours;
686
1049
  }
687
- interface EmployeeMod {
1050
+ export interface EmployeeQueryRq {
1051
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1052
+ ListID?: string[] | string;
1053
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1054
+ FullName?: string[] | string;
1055
+ /** Limits the number of objects that a query returns. (To get a count of how many objects could possibly be returned, use the `metaData` query attribute.) If you include a `MaxReturned` value, it must be at least 1. */
1056
+ MaxReturned?: number;
1057
+ /** Used in filters to select list objects based on whether or not they are currently enabled for use by QuickBooks. The default value is `asActiveOnly`, which selects only list objects that are active. */
1058
+ ActiveStatus?: ActiveStatus;
1059
+ /** Selects objects modified on or after this date. See the note below regarding QBFC usage.For desktop versions of QuickBooks, the `FromModifiedDate` and `ToModifiedDate` must be between 1970-01-01 and 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). (The time portion of the field was not supported in qbXML version 1.0 or 1.1.) Also, for desktop versions of QuickBooks, if `FromModifiedDate` includes a date but not a time (for example, if you set `FromModifiedDate` to 2003-02-14), the time is assumed to be zero (2003-02-14T00:00:00). If you omit `FromModifiedDate`, it will be set to 1970-01-01T00:00:00 (1969-12-31T16:00:00-08:00 PST).For QBOE, the `FromModifiedDate` and `ToModifiedDate` must be between 1900-01-01T00:00:00 and 9999-12-31T00:00:00. If `FromModifiedDate` includes a date but not a time (for example, if you set `FromModifiedDate` to 2003-02-14), the time is assumed to be zero (2003-02-14T00:00:00). If you omit `FromModifiedDate`, it will be set to 1900-01-01T00:00:00.`Note`: When specifying this in QBFC, you need to supply the parameter `asDateOnly`, which is a Boolean. If `asDateOnly` is true, the date value will be represented as a date only (without a time). If `asDateOnly` is false, the date value will be represented as date and time, padded with zeros if necessary, and set to the beginning of the day if no time is provided. The `asDateOnly` parameter is especially useful in the `ToModifiedDate` field of a query: If `asDateOnly` is set to true in the `ToModifiedDate` field of a query, then the query includes elements modified up to the end of the day. If `asDateOnly` is false, the query includes elements modified up to the specified time (or up to the beginning of the day if no time is included). */
1060
+ FromModifiedDate?: string;
1061
+ /** Selects objects modified on or before this date. See the note below on QBFC usage.For desktop versions of QuickBooks, the `ToModifiedDate` and `FromModifiedDate` must be between 01/01/1970 and 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). (Note that the time portion of the field was not supported in qbXML version 1.0 or 1.1.) If `ToModifiedDate` includes a date but not a time (for example, if you set `ToModifiedDate` to 2003-02-14), the time is assumed to be the end of the day (2003-02-14T23:59:59). If you omit `ToModifiedDate` altogether, it will be set to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST).For QBOE, the `ToModifiedDate` and `FromModifiedDate` must be between 01/01/1900 and 9999-12-31T00:00:00. If `ToModifiedDate` includes a date but not a time (for example, if you set `ToModifiedDate` to 2003-02-14), the time is assumed to be the end of the day (2003-02-14T23:59:59). If you omit `ToModifiedDate` altogether, it will be set to 9999-12-31T00:00:00.`Note`: When specifying this in QBFC, you need to supply the parameter `asDateOnly`, which is a Boolean. If `asDateOnly` is true, the date value will be represented as a date only (without a time). If `asDateOnly` is false, the date value will be represented as date and time, padded with zeros if necessary, and set to the beginning of the day if no time is provided. The `asDateOnly` parameter is especially useful in the `ToModifiedDate` field of a query: If `asDateOnly` is set to true in the `ToModifiedDate` field of a query, then the query includes elements modified up to the end of the day. If `asDateOnly` is false, the query includes elements modified up to the specified time (or up to the beginning of the day if no time is included). */
1062
+ ToModifiedDate?: string;
1063
+ /** Filters according to the object’s `Name`. */
1064
+ NameFilter?: NameFilter;
1065
+ /** Filters according to the object’s `Name`. */
1066
+ NameRangeFilter?: NameRangeFilter;
1067
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
1068
+ IncludeRetElement?: string[] | string;
1069
+ /** Zero or more `OwnerID` values. `OwnerID` refers to the owner of a data extension:If `OwnerID` is 0, this is a public data extension, also known as a custom field. Custom fields appear in the QuickBooks UI.If `OwnerID` is a GUID, for example `{6B063959-81B0-4622-85D6-F548C8CCB517}`, this field is a private data extension defined by an integrated application. Private data extensions do not appear in the QuickBooks UI. Note that `OwnerID` values are not case-sensitive, meaning that if you enter an `OwnerID` value with lower-case letters, the value will be saved and returned with upper-case letters. When you share a private data extension with another application, the other application must know both the `OwnerID` and the `DataExtName`, as these together form a data extension’s unique name. */
1070
+ OwnerID?: string[] | string;
1071
+ }
1072
+ export interface EmployeeQueryRs {
1073
+ EmployeeRet?: EmployeeRet | EmployeeRet[];
1074
+ }
1075
+ interface EmployeeRet {
1076
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
688
1077
  ListID: string;
1078
+ /** Time the object was created. */
1079
+ TimeCreated: string;
1080
+ /** Time the object was last modified. */
1081
+ TimeModified: string;
1082
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
689
1083
  EditSequence: string;
1084
+ /** A concatenation of `FirstName`, `MiddleName`, and `LastName`. */
1085
+ Name: string;
1086
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
690
1087
  IsActive?: boolean;
1088
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
691
1089
  Salutation?: string;
1090
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
692
1091
  FirstName?: string;
1092
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
693
1093
  MiddleName?: string;
1094
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
694
1095
  LastName?: string;
1096
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
695
1097
  JobTitle?: string;
1098
+ /** The name of a customer, vendor, employee, or person on the “other names” list in the employment job details section. */
696
1099
  SupervisorRef?: SupervisorRef;
1100
+ /** The name of the department in the employment job details section. */
697
1101
  Department?: string;
1102
+ /** The description details in the employment job details section. */
698
1103
  Description?: string;
1104
+ /** The target bonus amount in the employment job details section. */
699
1105
  TargetBonus?: string;
1106
+ /** If an address request fails, some combination of address fields might be too long. If you use payroll, you must specify the employee’s city, state (or province), ZIP (or postal) code, and at least one line of the street address. (Note that the `State` element has restrictions when it’s used in the `EmployeeAddress` aggregate. For more information, click `State` in the table.) */
700
1107
  EmployeeAddress?: EmployeeAddress;
1108
+ /** By default within QuickBooks, the `PrintAs` element is the same as the `Name` element. */
701
1109
  PrintAs?: string;
1110
+ /** The telephone number. */
702
1111
  Phone?: string;
1112
+ /** Mobile telephone number. */
703
1113
  Mobile?: string;
1114
+ /** The pager number. */
704
1115
  Pager?: string;
1116
+ /** A personal identification number for this employee’s pager. */
705
1117
  PagerPIN?: string;
1118
+ /** A telephone number given as an alternative to `Phone`. */
706
1119
  AltPhone?: string;
1120
+ /** Fax number. */
707
1121
  Fax?: string;
1122
+ /** Social security number. When you add an `SSN` value to an employee record, it does not have to include dashes; for example, either 123-45-6789 or 123456789 would be valid. */
1123
+ SSN?: string;
1124
+ /** E-mail address. */
708
1125
  Email?: string;
1126
+ /** List of additional contacts. */
709
1127
  AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
1128
+ /** Emergency `Contact` information for the employee. */
710
1129
  EmergencyContacts?: EmergencyContacts;
1130
+ /** `EmployeeType` can affect payroll taxes for an employee. A statutory employee is a person who is defined as an employee by statute. Usually an owner or partner will be on the Other Names list, but if they are on the Employee list, their `EmployeeType` will be Owner. */
711
1131
  EmployeeType?: EmployeeType;
1132
+ /** Full or Part time status of the employee. */
712
1133
  PartOrFullTime?: PartOrFullTime;
1134
+ /** Exempt or Non-exempt status of the employee. */
713
1135
  Exempt?: Exempt;
1136
+ /** Is employee a key or critical employee. */
714
1137
  KeyEmployee?: KeyEmployee;
1138
+ /** The gender of this employee. */
1139
+ Gender?: Gender;
1140
+ /** An employee’s date of hire. */
715
1141
  HiredDate?: string;
1142
+ /** Original hire date the employee was hired. */
716
1143
  OriginalHireDate?: string;
1144
+ /** Adjusted service date for the employee. */
717
1145
  AdjustedServiceDate?: string;
1146
+ /** The date on which this person’s employment with the company ended. */
718
1147
  ReleasedDate?: string;
1148
+ /** Date of birth. */
719
1149
  BirthDate?: string;
1150
+ /** Is employee a US citizen? */
720
1151
  USCitizen?: USCitizen;
1152
+ /** Ethnicity of employee from `AmericianIndian`, Asian, Black, Hawaiian, Hispanic, White, `TwoOrMoreRaces`. */
721
1153
  Ethnicity?: Ethnicity;
1154
+ /** Is employee disabled? */
722
1155
  Disabled?: Disabled;
1156
+ /** Description of employee’s disablitily. */
723
1157
  DisabilityDesc?: string;
1158
+ /** Is the employee’s I-9 on file? */
724
1159
  OnFile?: OnFile;
1160
+ /** Date the employee’s work authorization expires. */
725
1161
  WorkAuthExpireDate?: string;
1162
+ /** Is employee a US veteran? */
726
1163
  USVeteran?: USVeteran;
1164
+ /** Military status if the employee is a US veteran. */
727
1165
  MilitaryStatus?: MilitaryStatus;
1166
+ /** Account numbers appear in the QuickBooks chart of accounts, Account fields, and reports and graphs. If the `IsUsingAccountNumber` preference is false (that is, if the QuickBooks user has the account numbers Preference turned off), you can still set account numbers through the SDK, but the numbers will not be visible in the user interface. */
728
1167
  AccountNumber?: string;
1168
+ /** Additional information. */
729
1169
  Notes?: string;
730
- AdditionalNotesMod?: AdditionalNotesMod | AdditionalNotesMod[];
1170
+ /** List of notes. */
1171
+ AdditionalNotesRet?: AdditionalNotesRet | AdditionalNotesRet[];
1172
+ /** Billing rates are used to override the service item rate in a time transaction (`TimeTrackingAdd`) based on the employee or vendor performing the work. Billing rates are assigned to an employee or a vendor to specify overrides to service items. */
731
1173
  BillingRateRef?: BillingRateRef;
732
- EmployeePayrollInfoMod?: EmployeePayrollInfoMod;
733
- }
734
- export interface EmployeeModRq {
735
- EmployeeMod: EmployeeMod;
736
- IncludeRetElement?: string[] | string;
737
- }
738
- export interface EmployeeModRs {
739
- EmployeeRet?: EmployeeRet;
740
- ErrorRecovery?: ErrorRecovery;
1174
+ /** Pay information for this employee. */
1175
+ EmployeePayrollInfo?: EmployeePayrollInfo;
1176
+ /** Allows for the attachment of a user defined GUID value. */
1177
+ ExternalGUID?: string;
1178
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
1179
+ DataExtRet?: DataExtRet | DataExtRet[];
741
1180
  }
742
- export interface EmployeeQueryRq {
1181
+ /** @default: Regular */
1182
+ declare type EmployeeType = "Officer" | "Owner" | "Regular" | "Statutory";
1183
+ interface EntityFilter {
1184
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
743
1185
  ListID?: string[] | string;
1186
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
744
1187
  FullName?: string[] | string;
745
- MaxReturned?: number;
746
- ActiveStatus?: ActiveStatus;
747
- FromModifiedDate?: string;
748
- ToModifiedDate?: string;
749
- NameFilter?: NameFilter;
750
- NameRangeFilter?: NameRangeFilter;
751
- IncludeRetElement?: string[] | string;
752
- OwnerID?: string[] | string;
1188
+ /** Allows you to filter for data that relates to the specified object and its descendants. */
1189
+ ListIDWithChildren?: string;
1190
+ /** Allows you to filter for data that relates to the specified object and its descendants. For names that do not have children, `FullNameWithChildren` is exactly the same as `FullName`. */
1191
+ FullNameWithChildren?: string;
753
1192
  }
754
- export interface EmployeeQueryRs {
755
- EmployeeRet?: EmployeeRet | EmployeeRet[];
1193
+ interface EntityRef {
1194
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1195
+ ListID?: string;
1196
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1197
+ FullName?: string;
756
1198
  }
757
- interface AccountRef {
1199
+ interface ErrorRecovery {
1200
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1201
+ ListID?: string;
1202
+ /** Refers to the owner of a data extension:
1203
+
1204
+ If `OwnerID` is 0, this is a public data extension, also known as a custom field. Custom fields appear in the QuickBooks UI. If `OwnerID` is a GUID, for example `{6B063959-81B0-4622-85D6-F548C8CCB517}`, this field is a private data extension defined by an integrated application. Private data extensions do not appear in the QuickBooks UI.
1205
+
1206
+ Note that `OwnerID` values are not case-sensitive, meaning that if you enter an `OwnerID` value with lower-case letters, the value will be saved and returned with upper-case letters.
1207
+
1208
+ When you share a private data extension with another application, the other application must know both the `OwnerID` and the `DataExtName`, as these together form a data extension’s unique name. */
1209
+ OwnerID?: string;
1210
+ /** QuickBooks generates a unique `TxnID` for each transaction that is added to QuickBooks. A `TxnID` returned from a request can be used to refer to the transaction in subsequent requests.
1211
+
1212
+ Notice that you cannot supply the `TxnID` of a `TimeTracking` transaction to `TransactionQueryRq` requests. If you do, you get an error stating that no such record could be found, even though the transaction is in QuickBooks. This behavior reflects the behavior in the QuicKBooks UI in the Find window. */
1213
+ TxnID?: string;
1214
+ /** An identifying number for this transaction. */
1215
+ TxnNumber?: number;
1216
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
1217
+ EditSequence?: string;
1218
+ /** Allows for the attachment of a user defined GUID value. */
1219
+ ExternalGUID?: string;
1220
+ }
1221
+ declare type Ethnicity = "AmericianIndian" | "Asian" | "Black" | "Hawaiian" | "Hispanic" | "TwoOrMoreRaces" | "White";
1222
+ declare type Exempt = "Exempt" | "NonExempt";
1223
+ declare type Gender = "Female" | "Male";
1224
+ interface ItemSalesTaxRef {
1225
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
758
1226
  ListID?: string;
1227
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
759
1228
  FullName?: string;
760
1229
  }
761
- interface EntityRef {
1230
+ interface ItemServiceRef {
1231
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
762
1232
  ListID?: string;
1233
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
763
1234
  FullName?: string;
764
1235
  }
765
- declare type BillableStatus = "Billable" | "HasBeenBilled" | "NotBillable";
766
- interface JournalDebitLine {
1236
+ /** @default: None */
1237
+ declare type JobStatus = "Awarded" | "Closed" | "InProgress" | "None" | "NotAwarded" | "Pending";
1238
+ interface JobTypeRef {
1239
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1240
+ ListID?: string;
1241
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1242
+ FullName?: string;
1243
+ }
1244
+ interface JournalCreditLine {
1245
+ /** Identification number of the transaction line. (`TxnLineID` is supported as of v2.0 of the SDK. With qbXML v1.0 and v1.1, `TxnLineID` is always returned as zero.) If you need to add a new transaction line in a transaction Mod request, you can do so by setting the `TxnLineID` to -1. */
767
1246
  TxnLineID?: string;
1247
+ /** The Account list is the company file’s list of accounts. An `AccountRef` aggregate refers to one of these accounts. (If an `AccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored.) Special cases to note:In a Check message, `AccountRef` refers to the account from which the funds are being drawn for this check, for example, Checking or Savings.In an `ExpenseLineAdd` message, you must include `AccountRef` if the “Require accounts” check box is selected in the QuickBooks Accounting preferences. (It is selected by default.) In a `CreditCardCredit` message, `AccountRef` refers to the bank account or credit card account to which the credit is applied.In a `CreditCardCharge` message, `AccountRef` refers to the bank or credit card company to whom money is owed. How do you increase and decrease amounts in bank accounts? The following requests increase the balance in a bank account: Deposit Add `ReceivePaymentAdd` Journal Entry Add Sales `ReceiptAdd` The following requests decrease the balance in a bank account: `CheckAdd` Bill `PaymentCheckAdd` `JournalEntryAdd` */
768
1248
  AccountRef?: AccountRef;
1249
+ /** A monetary amount. */
769
1250
  Amount?: string;
1251
+ /** Additional information. */
770
1252
  Memo?: string;
1253
+ /** A QuickBooks “entity” is a customer, vendor, employee, or person on the QuickBooks “other names” list. Special cases to note: In a `BillToPayQuery` message, `EntityRef` refers to the vendor name.In `JournalCreditLine` and `JournalDebitLine` messages for A/R accounts, `EntityRef` must refer to a customer, or else the transaction will not be recorded. For A/P accounts the `EntityRef` must refer to a vendor, or else the transaction will not be recorded.In a `TimeTracking` message, `EntityRef` cannot refer to a customer, only to an employee, vendor, or person on the “other names” list whose time is being tracked. */
771
1254
  EntityRef?: EntityRef;
1255
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
772
1256
  ClassRef?: ClassRef;
1257
+ /** A sales-tax item is used to calculate a single sales tax that is collected at a specified rate and paid to a single agency. (Compare with the `ItemSalesTaxGroupAdd` message.) An `ItemSalesTaxRef` aggregate refers to an item on this list. In a request, if an `ItemSalesTaxRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Taxes can be reflected in transaction line items The following information refers to invoices specifically, but it also applies to sales receipts. Generally its best to assign a tax item or tax group item to an invoice and allow QuickBooks to apply the same tax to all taxable items on the invoice. However in some situations multiple tax combinations are required, so this method doesn’t work. In this case one must use techniques to apply the taxes in the invoice itself as line items. Using lines to apply taxes isn’t always straight forward. When applying taxes as line items, only single tax items can be used, tax groups can only be used for the entire invoice. If you have multiple taxes which apply to all taxable items, and one or more other taxes that only apply to some of the items on an invoice its better to use a tax group which applies to the entire invoice for the taxes which applies to all taxable items and then apply the other taxes in the invoice itself. One applies a tax or tax group to an entire invoice by using the `ItemSalesTaxRef` aggregate. One can use subtotals to apply a single tax line to multiple items in an invoice, but the tax is only applied automatically for the first tax line after the subtotal line. Any other tax lines which need to be applied to the subtotal line must supply their own amount. If you don’t supply an amount the amount comes out as zero and the tax line is useless. When one does supply an amount, the amount of tax on the subtotal also shows up in the rate column for that tax line. There isn’t any way for the rate to show up as anything other than the amount of the tax. If you have a complicated tax situation where no single tax applies to all taxable items on the invoice, you must choose a zero percent tax to apply for the entire invoice. It is recommended to name such a tax item “Tax Calculated On Invoice” so that it’s clear that the tax is not being applied by QuickBooks on the entire invoice. */
773
1258
  ItemSalesTaxRef?: ItemSalesTaxRef;
1259
+ /** The billing status of this item line or expense line. */
774
1260
  BillableStatus?: BillableStatus;
775
1261
  }
776
- interface JournalCreditLine {
1262
+ interface JournalDebitLine {
1263
+ /** Identification number of the transaction line. (`TxnLineID` is supported as of v2.0 of the SDK. With qbXML v1.0 and v1.1, `TxnLineID` is always returned as zero.) If you need to add a new transaction line in a transaction Mod request, you can do so by setting the `TxnLineID` to -1. */
777
1264
  TxnLineID?: string;
1265
+ /** The Account list is the company file’s list of accounts. An `AccountRef` aggregate refers to one of these accounts. (If an `AccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored.) Special cases to note:In a Check message, `AccountRef` refers to the account from which the funds are being drawn for this check, for example, Checking or Savings.In an `ExpenseLineAdd` message, you must include `AccountRef` if the “Require accounts” check box is selected in the QuickBooks Accounting preferences. (It is selected by default.) In a `CreditCardCredit` message, `AccountRef` refers to the bank account or credit card account to which the credit is applied.In a `CreditCardCharge` message, `AccountRef` refers to the bank or credit card company to whom money is owed. How do you increase and decrease amounts in bank accounts? The following requests increase the balance in a bank account: Deposit Add `ReceivePaymentAdd` Journal Entry Add Sales `ReceiptAdd` The following requests decrease the balance in a bank account: `CheckAdd` Bill `PaymentCheckAdd` `JournalEntryAdd` */
778
1266
  AccountRef?: AccountRef;
1267
+ /** A monetary amount. */
779
1268
  Amount?: string;
1269
+ /** Additional information. */
780
1270
  Memo?: string;
1271
+ /** A QuickBooks “entity” is a customer, vendor, employee, or person on the QuickBooks “other names” list. Special cases to note: In a `BillToPayQuery` message, `EntityRef` refers to the vendor name.In `JournalCreditLine` and `JournalDebitLine` messages for A/R accounts, `EntityRef` must refer to a customer, or else the transaction will not be recorded. For A/P accounts the `EntityRef` must refer to a vendor, or else the transaction will not be recorded.In a `TimeTracking` message, `EntityRef` cannot refer to a customer, only to an employee, vendor, or person on the “other names” list whose time is being tracked. */
781
1272
  EntityRef?: EntityRef;
1273
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
782
1274
  ClassRef?: ClassRef;
1275
+ /** A sales-tax item is used to calculate a single sales tax that is collected at a specified rate and paid to a single agency. (Compare with the `ItemSalesTaxGroupAdd` message.) An `ItemSalesTaxRef` aggregate refers to an item on this list. In a request, if an `ItemSalesTaxRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Taxes can be reflected in transaction line items The following information refers to invoices specifically, but it also applies to sales receipts. Generally its best to assign a tax item or tax group item to an invoice and allow QuickBooks to apply the same tax to all taxable items on the invoice. However in some situations multiple tax combinations are required, so this method doesn’t work. In this case one must use techniques to apply the taxes in the invoice itself as line items. Using lines to apply taxes isn’t always straight forward. When applying taxes as line items, only single tax items can be used, tax groups can only be used for the entire invoice. If you have multiple taxes which apply to all taxable items, and one or more other taxes that only apply to some of the items on an invoice its better to use a tax group which applies to the entire invoice for the taxes which applies to all taxable items and then apply the other taxes in the invoice itself. One applies a tax or tax group to an entire invoice by using the `ItemSalesTaxRef` aggregate. One can use subtotals to apply a single tax line to multiple items in an invoice, but the tax is only applied automatically for the first tax line after the subtotal line. Any other tax lines which need to be applied to the subtotal line must supply their own amount. If you don’t supply an amount the amount comes out as zero and the tax line is useless. When one does supply an amount, the amount of tax on the subtotal also shows up in the rate column for that tax line. There isn’t any way for the rate to show up as anything other than the amount of the tax. If you have a complicated tax situation where no single tax applies to all taxable items on the invoice, you must choose a zero percent tax to apply for the entire invoice. It is recommended to name such a tax item “Tax Calculated On Invoice” so that it’s clear that the tax is not being applied by QuickBooks on the entire invoice. */
783
1276
  ItemSalesTaxRef?: ItemSalesTaxRef;
1277
+ /** The billing status of this item line or expense line. */
784
1278
  BillableStatus?: BillableStatus;
785
1279
  }
786
1280
  interface JournalEntryAdd {
1281
+ /** The date of the transaction. In some cases, if you leave `TxnDate` out of an -Add message, QuickBooks will prefill `TxnDate` with the date of the last-saved transaction of the same type. */
787
1282
  TxnDate?: string;
1283
+ /** A string of characters that refers to this transaction and that can be arbitrarily changed by the QuickBooks user. In a `BillPaymentCheckAdd` request, if you want to set the check number, use `RefNumber`.`Note` (especially relevant to `CheckAdd` requests): When `RefNumber` is left blank in an SDK transaction add request (that is, or ), the `RefNumber` will be left blank in QuickBooks. This behavior is new as of QBFC3. It used to select the next sequential reference number since the last one used by QuickBooks, as though no `RefNumber` had been provided. This is especially relevant to `CheckAdd` requests because with the current behavior, you will not know the number until the check is printed. */
788
1284
  RefNumber?: string;
1285
+ /** When a change is an “adjustment,” the original information is retained, usually so an accountant can see the effects of the adjustment. */
789
1286
  IsAdjustment?: boolean;
1287
+ /** Indicates whether the transaction is using a home currency or foreign currency. */
790
1288
  IsHomeCurrencyAdjustment?: boolean;
1289
+ /** Flag that indicates the amount being entered is in the home currency. */
791
1290
  IsAmountsEnteredInHomeCurrency?: boolean;
1291
+ /** The currency object contains all of the information needed by QuickBooks to display and use. For built-in currencies, the name and currency code values are internationally accepted values and thus are not editable. The comma format is editable, as is the `IsActive` status. For user-defined currencies, every value in the object is editable including name and currency code. When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
792
1292
  CurrencyRef?: CurrencyRef;
1293
+ /** The exchange rate is the market price for which this currency can be exchanged for the currency used by the QuickBooks company file as the “home” currency. The exchange rate should be considered a snapshot of the rates in effect at the `AsOfDate`. You can update the exchange rate using the exchange rate property when you add a transaction. However, you need to obtain and supply the exchange rate. If you are using USD (United States Dollars) as the home currency and are connected to the Internet, you can download the current exchange rates for all active currencies automatically in the QuickBooks UI by selecting Lists->Currency->Activities->Download latest exchange rates. (Currently, you can’t do this in the SDK.) */
793
1294
  ExchangeRate?: number;
1295
+ /** Allows for the attachment of a user defined GUID value. */
794
1296
  ExternalGUID?: string;
1297
+ /** If no amount is included in the first debit line (or credit line) of a journal entry in the QuickBooks user interface, then subsequent SDK queries on that `JournalEntry` object will fail XML validation. */
795
1298
  JournalDebitLine?: JournalDebitLine;
1299
+ /** If no amount is included in the first credit line (or debit line) of a journal entry in the QuickBooks user interface, then subsequent SDK queries on that `JournalEntry` object will fail XML validation. */
796
1300
  JournalCreditLine?: JournalCreditLine;
797
1301
  }
798
1302
  export interface JournalEntryAddRq {
799
1303
  JournalEntryAdd: JournalEntryAdd;
1304
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
1305
+ IncludeRetElement?: string[] | string;
1306
+ }
1307
+ export interface JournalEntryAddRs {
1308
+ JournalEntryRet?: JournalEntryRet;
1309
+ ErrorRecovery?: ErrorRecovery;
1310
+ }
1311
+ interface JournalEntryMod {
1312
+ /** QuickBooks generates a unique `TxnID` for each transaction that is added to QuickBooks. A `TxnID` returned from a request can be used to refer to the transaction in subsequent requests. Notice that you cannot supply the `TxnID` of a `TimeTracking` transaction to `TransactionQueryRq` requests. If you do, you get an error stating that no such record could be found, even though the transaction is in QuickBooks. This behavior reflects the behavior in the QuicKBooks UI in the Find window. */
1313
+ TxnID: string;
1314
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
1315
+ EditSequence: string;
1316
+ /** The date of the transaction. In some cases, if you leave `TxnDate` out of an -Add message, QuickBooks will prefill `TxnDate` with the date of the last-saved transaction of the same type. */
1317
+ TxnDate?: string;
1318
+ /** A string of characters that refers to this transaction and that can be arbitrarily changed by the QuickBooks user. In a `BillPaymentCheckAdd` request, if you want to set the check number, use `RefNumber`.`Note` (especially relevant to `CheckAdd` requests): When `RefNumber` is left blank in an SDK transaction add request (that is, or ), the `RefNumber` will be left blank in QuickBooks. This behavior is new as of QBFC3. It used to select the next sequential reference number since the last one used by QuickBooks, as though no `RefNumber` had been provided. This is especially relevant to `CheckAdd` requests because with the current behavior, you will not know the number until the check is printed. */
1319
+ RefNumber?: string;
1320
+ /** When a change is an “adjustment,” the original information is retained, usually so an accountant can see the effects of the adjustment. */
1321
+ IsAdjustment?: boolean;
1322
+ /** Flag that indicates the amount being entered is in the home currency. */
1323
+ IsAmountsEnteredInHomeCurrency?: boolean;
1324
+ /** The currency object contains all of the information needed by QuickBooks to display and use. For built-in currencies, the name and currency code values are internationally accepted values and thus are not editable. The comma format is editable, as is the `IsActive` status. For user-defined currencies, every value in the object is editable including name and currency code. When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
1325
+ CurrencyRef?: CurrencyRef;
1326
+ /** The exchange rate is the market price for which this currency can be exchanged for the currency used by the QuickBooks company file as the “home” currency. The exchange rate should be considered a snapshot of the rates in effect at the `AsOfDate`. You can update the exchange rate using the exchange rate property when you add a transaction. However, you need to obtain and supply the exchange rate. If you are using USD (United States Dollars) as the home currency and are connected to the Internet, you can download the current exchange rates for all active currencies automatically in the QuickBooks UI by selecting Lists->Currency->Activities->Download latest exchange rates. (Currently, you can’t do this in the SDK.) */
1327
+ ExchangeRate?: number;
1328
+ /** `IORJournalLineList` The list of journal lines in a `JournalMod` request – note that in a mod request, inclding one line means that you must include all lines, modified or not. */
1329
+ JournalLineMod?: JournalLineMod | JournalLineMod[];
1330
+ }
1331
+ export interface JournalEntryModRq {
1332
+ JournalEntryMod: JournalEntryMod;
1333
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
1334
+ IncludeRetElement?: string[] | string;
1335
+ }
1336
+ export interface JournalEntryModRs {
1337
+ JournalEntryRet?: JournalEntryRet;
1338
+ ErrorRecovery?: ErrorRecovery;
1339
+ }
1340
+ export interface JournalEntryQueryRq {
1341
+ /** One or more `TxnID` values. QuickBooks generates a unique `TxnID` for each transaction that is added to QuickBooks. Notice that you cannot supply the `TxnID` of a `TimeTracking` transaction to `TransactionQuery` requests. If you do, you get an error stating that no such record could be found, even though the transaction is in QuickBooks. This behavior reflects the behavior in the QuicKBooks UI in the Find window. */
1342
+ TxnID?: string[] | string;
1343
+ /** A list of one or more `RefNumber` values. A `RefNumber` is a string of characters that refers to a transaction and that can be arbitrarily changed by the QuickBooks user. Note (especially relevant to `CheckAdd` requests): When `RefNumber` is left blank in an SDK transaction add request, the `RefNumber` will be left blank in QuickBooks. This behavior is new as of QBFC3. It used to select the next sequential reference number since the last one used by QuickBooks, as though no `RefNumber` had been provided. This is especially relevant to `CheckAdd` requests because with the current behavior, you will not know the number until the check is printed. */
1344
+ RefNumber?: string[] | string;
1345
+ /** A list of one or more case sensitive `RefNumber` values. A `RefNumber` is a string of characters that refers to a transaction and that can be arbitrarily changed by the QuickBooks user. You should use this case sensitive ref number list rather than the older `RefNumber` list, because it provides much better performance in certain circumstances. The older `refNumber` list provided slow performance if the `refNumber` values contained letters, not just digits. This `RefNumberCaseSensitive` list, new in SDK 4.0, eliminates this performance hit. */
1346
+ RefNumberCaseSensitive?: string[] | string;
1347
+ /** Limits the number of objects that a query returns. (To get a count of how many objects could possibly be returned, use the `metaData` query attribute.) If you include a `MaxReturned` value, it must be at least 1. */
1348
+ MaxReturned?: number;
1349
+ /** Filters according to the dates when transactions were last modified. The `ModifiedDateRangeFilter` aggregate is not required to contain any elements, but if it is empty, we recommend that you leave it out altogether. Note that the time portion of the `FromModifiedDate` and `ToModifiedDate` fields was not supported in qbXML version 1.0 or 1.1. (To filter according to the dates when transactions were deleted, use a `TxnDeletedQuery` message.) */
1350
+ ModifiedDateRangeFilter?: ModifiedDateRangeFilter;
1351
+ /** Filters according to the original transaction dates. */
1352
+ TxnDateRangeFilter?: TxnDateRangeFilter;
1353
+ /** An entity refers to a person on the QuickBooks Customer list, Vendor list, Employee list, or Other Names list. You can use an `EntityQuery` request to get information about all the entities that are set up in the QuickBooks file. In an `ARRefundCreditCard` query, this must be a customer/customer job. */
1354
+ EntityFilter?: EntityFilter;
1355
+ /** Filters according to the account name or `ListID`. If the “Use account numbers” preference is enabled in the QuickBooks company file, you can specify an account number (instead of an account name) for `FullName` and get the account you’re looking for. But if numbers have been used as account names, confusion could arise. For example, if you queried for an account named 2050, and 2050 happened to be the account number of a totally different account, the query would not return what you asked for (the account named 2050), but instead would return the account with the account number 2050. This problem will not happen if the “Use account numbers” preference is turned off in the QuickBooks file, orthe account name exactly matches the account number. (In this case, query would return the correct account either way.) To avoid this problem: Do not name an account using a number unless the number exactly matches the account’s account number. If an account name must contain a number that does not match its own account number, have the QuickBooks user change the account’s name slightly, for example `to` 2050a. */
1356
+ AccountFilter?: AccountFilter;
1357
+ /** Filters according to `RefNumber`. */
1358
+ RefNumberFilter?: RefNumberFilter;
1359
+ /** Filters according to `RefNumber`. The filtering code will do a numerical comparison (if `FromRefNumber` and `ToRefNumber` only contain digits) or a lexicographical comparison (if either `FromRefNumber` or `ToRefNumber` contain any nondigit characters). In the first situation, if you need to query for a `RefNumber` that is larger than the maximum long integer value of 2147483647, one workaround is to specify a `FromRefNumber` that is less than or equal to 2147483647 without specifying a `ToRefNumber`. */
1360
+ RefNumberRangeFilter?: RefNumberRangeFilter;
1361
+ /** Filters by the specified currency. */
1362
+ CurrencyFilter?: CurrencyFilter;
1363
+ /** This filter allows you to omit line items from a query response to get a smaller result. The default value is false, so line items are omitted by default. Set `IncludeLineItems` to true to include line items in the response if you don’t mind getting a larger result. */
1364
+ IncludeLineItems?: boolean;
1365
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
800
1366
  IncludeRetElement?: string[] | string;
1367
+ /** Zero or more `OwnerID` values. `OwnerID` refers to the owner of a data extension:If `OwnerID` is 0, this is a public data extension, also known as a custom field. Custom fields appear in the QuickBooks UI.If `OwnerID` is a GUID, for example `{6B063959-81B0-4622-85D6-F548C8CCB517}`, this field is a private data extension defined by an integrated application. Private data extensions do not appear in the QuickBooks UI. Note that `OwnerID` values are not case-sensitive, meaning that if you enter an `OwnerID` value with lower-case letters, the value will be saved and returned with upper-case letters. When you share a private data extension with another application, the other application must know both the `OwnerID` and the `DataExtName`, as these together form a data extension’s unique name. */
1368
+ OwnerID?: string[] | string;
1369
+ }
1370
+ export interface JournalEntryQueryRs {
1371
+ JournalEntryRet?: JournalEntryRet | JournalEntryRet[];
801
1372
  }
802
1373
  interface JournalEntryRet {
1374
+ /** QuickBooks generates a unique `TxnID` for each transaction that is added to QuickBooks. A `TxnID` returned from a request can be used to refer to the transaction in subsequent requests. Notice that you cannot supply the `TxnID` of a `TimeTracking` transaction to `TransactionQueryRq` requests. If you do, you get an error stating that no such record could be found, even though the transaction is in QuickBooks. This behavior reflects the behavior in the QuicKBooks UI in the Find window. */
803
1375
  TxnID: string;
1376
+ /** Time the object was created. */
804
1377
  TimeCreated: string;
1378
+ /** Time the object was last modified. */
805
1379
  TimeModified: string;
1380
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
806
1381
  EditSequence: string;
1382
+ /** An identifying number for this transaction. */
807
1383
  TxnNumber?: number;
1384
+ /** The date of the transaction. In some cases, if you leave `TxnDate` out of an -Add message, QuickBooks will prefill `TxnDate` with the date of the last-saved transaction of the same type. */
808
1385
  TxnDate: string;
1386
+ /** A string of characters that refers to this transaction and that can be arbitrarily changed by the QuickBooks user. In a `BillPaymentCheckAdd` request, if you want to set the check number, use `RefNumber`.`Note` (especially relevant to `CheckAdd` requests): When `RefNumber` is left blank in an SDK transaction add request (that is, or ), the `RefNumber` will be left blank in QuickBooks. This behavior is new as of QBFC3. It used to select the next sequential reference number since the last one used by QuickBooks, as though no `RefNumber` had been provided. This is especially relevant to `CheckAdd` requests because with the current behavior, you will not know the number until the check is printed. */
809
1387
  RefNumber?: string;
1388
+ /** When a change is an “adjustment,” the original information is retained, usually so an accountant can see the effects of the adjustment. */
810
1389
  IsAdjustment?: boolean;
1390
+ /** Indicates whether the transaction is using a home currency or foreign currency. */
811
1391
  IsHomeCurrencyAdjustment?: boolean;
1392
+ /** Flag that indicates the amount being entered is in the home currency. */
812
1393
  IsAmountsEnteredInHomeCurrency?: boolean;
1394
+ /** The currency object contains all of the information needed by QuickBooks to display and use. For built-in currencies, the name and currency code values are internationally accepted values and thus are not editable. The comma format is editable, as is the `IsActive` status. For user-defined currencies, every value in the object is editable including name and currency code. When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
813
1395
  CurrencyRef?: CurrencyRef;
1396
+ /** The exchange rate is the market price for which this currency can be exchanged for the currency used by the QuickBooks company file as the “home” currency. The exchange rate should be considered a snapshot of the rates in effect at the `AsOfDate`. You can update the exchange rate using the exchange rate property when you add a transaction. However, you need to obtain and supply the exchange rate. If you are using USD (United States Dollars) as the home currency and are connected to the Internet, you can download the current exchange rates for all active currencies automatically in the QuickBooks UI by selecting Lists->Currency->Activities->Download latest exchange rates. (Currently, you can’t do this in the SDK.) */
814
1397
  ExchangeRate?: number;
1398
+ /** Allows for the attachment of a user defined GUID value. */
815
1399
  ExternalGUID?: string;
1400
+ /** If no amount is included in the first debit line (or credit line) of a journal entry in the QuickBooks user interface, then subsequent SDK queries on that `JournalEntry` object will fail XML validation. */
816
1401
  JournalDebitLine?: JournalDebitLine;
1402
+ /** If no amount is included in the first credit line (or debit line) of a journal entry in the QuickBooks user interface, then subsequent SDK queries on that `JournalEntry` object will fail XML validation. */
817
1403
  JournalCreditLine?: JournalCreditLine;
1404
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
818
1405
  DataExtRet?: DataExtRet | DataExtRet[];
819
1406
  }
820
- export interface JournalEntryAddRs {
821
- JournalEntryRet?: JournalEntryRet;
822
- ErrorRecovery?: ErrorRecovery;
823
- }
824
- declare type JournalLineType = "Credit" | "Debit";
825
1407
  interface JournalLineMod {
1408
+ /** Identification number of the transaction line. (`TxnLineID` is supported as of v2.0 of the SDK. With qbXML v1.0 and v1.1, `TxnLineID` is always returned as zero.) If you need to add a new transaction line in a transaction Mod request, you can do so by setting the `TxnLineID` to -1. */
826
1409
  TxnLineID: string;
1410
+ /** The type of journal line (debit or credit). */
827
1411
  JournalLineType?: JournalLineType;
1412
+ /** The Account list is the company file’s list of accounts. An `AccountRef` aggregate refers to one of these accounts. (If an `AccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored.) Special cases to note:In a Check message, `AccountRef` refers to the account from which the funds are being drawn for this check, for example, Checking or Savings.In an `ExpenseLineAdd` message, you must include `AccountRef` if the “Require accounts” check box is selected in the QuickBooks Accounting preferences. (It is selected by default.) In a `CreditCardCredit` message, `AccountRef` refers to the bank account or credit card account to which the credit is applied.In a `CreditCardCharge` message, `AccountRef` refers to the bank or credit card company to whom money is owed. How do you increase and decrease amounts in bank accounts? The following requests increase the balance in a bank account: Deposit Add `ReceivePaymentAdd` Journal Entry Add Sales `ReceiptAdd` The following requests decrease the balance in a bank account: `CheckAdd` Bill `PaymentCheckAdd` `JournalEntryAdd` */
828
1413
  AccountRef?: AccountRef;
1414
+ /** A monetary amount. */
829
1415
  Amount?: string;
1416
+ /** Additional information. */
830
1417
  Memo?: string;
1418
+ /** A QuickBooks “entity” is a customer, vendor, employee, or person on the QuickBooks “other names” list. Special cases to note: In a `BillToPayQuery` message, `EntityRef` refers to the vendor name.In `JournalCreditLine` and `JournalDebitLine` messages for A/R accounts, `EntityRef` must refer to a customer, or else the transaction will not be recorded. For A/P accounts the `EntityRef` must refer to a vendor, or else the transaction will not be recorded.In a `TimeTracking` message, `EntityRef` cannot refer to a customer, only to an employee, vendor, or person on the “other names” list whose time is being tracked. */
831
1419
  EntityRef?: EntityRef;
1420
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
832
1421
  ClassRef?: ClassRef;
1422
+ /** A sales-tax item is used to calculate a single sales tax that is collected at a specified rate and paid to a single agency. (Compare with the `ItemSalesTaxGroupAdd` message.) An `ItemSalesTaxRef` aggregate refers to an item on this list. In a request, if an `ItemSalesTaxRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Taxes can be reflected in transaction line items The following information refers to invoices specifically, but it also applies to sales receipts. Generally its best to assign a tax item or tax group item to an invoice and allow QuickBooks to apply the same tax to all taxable items on the invoice. However in some situations multiple tax combinations are required, so this method doesn’t work. In this case one must use techniques to apply the taxes in the invoice itself as line items. Using lines to apply taxes isn’t always straight forward. When applying taxes as line items, only single tax items can be used, tax groups can only be used for the entire invoice. If you have multiple taxes which apply to all taxable items, and one or more other taxes that only apply to some of the items on an invoice its better to use a tax group which applies to the entire invoice for the taxes which applies to all taxable items and then apply the other taxes in the invoice itself. One applies a tax or tax group to an entire invoice by using the `ItemSalesTaxRef` aggregate. One can use subtotals to apply a single tax line to multiple items in an invoice, but the tax is only applied automatically for the first tax line after the subtotal line. Any other tax lines which need to be applied to the subtotal line must supply their own amount. If you don’t supply an amount the amount comes out as zero and the tax line is useless. When one does supply an amount, the amount of tax on the subtotal also shows up in the rate column for that tax line. There isn’t any way for the rate to show up as anything other than the amount of the tax. If you have a complicated tax situation where no single tax applies to all taxable items on the invoice, you must choose a zero percent tax to apply for the entire invoice. It is recommended to name such a tax item “Tax Calculated On Invoice” so that it’s clear that the tax is not being applied by QuickBooks on the entire invoice. */
833
1423
  ItemSalesTaxRef?: ItemSalesTaxRef;
1424
+ /** The billing status of this item line or expense line. */
834
1425
  BillableStatus?: BillableStatus;
835
1426
  }
836
- interface JournalEntryMod {
837
- TxnID: string;
838
- EditSequence: string;
839
- TxnDate?: string;
840
- RefNumber?: string;
841
- IsAdjustment?: boolean;
842
- IsAmountsEnteredInHomeCurrency?: boolean;
843
- CurrencyRef?: CurrencyRef;
844
- ExchangeRate?: number;
845
- JournalLineMod?: JournalLineMod | JournalLineMod[];
846
- }
847
- export interface JournalEntryModRq {
848
- JournalEntryMod: JournalEntryMod;
849
- IncludeRetElement?: string[] | string;
850
- }
851
- export interface JournalEntryModRs {
852
- JournalEntryRet?: JournalEntryRet;
853
- ErrorRecovery?: ErrorRecovery;
854
- }
1427
+ declare type JournalLineType = "Credit" | "Debit";
1428
+ declare type KeyEmployee = "No" | "Yes";
1429
+ declare type MatchCriterion = "Contains" | "EndsWith" | "StartsWith";
1430
+ declare type MilitaryStatus = "Active" | "Reserve";
855
1431
  interface ModifiedDateRangeFilter {
1432
+ /** Selects objects modified on or after this date. See the note below regarding QBFC usage.For desktop versions of QuickBooks, the `FromModifiedDate` and `ToModifiedDate` must be between 1970-01-01 and 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). (The time portion of the field was not supported in qbXML version 1.0 or 1.1.) Also, for desktop versions of QuickBooks, if `FromModifiedDate` includes a date but not a time (for example, if you set `FromModifiedDate` to 2003-02-14), the time is assumed to be zero (2003-02-14T00:00:00). If you omit `FromModifiedDate`, it will be set to 1970-01-01T00:00:00 (1969-12-31T16:00:00-08:00 PST).For QBOE, the `FromModifiedDate` and `ToModifiedDate` must be between 1900-01-01T00:00:00 and 9999-12-31T00:00:00. If `FromModifiedDate` includes a date but not a time (for example, if you set `FromModifiedDate` to 2003-02-14), the time is assumed to be zero (2003-02-14T00:00:00). If you omit `FromModifiedDate`, it will be set to 1900-01-01T00:00:00.`Note`: When specifying this in QBFC, you need to supply the parameter `asDateOnly`, which is a Boolean. If `asDateOnly` is true, the date value will be represented as a date only (without a time). If `asDateOnly` is false, the date value will be represented as date and time, padded with zeros if necessary, and set to the beginning of the day if no time is provided. The `asDateOnly` parameter is especially useful in the `ToModifiedDate` field of a query: If `asDateOnly` is set to true in the `ToModifiedDate` field of a query, then the query includes elements modified up to the end of the day. If `asDateOnly` is false, the query includes elements modified up to the specified time (or up to the beginning of the day if no time is included). */
856
1433
  FromModifiedDate?: string;
1434
+ /** Selects objects modified on or before this date. See the note below on QBFC usage.For desktop versions of QuickBooks, the `ToModifiedDate` and `FromModifiedDate` must be between 01/01/1970 and 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). (Note that the time portion of the field was not supported in qbXML version 1.0 or 1.1.) If `ToModifiedDate` includes a date but not a time (for example, if you set `ToModifiedDate` to 2003-02-14), the time is assumed to be the end of the day (2003-02-14T23:59:59). If you omit `ToModifiedDate` altogether, it will be set to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST).For QBOE, the `ToModifiedDate` and `FromModifiedDate` must be between 01/01/1900 and 9999-12-31T00:00:00. If `ToModifiedDate` includes a date but not a time (for example, if you set `ToModifiedDate` to 2003-02-14), the time is assumed to be the end of the day (2003-02-14T23:59:59). If you omit `ToModifiedDate` altogether, it will be set to 9999-12-31T00:00:00.`Note`: When specifying this in QBFC, you need to supply the parameter `asDateOnly`, which is a Boolean. If `asDateOnly` is true, the date value will be represented as a date only (without a time). If `asDateOnly` is false, the date value will be represented as date and time, padded with zeros if necessary, and set to the beginning of the day if no time is provided. The `asDateOnly` parameter is especially useful in the `ToModifiedDate` field of a query: If `asDateOnly` is set to true in the `ToModifiedDate` field of a query, then the query includes elements modified up to the end of the day. If `asDateOnly` is false, the query includes elements modified up to the specified time (or up to the beginning of the day if no time is included). */
857
1435
  ToModifiedDate?: string;
858
1436
  }
859
- declare type DateMacro = "All" | "LastCalendarQuarter" | "LastCalendarQuarterToDate" | "LastCalendarYear" | "LastCalendarYearToDate" | "LastFiscalQuarter" | "LastFiscalQuarterToDate" | "LastFiscalYear" | "LastFiscalYearToDate" | "LastMonth" | "LastMonthToDate" | "LastWeek" | "LastWeekToDate" | "NextCalendarQuarter" | "NextCalendarYear" | "NextFiscalQuarter" | "NextFiscalYear" | "NextFourWeeks" | "NextMonth" | "NextWeek" | "ThisCalendarQuarter" | "ThisCalendarQuarterToDate" | "ThisCalendarYear" | "ThisCalendarYearToDate" | "ThisFiscalQuarter" | "ThisFiscalQuarterToDate" | "ThisFiscalYear" | "ThisFiscalYearToDate" | "ThisMonth" | "ThisMonthToDate" | "ThisWeek" | "ThisWeekToDate" | "Today" | "Yesterday";
860
- interface TxnDateRangeFilter {
861
- FromTxnDate?: string;
862
- ToTxnDate?: string;
863
- DateMacro?: DateMacro;
1437
+ interface NameFilter {
1438
+ /** The criterion to match. */
1439
+ MatchCriterion: MatchCriterion;
1440
+ /** The string to match. */
1441
+ Name: string;
864
1442
  }
865
- interface EntityFilter {
866
- ListID?: string[] | string;
867
- FullName?: string[] | string;
868
- ListIDWithChildren?: string;
869
- FullNameWithChildren?: string;
1443
+ interface NameRangeFilter {
1444
+ /** The first name or item in the search range. If `FromName` is omitted, the range will begin with first name on the list. */
1445
+ FromName?: string;
1446
+ /** The final name or item in the search range. If `ToName` is omitted, the range will end with last name on the list. */
1447
+ ToName?: string;
870
1448
  }
871
- interface AccountFilter {
872
- ListID?: string[] | string;
873
- FullName?: string[] | string;
874
- ListIDWithChildren?: string;
875
- FullNameWithChildren?: string;
1449
+ declare type OnFile = "No" | "Yes";
1450
+ declare type Operator = "Equal" | "GreaterThan" | "GreaterThanEqual" | "LessThan" | "LessThanEqual";
1451
+ interface ParentRef {
1452
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1453
+ ListID?: string;
1454
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1455
+ FullName?: string;
1456
+ }
1457
+ declare type PartOrFullTime = "FullTime" | "PartTime";
1458
+ declare type PayPeriod = "Biweekly" | "Daily" | "Monthly" | "Quarterly" | "Semimonthly" | "Weekly" | "Yearly";
1459
+ interface PayrollItemWageRef {
1460
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1461
+ ListID?: string;
1462
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1463
+ FullName?: string;
1464
+ }
1465
+ /** @default: None */
1466
+ declare type PreferredDeliveryMethod = "Email" | "Fax" | "None";
1467
+ interface PreferredPaymentMethodRef {
1468
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1469
+ ListID?: string;
1470
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1471
+ FullName?: string;
1472
+ }
1473
+ interface PrefillAccountRef {
1474
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1475
+ ListID?: string;
1476
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1477
+ FullName?: string;
1478
+ }
1479
+ interface PriceLevelRef {
1480
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1481
+ ListID?: string;
1482
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1483
+ FullName?: string;
1484
+ }
1485
+ interface PrimaryContact {
1486
+ /** The name of the contact. */
1487
+ ContactName: string;
1488
+ /** The value of the contact field. */
1489
+ ContactValue: string;
1490
+ /** Relationship of emergency contact information to the employee. */
1491
+ Relation?: Relation;
876
1492
  }
877
1493
  interface RefNumberFilter {
1494
+ /** The criterion to match. */
878
1495
  MatchCriterion: MatchCriterion;
1496
+ /** A string of characters that refers to this transaction and that can be arbitrarily changed by the QuickBooks user. In a `BillPaymentCheckAdd` request, if you want to set the check number, use `RefNumber`.`Note` (especially relevant to `CheckAdd` requests): When `RefNumber` is left blank in an SDK transaction add request (that is, or ), the `RefNumber` will be left blank in QuickBooks. This behavior is new as of QBFC3. It used to select the next sequential reference number since the last one used by QuickBooks, as though no `RefNumber` had been provided. This is especially relevant to `CheckAdd` requests because with the current behavior, you will not know the number until the check is printed. */
879
1497
  RefNumber: string;
880
1498
  }
881
1499
  interface RefNumberRangeFilter {
1500
+ /** The first `RefNumber` in the search range. If `FromRefNumber` is omitted, the range will begin with first number on the list. */
882
1501
  FromRefNumber?: string;
1502
+ /** The final `RefNumber` in the search range. If `ToRefNumber` is omitted, the range will end with last number on the list. */
883
1503
  ToRefNumber?: string;
884
1504
  }
885
- export interface JournalEntryQueryRq {
886
- TxnID?: string[] | string;
887
- RefNumber?: string[] | string;
888
- RefNumberCaseSensitive?: string[] | string;
889
- MaxReturned?: number;
890
- ModifiedDateRangeFilter?: ModifiedDateRangeFilter;
891
- TxnDateRangeFilter?: TxnDateRangeFilter;
892
- EntityFilter?: EntityFilter;
893
- AccountFilter?: AccountFilter;
894
- RefNumberFilter?: RefNumberFilter;
895
- RefNumberRangeFilter?: RefNumberRangeFilter;
896
- CurrencyFilter?: CurrencyFilter;
897
- IncludeLineItems?: boolean;
898
- IncludeRetElement?: string[] | string;
899
- OwnerID?: string[] | string;
1505
+ declare type Relation = "Brother" | "Daughter" | "Father" | "Friend" | "Mother" | "Other" | "Partner" | "Sister" | "Son" | "Spouse";
1506
+ /** @default: Quarterly */
1507
+ declare type ReportingPeriod = "Monthly" | "Quarterly";
1508
+ interface SalesRepRef {
1509
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1510
+ ListID?: string;
1511
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1512
+ FullName?: string;
900
1513
  }
901
- export interface JournalEntryQueryRs {
902
- JournalEntryRet?: JournalEntryRet | JournalEntryRet[];
1514
+ interface SalesTaxCodeRef {
1515
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1516
+ ListID?: string;
1517
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1518
+ FullName?: string;
903
1519
  }
904
- interface VendorAddress {
1520
+ /** @default: Canada */
1521
+ declare type SalesTaxCountry = "Australia" | "Canada" | "UK" | "US";
1522
+ interface SalesTaxReturnRef {
1523
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1524
+ ListID?: string;
1525
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1526
+ FullName?: string;
1527
+ }
1528
+ interface SecondaryContact {
1529
+ /** The name of the contact. */
1530
+ ContactName: string;
1531
+ /** The value of the contact field. */
1532
+ ContactValue: string;
1533
+ /** Relationship of emergency contact information to the employee. */
1534
+ Relation?: Relation;
1535
+ }
1536
+ interface ShipAddress {
1537
+ /** The first line of an address. */
905
1538
  Addr1?: string;
1539
+ /** The second line of an address (if a second line is needed). */
906
1540
  Addr2?: string;
1541
+ /** The third line of an address (if a third line is needed). */
907
1542
  Addr3?: string;
1543
+ /** The fourth line of an address (if a fourth line is needed). */
908
1544
  Addr4?: string;
1545
+ /** The fifth line of an address (if a fifth line is needed). */
909
1546
  Addr5?: string;
1547
+ /** The city name in an address. */
910
1548
  City?: string;
1549
+ /** The state name in an address. */
911
1550
  State?: string;
1551
+ /** The postal code in an address. */
912
1552
  PostalCode?: string;
1553
+ /** The country name in an address, or, in returned Host information (`HostRet` or `HostInfo`), the country for which this edition of QuickBooks was designed. (Possible values are US, CA, UK, and AU.) */
913
1554
  Country?: string;
1555
+ /** In a `BillAddress` or `ShipAddress` aggregate, the `Note` field value is written at the bottom of the address in the form in which it appears, such as the invoice form. */
914
1556
  Note?: string;
915
1557
  }
916
- interface VendorTypeRef {
917
- ListID?: string;
918
- FullName?: string;
1558
+ interface ShipAddressBlock {
1559
+ /** The first line of an address. */
1560
+ Addr1?: string;
1561
+ /** The second line of an address (if a second line is needed). */
1562
+ Addr2?: string;
1563
+ /** The third line of an address (if a third line is needed). */
1564
+ Addr3?: string;
1565
+ /** The fourth line of an address (if a fourth line is needed). */
1566
+ Addr4?: string;
1567
+ /** The fifth line of an address (if a fifth line is needed). */
1568
+ Addr5?: string;
919
1569
  }
920
- interface SalesTaxReturnRef {
1570
+ interface ShipToAddress {
1571
+ /** The case-insensitive name of a list object, not including the names of its ancestors. `Name` must be unique, unless it is the `Name` of a “hierarchical” list object. List objects in different hierarchies can have duplicate names because their `FullNames` will still be unique. For example, two objects could both have the `Name` kitchen, but they could have unique `FullNames`, such as Job12:kitchen and Baker:kitchen. For built-in currencies, `Name` is the internationally accepted currency name and is not editable. */
1572
+ Name: string;
1573
+ /** The first line of an address. */
1574
+ Addr1?: string;
1575
+ /** The second line of an address (if a second line is needed). */
1576
+ Addr2?: string;
1577
+ /** The third line of an address (if a third line is needed). */
1578
+ Addr3?: string;
1579
+ /** The fourth line of an address (if a fourth line is needed). */
1580
+ Addr4?: string;
1581
+ /** The fifth line of an address (if a fifth line is needed). */
1582
+ Addr5?: string;
1583
+ /** The city name in an address. */
1584
+ City?: string;
1585
+ /** The state name in an address. */
1586
+ State?: string;
1587
+ /** The postal code in an address. */
1588
+ PostalCode?: string;
1589
+ /** The country name in an address, or, in returned Host information (`HostRet` or `HostInfo`), the country for which this edition of QuickBooks was designed. (Possible values are US, CA, UK, and AU.) */
1590
+ Country?: string;
1591
+ /** In a `BillAddress` or `ShipAddress` aggregate, the `Note` field value is written at the bottom of the address in the form in which it appears, such as the invoice form. */
1592
+ Note?: string;
1593
+ /** Flag that address is the default ship to address. */
1594
+ DefaultShipTo?: boolean;
1595
+ }
1596
+ interface SickHours {
1597
+ /** The total number of hours currently available for the employee to use. If this value is empty, it will default to 0. */
1598
+ HoursAvailable?: string;
1599
+ /** Indicates how an employee accrues time off. If you include a blank `AccrualPeriod` element in an `EmployeeMod` message, you’ll receive an error. The default value is whatever the QuickBooks user has set in the QuickBooks Employee Preferences. */
1600
+ AccrualPeriod?: AccrualPeriod;
1601
+ /** The number of hours that the employee will accrue per accrual period. The default value is whatever the QuickBooks user has set in the QuickBooks Employee Preferences. */
1602
+ HoursAccrued?: string;
1603
+ /** The maximum number of hours that the employee can accrue. (QuickBooks itself does not enforce this limit, however. `HoursAvailable` can be greater than `MaximumHours`.) The default value is whatever the QuickBooks user has set in the QuickBooks Employee Preferences. */
1604
+ MaximumHours?: string;
1605
+ /** Indicates whether or not the hours accrued resets to zero at the beginning of the new year. If you include a blank `IsResettingHoursEachNewYear` element in an `EmployeeMod` message, you’ll receive an error. */
1606
+ IsResettingHoursEachNewYear?: boolean;
1607
+ /** When used in the `SickHours` or `VacationHours` aggregates, refers to the number of sick leave or vacation hours used in the current year. */
1608
+ HoursUsed?: string;
1609
+ /** When used in the `SickHours` or `VacationHours` aggregates, refers to the date on which sick leave or vacation hours in the current year began to accrue. */
1610
+ AccrualStartDate?: string;
1611
+ }
1612
+ declare type SpecialAccountType = "AccountsPayable" | "AccountsReceivable" | "CondenseItemAdjustmentExpenses" | "CostOfGoodsSold" | "DirectDepositLiabilities" | "Estimates" | "ExchangeGainLoss" | "InventoryAssets" | "ItemReceiptAccount" | "OpeningBalanceEquity" | "PayrollExpenses" | "PayrollLiabilities" | "PettyCash" | "PurchaseOrders" | "ReconciliationDifferences" | "RetainedEarnings" | "SalesOrders" | "SalesTaxPayable" | "UncategorizedExpenses" | "UncategorizedIncome" | "UndepositedFunds";
1613
+ interface SupervisorRef {
1614
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
921
1615
  ListID?: string;
1616
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
922
1617
  FullName?: string;
923
1618
  }
924
- /** @default: Quarterly */
925
- declare type ReportingPeriod = "Monthly" | "Quarterly";
1619
+ interface TaxLineInfoRet {
1620
+ /** An internal representation of the tax line associated with this account. */
1621
+ TaxLineID: number;
1622
+ /** The name of the tax line associated with this account, as it appears on the tax form. */
1623
+ TaxLineName?: string;
1624
+ }
926
1625
  interface TaxOnPurchasesAccountRef {
1626
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
927
1627
  ListID?: string;
1628
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
928
1629
  FullName?: string;
929
1630
  }
930
1631
  interface TaxOnSalesAccountRef {
1632
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
931
1633
  ListID?: string;
1634
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
932
1635
  FullName?: string;
933
1636
  }
934
- interface PrefillAccountRef {
1637
+ interface TermsRef {
1638
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
935
1639
  ListID?: string;
1640
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
936
1641
  FullName?: string;
937
1642
  }
1643
+ interface TimeTrackingAdd {
1644
+ /** The date of the transaction. In some cases, if you leave `TxnDate` out of an -Add message, QuickBooks will prefill `TxnDate` with the date of the last-saved transaction of the same type. */
1645
+ TxnDate?: string;
1646
+ /** A QuickBooks “entity” is a customer, vendor, employee, or person on the QuickBooks “other names” list. Special cases to note: In a `BillToPayQuery` message, `EntityRef` refers to the vendor name.In `JournalCreditLine` and `JournalDebitLine` messages for A/R accounts, `EntityRef` must refer to a customer, or else the transaction will not be recorded. For A/P accounts the `EntityRef` must refer to a vendor, or else the transaction will not be recorded.In a `TimeTracking` message, `EntityRef` cannot refer to a customer, only to an employee, vendor, or person on the “other names” list whose time is being tracked. */
1647
+ EntityRef: EntityRef;
1648
+ /** The customer list includes information about the QuickBooks user’s customers and the individual jobs that are being performed for them. A `CustomerRef` aggregate refers to one of the customers (or customer jobs) on the list. In a request, if a `CustomerRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Special cases to note:In `SalesReceipt` and `ReceivePayment` requests, `CustomerRef` refers to the customer or customer job to which the payment is credited.In a `TimeTracking` request, `CustomerRef` refers to the customer or customer job to which this time could be billed. If `IsBillable` is set to true, `CustomerRef` is required in `TimeTrackingAdd`. In an `ExpenseLineAdd` request, if `AccountRef` refers to an A/P account, `CustomerRef` must refer to a vendor (not to a customer). If `AccountRef` refers to any other type of account, the `CustomerRef` must refer to a customer. */
1649
+ CustomerRef?: CustomerRef;
1650
+ /** A service item refers to services that a business charges for or purchases. Examples include specialized labor, consulting hours, and professional fees. An `ItemServiceRef` aggregate refers to an item on the `ItemService` list. In a request, if an `ItemServiceRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In a `TimeTracking` message, `ItemServiceRef` refers to the type of work. If no `CustomerRef` is specified, then `ItemServiceRef` is not needed. If `IsBillable` is set to true, then `TimeTrackingAdd` must include both `ItemServiceRef` and `CustomerRef`. */
1651
+ ItemServiceRef?: ItemServiceRef;
1652
+ /** Time spent doing the work. In a `TimeTrackAdd` request, notice that although you can specify seconds, seconds are not returned in the response because the UI does not use seconds. */
1653
+ Duration: string;
1654
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
1655
+ ClassRef?: ClassRef;
1656
+ /** Each payroll wage item describes and names a payment scheme, for example, Regular Pay or Overtime Pay. A `PayrollItemWageRef` aggregate refers to one of these wage items. In a request, if a `PayrollItemWageRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Within QuickBooks, a timesheet can specify a payroll wage item only if the following criteria are met: The name on the timesheet (which corresponds to the `EntityRef` in the `TimeTracking` object) is on the QuickBooks Employee list, and The “Use time data to create paychecks” preference is turned on in the QuickBooks Payroll Info window that provides detailed employee information employee. */
1657
+ PayrollItemWageRef?: PayrollItemWageRef;
1658
+ /** Additional information. */
1659
+ Notes?: string;
1660
+ /** The billing status of this item line or expense line. */
1661
+ BillableStatus?: BillableStatus;
1662
+ /** NOT USABLE IN QBXML SPEC 6.0 AND LATER!! Use `BillableStatus` instead. If `IsBillable` is true, the tracked time is billable, and you must specify `CustomerRef` and `ItemServiceRef` so that an invoice can be created. If no invoice will be created, set `IsBillable` to false. (`IsBillable` is true by default.) */
1663
+ IsBillable?: boolean;
1664
+ /** Allows for the attachment of a user defined GUID value. */
1665
+ ExternalGUID?: string;
1666
+ }
1667
+ export interface TimeTrackingAddRq {
1668
+ TimeTrackingAdd: TimeTrackingAdd;
1669
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
1670
+ IncludeRetElement?: string[] | string;
1671
+ }
1672
+ export interface TimeTrackingAddRs {
1673
+ TimeTrackingRet?: TimeTrackingRet;
1674
+ ErrorRecovery?: ErrorRecovery;
1675
+ }
1676
+ interface TimeTrackingEntityFilter {
1677
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1678
+ ListID?: string[] | string;
1679
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1680
+ FullName?: string[] | string;
1681
+ }
1682
+ interface TimeTrackingMod {
1683
+ /** QuickBooks generates a unique `TxnID` for each transaction that is added to QuickBooks. A `TxnID` returned from a request can be used to refer to the transaction in subsequent requests. Notice that you cannot supply the `TxnID` of a `TimeTracking` transaction to `TransactionQueryRq` requests. If you do, you get an error stating that no such record could be found, even though the transaction is in QuickBooks. This behavior reflects the behavior in the QuicKBooks UI in the Find window. */
1684
+ TxnID: string;
1685
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
1686
+ EditSequence: string;
1687
+ /** The date of the transaction. In some cases, if you leave `TxnDate` out of an -Add message, QuickBooks will prefill `TxnDate` with the date of the last-saved transaction of the same type. */
1688
+ TxnDate?: string;
1689
+ /** A QuickBooks “entity” is a customer, vendor, employee, or person on the QuickBooks “other names” list. Special cases to note: In a `BillToPayQuery` message, `EntityRef` refers to the vendor name.In `JournalCreditLine` and `JournalDebitLine` messages for A/R accounts, `EntityRef` must refer to a customer, or else the transaction will not be recorded. For A/P accounts the `EntityRef` must refer to a vendor, or else the transaction will not be recorded.In a `TimeTracking` message, `EntityRef` cannot refer to a customer, only to an employee, vendor, or person on the “other names” list whose time is being tracked. */
1690
+ EntityRef: EntityRef;
1691
+ /** The customer list includes information about the QuickBooks user’s customers and the individual jobs that are being performed for them. A `CustomerRef` aggregate refers to one of the customers (or customer jobs) on the list. In a request, if a `CustomerRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Special cases to note:In `SalesReceipt` and `ReceivePayment` requests, `CustomerRef` refers to the customer or customer job to which the payment is credited.In a `TimeTracking` request, `CustomerRef` refers to the customer or customer job to which this time could be billed. If `IsBillable` is set to true, `CustomerRef` is required in `TimeTrackingAdd`. In an `ExpenseLineAdd` request, if `AccountRef` refers to an A/P account, `CustomerRef` must refer to a vendor (not to a customer). If `AccountRef` refers to any other type of account, the `CustomerRef` must refer to a customer. */
1692
+ CustomerRef?: CustomerRef;
1693
+ /** A service item refers to services that a business charges for or purchases. Examples include specialized labor, consulting hours, and professional fees. An `ItemServiceRef` aggregate refers to an item on the `ItemService` list. In a request, if an `ItemServiceRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In a `TimeTracking` message, `ItemServiceRef` refers to the type of work. If no `CustomerRef` is specified, then `ItemServiceRef` is not needed. If `IsBillable` is set to true, then `TimeTrackingAdd` must include both `ItemServiceRef` and `CustomerRef`. */
1694
+ ItemServiceRef?: ItemServiceRef;
1695
+ /** Time spent doing the work. In a `TimeTrackAdd` request, notice that although you can specify seconds, seconds are not returned in the response because the UI does not use seconds. */
1696
+ Duration: string;
1697
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
1698
+ ClassRef?: ClassRef;
1699
+ /** Each payroll wage item describes and names a payment scheme, for example, Regular Pay or Overtime Pay. A `PayrollItemWageRef` aggregate refers to one of these wage items. In a request, if a `PayrollItemWageRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Within QuickBooks, a timesheet can specify a payroll wage item only if the following criteria are met: The name on the timesheet (which corresponds to the `EntityRef` in the `TimeTracking` object) is on the QuickBooks Employee list, and The “Use time data to create paychecks” preference is turned on in the QuickBooks Payroll Info window that provides detailed employee information employee. */
1700
+ PayrollItemWageRef?: PayrollItemWageRef;
1701
+ /** Additional information. */
1702
+ Notes?: string;
1703
+ /** The billing status of this item line or expense line. */
1704
+ BillableStatus?: BillableStatus;
1705
+ }
1706
+ export interface TimeTrackingModRq {
1707
+ TimeTrackingMod: TimeTrackingMod;
1708
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
1709
+ IncludeRetElement?: string[] | string;
1710
+ }
1711
+ export interface TimeTrackingModRs {
1712
+ TimeTrackingRet?: TimeTrackingRet;
1713
+ ErrorRecovery?: ErrorRecovery;
1714
+ }
1715
+ export interface TimeTrackingQueryRq {
1716
+ /** One or more `TxnID` values. QuickBooks generates a unique `TxnID` for each transaction that is added to QuickBooks. Notice that you cannot supply the `TxnID` of a `TimeTracking` transaction to `TransactionQuery` requests. If you do, you get an error stating that no such record could be found, even though the transaction is in QuickBooks. This behavior reflects the behavior in the QuicKBooks UI in the Find window. */
1717
+ TxnID?: string[] | string;
1718
+ /** Limits the number of objects that a query returns. (To get a count of how many objects could possibly be returned, use the `metaData` query attribute.) If you include a `MaxReturned` value, it must be at least 1. */
1719
+ MaxReturned?: number;
1720
+ /** Filters according to the dates when transactions were last modified. The `ModifiedDateRangeFilter` aggregate is not required to contain any elements, but if it is empty, we recommend that you leave it out altogether. Note that the time portion of the `FromModifiedDate` and `ToModifiedDate` fields was not supported in qbXML version 1.0 or 1.1. (To filter according to the dates when transactions were deleted, use a `TxnDeletedQuery` message.) */
1721
+ ModifiedDateRangeFilter?: ModifiedDateRangeFilter;
1722
+ /** Filters according to the original transaction dates. */
1723
+ TxnDateRangeFilter?: TxnDateRangeFilter;
1724
+ /** Allows you to query for one or more names on the QuickBooks Vendor list, Employee list, or Other Names list. */
1725
+ TimeTrackingEntityFilter?: TimeTrackingEntityFilter;
1726
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
1727
+ IncludeRetElement?: string[] | string;
1728
+ }
1729
+ export interface TimeTrackingQueryRs {
1730
+ TimeTrackingRet?: TimeTrackingRet | TimeTrackingRet[];
1731
+ }
1732
+ interface TimeTrackingRet {
1733
+ /** QuickBooks generates a unique `TxnID` for each transaction that is added to QuickBooks. A `TxnID` returned from a request can be used to refer to the transaction in subsequent requests. Notice that you cannot supply the `TxnID` of a `TimeTracking` transaction to `TransactionQueryRq` requests. If you do, you get an error stating that no such record could be found, even though the transaction is in QuickBooks. This behavior reflects the behavior in the QuicKBooks UI in the Find window. */
1734
+ TxnID: string;
1735
+ /** Time the object was created. */
1736
+ TimeCreated: string;
1737
+ /** Time the object was last modified. */
1738
+ TimeModified: string;
1739
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
1740
+ EditSequence: string;
1741
+ /** An identifying number for this transaction. */
1742
+ TxnNumber?: number;
1743
+ /** The date of the transaction. In some cases, if you leave `TxnDate` out of an -Add message, QuickBooks will prefill `TxnDate` with the date of the last-saved transaction of the same type. */
1744
+ TxnDate: string;
1745
+ /** A QuickBooks “entity” is a customer, vendor, employee, or person on the QuickBooks “other names” list. Special cases to note: In a `BillToPayQuery` message, `EntityRef` refers to the vendor name.In `JournalCreditLine` and `JournalDebitLine` messages for A/R accounts, `EntityRef` must refer to a customer, or else the transaction will not be recorded. For A/P accounts the `EntityRef` must refer to a vendor, or else the transaction will not be recorded.In a `TimeTracking` message, `EntityRef` cannot refer to a customer, only to an employee, vendor, or person on the “other names” list whose time is being tracked. */
1746
+ EntityRef: EntityRef;
1747
+ /** The customer list includes information about the QuickBooks user’s customers and the individual jobs that are being performed for them. A `CustomerRef` aggregate refers to one of the customers (or customer jobs) on the list. In a request, if a `CustomerRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Special cases to note:In `SalesReceipt` and `ReceivePayment` requests, `CustomerRef` refers to the customer or customer job to which the payment is credited.In a `TimeTracking` request, `CustomerRef` refers to the customer or customer job to which this time could be billed. If `IsBillable` is set to true, `CustomerRef` is required in `TimeTrackingAdd`. In an `ExpenseLineAdd` request, if `AccountRef` refers to an A/P account, `CustomerRef` must refer to a vendor (not to a customer). If `AccountRef` refers to any other type of account, the `CustomerRef` must refer to a customer. */
1748
+ CustomerRef?: CustomerRef;
1749
+ /** A service item refers to services that a business charges for or purchases. Examples include specialized labor, consulting hours, and professional fees. An `ItemServiceRef` aggregate refers to an item on the `ItemService` list. In a request, if an `ItemServiceRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In a `TimeTracking` message, `ItemServiceRef` refers to the type of work. If no `CustomerRef` is specified, then `ItemServiceRef` is not needed. If `IsBillable` is set to true, then `TimeTrackingAdd` must include both `ItemServiceRef` and `CustomerRef`. */
1750
+ ItemServiceRef?: ItemServiceRef;
1751
+ /** Time spent doing the work. In a `TimeTrackAdd` request, notice that although you can specify seconds, seconds are not returned in the response because the UI does not use seconds. */
1752
+ Duration: string;
1753
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
1754
+ ClassRef?: ClassRef;
1755
+ /** Each payroll wage item describes and names a payment scheme, for example, Regular Pay or Overtime Pay. A `PayrollItemWageRef` aggregate refers to one of these wage items. In a request, if a `PayrollItemWageRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Within QuickBooks, a timesheet can specify a payroll wage item only if the following criteria are met: The name on the timesheet (which corresponds to the `EntityRef` in the `TimeTracking` object) is on the QuickBooks Employee list, and The “Use time data to create paychecks” preference is turned on in the QuickBooks Payroll Info window that provides detailed employee information employee. */
1756
+ PayrollItemWageRef?: PayrollItemWageRef;
1757
+ /** Additional information. */
1758
+ Notes?: string;
1759
+ /** The billing status of this item line or expense line. */
1760
+ BillableStatus?: BillableStatus;
1761
+ /** Allows for the attachment of a user defined GUID value. */
1762
+ ExternalGUID?: string;
1763
+ /** NOT USABLE IN QBXML SPEC 6.0 AND LATER!! Use `BillableStatus` instead. If `IsBillable` is true, the tracked time is billable, and you must specify `CustomerRef` and `ItemServiceRef` so that an invoice can be created. If no invoice will be created, set `IsBillable` to false. (`IsBillable` is true by default.) */
1764
+ IsBillable?: boolean;
1765
+ /** If `IsBilled` is true, the tracked time has already been billed. */
1766
+ IsBilled?: boolean;
1767
+ }
1768
+ interface TotalBalanceFilter {
1769
+ /** Indicates whether to filter for amounts that are less than, equal to or less than, exactly equal to, greater than, or equal to or greater than the given `Amount`. */
1770
+ Operator: Operator;
1771
+ /** The monetary amount to which `Operator` refers. */
1772
+ Amount: string;
1773
+ }
1774
+ interface TxnDateRangeFilter {
1775
+ /** Selects transactions created on or after this date. Both `FromTxnDate` and `ToTxnDate` must be between 01/01/1901 and 12/31/9999.If you omit `FromTxnDate`, it will be set to 1970-01-01 (1969-12-31 PST). */
1776
+ FromTxnDate?: string;
1777
+ /** Selects transactions created on or before this date. Both `ToTxnDate` and `FromTxnDate` must be between 01/01/1901 and 12/31/9999. If you omit `ToTxnDate`, it will be set to 2038-01-19 (2038-01-18 PST). */
1778
+ ToTxnDate?: string;
1779
+ /** Refers to the transaction date, not the last modification date. Do not include `DateMacro` if either `FromModifedDate` or `ToModifiedDate` are specified. If a query does not specify `DateMacro`, `FromModifedDate`, or `ToModifiedDate`, it includes all dates. `DateMacro` values, in alphabetical order, that are new with QBFC3: `dmAll`, `dmdmLastCalendarQuarter`, `dmdmLastCalendarQuarterToDate`, `dmdmLastCalendarYear`, `dmdmLastCalendarYearToDate`, `dmLastFiscalQuarterToDate`, `dmLastFiscalYearToDate`, `dmLastMonthToDate`, `dmLastWeekToDate`, `dmNextCalendarQuarter`, `dmNextCalendarYear`, `dmNextFiscalQuarter`, `dmNextFiscalYear`, `dmNextFourWeeks`, `dmNextMonth`, `dmNextWeek`, `dmThisCalendarQuarter`, `dmThisCalendarQuarterToDate`, `dmThisCalendarYear`, dm `ThisCalendarYearToDate`, `dmThisFiscalQuarter`, `dmThisFiscalYear`, `dmThisMonth`, `dmThisWeek`, `dmThisWeekToDate`, `dmToday`, `dmYesterday` The list given when you click `IQBENDateMacroType` shows the complete list of valid version 3.0 values. */
1780
+ DateMacro?: DateMacro;
1781
+ }
1782
+ declare type USCitizen = "No" | "Yes";
1783
+ declare type UseTimeDataToCreatePaychecks = "DoNotUseTimeData" | "NotSet" | "UseTimeData";
1784
+ declare type USVeteran = "No" | "Yes";
1785
+ interface VacationHours {
1786
+ /** The total number of hours currently available for the employee to use. If this value is empty, it will default to 0. */
1787
+ HoursAvailable?: string;
1788
+ /** Indicates how an employee accrues time off. If you include a blank `AccrualPeriod` element in an `EmployeeMod` message, you’ll receive an error. The default value is whatever the QuickBooks user has set in the QuickBooks Employee Preferences. */
1789
+ AccrualPeriod?: AccrualPeriod;
1790
+ /** The number of hours that the employee will accrue per accrual period. The default value is whatever the QuickBooks user has set in the QuickBooks Employee Preferences. */
1791
+ HoursAccrued?: string;
1792
+ /** The maximum number of hours that the employee can accrue. (QuickBooks itself does not enforce this limit, however. `HoursAvailable` can be greater than `MaximumHours`.) The default value is whatever the QuickBooks user has set in the QuickBooks Employee Preferences. */
1793
+ MaximumHours?: string;
1794
+ /** Indicates whether or not the hours accrued resets to zero at the beginning of the new year. If you include a blank `IsResettingHoursEachNewYear` element in an `EmployeeMod` message, you’ll receive an error. */
1795
+ IsResettingHoursEachNewYear?: boolean;
1796
+ /** When used in the `SickHours` or `VacationHours` aggregates, refers to the number of sick leave or vacation hours used in the current year. */
1797
+ HoursUsed?: string;
1798
+ /** When used in the `SickHours` or `VacationHours` aggregates, refers to the date on which sick leave or vacation hours in the current year began to accrue. */
1799
+ AccrualStartDate?: string;
1800
+ }
938
1801
  interface VendorAdd {
1802
+ /** The case-insensitive name of a list object, not including the names of its ancestors. `Name` must be unique, unless it is the `Name` of a “hierarchical” list object. List objects in different hierarchies can have duplicate names because their `FullNames` will still be unique. For example, two objects could both have the `Name` kitchen, but they could have unique `FullNames`, such as Job12:kitchen and Baker:kitchen. For built-in currencies, `Name` is the internationally accepted currency name and is not editable. */
939
1803
  Name: string;
1804
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
940
1805
  IsActive?: boolean;
1806
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
941
1807
  ClassRef?: ClassRef;
1808
+ /** The name of the QuickBooks user’s business, as specified in QuickBooks. `CompanyName` and Address are used on invoices, checks, and other forms. (`LegalCompanyName` and `LegalAddress`, on the other hand, are used on a company’s tax forms and pay stubs.) */
942
1809
  CompanyName?: string;
1810
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
943
1811
  Salutation?: string;
1812
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
944
1813
  FirstName?: string;
1814
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
945
1815
  MiddleName?: string;
1816
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
946
1817
  LastName?: string;
1818
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
947
1819
  JobTitle?: string;
1820
+ /** If an address request fails, some combination of address fields might be too long. */
948
1821
  VendorAddress?: VendorAddress;
1822
+ /** Whatever address you specify in this aggregate must not result in an address greater than 5 lines, otherwise you’ll get a runtime error, because QuickBooks doesn’t support addresses more than 5 lines. There are two ways to specify an address within this aggregate: Using `Addr1` through `Addr3` along with the other possible aggregate elements, such as `City`, `State`, Postalcode.Using `Addr1`, `Addr2`, `Addr3`, `Addr4`, and `Addr5` to fully specify the address. If you use this so called “address block” approach, you cannot use any other address elements, such as `City`, `State`, etc. (Note: this approach is not valid for `EmployeeAdd`/Mod/Query) If you use the address block approach above, the lines `Addr1`…`Addr5` are each printed as a separate line on the transaction, and the values are returned in the Ret object under the aggregate `ShipAddressBlock` or `BillAddressBlock`. */
949
1823
  ShipAddress?: ShipAddress;
1824
+ /** The telephone number. */
950
1825
  Phone?: string;
1826
+ /** A telephone number given as an alternative to `Phone`. */
951
1827
  AltPhone?: string;
1828
+ /** Fax number. */
952
1829
  Fax?: string;
1830
+ /** E-mail address. */
953
1831
  Email?: string;
1832
+ /** Email address that would be carbon copied or CC. */
954
1833
  Cc?: string;
1834
+ /** The name of a contact person for a customer or vendor. */
955
1835
  Contact?: string;
1836
+ /** The name of an alternate contact person for a vendor, customer, or “other name” entry. */
956
1837
  AltContact?: string;
1838
+ /** List of additional contacts. */
957
1839
  AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
1840
+ /** A list of contact records. */
958
1841
  Contacts?: Contacts | Contacts[];
1842
+ /** The vendor’s name as it will appear on checks sent to the vendor. (Corresponds in the QuickBooks user interface to the “Print on Check as” field of the Edit Vendor and New Vendor windows.) */
959
1843
  NameOnCheck?: string;
1844
+ /** Account numbers appear in the QuickBooks chart of accounts, Account fields, and reports and graphs. If the `IsUsingAccountNumber` preference is false (that is, if the QuickBooks user has the account numbers Preference turned off), you can still set account numbers through the SDK, but the numbers will not be visible in the user interface. */
960
1845
  AccountNumber?: string;
1846
+ /** Additional information about this vendor. */
961
1847
  Notes?: string;
1848
+ /** List of notes. */
962
1849
  AdditionalNotes?: AdditionalNotes | AdditionalNotes[];
1850
+ /** Vendor types allow business owners to categorize vendors in ways that are meaningful for their businesses. For example, a vendor type might indicate which industry a vendor represents, or which part of the country a vendor is in. A `VendorTypeRef` aggregate refers to one of the types on the `VendorType` list. In a request, if a `VendorTypeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
963
1851
  VendorTypeRef?: VendorTypeRef;
1852
+ /** Refers to the payment terms associated with this entity. (This will be an item on the `DateDrivenTerms` or `StandardTerms` list.) If a `TermsRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
964
1853
  TermsRef?: TermsRef;
1854
+ /** Set and returned as a positive number that indicates a customer’s or vendor’s credit limit. If no value has been defined, there is no credit limit. */
965
1855
  CreditLimit?: string;
1856
+ /** A character string that identifies a vendor. */
966
1857
  VendorTaxIdent?: string;
1858
+ /** If `IsVendorEligibleFor1099` is set to true, `VendorTaxIdent` and `VendorAddress` are required in a vendor add request message. Otherwise, `VendorTaxIdent` and `VendorAddress` are optional. */
967
1859
  IsVendorEligibleFor1099?: boolean;
1860
+ /** The opening balance of this vendor’s account. A positive number indicates money owed to this vendor. */
968
1861
  OpenBalance?: string;
1862
+ /** The date of the opening balance for this vendor. */
969
1863
  OpenBalanceDate?: string;
1864
+ /** Billing rates are used to override the service item rate in a time transaction (`TimeTrackingAdd`) based on the employee or vendor performing the work. Billing rates are assigned to an employee or a vendor to specify overrides to service items. */
970
1865
  BillingRateRef?: BillingRateRef;
1866
+ /** Allows for the attachment of a user defined GUID value. */
971
1867
  ExternalGUID?: string;
1868
+ /** Each item on a sales form is assigned a sales-tax code that indicates whether the item is taxable or non-taxable, and why. Two general codes, which can be modified but not deleted, appear on the sales-tax code list by default:Non-taxable (`Name` = NON; `Desc` = Non-Taxable; `IsTaxable` = false)Taxable (`Name` = TAX; `Desc` = Taxable; `IsTaxable` = true) A sales-tax code can be deleted only if it is no longer associated with any customer, item, or transaction. If the “Do You Charge Sales Tax?” preference within QuickBooks is set to No, QuickBooks will assign the default non-taxable sales-tax code to all sales. A `SalesTaxCodeRef` aggregate refers to a sales-tax code on the list. In a request, if a `SalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In a Customer message, `SalesTaxCodeRef` refers to the sales-tax code that will be used for items related to this customer. In an `ItemInventory` message, `SalesTaxCodeRef` refers to the type of sales tax that will be charged for this item, if it is a taxable item and if sales tax is set up within QuickBooks. */
972
1869
  SalesTaxCodeRef?: SalesTaxCodeRef;
1870
+ /** The country that sales tax is collected for. */
973
1871
  SalesTaxCountry?: SalesTaxCountry;
1872
+ /** Indicates whether the entity is a sales tax agency. */
974
1873
  IsSalesTaxAgency?: boolean;
1874
+ /** Sales tax return information. */
975
1875
  SalesTaxReturnRef?: SalesTaxReturnRef;
1876
+ /** The tax registration number used in CA and UK. */
976
1877
  TaxRegistrationNumber?: string;
1878
+ /** Vendor reporting period for CA or UK. This can be monthly or quarterly. */
977
1879
  ReportingPeriod?: ReportingPeriod;
1880
+ /** This flag is used for CA or UK and whether tax is tracked on purchases. */
978
1881
  IsTaxTrackedOnPurchases?: boolean;
1882
+ /** Account used for taxes on purchases in CA or UK. */
979
1883
  TaxOnPurchasesAccountRef?: TaxOnPurchasesAccountRef;
1884
+ /** This flag is used for CA or UK and whether tax is tracked on sales. */
980
1885
  IsTaxTrackedOnSales?: boolean;
1886
+ /** Account used for taxes on sales in CA or UK. */
981
1887
  TaxOnSalesAccountRef?: TaxOnSalesAccountRef;
1888
+ /** For vendor in CA or UK, is there tax charged on top of tax. */
982
1889
  IsTaxOnTax?: boolean;
1890
+ /** Expense account to prefill when you enter bills for this vendor. */
983
1891
  PrefillAccountRef?: PrefillAccountRef | PrefillAccountRef[];
1892
+ /** The currency object contains all of the information needed by QuickBooks to display and use. For built-in currencies, the name and currency code values are internationally accepted values and thus are not editable. The comma format is editable, as is the `IsActive` status. For user-defined currencies, every value in the object is editable including name and currency code. When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
984
1893
  CurrencyRef?: CurrencyRef;
985
1894
  }
986
- export interface VendorAddRq {
987
- VendorAdd: VendorAdd;
988
- IncludeRetElement?: string[] | string;
1895
+ interface VendorAddress {
1896
+ /** The first line of an address. */
1897
+ Addr1?: string;
1898
+ /** The second line of an address (if a second line is needed). */
1899
+ Addr2?: string;
1900
+ /** The third line of an address (if a third line is needed). */
1901
+ Addr3?: string;
1902
+ /** The fourth line of an address (if a fourth line is needed). */
1903
+ Addr4?: string;
1904
+ /** The fifth line of an address (if a fifth line is needed). */
1905
+ Addr5?: string;
1906
+ /** The city name in an address. */
1907
+ City?: string;
1908
+ /** The state name in an address. */
1909
+ State?: string;
1910
+ /** The postal code in an address. */
1911
+ PostalCode?: string;
1912
+ /** The country name in an address, or, in returned Host information (`HostRet` or `HostInfo`), the country for which this edition of QuickBooks was designed. (Possible values are US, CA, UK, and AU.) */
1913
+ Country?: string;
1914
+ /** In a `BillAddress` or `ShipAddress` aggregate, the `Note` field value is written at the bottom of the address in the form in which it appears, such as the invoice form. */
1915
+ Note?: string;
989
1916
  }
990
1917
  interface VendorAddressBlock {
1918
+ /** The first line of an address. */
991
1919
  Addr1?: string;
1920
+ /** The second line of an address (if a second line is needed). */
992
1921
  Addr2?: string;
1922
+ /** The third line of an address (if a third line is needed). */
993
1923
  Addr3?: string;
1924
+ /** The fourth line of an address (if a fourth line is needed). */
994
1925
  Addr4?: string;
1926
+ /** The fifth line of an address (if a fifth line is needed). */
995
1927
  Addr5?: string;
996
1928
  }
997
- interface VendorRet {
1929
+ export interface VendorAddRq {
1930
+ VendorAdd: VendorAdd;
1931
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
1932
+ IncludeRetElement?: string[] | string;
1933
+ }
1934
+ export interface VendorAddRs {
1935
+ VendorRet?: VendorRet;
1936
+ ErrorRecovery?: ErrorRecovery;
1937
+ }
1938
+ interface VendorMod {
1939
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
998
1940
  ListID: string;
999
- TimeCreated: string;
1000
- TimeModified: string;
1941
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
1001
1942
  EditSequence: string;
1002
- Name: string;
1943
+ /** The case-insensitive name of a list object, not including the names of its ancestors. `Name` must be unique, unless it is the `Name` of a “hierarchical” list object. List objects in different hierarchies can have duplicate names because their `FullNames` will still be unique. For example, two objects could both have the `Name` kitchen, but they could have unique `FullNames`, such as Job12:kitchen and Baker:kitchen. For built-in currencies, `Name` is the internationally accepted currency name and is not editable. */
1944
+ Name?: string;
1945
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
1003
1946
  IsActive?: boolean;
1947
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
1004
1948
  ClassRef?: ClassRef;
1005
- IsTaxAgency?: boolean;
1949
+ /** The name of the QuickBooks user’s business, as specified in QuickBooks. `CompanyName` and Address are used on invoices, checks, and other forms. (`LegalCompanyName` and `LegalAddress`, on the other hand, are used on a company’s tax forms and pay stubs.) */
1006
1950
  CompanyName?: string;
1951
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
1007
1952
  Salutation?: string;
1953
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
1008
1954
  FirstName?: string;
1955
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
1009
1956
  MiddleName?: string;
1957
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
1010
1958
  LastName?: string;
1959
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
1011
1960
  JobTitle?: string;
1961
+ /** If an address request fails, some combination of address fields might be too long. */
1012
1962
  VendorAddress?: VendorAddress;
1013
- VendorAddressBlock?: VendorAddressBlock;
1963
+ /** Whatever address you specify in this aggregate must not result in an address greater than 5 lines, otherwise you’ll get a runtime error, because QuickBooks doesn’t support addresses more than 5 lines. There are two ways to specify an address within this aggregate: Using `Addr1` through `Addr3` along with the other possible aggregate elements, such as `City`, `State`, Postalcode.Using `Addr1`, `Addr2`, `Addr3`, `Addr4`, and `Addr5` to fully specify the address. If you use this so called “address block” approach, you cannot use any other address elements, such as `City`, `State`, etc. (Note: this approach is not valid for `EmployeeAdd`/Mod/Query) If you use the address block approach above, the lines `Addr1`…`Addr5` are each printed as a separate line on the transaction, and the values are returned in the Ret object under the aggregate `ShipAddressBlock` or `BillAddressBlock`. */
1014
1964
  ShipAddress?: ShipAddress;
1965
+ /** The telephone number. */
1015
1966
  Phone?: string;
1967
+ /** A telephone number given as an alternative to `Phone`. */
1016
1968
  AltPhone?: string;
1969
+ /** Fax number. */
1017
1970
  Fax?: string;
1971
+ /** E-mail address. */
1018
1972
  Email?: string;
1973
+ /** Email address that would be carbon copied or CC. */
1019
1974
  Cc?: string;
1975
+ /** The name of a contact person for a customer or vendor. */
1020
1976
  Contact?: string;
1977
+ /** The name of an alternate contact person for a vendor, customer, or “other name” entry. */
1021
1978
  AltContact?: string;
1979
+ /** List of additional contacts. */
1022
1980
  AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
1023
- ContactsRet?: ContactsRet | ContactsRet[];
1981
+ /** A list of contact records. */
1982
+ ContactsMod?: ContactsMod | ContactsMod[];
1983
+ /** The vendor’s name as it will appear on checks sent to the vendor. (Corresponds in the QuickBooks user interface to the “Print on Check as” field of the Edit Vendor and New Vendor windows.) */
1024
1984
  NameOnCheck?: string;
1985
+ /** Account numbers appear in the QuickBooks chart of accounts, Account fields, and reports and graphs. If the `IsUsingAccountNumber` preference is false (that is, if the QuickBooks user has the account numbers Preference turned off), you can still set account numbers through the SDK, but the numbers will not be visible in the user interface. */
1025
1986
  AccountNumber?: string;
1987
+ /** Additional information about this vendor. */
1026
1988
  Notes?: string;
1027
- AdditionalNotesRet?: AdditionalNotesRet | AdditionalNotesRet[];
1989
+ /** List of notes. */
1990
+ AdditionalNotesMod?: AdditionalNotesMod | AdditionalNotesMod[];
1991
+ /** Vendor types allow business owners to categorize vendors in ways that are meaningful for their businesses. For example, a vendor type might indicate which industry a vendor represents, or which part of the country a vendor is in. A `VendorTypeRef` aggregate refers to one of the types on the `VendorType` list. In a request, if a `VendorTypeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
1028
1992
  VendorTypeRef?: VendorTypeRef;
1993
+ /** Refers to the payment terms associated with this entity. (This will be an item on the `DateDrivenTerms` or `StandardTerms` list.) If a `TermsRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
1029
1994
  TermsRef?: TermsRef;
1995
+ /** Set and returned as a positive number that indicates a customer’s or vendor’s credit limit. If no value has been defined, there is no credit limit. */
1030
1996
  CreditLimit?: string;
1997
+ /** A character string that identifies a vendor. */
1031
1998
  VendorTaxIdent?: string;
1999
+ /** If `IsVendorEligibleFor1099` is set to true, `VendorTaxIdent` and `VendorAddress` are required in a vendor add request message. Otherwise, `VendorTaxIdent` and `VendorAddress` are optional. */
1032
2000
  IsVendorEligibleFor1099?: boolean;
1033
- Balance?: string;
2001
+ /** Billing rates are used to override the service item rate in a time transaction (`TimeTrackingAdd`) based on the employee or vendor performing the work. Billing rates are assigned to an employee or a vendor to specify overrides to service items. */
1034
2002
  BillingRateRef?: BillingRateRef;
1035
- ExternalGUID?: string;
2003
+ /** Each item on a sales form is assigned a sales-tax code that indicates whether the item is taxable or non-taxable, and why. Two general codes, which can be modified but not deleted, appear on the sales-tax code list by default:Non-taxable (`Name` = NON; `Desc` = Non-Taxable; `IsTaxable` = false)Taxable (`Name` = TAX; `Desc` = Taxable; `IsTaxable` = true) A sales-tax code can be deleted only if it is no longer associated with any customer, item, or transaction. If the “Do You Charge Sales Tax?” preference within QuickBooks is set to No, QuickBooks will assign the default non-taxable sales-tax code to all sales. A `SalesTaxCodeRef` aggregate refers to a sales-tax code on the list. In a request, if a `SalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In a Customer message, `SalesTaxCodeRef` refers to the sales-tax code that will be used for items related to this customer. In an `ItemInventory` message, `SalesTaxCodeRef` refers to the type of sales tax that will be charged for this item, if it is a taxable item and if sales tax is set up within QuickBooks. */
1036
2004
  SalesTaxCodeRef?: SalesTaxCodeRef;
2005
+ /** The country that sales tax is collected for. */
1037
2006
  SalesTaxCountry?: SalesTaxCountry;
2007
+ /** Indicates whether the entity is a sales tax agency. */
1038
2008
  IsSalesTaxAgency?: boolean;
2009
+ /** Sales tax return information. */
1039
2010
  SalesTaxReturnRef?: SalesTaxReturnRef;
2011
+ /** The tax registration number used in CA and UK. */
1040
2012
  TaxRegistrationNumber?: string;
2013
+ /** Vendor reporting period for CA or UK. This can be monthly or quarterly. */
1041
2014
  ReportingPeriod?: ReportingPeriod;
2015
+ /** This flag is used for CA or UK and whether tax is tracked on purchases. */
1042
2016
  IsTaxTrackedOnPurchases?: boolean;
2017
+ /** Account used for taxes on purchases in CA or UK. */
1043
2018
  TaxOnPurchasesAccountRef?: TaxOnPurchasesAccountRef;
2019
+ /** This flag is used for CA or UK and whether tax is tracked on sales. */
1044
2020
  IsTaxTrackedOnSales?: boolean;
2021
+ /** Account used for taxes on sales in CA or UK. */
1045
2022
  TaxOnSalesAccountRef?: TaxOnSalesAccountRef;
2023
+ /** For vendor in CA or UK, is there tax charged on top of tax. */
1046
2024
  IsTaxOnTax?: boolean;
2025
+ /** Expense account to prefill when you enter bills for this vendor. */
1047
2026
  PrefillAccountRef?: PrefillAccountRef | PrefillAccountRef[];
2027
+ /** The currency object contains all of the information needed by QuickBooks to display and use. For built-in currencies, the name and currency code values are internationally accepted values and thus are not editable. The comma format is editable, as is the `IsActive` status. For user-defined currencies, every value in the object is editable including name and currency code. When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
1048
2028
  CurrencyRef?: CurrencyRef;
1049
- DataExtRet?: DataExtRet | DataExtRet[];
1050
2029
  }
1051
- export interface VendorAddRs {
2030
+ export interface VendorModRq {
2031
+ VendorMod: VendorMod;
2032
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
2033
+ IncludeRetElement?: string[] | string;
2034
+ }
2035
+ export interface VendorModRs {
1052
2036
  VendorRet?: VendorRet;
1053
2037
  ErrorRecovery?: ErrorRecovery;
1054
2038
  }
1055
- interface VendorMod {
2039
+ export interface VendorQueryRq {
2040
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
2041
+ ListID?: string[] | string;
2042
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
2043
+ FullName?: string[] | string;
2044
+ /** Limits the number of objects that a query returns. (To get a count of how many objects could possibly be returned, use the `metaData` query attribute.) If you include a `MaxReturned` value, it must be at least 1. */
2045
+ MaxReturned?: number;
2046
+ /** Used in filters to select list objects based on whether or not they are currently enabled for use by QuickBooks. The default value is `asActiveOnly`, which selects only list objects that are active. */
2047
+ ActiveStatus?: ActiveStatus;
2048
+ /** Selects objects modified on or after this date. See the note below regarding QBFC usage.For desktop versions of QuickBooks, the `FromModifiedDate` and `ToModifiedDate` must be between 1970-01-01 and 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). (The time portion of the field was not supported in qbXML version 1.0 or 1.1.) Also, for desktop versions of QuickBooks, if `FromModifiedDate` includes a date but not a time (for example, if you set `FromModifiedDate` to 2003-02-14), the time is assumed to be zero (2003-02-14T00:00:00). If you omit `FromModifiedDate`, it will be set to 1970-01-01T00:00:00 (1969-12-31T16:00:00-08:00 PST).For QBOE, the `FromModifiedDate` and `ToModifiedDate` must be between 1900-01-01T00:00:00 and 9999-12-31T00:00:00. If `FromModifiedDate` includes a date but not a time (for example, if you set `FromModifiedDate` to 2003-02-14), the time is assumed to be zero (2003-02-14T00:00:00). If you omit `FromModifiedDate`, it will be set to 1900-01-01T00:00:00.`Note`: When specifying this in QBFC, you need to supply the parameter `asDateOnly`, which is a Boolean. If `asDateOnly` is true, the date value will be represented as a date only (without a time). If `asDateOnly` is false, the date value will be represented as date and time, padded with zeros if necessary, and set to the beginning of the day if no time is provided. The `asDateOnly` parameter is especially useful in the `ToModifiedDate` field of a query: If `asDateOnly` is set to true in the `ToModifiedDate` field of a query, then the query includes elements modified up to the end of the day. If `asDateOnly` is false, the query includes elements modified up to the specified time (or up to the beginning of the day if no time is included). */
2049
+ FromModifiedDate?: string;
2050
+ /** Selects objects modified on or before this date. See the note below on QBFC usage.For desktop versions of QuickBooks, the `ToModifiedDate` and `FromModifiedDate` must be between 01/01/1970 and 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). (Note that the time portion of the field was not supported in qbXML version 1.0 or 1.1.) If `ToModifiedDate` includes a date but not a time (for example, if you set `ToModifiedDate` to 2003-02-14), the time is assumed to be the end of the day (2003-02-14T23:59:59). If you omit `ToModifiedDate` altogether, it will be set to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST).For QBOE, the `ToModifiedDate` and `FromModifiedDate` must be between 01/01/1900 and 9999-12-31T00:00:00. If `ToModifiedDate` includes a date but not a time (for example, if you set `ToModifiedDate` to 2003-02-14), the time is assumed to be the end of the day (2003-02-14T23:59:59). If you omit `ToModifiedDate` altogether, it will be set to 9999-12-31T00:00:00.`Note`: When specifying this in QBFC, you need to supply the parameter `asDateOnly`, which is a Boolean. If `asDateOnly` is true, the date value will be represented as a date only (without a time). If `asDateOnly` is false, the date value will be represented as date and time, padded with zeros if necessary, and set to the beginning of the day if no time is provided. The `asDateOnly` parameter is especially useful in the `ToModifiedDate` field of a query: If `asDateOnly` is set to true in the `ToModifiedDate` field of a query, then the query includes elements modified up to the end of the day. If `asDateOnly` is false, the query includes elements modified up to the specified time (or up to the beginning of the day if no time is included). */
2051
+ ToModifiedDate?: string;
2052
+ /** Filters according to the object’s `Name`. */
2053
+ NameFilter?: NameFilter;
2054
+ /** Filters according to the object’s `Name`. */
2055
+ NameRangeFilter?: NameRangeFilter;
2056
+ /** Filters according to total balance. Total balance includes the balance for all subaccounts; for example, a customer’s `TotalBalance` would include all the jobs for that customer. */
2057
+ TotalBalanceFilter?: TotalBalanceFilter;
2058
+ /** Filters by the specified currency. */
2059
+ CurrencyFilter?: CurrencyFilter;
2060
+ /** Filter according to class. */
2061
+ ClassFilter?: ClassFilter;
2062
+ /** You use this if you want to limit the data that will be returned in the response. In this list, you specify the name of each top-level element or aggregate that you want to be returned in the response to the request. You cannot specify fields within an aggregate, for example, you cannot specify a `City` within an Address: you must specify Address and will get the entire address. The names specified in the list are not parsed, so you must be especially careful to supply valid names, properly cased. No error is returned in the status code if you specify an invalid name. Notice that if you want to return custom data or private data extensions, you must specify the `DataExtRet` element and you must supply the `OwnerID` set to either a value of 0 (custom data) or the GUID for the private data. */
2063
+ IncludeRetElement?: string[] | string;
2064
+ /** Zero or more `OwnerID` values. `OwnerID` refers to the owner of a data extension:If `OwnerID` is 0, this is a public data extension, also known as a custom field. Custom fields appear in the QuickBooks UI.If `OwnerID` is a GUID, for example `{6B063959-81B0-4622-85D6-F548C8CCB517}`, this field is a private data extension defined by an integrated application. Private data extensions do not appear in the QuickBooks UI. Note that `OwnerID` values are not case-sensitive, meaning that if you enter an `OwnerID` value with lower-case letters, the value will be saved and returned with upper-case letters. When you share a private data extension with another application, the other application must know both the `OwnerID` and the `DataExtName`, as these together form a data extension’s unique name. */
2065
+ OwnerID?: string[] | string;
2066
+ }
2067
+ export interface VendorQueryRs {
2068
+ VendorRet?: VendorRet | VendorRet[];
2069
+ }
2070
+ interface VendorRet {
2071
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
1056
2072
  ListID: string;
2073
+ /** Time the object was created. */
2074
+ TimeCreated: string;
2075
+ /** Time the object was last modified. */
2076
+ TimeModified: string;
2077
+ /** A number that the server generates and assigns to this object. Every time the object is changed, the server will change its `EditSequence` value. When you try to modify a list object, you must provide its `EditSequence`. The server compares the `EditSequence` you provide with the `EditSequence` in memory to make sure you are dealing with the latest copy of the object. If you are not, the server will reject the request and return an error. Because `EditSequence` is only used to check whether two objects match, there is no reason to interpret its value. */
1057
2078
  EditSequence: string;
1058
- Name?: string;
2079
+ /** The case-insensitive name of a list object, not including the names of its ancestors. `Name` must be unique, unless it is the `Name` of a “hierarchical” list object. List objects in different hierarchies can have duplicate names because their `FullNames` will still be unique. For example, two objects could both have the `Name` kitchen, but they could have unique `FullNames`, such as Job12:kitchen and Baker:kitchen. For built-in currencies, `Name` is the internationally accepted currency name and is not editable. */
2080
+ Name: string;
2081
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
1059
2082
  IsActive?: boolean;
2083
+ /** Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. A `ClassRef` aggregate refers to one of these named classes. For example, in a `TimeTracking` message, `ClassRef` refers to the QuickBooks class into which the timed activity falls. If a `ClassRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In an `InvoiceAdd` request, if you specify a `ClassRef` for the whole invoice, that same `ClassRef` is automatically used in the line items. If you want to clear that (that is, have NO `ClassRef` for the line item, you can clear it in the line item by simply not specifying it in the line item. */
1060
2084
  ClassRef?: ClassRef;
2085
+ /** Is the current entity a tax agency. */
2086
+ IsTaxAgency?: boolean;
2087
+ /** The name of the QuickBooks user’s business, as specified in QuickBooks. `CompanyName` and Address are used on invoices, checks, and other forms. (`LegalCompanyName` and `LegalAddress`, on the other hand, are used on a company’s tax forms and pay stubs.) */
1061
2088
  CompanyName?: string;
2089
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
1062
2090
  Salutation?: string;
2091
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
1063
2092
  FirstName?: string;
2093
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
1064
2094
  MiddleName?: string;
2095
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
1065
2096
  LastName?: string;
2097
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
1066
2098
  JobTitle?: string;
2099
+ /** If an address request fails, some combination of address fields might be too long. */
1067
2100
  VendorAddress?: VendorAddress;
2101
+ /** The address expressed as an address block of `Addr1` through `Addr5`, depending on the number of lines in the original request that created the address. */
2102
+ VendorAddressBlock?: VendorAddressBlock;
2103
+ /** Whatever address you specify in this aggregate must not result in an address greater than 5 lines, otherwise you’ll get a runtime error, because QuickBooks doesn’t support addresses more than 5 lines. There are two ways to specify an address within this aggregate: Using `Addr1` through `Addr3` along with the other possible aggregate elements, such as `City`, `State`, Postalcode.Using `Addr1`, `Addr2`, `Addr3`, `Addr4`, and `Addr5` to fully specify the address. If you use this so called “address block” approach, you cannot use any other address elements, such as `City`, `State`, etc. (Note: this approach is not valid for `EmployeeAdd`/Mod/Query) If you use the address block approach above, the lines `Addr1`…`Addr5` are each printed as a separate line on the transaction, and the values are returned in the Ret object under the aggregate `ShipAddressBlock` or `BillAddressBlock`. */
1068
2104
  ShipAddress?: ShipAddress;
2105
+ /** The telephone number. */
1069
2106
  Phone?: string;
2107
+ /** A telephone number given as an alternative to `Phone`. */
1070
2108
  AltPhone?: string;
2109
+ /** Fax number. */
1071
2110
  Fax?: string;
2111
+ /** E-mail address. */
1072
2112
  Email?: string;
2113
+ /** Email address that would be carbon copied or CC. */
1073
2114
  Cc?: string;
2115
+ /** The name of a contact person for a customer or vendor. */
1074
2116
  Contact?: string;
2117
+ /** The name of an alternate contact person for a vendor, customer, or “other name” entry. */
1075
2118
  AltContact?: string;
2119
+ /** List of additional contacts. */
1076
2120
  AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
1077
- ContactsMod?: ContactsMod | ContactsMod[];
2121
+ /** A list of contact records. */
2122
+ ContactsRet?: ContactsRet | ContactsRet[];
2123
+ /** The vendor’s name as it will appear on checks sent to the vendor. (Corresponds in the QuickBooks user interface to the “Print on Check as” field of the Edit Vendor and New Vendor windows.) */
1078
2124
  NameOnCheck?: string;
2125
+ /** Account numbers appear in the QuickBooks chart of accounts, Account fields, and reports and graphs. If the `IsUsingAccountNumber` preference is false (that is, if the QuickBooks user has the account numbers Preference turned off), you can still set account numbers through the SDK, but the numbers will not be visible in the user interface. */
1079
2126
  AccountNumber?: string;
2127
+ /** Additional information about this vendor. */
1080
2128
  Notes?: string;
1081
- AdditionalNotesMod?: AdditionalNotesMod | AdditionalNotesMod[];
2129
+ /** List of notes. */
2130
+ AdditionalNotesRet?: AdditionalNotesRet | AdditionalNotesRet[];
2131
+ /** Vendor types allow business owners to categorize vendors in ways that are meaningful for their businesses. For example, a vendor type might indicate which industry a vendor represents, or which part of the country a vendor is in. A `VendorTypeRef` aggregate refers to one of the types on the `VendorType` list. In a request, if a `VendorTypeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
1082
2132
  VendorTypeRef?: VendorTypeRef;
2133
+ /** Refers to the payment terms associated with this entity. (This will be an item on the `DateDrivenTerms` or `StandardTerms` list.) If a `TermsRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
1083
2134
  TermsRef?: TermsRef;
2135
+ /** Set and returned as a positive number that indicates a customer’s or vendor’s credit limit. If no value has been defined, there is no credit limit. */
1084
2136
  CreditLimit?: string;
2137
+ /** A character string that identifies a vendor. */
1085
2138
  VendorTaxIdent?: string;
2139
+ /** If `IsVendorEligibleFor1099` is set to true, `VendorTaxIdent` and `VendorAddress` are required in a vendor add request message. Otherwise, `VendorTaxIdent` and `VendorAddress` are optional. */
1086
2140
  IsVendorEligibleFor1099?: boolean;
2141
+ /** A positive number indicates money owed to this vendor. */
2142
+ Balance?: string;
2143
+ /** Billing rates are used to override the service item rate in a time transaction (`TimeTrackingAdd`) based on the employee or vendor performing the work. Billing rates are assigned to an employee or a vendor to specify overrides to service items. */
1087
2144
  BillingRateRef?: BillingRateRef;
2145
+ /** Allows for the attachment of a user defined GUID value. */
2146
+ ExternalGUID?: string;
2147
+ /** Each item on a sales form is assigned a sales-tax code that indicates whether the item is taxable or non-taxable, and why. Two general codes, which can be modified but not deleted, appear on the sales-tax code list by default:Non-taxable (`Name` = NON; `Desc` = Non-Taxable; `IsTaxable` = false)Taxable (`Name` = TAX; `Desc` = Taxable; `IsTaxable` = true) A sales-tax code can be deleted only if it is no longer associated with any customer, item, or transaction. If the “Do You Charge Sales Tax?” preference within QuickBooks is set to No, QuickBooks will assign the default non-taxable sales-tax code to all sales. A `SalesTaxCodeRef` aggregate refers to a sales-tax code on the list. In a request, if a `SalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. In a Customer message, `SalesTaxCodeRef` refers to the sales-tax code that will be used for items related to this customer. In an `ItemInventory` message, `SalesTaxCodeRef` refers to the type of sales tax that will be charged for this item, if it is a taxable item and if sales tax is set up within QuickBooks. */
1088
2148
  SalesTaxCodeRef?: SalesTaxCodeRef;
2149
+ /** The country that sales tax is collected for. */
1089
2150
  SalesTaxCountry?: SalesTaxCountry;
2151
+ /** Indicates whether the entity is a sales tax agency. */
1090
2152
  IsSalesTaxAgency?: boolean;
2153
+ /** Sales tax return information. */
1091
2154
  SalesTaxReturnRef?: SalesTaxReturnRef;
2155
+ /** The tax registration number used in CA and UK. */
1092
2156
  TaxRegistrationNumber?: string;
2157
+ /** Vendor reporting period for CA or UK. This can be monthly or quarterly. */
1093
2158
  ReportingPeriod?: ReportingPeriod;
2159
+ /** This flag is used for CA or UK and whether tax is tracked on purchases. */
1094
2160
  IsTaxTrackedOnPurchases?: boolean;
2161
+ /** Account used for taxes on purchases in CA or UK. */
1095
2162
  TaxOnPurchasesAccountRef?: TaxOnPurchasesAccountRef;
2163
+ /** This flag is used for CA or UK and whether tax is tracked on sales. */
1096
2164
  IsTaxTrackedOnSales?: boolean;
2165
+ /** Account used for taxes on sales in CA or UK. */
1097
2166
  TaxOnSalesAccountRef?: TaxOnSalesAccountRef;
2167
+ /** For vendor in CA or UK, is there tax charged on top of tax. */
1098
2168
  IsTaxOnTax?: boolean;
2169
+ /** Expense account to prefill when you enter bills for this vendor. */
1099
2170
  PrefillAccountRef?: PrefillAccountRef | PrefillAccountRef[];
2171
+ /** The currency object contains all of the information needed by QuickBooks to display and use. For built-in currencies, the name and currency code values are internationally accepted values and thus are not editable. The comma format is editable, as is the `IsActive` status. For user-defined currencies, every value in the object is editable including name and currency code. When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
1100
2172
  CurrencyRef?: CurrencyRef;
2173
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
2174
+ DataExtRet?: DataExtRet | DataExtRet[];
1101
2175
  }
1102
- export interface VendorModRq {
1103
- VendorMod: VendorMod;
1104
- IncludeRetElement?: string[] | string;
1105
- }
1106
- export interface VendorModRs {
1107
- VendorRet?: VendorRet;
1108
- ErrorRecovery?: ErrorRecovery;
1109
- }
1110
- export interface VendorQueryRq {
1111
- ListID?: string[] | string;
1112
- FullName?: string[] | string;
1113
- MaxReturned?: number;
1114
- ActiveStatus?: ActiveStatus;
1115
- FromModifiedDate?: string;
1116
- ToModifiedDate?: string;
1117
- NameFilter?: NameFilter;
1118
- NameRangeFilter?: NameRangeFilter;
1119
- TotalBalanceFilter?: TotalBalanceFilter;
1120
- CurrencyFilter?: CurrencyFilter;
1121
- ClassFilter?: ClassFilter;
1122
- IncludeRetElement?: string[] | string;
1123
- OwnerID?: string[] | string;
1124
- }
1125
- export interface VendorQueryRs {
1126
- VendorRet?: VendorRet | VendorRet[];
2176
+ interface VendorTypeRef {
2177
+ /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
2178
+ ListID?: string;
2179
+ /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
2180
+ FullName?: string;
1127
2181
  }
1128
2182
  export {};