conductor-node 9.6.1 → 9.7.0

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.
@@ -2295,234 +2295,785 @@ export interface CreditCardTxnResultInfoMod {
2295
2295
  ClientTransID?: string;
2296
2296
  }
2297
2297
  export type CreditCardTxnType = "Authorization" | "Capture" | "Charge" | "Refund" | "VoiceAuthorization";
2298
- export interface CurrencyFilter {
2299
- /** 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`.
2300
-
2301
- 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. */
2302
- ListID?: string[] | string;
2303
- /** 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. */
2304
- FullName?: string[] | string;
2305
- }
2306
- export interface CurrencyRef {
2307
- /** 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. */
2308
- ListID?: string;
2309
- /** `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. */
2310
- FullName?: string;
2311
- }
2312
- export interface CustomDetailReportQueryRq {
2313
- /** The type of report being queried. */
2314
- CustomDetailReportType: CustomDetailReportType;
2315
- /** Set `DisplayReport` to true to display this report within the QuickBooks UI. (Default is false.) If you want the request to display the report without returning any data to your application, set the `responseData` attribute to `includeNone`. */
2316
- DisplayReport?: boolean;
2317
- /** If you omit both `ToReportDate` and `FromReportDate`, the report will cover the current fiscal year to date. */
2318
- ReportPeriod?: ReportPeriod;
2319
- /** The time period covered by this report. */
2320
- ReportDateMacro?: ReportDateMacro;
2321
- /** Allows you to query for a specified account type or for specific list elements. */
2322
- ReportAccountFilter?: ReportAccountFilter;
2323
- /** Allows you to query for a specified name type (customer, employee, vendor, or other) or query for specific list elements. */
2324
- ReportEntityFilter?: ReportEntityFilter;
2325
- /** Allows you to query for a specified item type (for example, discount, inventory, or non-inventory) or query for specific list elements. */
2326
- ReportItemFilter?: ReportItemFilter;
2327
- /** Allows you to query for a specified class. 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. */
2328
- ReportClassFilter?: ReportClassFilter;
2329
- /** Allows you to report on specific transaction types (for example, charge, check, deposit, or estimate). */
2330
- ReportTxnTypeFilter?: ReportTxnTypeFilter;
2331
- /** Returns reports that were modified between these two dates (inclusive). The range of acceptable dates for both `FromReportModifiedDate` and `ToReportModifiedDate` is 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). */
2332
- ReportModifiedDateRangeFilter?: ReportModifiedDateRangeFilter;
2333
- /** The time period covered by this report. */
2334
- ReportModifiedDateRangeMacro?: ReportModifiedDateRangeMacro;
2335
- /** The level of detail to include in the report. */
2336
- ReportDetailLevelFilter?: ReportDetailLevelFilter;
2337
- /** Allows you to query for posting reports, non-posting reports, or reports that are either one. */
2338
- ReportPostingStatusFilter?: ReportPostingStatusFilter;
2339
- /** `SummarizeRowsBy` (along with `IncludeColumnList`, in most cases) determines what data is calculated for this report and controls how the rows are organized and labeled. For example, if you set the value to `srbAccount`, the report’s row labels might be “Checking,” “Savings,” and so on. */
2340
- SummarizeRowsBy: SummarizeRowsBy;
2341
- /** A list of enum values showing which columns you want the report to return. (The report won’t return columns other than the ones you specify here.) */
2342
- IncludeColumn: IncludeColumn | IncludeColumn[];
2343
- /** Indicates whether this report should include all accounts or just those that are currently in use. */
2344
- IncludeAccounts?: IncludeAccounts;
2345
- /** The report will return open balance information up to the `ReportOpenBalanceAsOf` date. */
2346
- ReportOpenBalanceAsOf?: ReportOpenBalanceAsOf;
2347
- /** If `ReportBasis` is `rbCash`, the report bases income and expenses on the dates when money changed hands.`rbAccrual`, the report bases income on the dates when customers were invoiced and bases expenses on the dates when bills were entered.`rbNone`, the report uses the default `ReportBasis`, which is either the QuickBooks Preference setting or the QuickBooks default for a given type of report. In a report response, the SDK returns `rbNone` for reports that do not support `ReportBasis`. (The 1099 report, for example, has its own basis for generation.) */
2348
- ReportBasis?: ReportBasis;
2349
- }
2350
- export interface CustomDetailReportQueryRs {
2351
- ReportRet: ReportRet[];
2352
- }
2353
- export type CustomDetailReportType = "CustomTxnDetail";
2354
- export interface CustomerAdd {
2355
- /** 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. */
2356
- Name: string;
2357
- /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
2358
- IsActive?: boolean;
2298
+ export interface CreditMemoAdd {
2299
+ /** 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. */
2300
+ CustomerRef: CustomerRef;
2359
2301
  /** 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. */
2360
2302
  ClassRef?: ClassRef;
2361
- /** 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. */
2362
- ParentRef?: ParentRef;
2363
- /** 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.) */
2364
- CompanyName?: string;
2365
- /** A formal reference, such as Mr. or Dr., that precedes a name. */
2366
- Salutation?: string;
2367
- /** The first name of a customer, vendor, employee, or person on the “other names” list. */
2368
- FirstName?: string;
2369
- /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
2370
- MiddleName?: string;
2371
- /** The last name of a customer, vendor, employee, or person on the “other names” list. */
2372
- LastName?: string;
2373
- /** The job title of a customer, vendor, employee, or person on the “other names” list. */
2374
- JobTitle?: string;
2303
+ /** Refers to an accounts receivable account in the QuickBooks file. (The `AccountType` of this account will be `AccountsReceivable`.) If an `ARAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. If this field is in a transaction that links to other transactions, make sure this `ARAccountRef` matches the `ARAccountRef` used in the other transactions. For example, in an `ARRefundCreditCard` transaction, the `ARAccountRef` of the credit card refund transaction must match the `ARAccountRef` used in each of the linked credit transactions. */
2304
+ ARAccountRef?: ARAccountRef;
2305
+ /** QuickBooks templates specify how to print certain transactions. A template query returns the names of all templates that have been defined in QuickBooks. A `TemplateRef` element refers to one of these templates. */
2306
+ TemplateRef?: TemplateRef;
2307
+ /** 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. */
2308
+ TxnDate?: string;
2309
+ /** 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. */
2310
+ RefNumber?: string;
2375
2311
  /** 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`. */
2376
2312
  BillAddress?: BillAddress;
2377
2313
  /** 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`. */
2378
2314
  ShipAddress?: ShipAddress;
2379
- /** List of ship to addresses. */
2380
- ShipToAddress?: ShipToAddress | ShipToAddress[];
2381
- /** The telephone number. */
2382
- Phone?: string;
2383
- /** A telephone number given as an alternative to `Phone`. */
2384
- AltPhone?: string;
2385
- /** Fax number. */
2386
- Fax?: string;
2387
- /** E-mail address. */
2388
- Email?: string;
2389
- /** Email address that would be carbon copied or CC. */
2390
- Cc?: string;
2391
- /** The name of a contact person for a customer or vendor. */
2392
- Contact?: string;
2393
- /** The name of an alternate contact person for a vendor, customer, or “other name” entry. */
2394
- AltContact?: string;
2395
- /** List of additional contacts. */
2396
- AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
2397
- /** A list of contact records. */
2398
- Contacts?: Contacts | Contacts[];
2399
- /** 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. */
2400
- CustomerTypeRef?: CustomerTypeRef;
2315
+ /** If `IsPending` is set to true, the credit memo has not been completed. Within QuickBooks, you can change the `IsPending` status for a credit memo by choosing “Mark Credit `Memo` As Pending” or “Mark Credit `Memo` As Final” from the Edit menu. */
2316
+ IsPending?: boolean;
2317
+ /** Purchase order number. */
2318
+ PONumber?: string;
2401
2319
  /** 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. */
2402
2320
  TermsRef?: TermsRef;
2321
+ /** The date on which payment is due. */
2322
+ DueDate?: string;
2403
2323
  /** 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. */
2404
2324
  SalesRepRef?: SalesRepRef;
2405
- /** The opening balance of this customer’s account. A positive number indicates money owed by the customer. */
2406
- OpenBalance?: string;
2407
- /** The date of the opening balance for this customer. */
2408
- OpenBalanceDate?: string;
2409
- /** 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. */
2410
- SalesTaxCodeRef?: SalesTaxCodeRef;
2325
+ /** QuickBooks uses the term `FOB`, “freight on board,” to indicate the place from which the product is shipped. The `FOB` has no accounting implications. */
2326
+ FOB?: string;
2327
+ /** The date when the product was, or will be, shipped. */
2328
+ ShipDate?: string;
2329
+ /** A shipping method, for example, standard mail or overnight delivery. A `ShipMethodRef` aggregate refers to an item on the `ShipMethod` list. In a request, if a `ShipMethodRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2330
+ ShipMethodRef?: ShipMethodRef;
2411
2331
  /** 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. */
2412
2332
  ItemSalesTaxRef?: ItemSalesTaxRef;
2413
- /** Country that sales tax is collected for. */
2414
- SalesTaxCountry?: SalesTaxCountry;
2415
- /** The customer’s resale number, if they have one. This number will not affect reports or sales tax calculations. */
2416
- ResaleNumber?: string;
2417
- /** 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. */
2418
- AccountNumber?: string;
2419
- /** 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. */
2420
- CreditLimit?: string;
2421
- /** Refers to a `PaymentMethod` object. In a request, if a `PreferredPaymentMethodRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2422
- PreferredPaymentMethodRef?: PreferredPaymentMethodRef;
2423
- /** Customer’s credit-card information. */
2424
- CreditCardInfo?: CreditCardInfo;
2425
- /** `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. */
2426
- JobStatus?: JobStatus;
2427
- /** 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. */
2428
- JobStartDate?: string;
2429
- /** 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. */
2430
- JobProjectedEndDate?: string;
2431
- /** 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. */
2432
- JobEndDate?: string;
2433
- /** 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. */
2434
- JobDesc?: string;
2435
- /** 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. */
2436
- JobTypeRef?: JobTypeRef;
2437
- /** Not supported. */
2438
- Notes?: string;
2439
- /** List of notes. */
2440
- AdditionalNotes?: AdditionalNotes | AdditionalNotes[];
2441
- /** Preference for how invoices are delivered. */
2442
- PreferredDeliveryMethod?: PreferredDeliveryMethod;
2443
- /** 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. */
2444
- PriceLevelRef?: PriceLevelRef;
2333
+ /** The memo does not print on the credit memo, but does appear in the account register and the customer register. */
2334
+ Memo?: string;
2335
+ /** A standard message such as “Thank you for your business,” or “Please sign and return this estimate to indicate your approval.” A customer message can be included at the bottom of a form. A `CustomerMsgRef` aggregate refers to one of the messages on the `CustomerMsg` list. In a request, if a `CustomerMsgRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2336
+ CustomerMsgRef?: CustomerMsgRef;
2337
+ /** If `IsToBePrinted` is set to true, this transaction is on a list of forms to be printed later. The user can then choose to print all these forms at once. Notice that setting this field to true does not actually perform the printing. Only the QuickBooks user can do that from within QuickBooks. This cannot be done from the SDK. Setting this field to false does not prevent the QuickBooks user from printing the transaction later. It simply results in the transaction NOT being placed in the list of transactions to be printed. */
2338
+ IsToBePrinted?: boolean;
2339
+ /** If this is set to true, at runtime the customer referenced in this transaction will be checked for a valid email address. If there is no valid email address, the request will fail. If there is a valid email address currently in QuickBooks for the customer, and the request succeeds, the transaction will be added to `QuickBook`’s list of forms to be emailed, possibly in a batch. Notice that setting this field to true does not actually perform the emailing. Only the QuickBooks user can do that from within QuickBooks. This cannot be done from the SDK. Setting this field to false does not prevent the QuickBooks user from emailing the transaction later. It simply results in the transaction NOT being placed in the list of transactions to be emailed. */
2340
+ IsToBeEmailed?: boolean;
2341
+ /** For future use with international versions of QuickBooks. */
2342
+ IsTaxIncluded?: boolean;
2343
+ /** Refers to the sales-tax code for sales related to this customer. (That is, it refers to a member of the `SalesTaxCode` list.) The sales-tax code indicates whether an item is taxable or non-taxable, and why. In a request, if a `CustomerSalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2344
+ CustomerSalesTaxCodeRef?: CustomerSalesTaxCodeRef;
2345
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it. The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
2346
+ Other?: string;
2347
+ /** 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.) */
2348
+ ExchangeRate?: number;
2445
2349
  /** Allows for the attachment of a user defined GUID value. */
2446
2350
  ExternalGUID?: string;
2447
- /** Tax registration number used in CA and UK. */
2448
- TaxRegistrationNumber?: string;
2449
- /** 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. */
2450
- CurrencyRef?: CurrencyRef;
2351
+ /** Represents one line in the credit memo. Compare with `CreditMemoGroupLine`, which represents a previously defined group of lines in the credit memo. */
2352
+ CreditMemoLineAdd?: CreditMemoLineAdd | CreditMemoLineAdd[];
2353
+ /** Represents a previously defined group of lines in the credit memo. Compare with `CreditMemoLine`, which represents just one line in the credit memo. */
2354
+ CreditMemoLineGroupAdd?: CreditMemoLineGroupAdd | CreditMemoLineGroupAdd[];
2451
2355
  }
2452
- export interface CustomerAddRq {
2453
- CustomerAdd: CustomerAdd;
2356
+ export interface CreditMemoAddRq {
2357
+ CreditMemoAdd: CreditMemoAdd;
2454
2358
  /** 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. */
2455
2359
  IncludeRetElement?: string[] | string;
2456
2360
  }
2457
- export interface CustomerAddRs {
2458
- CustomerRet?: CustomerRet;
2361
+ export interface CreditMemoAddRs {
2362
+ CreditMemoRet?: CreditMemoRet;
2459
2363
  ErrorRecovery?: ErrorRecovery;
2460
2364
  }
2461
- export interface CustomerMod {
2462
- /** 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. */
2463
- ListID: string;
2464
- /** 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. */
2465
- EditSequence: string;
2466
- /** 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. */
2467
- Name?: string;
2468
- /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
2469
- IsActive?: boolean;
2365
+ export interface CreditMemoLineAdd {
2366
+ /** Depending on the request containing it, `ItemRef` can refer to an item on any Item list such as `ItemDiscount`, `ItemInventory`, and so forth, or it may accept only a subset of item types. For example, here are some requests that impose limits on what items `ItemRef` can refer to. For `PurchaseOrder` and Bill requests, `ItemRef` cannot refer to discount items or sales-tax `itemsFor` `VehicleMilageAdd` requests, the `ItemRef` must refer to a service item or an other charge item.For `BillingRateAdd` requests, the `ItemRef` must refer to a service item. You can use an `ItemQuery` request to get information about all the items that are set up in the QuickBooks file. “Items” are line items used for fast entry on sales and purchase forms. They include services and goods that a business buys and sells, as well as special items that perform calculations–for example, subtotal, discount, and sales-tax items. Note: In a request, if an `ItemRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2367
+ ItemRef?: ItemRef;
2368
+ /** A descriptive text field. */
2369
+ Desc?: string;
2370
+ /** `QuantityFor` transactions: If an item line add on a transaction request specifies `Quantity` and `Amount` but not `Rate`, QuickBooks will use `Quantity` and `Amount` to calculate `Rate`. Likewise, if a request specifies `Quantity` and `Rate` but not `Amount`, QuickBooks will calculate the `Amount`. If a transaction add request includes a reference to an `ItemDiscount` item, do not include a `Quantity` element as well, or you will get an error. For Item requests: `Quantity` indicates how many of this item there are. */
2371
+ Quantity?: number;
2372
+ /** In a transaction line item, the name of the unit of measure selected from within the item’s available units. If the company file is enabled only for single unit of measure per item, this must be the base unit! */
2373
+ UnitOfMeasure?: string;
2374
+ /** If you specify both `Rate` and `Amount` in a request, the `Rate` you provide will be ignored, and you will receive a warning. If you specify both `Quantity` and `Amount` in an Add request, QuickBooks will use them to calculate `Rate`. (Rate, `Amount`, and `Quantity` cannot be cleared.) */
2375
+ Rate?: string;
2376
+ /** Indicates the price of something as a percent. */
2377
+ RatePercent?: string;
2378
+ /** 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. */
2379
+ PriceLevelRef?: PriceLevelRef;
2470
2380
  /** 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. */
2471
2381
  ClassRef?: ClassRef;
2472
- /** 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. */
2473
- ParentRef?: ParentRef;
2474
- /** 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.) */
2475
- CompanyName?: string;
2476
- /** A formal reference, such as Mr. or Dr., that precedes a name. */
2477
- Salutation?: string;
2478
- /** The first name of a customer, vendor, employee, or person on the “other names” list. */
2479
- FirstName?: string;
2480
- /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
2481
- MiddleName?: string;
2482
- /** The last name of a customer, vendor, employee, or person on the “other names” list. */
2483
- LastName?: string;
2484
- /** The job title of a customer, vendor, employee, or person on the “other names” list. */
2485
- JobTitle?: string;
2486
- /** 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`. */
2487
- BillAddress?: BillAddress;
2488
- /** 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`. */
2489
- ShipAddress?: ShipAddress;
2490
- /** List of ship to addresses. */
2491
- ShipToAddress?: ShipToAddress | ShipToAddress[];
2492
- /** The telephone number. */
2493
- Phone?: string;
2494
- /** A telephone number given as an alternative to `Phone`. */
2495
- AltPhone?: string;
2496
- /** Fax number. */
2497
- Fax?: string;
2498
- /** E-mail address. */
2499
- Email?: string;
2500
- /** Email address that would be carbon copied or CC. */
2501
- Cc?: string;
2502
- /** The name of a contact person for a customer or vendor. */
2503
- Contact?: string;
2504
- /** The name of an alternate contact person for a vendor, customer, or “other name” entry. */
2505
- AltContact?: string;
2506
- /** List of additional contacts. */
2507
- AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
2508
- /** A list of contact records. */
2509
- ContactsMod?: ContactsMod | ContactsMod[];
2510
- /** 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. */
2511
- CustomerTypeRef?: CustomerTypeRef;
2512
- /** 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. */
2513
- TermsRef?: TermsRef;
2514
- /** 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. */
2515
- SalesRepRef?: SalesRepRef;
2516
- /** 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. */
2517
- SalesTaxCodeRef?: SalesTaxCodeRef;
2518
- /** 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. */
2519
- ItemSalesTaxRef?: ItemSalesTaxRef;
2520
- /** The country that sales tax is collected for. */
2521
- SalesTaxCountry?: SalesTaxCountry;
2522
- /** The customer’s resale number, if they have one. This number will not affect reports or sales tax calculations. */
2523
- ResaleNumber?: string;
2524
- /** 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. */
2525
- AccountNumber?: string;
2382
+ /** A monetary amount. */
2383
+ Amount?: string;
2384
+ /** Site where inventory is located. */
2385
+ InventorySiteRef?: InventorySiteRef;
2386
+ /** Location within the Inventory Site. */
2387
+ InventorySiteLocationRef?: InventorySiteLocationRef;
2388
+ /** The serial number of the asset. */
2389
+ SerialNumber?: string;
2390
+ /** The lot number of the asset. */
2391
+ LotNumber?: string;
2392
+ /** Indicates the date on which the QuickBooks user performs the service for the customer. */
2393
+ ServiceDate?: string;
2394
+ /** 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. */
2395
+ SalesTaxCodeRef?: SalesTaxCodeRef;
2396
+ /** Refers to a QuickBooks account. If you are using QB Online edition, you cannot specify an accounts receivable account here. If an `OverrideItemAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2397
+ OverrideItemAccountRef?: OverrideItemAccountRef;
2398
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it. The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
2399
+ Other1?: string;
2400
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it. The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
2401
+ Other2?: string;
2402
+ /** Contains data from the credit card transaction used in the payment. This data originates from a previous `qbmsXML` credit card transaction. The data following the element `CreditCardTxnInputInfo`” data is the data from the original `qbmsXML` request. The “`CreditCardTxnResultInfo`” is the data from the original `qbmsXML` response. */
2403
+ CreditCardTxnInfo?: CreditCardTxnInfo;
2404
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
2405
+ DataExt?: DataExt | DataExt[];
2406
+ }
2407
+ export interface CreditMemoLineGroupAdd {
2408
+ /** `ItemGroup` objects represent items that are grouped together for fast entry, and an `ItemGroupRef` aggregate refers to one of these item groups. In a request, if an `ItemGroupRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. You can use an `ItemGroupQuery` request to get information about all the item groups that are set up in the QuickBooks file. */
2409
+ ItemGroupRef: ItemGroupRef;
2410
+ /** `QuantityFor` transactions: If an item line add on a transaction request specifies `Quantity` and `Amount` but not `Rate`, QuickBooks will use `Quantity` and `Amount` to calculate `Rate`. Likewise, if a request specifies `Quantity` and `Rate` but not `Amount`, QuickBooks will calculate the `Amount`. If a transaction add request includes a reference to an `ItemDiscount` item, do not include a `Quantity` element as well, or you will get an error. For Item requests: `Quantity` indicates how many of this item there are. */
2411
+ Quantity?: number;
2412
+ /** In a transaction line item, the name of the unit of measure selected from within the item’s available units. If the company file is enabled only for single unit of measure per item, this must be the base unit! */
2413
+ UnitOfMeasure?: string;
2414
+ /** Site where inventory is located. */
2415
+ InventorySiteRef?: InventorySiteRef;
2416
+ /** Location within the Inventory Site. */
2417
+ InventorySiteLocationRef?: InventorySiteLocationRef;
2418
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
2419
+ DataExt?: DataExt | DataExt[];
2420
+ }
2421
+ export interface CreditMemoLineGroupMod {
2422
+ /** 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.)
2423
+
2424
+ If you need to add a new transaction line in a transaction Mod request, you can do so by setting the `TxnLineID` to -1. */
2425
+ TxnLineID: string;
2426
+ /** `ItemGroup` objects represent items that are grouped together for fast entry, and an `ItemGroupRef` aggregate refers to one of these item groups. In a request, if an `ItemGroupRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. You can use an `ItemGroupQuery` request to get information about all the item groups that are set up in the QuickBooks file. */
2427
+ ItemGroupRef?: ItemGroupRef;
2428
+ /** Quantity For transactions: If an item line add on a transaction request specifies `Quantity` and `Amount` but not `Rate`, QuickBooks will use `Quantity` and `Amount` to calculate `Rate`. Likewise, if a request specifies `Quantity` and `Rate` but not `Amount`, QuickBooks will calculate the `Amount`. If a transaction add request includes a reference to an `ItemDiscount` item, do not include a `Quantity` element as well, or you will get an error. For Item requests: `Quantity` indicates how many of this item there are. */
2429
+ Quantity?: number;
2430
+ /** In a transaction line item, the name of the unit of measure selected from within the item’s available units. If the company file is enabled only for single unit of measure per item, this must be the base unit! */
2431
+ UnitOfMeasure?: string;
2432
+ /** When you modify a transaction line to change the unit of measure used in that line, you use this aggregate to specify the UOM set within which you are choosing an available unit of measure. The “override” here refers to the unit within the set, not the UOM Set itself, which you cannot change or override–the UOM set that can be set or changed only in the item itself via an Item Mod request. */
2433
+ OverrideUOMSetRef?: OverrideUOMSetRef;
2434
+ /** A list of `ICreditMemoLineRet` objects, each representing one line in the credit memo. */
2435
+ CreditMemoLineMod?: CreditMemoLineMod | CreditMemoLineMod[];
2436
+ }
2437
+ export interface CreditMemoLineGroupRet {
2438
+ /** 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.)
2439
+
2440
+ If you need to add a new transaction line in a transaction Mod request, you can do so by setting the `TxnLineID` to -1. */
2441
+ TxnLineID: string;
2442
+ /** `ItemGroup` objects represent items that are grouped together for fast entry, and an `ItemGroupRef` aggregate refers to one of these item groups. In a request, if an `ItemGroupRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. You can use an `ItemGroupQuery` request to get information about all the item groups that are set up in the QuickBooks file. */
2443
+ ItemGroupRef: ItemGroupRef;
2444
+ /** A descriptive text field. */
2445
+ Desc?: string;
2446
+ /** `QuantityFor` transactions: If an item line add on a transaction request specifies `Quantity` and `Amount` but not `Rate`, QuickBooks will use `Quantity` and `Amount` to calculate `Rate`. Likewise, if a request specifies `Quantity` and `Rate` but not `Amount`, QuickBooks will calculate the `Amount`. If a transaction add request includes a reference to an `ItemDiscount` item, do not include a `Quantity` element as well, or you will get an error. For Item requests: `Quantity` indicates how many of this item there are. */
2447
+ Quantity?: number;
2448
+ /** In a transaction line item, the name of the unit of measure selected from within the item’s available units. If the company file is enabled only for single unit of measure per item, this must be the base unit! */
2449
+ UnitOfMeasure?: string;
2450
+ /** When you modify a transaction line to change the unit of measure used in that line, you use this aggregate to specify the UOM set within which you are choosing an available unit of measure. The “override” here refers to the unit within the set, not the UOM Set itself, which you cannot change or override–the UOM set that can be set or changed only in the item itself via an Item Mod request. */
2451
+ OverrideUOMSetRef?: OverrideUOMSetRef;
2452
+ /** If true, a list of this group’s individual items their amounts will appear on printed forms. */
2453
+ IsPrintItemsInGroup: boolean;
2454
+ /** Total amount of money paid or received. In a receive payment add transaction that has payment amount elements (such as `AppliedToTxnAdd` lines) you must supply a `TotalAmount` and the sum of all the `PaymentAmount` elements must not be greater than the `TotalAmount`. */
2455
+ TotalAmount: string;
2456
+ /** A list of `ICreditMemoLineRet` objects, each representing one line in the credit memo. */
2457
+ CreditMemoLineRet?: CreditMemoLineRet | CreditMemoLineRet[];
2458
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
2459
+ DataExtRet?: DataExtRet | DataExtRet[];
2460
+ }
2461
+ export interface CreditMemoLineMod {
2462
+ /** 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.)
2463
+
2464
+ If you need to add a new transaction line in a transaction Mod request, you can do so by setting the `TxnLineID` to -1. */
2465
+ TxnLineID: string;
2466
+ /** Depending on the request containing it, `ItemRef` can refer to an item on any Item list such as `ItemDiscount`, `ItemInventory`, and so forth, or it may accept only a subset of item types.
2467
+
2468
+ For example, here are some requests that impose limits on what items `ItemRef` can refer to.
2469
+
2470
+ For `PurchaseOrder` and Bill requests, `ItemRef` cannot refer to discount items or sales-tax items For `VehicleMilageAdd` requests, the `ItemRef` must refer to a service item or an other charge item. For `BillingRateAdd` requests, the `ItemRef` must refer to a service item.
2471
+
2472
+ You can use an `ItemQuery` request to get information about all the items that are set up in the QuickBooks file. “Items” are line items used for fast entry on sales and purchase forms. They include services and goods that a business buys and sells, as well as special items that perform calculations–for example, subtotal, discount, and sales-tax items. Note: In a request, if an `ItemRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2473
+ ItemRef?: ItemRef;
2474
+ /** A descriptive text field. */
2475
+ Desc?: string;
2476
+ /** Quantity For transactions: If an item line add on a transaction request specifies `Quantity` and `Amount` but not `Rate`, QuickBooks will use `Quantity` and `Amount` to calculate `Rate`. Likewise, if a request specifies `Quantity` and `Rate` but not `Amount`, QuickBooks will calculate the `Amount`. If a transaction add request includes a reference to an `ItemDiscount` item, do not include a `Quantity` element as well, or you will get an error. For Item requests: `Quantity` indicates how many of this item there are. */
2477
+ Quantity?: number;
2478
+ /** In a transaction line item, the name of the unit of measure selected from within the item’s available units. If the company file is enabled only for single unit of measure per item, this must be the base unit! */
2479
+ UnitOfMeasure?: string;
2480
+ /** When you modify a transaction line to change the unit of measure used in that line, you use this aggregate to specify the UOM set within which you are choosing an available unit of measure. The “override” here refers to the unit within the set, not the UOM Set itself, which you cannot change or override–the UOM set that can be set or changed only in the item itself via an Item Mod request. */
2481
+ OverrideUOMSetRef?: OverrideUOMSetRef;
2482
+ /** If you specify both `Rate` and `Amount` in a request, the `Rate` you provide will be ignored, and you will receive a warning. If you specify both `Quantity` and `Amount` in an Add request, QuickBooks will use them to calculate `Rate`. (Rate, `Amount`, and `Quantity` cannot be cleared.) */
2483
+ Rate?: string;
2484
+ /** Indicates the price of something as a percent. */
2485
+ RatePercent?: string;
2486
+ /** 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.)
2487
+
2488
+ 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. */
2489
+ PriceLevelRef?: PriceLevelRef;
2490
+ /** 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.
2491
+
2492
+ 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. */
2493
+ ClassRef?: ClassRef;
2494
+ /** A monetary amount. */
2495
+ Amount?: string;
2496
+ /** Site where inventory is located. */
2497
+ InventorySiteRef?: InventorySiteRef;
2498
+ /** Location within the Inventory Site. */
2499
+ InventorySiteLocationRef?: InventorySiteLocationRef;
2500
+ /** The serial number of the asset. */
2501
+ SerialNumber?: string;
2502
+ /** The lot number of the asset. */
2503
+ LotNumber?: string;
2504
+ /** Indicates the date on which the QuickBooks user performs the service for the customer. */
2505
+ ServiceDate?: string;
2506
+ /** 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)
2507
+
2508
+ 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. */
2509
+ SalesTaxCodeRef?: SalesTaxCodeRef;
2510
+ /** Refers to a QuickBooks account. If you are using QB Online edition, you cannot specify an accounts receivable account here. If an `OverrideItemAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2511
+ OverrideItemAccountRef?: OverrideItemAccountRef;
2512
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it.
2513
+
2514
+ The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
2515
+ Other1?: string;
2516
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it.
2517
+
2518
+ The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
2519
+ Other2?: string;
2520
+ }
2521
+ export interface CreditMemoLineRet {
2522
+ /** 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.)
2523
+
2524
+ If you need to add a new transaction line in a transaction Mod request, you can do so by setting the `TxnLineID` to -1. */
2525
+ TxnLineID: string;
2526
+ /** Depending on the request containing it, `ItemRef` can refer to an item on any Item list such as `ItemDiscount`, `ItemInventory`, and so forth, or it may accept only a subset of item types.
2527
+
2528
+ For example, here are some requests that impose limits on what items `ItemRef` can refer to.
2529
+
2530
+ For `PurchaseOrder` and Bill requests, `ItemRef` cannot refer to discount items or sales-tax items For `VehicleMilageAdd` requests, the `ItemRef` must refer to a service item or an other charge item. For `BillingRateAdd` requests, the `ItemRef` must refer to a service item.
2531
+
2532
+ You can use an `ItemQuery` request to get information about all the items that are set up in the QuickBooks file. “Items” are line items used for fast entry on sales and purchase forms. They include services and goods that a business buys and sells, as well as special items that perform calculations–for example, subtotal, discount, and sales-tax items. Note: In a request, if an `ItemRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2533
+ ItemRef?: ItemRef;
2534
+ /** A descriptive text field. */
2535
+ Desc?: string;
2536
+ /** `QuantityFor` transactions: If an item line add on a transaction request specifies `Quantity` and `Amount` but not `Rate`, QuickBooks will use `Quantity` and `Amount` to calculate `Rate`. Likewise, if a request specifies `Quantity` and `Rate` but not `Amount`, QuickBooks will calculate the `Amount`. If a transaction add request includes a reference to an `ItemDiscount` item, do not include a `Quantity` element as well, or you will get an error. For Item requests: `Quantity` indicates how many of this item there are. */
2537
+ Quantity?: number;
2538
+ /** In a transaction line item, the name of the unit of measure selected from within the item’s available units. If the company file is enabled only for single unit of measure per item, this must be the base unit! */
2539
+ UnitOfMeasure?: string;
2540
+ /** When you modify a transaction line to change the unit of measure used in that line, you use this aggregate to specify the UOM set within which you are choosing an available unit of measure. The “override” here refers to the unit within the set, not the UOM Set itself, which you cannot change or override–the UOM set that can be set or changed only in the item itself via an Item Mod request. */
2541
+ OverrideUOMSetRef?: OverrideUOMSetRef;
2542
+ /** If you specify both `Rate` and `Amount` in a request, the `Rate` you provide will be ignored, and you will receive a warning. If you specify both `Quantity` and `Amount` in an Add request, QuickBooks will use them to calculate `Rate`. (Rate, `Amount`, and `Quantity` cannot be cleared.) */
2543
+ Rate?: string;
2544
+ /** Indicates the price of something as a percent. */
2545
+ RatePercent?: string;
2546
+ /** 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.
2547
+
2548
+ 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. */
2549
+ ClassRef?: ClassRef;
2550
+ /** A monetary amount. */
2551
+ Amount?: string;
2552
+ /** Site where inventory is located. */
2553
+ InventorySiteRef?: InventorySiteRef;
2554
+ /** Location within the Inventory Site. */
2555
+ InventorySiteLocationRef?: InventorySiteLocationRef;
2556
+ /** The serial number of the asset. */
2557
+ SerialNumber?: string;
2558
+ /** The lot number of the asset. */
2559
+ LotNumber?: string;
2560
+ /** The expiration date of the inventory serial/lot number. Expiration `Date` is supported from QB Desktop 2023 version 3 (USA & Canada) and SDK 16.0. */
2561
+ ExpirationDateForSerialLotNumber?: string;
2562
+ /** Indicates the date on which the QuickBooks user performs the service for the customer. */
2563
+ ServiceDate?: string;
2564
+ /** 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)
2565
+
2566
+ 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. */
2567
+ SalesTaxCodeRef?: SalesTaxCodeRef;
2568
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it.
2569
+
2570
+ The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
2571
+ Other1?: string;
2572
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it.
2573
+
2574
+ The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
2575
+ Other2?: string;
2576
+ /** Contains data from the credit card transaction used in the payment. This data originates from a previous `qbmsXML` credit card transaction. The data following the element `CreditCardTxnInputInfo`” data is the data from the original `qbmsXML` request. The “`CreditCardTxnResultInfo`” is the data from the original `qbmsXML` response. */
2577
+ CreditCardTxnInfo?: CreditCardTxnInfo;
2578
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
2579
+ DataExtRet?: DataExtRet | DataExtRet[];
2580
+ }
2581
+ export interface CreditMemoMod {
2582
+ /** 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.
2583
+
2584
+ 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. */
2585
+ TxnID: string;
2586
+ /** 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. */
2587
+ EditSequence: string;
2588
+ /** 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. */
2589
+ CustomerRef?: CustomerRef;
2590
+ /** 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.
2591
+
2592
+ 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. */
2593
+ ClassRef?: ClassRef;
2594
+ /** Refers to an accounts receivable account in the QuickBooks file. (The `AccountType` of this account will be `AccountsReceivable`.) If an `ARAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored.
2595
+
2596
+ If this field is in a transaction that links to other transactions, make sure this `ARAccountRef` matches the `ARAccountRef` used in the other transactions. For example, in an `ARRefundCreditCard` transaction, the `ARAccountRef` of the credit card refund transaction must match the `ARAccountRef` used in each of the linked credit transactions. */
2597
+ ARAccountRef?: ARAccountRef;
2598
+ /** QuickBooks templates specify how to print certain transactions. A template query returns the names of all templates that have been defined in QuickBooks. A `TemplateRef` element refers to one of these templates. */
2599
+ TemplateRef?: TemplateRef;
2600
+ /** 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. */
2601
+ TxnDate?: string;
2602
+ /** A string of characters that refers to this transaction and that can be arbitrarily changed by the QuickBooks user.
2603
+
2604
+ 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. */
2605
+ RefNumber?: string;
2606
+ /** 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.
2607
+
2608
+ There are two ways to specify an address within this aggregate:
2609
+
2610
+ 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)
2611
+
2612
+ 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`. */
2613
+ BillAddress?: BillAddress;
2614
+ /** 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.
2615
+
2616
+ There are two ways to specify an address within this aggregate:
2617
+
2618
+ 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)
2619
+
2620
+ 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`. */
2621
+ ShipAddress?: ShipAddress;
2622
+ /** If `IsPending` is set to true, the credit memo has not been completed. Within QuickBooks, you can change the `IsPending` status for a credit memo by choosing “Mark Credit `Memo` As Pending” or “Mark Credit `Memo` As Final” from the Edit menu. */
2623
+ IsPending?: boolean;
2624
+ /** Purchase order number. */
2625
+ PONumber?: string;
2626
+ /** 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. */
2627
+ TermsRef?: TermsRef;
2628
+ /** The date on which payment is due. */
2629
+ DueDate?: string;
2630
+ /** 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. */
2631
+ SalesRepRef?: SalesRepRef;
2632
+ /** QuickBooks uses the term `FOB`, “freight on board,” to indicate the place from which the product is shipped. The `FOB` has no accounting implications. */
2633
+ FOB?: string;
2634
+ /** The date when the product was, or will be, shipped. */
2635
+ ShipDate?: string;
2636
+ /** A shipping method, for example, standard mail or overnight delivery. A `ShipMethodRef` aggregate refers to an item on the `ShipMethod` list. In a request, if a `ShipMethodRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2637
+ ShipMethodRef?: ShipMethodRef;
2638
+ /** 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.
2639
+
2640
+ Taxes can be reflected in transaction line items
2641
+
2642
+ 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.
2643
+
2644
+ 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. */
2645
+ ItemSalesTaxRef?: ItemSalesTaxRef;
2646
+ /** The memo does not print on the credit memo, but does appear in the account register and the customer register. */
2647
+ Memo?: string;
2648
+ /** A standard message such as “Thank you for your business,” or “Please sign and return this estimate to indicate your approval.” A customer message can be included at the bottom of a form. A `CustomerMsgRef` aggregate refers to one of the messages on the `CustomerMsg` list. In a request, if a `CustomerMsgRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2649
+ CustomerMsgRef?: CustomerMsgRef;
2650
+ /** If `IsToBePrinted` is set to true, this transaction is on a list of forms to be printed later. The user can then choose to print all these forms at once.
2651
+
2652
+ Notice that setting this field to true does not actually perform the printing. Only the QuickBooks user can do that from within QuickBooks. This cannot be done from the SDK. Setting this field to false does not prevent the QuickBooks user from printing the transaction later. It simply results in the transaction NOT being placed in the list of transactions to be printed. */
2653
+ IsToBePrinted?: boolean;
2654
+ /** If this is set to true, at runtime the customer referenced in this transaction will be checked for a valid email address. If there is no valid email address, the request will fail. If there is a valid email address currently in QuickBooks for the customer, and the request succeeds, the transaction will be added to `QuickBook`’s list of forms to be emailed, possibly in a batch.
2655
+
2656
+ Notice that setting this field to true does not actually perform the emailing. Only the QuickBooks user can do that from within QuickBooks. This cannot be done from the SDK. Setting this field to false does not prevent the QuickBooks user from emailing the transaction later. It simply results in the transaction NOT being placed in the list of transactions to be emailed. */
2657
+ IsToBeEmailed?: boolean;
2658
+ /** For future use with international versions of QuickBooks. */
2659
+ IsTaxIncluded?: boolean;
2660
+ /** Refers to the sales-tax code for sales related to this customer. (That is, it refers to a member of the `SalesTaxCode` list.) The sales-tax code indicates whether an item is taxable or non-taxable, and why. In a request, if a `CustomerSalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2661
+ CustomerSalesTaxCodeRef?: CustomerSalesTaxCodeRef;
2662
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it.
2663
+
2664
+ The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
2665
+ Other?: string;
2666
+ /** 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`.
2667
+
2668
+ 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.) */
2669
+ ExchangeRate?: number;
2670
+ /** Represents one line in the credit memo. Compare with `CreditMemoGroupLine`, which represents a previously defined group of lines in the credit memo. */
2671
+ CreditMemoLineMod?: CreditMemoLineMod;
2672
+ /** Represents a previously defined group of lines in the credit memo. Compare with `CreditMemoLine`, which represents just one line in the credit memo. */
2673
+ CreditMemoLineGroupMod?: CreditMemoLineGroupMod;
2674
+ }
2675
+ export interface CreditMemoModRq {
2676
+ CreditMemoMod: CreditMemoMod;
2677
+ /** 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.
2678
+
2679
+ 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. */
2680
+ IncludeRetElement?: string[] | string;
2681
+ }
2682
+ export interface CreditMemoModRs {
2683
+ CreditMemoRet?: CreditMemoRet;
2684
+ ErrorRecovery?: ErrorRecovery;
2685
+ }
2686
+ export interface CreditMemoQueryRq {
2687
+ /** 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. */
2688
+ TxnID?: string[] | string;
2689
+ /** 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. */
2690
+ RefNumber?: string[] | string;
2691
+ /** 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. */
2692
+ RefNumberCaseSensitive?: string[] | string;
2693
+ /** 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. */
2694
+ MaxReturned?: number;
2695
+ /** 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.) */
2696
+ ModifiedDateRangeFilter?: ModifiedDateRangeFilter;
2697
+ /** Filters according to the original transaction dates. */
2698
+ TxnDateRangeFilter?: TxnDateRangeFilter;
2699
+ /** 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. */
2700
+ EntityFilter?: EntityFilter;
2701
+ /** 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. */
2702
+ AccountFilter?: AccountFilter;
2703
+ /** Filters according to `RefNumber`. */
2704
+ RefNumberFilter?: RefNumberFilter;
2705
+ /** 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`. */
2706
+ RefNumberRangeFilter?: RefNumberRangeFilter;
2707
+ /** Filters by the specified currency. */
2708
+ CurrencyFilter?: CurrencyFilter;
2709
+ /** 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. */
2710
+ IncludeLineItems?: boolean;
2711
+ /** If you set `IncludeLinkedTxns` to true, then the returned object will include a list of all the transactions linked to the queried object. (This list is similar to the History view of a transaction in the user interface, but not identical, as the SDK list contains only linked transactions, not items.) Each linked transaction will be represented by a `LinkedTxn` aggregate. If no linked transactions exist, no `LinkedTxn` aggregates will be returned. */
2712
+ IncludeLinkedTxns?: boolean;
2713
+ /** 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. */
2714
+ IncludeRetElement?: string[] | string;
2715
+ /** 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. */
2716
+ OwnerID?: string[] | string;
2717
+ }
2718
+ export interface CreditMemoQueryRs {
2719
+ CreditMemoRet: CreditMemoRet[];
2720
+ }
2721
+ export interface CreditMemoRet {
2722
+ /** 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.
2723
+
2724
+ 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. */
2725
+ TxnID: string;
2726
+ /** Time the object was created. */
2727
+ TimeCreated: string;
2728
+ /** Time the object was last modified. */
2729
+ TimeModified: string;
2730
+ /** 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. */
2731
+ EditSequence: string;
2732
+ /** An identifying number for this transaction. */
2733
+ TxnNumber?: number;
2734
+ /** 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. */
2735
+ CustomerRef: CustomerRef;
2736
+ /** 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.
2737
+
2738
+ 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. */
2739
+ ClassRef?: ClassRef;
2740
+ /** Refers to an accounts receivable account in the QuickBooks file. (The `AccountType` of this account will be `AccountsReceivable`.) If an `ARAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored.
2741
+
2742
+ If this field is in a transaction that links to other transactions, make sure this `ARAccountRef` matches the `ARAccountRef` used in the other transactions. For example, in an `ARRefundCreditCard` transaction, the `ARAccountRef` of the credit card refund transaction must match the `ARAccountRef` used in each of the linked credit transactions. */
2743
+ ARAccountRef?: ARAccountRef;
2744
+ /** QuickBooks templates specify how to print certain transactions. A template query returns the names of all templates that have been defined in QuickBooks. A `TemplateRef` element refers to one of these templates. */
2745
+ TemplateRef?: TemplateRef;
2746
+ /** 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. */
2747
+ TxnDate: string;
2748
+ /** A string of characters that refers to this transaction and that can be arbitrarily changed by the QuickBooks user.
2749
+
2750
+ 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. */
2751
+ RefNumber?: string;
2752
+ /** 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.
2753
+
2754
+ There are two ways to specify an address within this aggregate:
2755
+
2756
+ 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)
2757
+
2758
+ 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`. */
2759
+ BillAddress?: BillAddress;
2760
+ /** 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. */
2761
+ BillAddressBlock?: BillAddressBlock;
2762
+ /** 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.
2763
+
2764
+ There are two ways to specify an address within this aggregate:
2765
+
2766
+ 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)
2767
+
2768
+ 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`. */
2769
+ ShipAddress?: ShipAddress;
2770
+ /** 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. */
2771
+ ShipAddressBlock?: ShipAddressBlock;
2772
+ /** If `IsPending` is set to true, the credit memo has not been completed. Within QuickBooks, you can change the `IsPending` status for a credit memo by choosing “Mark Credit `Memo` As Pending” or “Mark Credit `Memo` As Final” from the Edit menu. */
2773
+ IsPending?: boolean;
2774
+ /** Purchase order number. */
2775
+ PONumber?: string;
2776
+ /** 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. */
2777
+ TermsRef?: TermsRef;
2778
+ /** The date on which payment is due. */
2779
+ DueDate?: string;
2780
+ /** 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. */
2781
+ SalesRepRef?: SalesRepRef;
2782
+ /** QuickBooks uses the term `FOB`, “freight on board,” to indicate the place from which the product is shipped. The `FOB` has no accounting implications. */
2783
+ FOB?: string;
2784
+ /** The date when the product was, or will be, shipped. */
2785
+ ShipDate?: string;
2786
+ /** A shipping method, for example, standard mail or overnight delivery. A `ShipMethodRef` aggregate refers to an item on the `ShipMethod` list. In a request, if a `ShipMethodRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2787
+ ShipMethodRef?: ShipMethodRef;
2788
+ /** The total of all the credit-memo lines, before taxes are applied. (By contrast, a subtotal item (an `ItemSubtotal` object) gives only the total of the amounts in the lines that appear above it.) */
2789
+ Subtotal?: string;
2790
+ /** 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.
2791
+
2792
+ Taxes can be reflected in transaction line items
2793
+
2794
+ 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.
2795
+
2796
+ 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. */
2797
+ ItemSalesTaxRef?: ItemSalesTaxRef;
2798
+ /** The percentage charged for sales tax. */
2799
+ SalesTaxPercentage?: string;
2800
+ /** The total amount of sales tax charged. */
2801
+ SalesTaxTotal?: string;
2802
+ /** Subtotal plus `SalesTaxTotal`. */
2803
+ TotalAmount?: string;
2804
+ /** Available credit. */
2805
+ CreditRemaining?: string;
2806
+ /** 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.
2807
+
2808
+ When used with `PriceLevels`, the `CurrencyRef` should only be used with “per item” price levels. */
2809
+ CurrencyRef?: CurrencyRef;
2810
+ /** 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`.
2811
+
2812
+ 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.) */
2813
+ ExchangeRate?: number;
2814
+ /** The amount of the remaining credit, expressed in units of the current home currency. */
2815
+ CreditRemainingInHomeCurrency?: string;
2816
+ /** The memo does not print on the credit memo, but does appear in the account register and the customer register. */
2817
+ Memo?: string;
2818
+ /** A standard message such as “Thank you for your business,” or “Please sign and return this estimate to indicate your approval.” A customer message can be included at the bottom of a form. A `CustomerMsgRef` aggregate refers to one of the messages on the `CustomerMsg` list. In a request, if a `CustomerMsgRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2819
+ CustomerMsgRef?: CustomerMsgRef;
2820
+ /** If `IsToBePrinted` is set to true, this transaction is on a list of forms to be printed later. The user can then choose to print all these forms at once.
2821
+
2822
+ Notice that setting this field to true does not actually perform the printing. Only the QuickBooks user can do that from within QuickBooks. This cannot be done from the SDK. Setting this field to false does not prevent the QuickBooks user from printing the transaction later. It simply results in the transaction NOT being placed in the list of transactions to be printed. */
2823
+ IsToBePrinted?: boolean;
2824
+ /** If this is set to true, at runtime the customer referenced in this transaction will be checked for a valid email address. If there is no valid email address, the request will fail. If there is a valid email address currently in QuickBooks for the customer, and the request succeeds, the transaction will be added to `QuickBook`’s list of forms to be emailed, possibly in a batch.
2825
+
2826
+ Notice that setting this field to true does not actually perform the emailing. Only the QuickBooks user can do that from within QuickBooks. This cannot be done from the SDK. Setting this field to false does not prevent the QuickBooks user from emailing the transaction later. It simply results in the transaction NOT being placed in the list of transactions to be emailed. */
2827
+ IsToBeEmailed?: boolean;
2828
+ /** For future use with international versions of QuickBooks. */
2829
+ IsTaxIncluded?: boolean;
2830
+ /** Refers to the sales-tax code for sales related to this customer. (That is, it refers to a member of the `SalesTaxCode` list.) The sales-tax code indicates whether an item is taxable or non-taxable, and why. In a request, if a `CustomerSalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2831
+ CustomerSalesTaxCodeRef?: CustomerSalesTaxCodeRef;
2832
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it.
2833
+
2834
+ The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
2835
+ Other?: string;
2836
+ /** Allows for the attachment of a user defined GUID value. */
2837
+ ExternalGUID?: string;
2838
+ /** If the `IncludeLinkedTxns` flag is set to true in a query, or if you create an item receipt that links to other transactionsthen the returned object will include a list of linked transactions, if any exist. If no linked transactions exist, the `ILinkedTxnList` object will be empty.
2839
+
2840
+ The list of linked transactions is similar to the History view of a transaction in the user interface, but not identical, as the SDK list contains only linked transactions, not items. */
2841
+ LinkedTxn?: LinkedTxn | LinkedTxn[];
2842
+ /** Represents one line in the credit memo. Compare with `CreditMemoGroupLine`, which represents a previously defined group of lines in the credit memo. */
2843
+ CreditMemoLineRet?: CreditMemoLineRet;
2844
+ /** Represents a previously defined group of lines in the credit memo. Compare with `CreditMemoLine`, which represents just one line in the credit memo. */
2845
+ CreditMemoLineGroupRet?: CreditMemoLineGroupRet;
2846
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
2847
+ DataExtRet?: DataExtRet | DataExtRet[];
2848
+ }
2849
+ export interface CurrencyFilter {
2850
+ /** 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`.
2851
+
2852
+ 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. */
2853
+ ListID?: string[] | string;
2854
+ /** 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. */
2855
+ FullName?: string[] | string;
2856
+ }
2857
+ export interface CurrencyRef {
2858
+ /** 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. */
2859
+ ListID?: string;
2860
+ /** `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. */
2861
+ FullName?: string;
2862
+ }
2863
+ export interface CustomDetailReportQueryRq {
2864
+ /** The type of report being queried. */
2865
+ CustomDetailReportType: CustomDetailReportType;
2866
+ /** Set `DisplayReport` to true to display this report within the QuickBooks UI. (Default is false.) If you want the request to display the report without returning any data to your application, set the `responseData` attribute to `includeNone`. */
2867
+ DisplayReport?: boolean;
2868
+ /** If you omit both `ToReportDate` and `FromReportDate`, the report will cover the current fiscal year to date. */
2869
+ ReportPeriod?: ReportPeriod;
2870
+ /** The time period covered by this report. */
2871
+ ReportDateMacro?: ReportDateMacro;
2872
+ /** Allows you to query for a specified account type or for specific list elements. */
2873
+ ReportAccountFilter?: ReportAccountFilter;
2874
+ /** Allows you to query for a specified name type (customer, employee, vendor, or other) or query for specific list elements. */
2875
+ ReportEntityFilter?: ReportEntityFilter;
2876
+ /** Allows you to query for a specified item type (for example, discount, inventory, or non-inventory) or query for specific list elements. */
2877
+ ReportItemFilter?: ReportItemFilter;
2878
+ /** Allows you to query for a specified class. 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. */
2879
+ ReportClassFilter?: ReportClassFilter;
2880
+ /** Allows you to report on specific transaction types (for example, charge, check, deposit, or estimate). */
2881
+ ReportTxnTypeFilter?: ReportTxnTypeFilter;
2882
+ /** Returns reports that were modified between these two dates (inclusive). The range of acceptable dates for both `FromReportModifiedDate` and `ToReportModifiedDate` is 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). */
2883
+ ReportModifiedDateRangeFilter?: ReportModifiedDateRangeFilter;
2884
+ /** The time period covered by this report. */
2885
+ ReportModifiedDateRangeMacro?: ReportModifiedDateRangeMacro;
2886
+ /** The level of detail to include in the report. */
2887
+ ReportDetailLevelFilter?: ReportDetailLevelFilter;
2888
+ /** Allows you to query for posting reports, non-posting reports, or reports that are either one. */
2889
+ ReportPostingStatusFilter?: ReportPostingStatusFilter;
2890
+ /** `SummarizeRowsBy` (along with `IncludeColumnList`, in most cases) determines what data is calculated for this report and controls how the rows are organized and labeled. For example, if you set the value to `srbAccount`, the report’s row labels might be “Checking,” “Savings,” and so on. */
2891
+ SummarizeRowsBy: SummarizeRowsBy;
2892
+ /** A list of enum values showing which columns you want the report to return. (The report won’t return columns other than the ones you specify here.) */
2893
+ IncludeColumn: IncludeColumn | IncludeColumn[];
2894
+ /** Indicates whether this report should include all accounts or just those that are currently in use. */
2895
+ IncludeAccounts?: IncludeAccounts;
2896
+ /** The report will return open balance information up to the `ReportOpenBalanceAsOf` date. */
2897
+ ReportOpenBalanceAsOf?: ReportOpenBalanceAsOf;
2898
+ /** If `ReportBasis` is `rbCash`, the report bases income and expenses on the dates when money changed hands.`rbAccrual`, the report bases income on the dates when customers were invoiced and bases expenses on the dates when bills were entered.`rbNone`, the report uses the default `ReportBasis`, which is either the QuickBooks Preference setting or the QuickBooks default for a given type of report. In a report response, the SDK returns `rbNone` for reports that do not support `ReportBasis`. (The 1099 report, for example, has its own basis for generation.) */
2899
+ ReportBasis?: ReportBasis;
2900
+ }
2901
+ export interface CustomDetailReportQueryRs {
2902
+ ReportRet: ReportRet[];
2903
+ }
2904
+ export type CustomDetailReportType = "CustomTxnDetail";
2905
+ export interface CustomerAdd {
2906
+ /** 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. */
2907
+ Name: string;
2908
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
2909
+ IsActive?: boolean;
2910
+ /** 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. */
2911
+ ClassRef?: ClassRef;
2912
+ /** 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. */
2913
+ ParentRef?: ParentRef;
2914
+ /** 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.) */
2915
+ CompanyName?: string;
2916
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
2917
+ Salutation?: string;
2918
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
2919
+ FirstName?: string;
2920
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
2921
+ MiddleName?: string;
2922
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
2923
+ LastName?: string;
2924
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
2925
+ JobTitle?: string;
2926
+ /** 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`. */
2927
+ BillAddress?: BillAddress;
2928
+ /** 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`. */
2929
+ ShipAddress?: ShipAddress;
2930
+ /** List of ship to addresses. */
2931
+ ShipToAddress?: ShipToAddress | ShipToAddress[];
2932
+ /** The telephone number. */
2933
+ Phone?: string;
2934
+ /** A telephone number given as an alternative to `Phone`. */
2935
+ AltPhone?: string;
2936
+ /** Fax number. */
2937
+ Fax?: string;
2938
+ /** E-mail address. */
2939
+ Email?: string;
2940
+ /** Email address that would be carbon copied or CC. */
2941
+ Cc?: string;
2942
+ /** The name of a contact person for a customer or vendor. */
2943
+ Contact?: string;
2944
+ /** The name of an alternate contact person for a vendor, customer, or “other name” entry. */
2945
+ AltContact?: string;
2946
+ /** List of additional contacts. */
2947
+ AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
2948
+ /** A list of contact records. */
2949
+ Contacts?: Contacts | Contacts[];
2950
+ /** 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. */
2951
+ CustomerTypeRef?: CustomerTypeRef;
2952
+ /** 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. */
2953
+ TermsRef?: TermsRef;
2954
+ /** 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. */
2955
+ SalesRepRef?: SalesRepRef;
2956
+ /** The opening balance of this customer’s account. A positive number indicates money owed by the customer. */
2957
+ OpenBalance?: string;
2958
+ /** The date of the opening balance for this customer. */
2959
+ OpenBalanceDate?: string;
2960
+ /** 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. */
2961
+ SalesTaxCodeRef?: SalesTaxCodeRef;
2962
+ /** 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. */
2963
+ ItemSalesTaxRef?: ItemSalesTaxRef;
2964
+ /** Country that sales tax is collected for. */
2965
+ SalesTaxCountry?: SalesTaxCountry;
2966
+ /** The customer’s resale number, if they have one. This number will not affect reports or sales tax calculations. */
2967
+ ResaleNumber?: string;
2968
+ /** 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. */
2969
+ AccountNumber?: string;
2970
+ /** 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. */
2971
+ CreditLimit?: string;
2972
+ /** Refers to a `PaymentMethod` object. In a request, if a `PreferredPaymentMethodRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
2973
+ PreferredPaymentMethodRef?: PreferredPaymentMethodRef;
2974
+ /** Customer’s credit-card information. */
2975
+ CreditCardInfo?: CreditCardInfo;
2976
+ /** `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. */
2977
+ JobStatus?: JobStatus;
2978
+ /** 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. */
2979
+ JobStartDate?: string;
2980
+ /** 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. */
2981
+ JobProjectedEndDate?: string;
2982
+ /** 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. */
2983
+ JobEndDate?: string;
2984
+ /** 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. */
2985
+ JobDesc?: string;
2986
+ /** 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. */
2987
+ JobTypeRef?: JobTypeRef;
2988
+ /** Not supported. */
2989
+ Notes?: string;
2990
+ /** List of notes. */
2991
+ AdditionalNotes?: AdditionalNotes | AdditionalNotes[];
2992
+ /** Preference for how invoices are delivered. */
2993
+ PreferredDeliveryMethod?: PreferredDeliveryMethod;
2994
+ /** 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. */
2995
+ PriceLevelRef?: PriceLevelRef;
2996
+ /** Allows for the attachment of a user defined GUID value. */
2997
+ ExternalGUID?: string;
2998
+ /** Tax registration number used in CA and UK. */
2999
+ TaxRegistrationNumber?: string;
3000
+ /** 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. */
3001
+ CurrencyRef?: CurrencyRef;
3002
+ }
3003
+ export interface CustomerAddRq {
3004
+ CustomerAdd: CustomerAdd;
3005
+ /** 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. */
3006
+ IncludeRetElement?: string[] | string;
3007
+ }
3008
+ export interface CustomerAddRs {
3009
+ CustomerRet?: CustomerRet;
3010
+ ErrorRecovery?: ErrorRecovery;
3011
+ }
3012
+ export interface CustomerMod {
3013
+ /** 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. */
3014
+ ListID: string;
3015
+ /** 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. */
3016
+ EditSequence: string;
3017
+ /** 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. */
3018
+ Name?: string;
3019
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
3020
+ IsActive?: boolean;
3021
+ /** 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. */
3022
+ ClassRef?: ClassRef;
3023
+ /** 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. */
3024
+ ParentRef?: ParentRef;
3025
+ /** 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.) */
3026
+ CompanyName?: string;
3027
+ /** A formal reference, such as Mr. or Dr., that precedes a name. */
3028
+ Salutation?: string;
3029
+ /** The first name of a customer, vendor, employee, or person on the “other names” list. */
3030
+ FirstName?: string;
3031
+ /** The middle name of a customer, vendor, employee, or person on the “other names” list. */
3032
+ MiddleName?: string;
3033
+ /** The last name of a customer, vendor, employee, or person on the “other names” list. */
3034
+ LastName?: string;
3035
+ /** The job title of a customer, vendor, employee, or person on the “other names” list. */
3036
+ JobTitle?: string;
3037
+ /** 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`. */
3038
+ BillAddress?: BillAddress;
3039
+ /** 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`. */
3040
+ ShipAddress?: ShipAddress;
3041
+ /** List of ship to addresses. */
3042
+ ShipToAddress?: ShipToAddress | ShipToAddress[];
3043
+ /** The telephone number. */
3044
+ Phone?: string;
3045
+ /** A telephone number given as an alternative to `Phone`. */
3046
+ AltPhone?: string;
3047
+ /** Fax number. */
3048
+ Fax?: string;
3049
+ /** E-mail address. */
3050
+ Email?: string;
3051
+ /** Email address that would be carbon copied or CC. */
3052
+ Cc?: string;
3053
+ /** The name of a contact person for a customer or vendor. */
3054
+ Contact?: string;
3055
+ /** The name of an alternate contact person for a vendor, customer, or “other name” entry. */
3056
+ AltContact?: string;
3057
+ /** List of additional contacts. */
3058
+ AdditionalContactRef?: AdditionalContactRef | AdditionalContactRef[];
3059
+ /** A list of contact records. */
3060
+ ContactsMod?: ContactsMod | ContactsMod[];
3061
+ /** 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. */
3062
+ CustomerTypeRef?: CustomerTypeRef;
3063
+ /** 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. */
3064
+ TermsRef?: TermsRef;
3065
+ /** 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. */
3066
+ SalesRepRef?: SalesRepRef;
3067
+ /** 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. */
3068
+ SalesTaxCodeRef?: SalesTaxCodeRef;
3069
+ /** 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. */
3070
+ ItemSalesTaxRef?: ItemSalesTaxRef;
3071
+ /** The country that sales tax is collected for. */
3072
+ SalesTaxCountry?: SalesTaxCountry;
3073
+ /** The customer’s resale number, if they have one. This number will not affect reports or sales tax calculations. */
3074
+ ResaleNumber?: string;
3075
+ /** 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. */
3076
+ AccountNumber?: string;
2526
3077
  /** 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. */
2527
3078
  CreditLimit?: string;
2528
3079
  /** Refers to a `PaymentMethod` object. In a request, if a `PreferredPaymentMethodRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
@@ -6860,6 +7411,12 @@ export interface ItemPaymentRet {
6860
7411
  /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
6861
7412
  DataExtRet?: DataExtRet | DataExtRet[];
6862
7413
  }
7414
+ export interface ItemPurchaseTaxRef {
7415
+ /** 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. */
7416
+ ListID?: string;
7417
+ /** `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. */
7418
+ FullName?: string;
7419
+ }
6863
7420
  export interface ItemReceiptAdd {
6864
7421
  /** A vendor is any person or company from whom a small business owner buys goods and services. (Banks and tax agencies usually are included on the vendor list.) A company’s vendor list contains information such as account balance and contact information about each vendor. A `VendorRef` aggregate refers to one of the vendors on the list. In a request, if a `VendorRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
6865
7422
  VendorRef: VendorRef;
@@ -8817,144 +9374,591 @@ export interface ReportAccountFilter {
8817
9374
  /** 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`. */
8818
9375
  FullNameWithChildren?: string;
8819
9376
  }
8820
- /** @default: None */
8821
- export type ReportBasis = "Accrual" | "Cash" | "None";
8822
- export type ReportCalendar = "CalendarYear" | "FiscalYear" | "TaxYear";
8823
- export interface ReportClassFilter {
8824
- /** 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. */
8825
- ListID?: string[] | string;
8826
- /** 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. */
8827
- FullName?: string[] | string;
8828
- /** Allows you to filter for data that relates to the specified object and its descendants. */
8829
- ListIDWithChildren?: string;
8830
- /** 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`. */
8831
- FullNameWithChildren?: string;
9377
+ /** @default: None */
9378
+ export type ReportBasis = "Accrual" | "Cash" | "None";
9379
+ export type ReportCalendar = "CalendarYear" | "FiscalYear" | "TaxYear";
9380
+ export interface ReportClassFilter {
9381
+ /** 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. */
9382
+ ListID?: string[] | string;
9383
+ /** 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. */
9384
+ FullName?: string[] | string;
9385
+ /** Allows you to filter for data that relates to the specified object and its descendants. */
9386
+ ListIDWithChildren?: string;
9387
+ /** 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`. */
9388
+ FullNameWithChildren?: string;
9389
+ }
9390
+ export interface ReportData {
9391
+ /** A data row contains the actual data for each column. */
9392
+ DataRow?: DataRow | DataRow[];
9393
+ /** A text row contains only text and is used mainly for headings. */
9394
+ TextRow?: TextRow | TextRow[];
9395
+ /** A row that contains a calculated subtotal of the data in all the rows since the last `SubTotalRow` and, usually, a single underline. There can be multiple `SubTotalRow` aggregates in a report. */
9396
+ SubtotalRow?: SubtotalRow | SubtotalRow[];
9397
+ /** A row that contains a calculated total of all the data that has come before and a double underline. There will only be one `TotalRow` per report. If `TotalRow` does not include any numerical values, the columns required to show the total values are not part of the report. These columns were not included when the report was customized. */
9398
+ TotalRow?: TotalRow;
9399
+ }
9400
+ export type ReportDateMacro = "All" | "LastMonth" | "LastMonthToDate" | "LastQuarter" | "LastQuarterToDate" | "LastWeek" | "LastWeekToDate" | "LastYear" | "LastYearToDate" | "NextFourWeeks" | "NextMonth" | "NextQuarter" | "NextWeek" | "NextYear" | "ThisMonth" | "ThisMonthToDate" | "ThisQuarter" | "ThisQuarterToDate" | "ThisWeek" | "ThisWeekToDate" | "ThisYear" | "ThisYearToDate" | "Today" | "Yesterday";
9401
+ /** @default: All */
9402
+ export type ReportDetailLevelFilter = "All" | "AllExceptSummary" | "SummaryOnly";
9403
+ export interface ReportEntityFilter {
9404
+ /** Allows you to report on a specific name type. */
9405
+ EntityTypeFilter?: EntityTypeFilter;
9406
+ /** 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. */
9407
+ ListID?: string[] | string;
9408
+ /** 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. */
9409
+ FullName?: string[] | string;
9410
+ /** Allows you to filter for data that relates to the specified object and its descendants. */
9411
+ ListIDWithChildren?: string;
9412
+ /** 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`. */
9413
+ FullNameWithChildren?: string;
9414
+ }
9415
+ /** @default: Quarterly */
9416
+ export type ReportingPeriod = "Monthly" | "Quarterly";
9417
+ export interface ReportItemFilter {
9418
+ /** Allows you to report on a specific item type. */
9419
+ ItemTypeFilter?: ItemTypeFilter;
9420
+ /** 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. */
9421
+ ListID?: string[] | string;
9422
+ /** 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. */
9423
+ FullName?: string[] | string;
9424
+ /** Allows you to filter for data that relates to the specified object and its descendants. */
9425
+ ListIDWithChildren?: string;
9426
+ /** 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`. */
9427
+ FullNameWithChildren?: string;
9428
+ }
9429
+ export interface ReportModifiedDateRangeFilter {
9430
+ /** Selects information from this date and later. The range of acceptable dates is 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). */
9431
+ FromReportModifiedDate?: string;
9432
+ /** Selects information created on this date or earlier. The range of acceptable dates is 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). */
9433
+ ToReportModifiedDate?: string;
9434
+ }
9435
+ export type ReportModifiedDateRangeMacro = "All" | "LastMonth" | "LastMonthToDate" | "LastQuarter" | "LastQuarterToDate" | "LastWeek" | "LastWeekToDate" | "LastYear" | "LastYearToDate" | "NextFourWeeks" | "NextMonth" | "NextQuarter" | "NextWeek" | "NextYear" | "ThisMonth" | "ThisMonthToDate" | "ThisQuarter" | "ThisQuarterToDate" | "ThisWeek" | "ThisWeekToDate" | "ThisYear" | "ThisYearToDate" | "Today" | "Yesterday";
9436
+ /** @default: Today */
9437
+ export type ReportOpenBalanceAsOf = "ReportEndDate" | "Today";
9438
+ export interface ReportPeriod {
9439
+ /** Selects information from this date and later. The range of acceptable `FromReportDate` and `ToReportDate` values depends on how the report dates are determined. If the report dates are based on the dates of transactions, the range is 01/01/1901 to 12/31/9999. If the report dates are based on modification dates, the range will be 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). If you omit `FromReportDate`, it will be set to 1970-01-01T00:00:00 (1969-12-31T16:00:00-08:00 PST). */
9440
+ FromReportDate?: string;
9441
+ /** Selects information created on this date or earlier. The range of acceptable `ToReportDate` and `FromReportDate` values depends on how the report dates are determined. If the report dates are based on the dates of transactions, the range is 01/01/1901 to 12/31/9999. If the report dates are based on modification dates, the range will be 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). If you omit `ToReportDate`, it will be set to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). */
9442
+ ToReportDate?: string;
9443
+ }
9444
+ export type ReportPostingStatusFilter = "Either" | "NonPosting" | "Posting";
9445
+ export interface ReportRet {
9446
+ /** The main title for this report. */
9447
+ ReportTitle: string;
9448
+ /** The subtitle for this report. */
9449
+ ReportSubtitle: string;
9450
+ /** If `ReportBasis` is `rbCash`, the report bases income and expenses on the dates when money changed hands.`rbAccrual`, the report bases income on the dates when customers were invoiced and bases expenses on the dates when bills were entered.`rbNone`, the report uses the default `ReportBasis`, which is either the QuickBooks Preference setting or the QuickBooks default for a given type of report. In a report response, the SDK returns `rbNone` for reports that do not support `ReportBasis`. (The 1099 report, for example, has its own basis for generation.) */
9451
+ ReportBasis?: ReportBasis;
9452
+ /** The number of rows in the report. */
9453
+ NumRows: number;
9454
+ /** The number of columns in the report. */
9455
+ NumColumns: number;
9456
+ /** The number of rows to allocate for column titles. Although this number is usually 1, with some reports it is 2 or 3. (For an example of column titles that span multiple rows, look at a `ProfitAndLossByJob` report in QuickBooks.) */
9457
+ NumColTitleRows: number;
9458
+ /** A list of `IColDesc` objects, each of which identifies one column in the report. Each column is identified by a `colID` (the position of the column in the report), a title, and a type. If the report contains any data, it is given row-by-row in an `IReportData` object. */
9459
+ ColDesc: ColDesc | ColDesc[];
9460
+ /** If the report contains any data, it is given row-by-row in a `ReportData` aggregate. */
9461
+ ReportData?: ReportData;
9462
+ }
9463
+ export interface ReportTxnTypeFilter {
9464
+ /** A list of the transaction types you want the report to cover. */
9465
+ TxnTypeFilter: TxnTypeFilter | TxnTypeFilter[];
9466
+ }
9467
+ export type ReturnColumns = "ActiveOnly" | "All" | "NonZero";
9468
+ export type ReturnRows = "ActiveOnly" | "All" | "NonZero";
9469
+ export interface RowData {
9470
+ /** An enumerated value that shows the type of data that this row contains. Values: account class customer `customerMessage` `customerType` employee item `jobType` label `memorizedTxn` `memorizedReport` name `otherName` `paymentMethod` `payrollItem` `salesRep` `salesTaxCode` `shipMethod` state style terms `toDo` vendor `vendorType` */
9471
+ RowType: RowType;
9472
+ /** The data in this cell of the report. */
9473
+ Value: string;
9474
+ }
9475
+ export type RowType = "account" | "class" | "customer" | "customerMessage" | "customerType" | "employee" | "item" | "jobType" | "label" | "memorizedReport" | "memorizedTxn" | "name" | "otherName" | "paymentMethod" | "payrollItem" | "salesRep" | "salesTaxCode" | "shipMethod" | "state" | "style" | "terms" | "toDo" | "vendor" | "vendorType";
9476
+ export interface SalesAndPurchase {
9477
+ /** Appears in the `Description` column of a sales form when the QuickBooks user sells this item. For a fixed asset, describes the sale of the asset (for accounting purposes). */
9478
+ SalesDesc?: string;
9479
+ /** Price charged for this item. */
9480
+ SalesPrice?: string;
9481
+ /** Refers to an income account. If an `IncomeAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9482
+ IncomeAccountRef?: IncomeAccountRef;
9483
+ /** Description that appears in the `Description` column of checks, bills, credit card charges, and item receipts (when an item is reordered). For a fixed asset, a description of the item as it was when it was purchased. */
9484
+ PurchaseDesc?: string;
9485
+ /** Amount that the QuickBooks user expects to pay when ordering or buying this item, or the amount that was actually paid for this item. */
9486
+ PurchaseCost?: string;
9487
+ /** Account used for taxes on purchases in CA or UK. */
9488
+ PurchaseTaxCodeRef?: PurchaseTaxCodeRef;
9489
+ /** Refers to an expense account. If an `ExpenseAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9490
+ ExpenseAccountRef?: ExpenseAccountRef;
9491
+ /** The preferred vendor for this item. If a `PrefVendorRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9492
+ PrefVendorRef?: PrefVendorRef;
9493
+ }
9494
+ export interface SalesAndPurchaseMod {
9495
+ /** Appears in the `Description` column of a sales form when the QuickBooks user sells this item. For a fixed asset, describes the sale of the asset (for accounting purposes). */
9496
+ SalesDesc?: string;
9497
+ /** Price charged for this item. */
9498
+ SalesPrice?: string;
9499
+ /** Refers to an income account. If an `IncomeAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9500
+ IncomeAccountRef?: IncomeAccountRef;
9501
+ /** Used to support changing the `AccountRef` in the Mod request. When you do this, the QuickBooks UI normally displays a prompt asking whether the change should apply to existing transactions or not. Specifying False basically dismisses this with a “No” answer; specifying True dismisses it with a “Yes” answer and then changes the existing transactions that use the item with that `AccountRef`. Setting this to “True” should be used with caution and normally only after some user has indicated that they want those changes made to all those existing transactions! If any affected transactions are protected by a closing date and password, the `AccountRef` changes will not be made and so the Mod request will return an error without making the requested Mod. */
9502
+ ApplyIncomeAccountRefToExistingTxns?: boolean;
9503
+ /** Description that appears in the `Description` column of checks, bills, credit card charges, and item receipts (when an item is reordered). For a fixed asset, a description of the item as it was when it was purchased. */
9504
+ PurchaseDesc?: string;
9505
+ /** Amount that the QuickBooks user expects to pay when ordering or buying this item, or the amount that was actually paid for this item. */
9506
+ PurchaseCost?: string;
9507
+ /** Account used for taxes on purchases in CA or UK. */
9508
+ PurchaseTaxCodeRef?: PurchaseTaxCodeRef;
9509
+ /** Refers to an expense account. If an `ExpenseAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9510
+ ExpenseAccountRef?: ExpenseAccountRef;
9511
+ /** Used to support changing the `AccountRef` in the Mod request. When you do this, the QuickBooks UI normally displays a prompt asking whether the change should apply to existing transactions or not. Specifying False basically dismisses this with a “No” answer; specifying True dismisses it with a “Yes” answer and then changes the existing transactions that use the item with that `AccountRef`. Setting this to “True” should be used with caution and normally only after some user has indicated that they want those changes made to all those existing transactions! If any affected transactions are protected by a closing date and password, the `AccountRef` changes will not be made and so the Mod request will return an error without making the requested Mod. */
9512
+ ApplyExpenseAccountRefToExistingTxns?: boolean;
9513
+ /** The preferred vendor for this item. If a `PrefVendorRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9514
+ PrefVendorRef?: PrefVendorRef;
9515
+ }
9516
+ export interface SalesOrderAdd {
9517
+ /** 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. */
9518
+ CustomerRef: CustomerRef;
9519
+ /** 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. */
9520
+ ClassRef?: ClassRef;
9521
+ /** QuickBooks templates specify how to print certain transactions. A template query returns the names of all templates that have been defined in QuickBooks. A `TemplateRef` element refers to one of these templates. */
9522
+ TemplateRef?: TemplateRef;
9523
+ /** 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. */
9524
+ TxnDate?: string;
9525
+ /** 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. */
9526
+ RefNumber?: string;
9527
+ /** 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`. */
9528
+ BillAddress?: BillAddress;
9529
+ /** 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`. */
9530
+ ShipAddress?: ShipAddress;
9531
+ /** Purchase order number. */
9532
+ PONumber?: string;
9533
+ /** 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. */
9534
+ TermsRef?: TermsRef;
9535
+ /** The date on which payment is due. */
9536
+ DueDate?: string;
9537
+ /** 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. */
9538
+ SalesRepRef?: SalesRepRef;
9539
+ /** QuickBooks uses the term `FOB`, “freight on board,” to indicate the place from which the product is shipped. The `FOB` has no accounting implications. */
9540
+ FOB?: string;
9541
+ /** The date when the product was, or will be, shipped. */
9542
+ ShipDate?: string;
9543
+ /** A shipping method, for example, standard mail or overnight delivery. A `ShipMethodRef` aggregate refers to an item on the `ShipMethod` list. In a request, if a `ShipMethodRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9544
+ ShipMethodRef?: ShipMethodRef;
9545
+ /** 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. */
9546
+ ItemSalesTaxRef?: ItemSalesTaxRef;
9547
+ /** If `IsManuallyClosed` is true, this sales order has been closed, even if some line items within it have not been invoiced. */
9548
+ IsManuallyClosed?: boolean;
9549
+ /** Additional information. */
9550
+ Memo?: string;
9551
+ /** A standard message such as “Thank you for your business,” or “Please sign and return this estimate to indicate your approval.” A customer message can be included at the bottom of a form. A `CustomerMsgRef` aggregate refers to one of the messages on the `CustomerMsg` list. In a request, if a `CustomerMsgRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9552
+ CustomerMsgRef?: CustomerMsgRef;
9553
+ /** If `IsToBePrinted` is set to true, this transaction is on a list of forms to be printed later. The user can then choose to print all these forms at once. Notice that setting this field to true does not actually perform the printing. Only the QuickBooks user can do that from within QuickBooks. This cannot be done from the SDK. Setting this field to false does not prevent the QuickBooks user from printing the transaction later. It simply results in the transaction NOT being placed in the list of transactions to be printed. */
9554
+ IsToBePrinted?: boolean;
9555
+ /** If this is set to true, at runtime the customer referenced in this transaction will be checked for a valid email address. If there is no valid email address, the request will fail. If there is a valid email address currently in QuickBooks for the customer, and the request succeeds, the transaction will be added to `QuickBook`’s list of forms to be emailed, possibly in a batch. Notice that setting this field to true does not actually perform the emailing. Only the QuickBooks user can do that from within QuickBooks. This cannot be done from the SDK. Setting this field to false does not prevent the QuickBooks user from emailing the transaction later. It simply results in the transaction NOT being placed in the list of transactions to be emailed. */
9556
+ IsToBeEmailed?: boolean;
9557
+ /** For future use with international versions of QuickBooks. */
9558
+ IsTaxIncluded?: boolean;
9559
+ /** Refers to the sales-tax code for sales related to this customer. (That is, it refers to a member of the `SalesTaxCode` list.) The sales-tax code indicates whether an item is taxable or non-taxable, and why. In a request, if a `CustomerSalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9560
+ CustomerSalesTaxCodeRef?: CustomerSalesTaxCodeRef;
9561
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it. The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
9562
+ Other?: string;
9563
+ /** 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.) */
9564
+ ExchangeRate?: number;
9565
+ /** Allows for the attachment of a user defined GUID value. */
9566
+ ExternalGUID?: string;
9567
+ /** Represents one line in the sales order. Compare with `SalesOrderLineGroup`, which represents a previously defined group of lines in the sales order. */
9568
+ SalesOrderLineAdd?: SalesOrderLineAdd | SalesOrderLineAdd[];
9569
+ /** Represents a previously defined group of lines in the sales order. Compare with `SalesOrderLine`, which represents just one line in the sales order. */
9570
+ SalesOrderLineGroupAdd?: SalesOrderLineGroupAdd | SalesOrderLineGroupAdd[];
9571
+ /** The Sales Channel `Name` */
9572
+ SOChannel?: SOChannel;
9573
+ /** The Sales Store `Name` */
9574
+ StoreName?: string;
9575
+ /** The Sales Store type */
9576
+ StoreType?: string;
9577
+ }
9578
+ export interface SalesOrderAddRq {
9579
+ SalesOrderAdd: SalesOrderAdd;
9580
+ /** 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. */
9581
+ IncludeRetElement?: string[] | string;
9582
+ }
9583
+ export interface SalesOrderAddRs {
9584
+ SalesOrderRet?: SalesOrderRet;
9585
+ ErrorRecovery?: ErrorRecovery;
8832
9586
  }
8833
- export interface ReportData {
8834
- /** A data row contains the actual data for each column. */
8835
- DataRow?: DataRow | DataRow[];
8836
- /** A text row contains only text and is used mainly for headings. */
8837
- TextRow?: TextRow | TextRow[];
8838
- /** A row that contains a calculated subtotal of the data in all the rows since the last `SubTotalRow` and, usually, a single underline. There can be multiple `SubTotalRow` aggregates in a report. */
8839
- SubtotalRow?: SubtotalRow | SubtotalRow[];
8840
- /** A row that contains a calculated total of all the data that has come before and a double underline. There will only be one `TotalRow` per report. If `TotalRow` does not include any numerical values, the columns required to show the total values are not part of the report. These columns were not included when the report was customized. */
8841
- TotalRow?: TotalRow;
9587
+ export interface SalesOrderLineAdd {
9588
+ /** Depending on the request containing it, `ItemRef` can refer to an item on any Item list such as `ItemDiscount`, `ItemInventory`, and so forth, or it may accept only a subset of item types. For example, here are some requests that impose limits on what items `ItemRef` can refer to. For `PurchaseOrder` and Bill requests, `ItemRef` cannot refer to discount items or sales-tax `itemsFor` `VehicleMilageAdd` requests, the `ItemRef` must refer to a service item or an other charge item.For `BillingRateAdd` requests, the `ItemRef` must refer to a service item. You can use an `ItemQuery` request to get information about all the items that are set up in the QuickBooks file. “Items” are line items used for fast entry on sales and purchase forms. They include services and goods that a business buys and sells, as well as special items that perform calculations–for example, subtotal, discount, and sales-tax items. Note: In a request, if an `ItemRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9589
+ ItemRef?: ItemRef;
9590
+ /** A descriptive text field. */
9591
+ Desc?: string;
9592
+ /** `QuantityFor` transactions: If an item line add on a transaction request specifies `Quantity` and `Amount` but not `Rate`, QuickBooks will use `Quantity` and `Amount` to calculate `Rate`. Likewise, if a request specifies `Quantity` and `Rate` but not `Amount`, QuickBooks will calculate the `Amount`. If a transaction add request includes a reference to an `ItemDiscount` item, do not include a `Quantity` element as well, or you will get an error. For Item requests: `Quantity` indicates how many of this item there are. */
9593
+ Quantity?: number;
9594
+ /** In a transaction line item, the name of the unit of measure selected from within the item’s available units. If the company file is enabled only for single unit of measure per item, this must be the base unit! */
9595
+ UnitOfMeasure?: string;
9596
+ /** If you specify both `Rate` and `Amount` in a request, the `Rate` you provide will be ignored, and you will receive a warning. If you specify both `Quantity` and `Amount` in an Add request, QuickBooks will use them to calculate `Rate`. (Rate, `Amount`, and `Quantity` cannot be cleared.) */
9597
+ Rate?: string;
9598
+ /** Indicates the price of something as a percent. */
9599
+ RatePercent?: string;
9600
+ /** 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. */
9601
+ PriceLevelRef?: PriceLevelRef;
9602
+ /** 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. */
9603
+ ClassRef?: ClassRef;
9604
+ /** A monetary amount. */
9605
+ Amount?: string;
9606
+ /** Flag to override price rule conflict. */
9607
+ OptionForPriceRuleConflict?: OptionForPriceRuleConflict;
9608
+ /** Site where inventory is located. */
9609
+ InventorySiteRef?: InventorySiteRef;
9610
+ /** Location within the Inventory Site. */
9611
+ InventorySiteLocationRef?: InventorySiteLocationRef;
9612
+ /** The serial number of the asset. */
9613
+ SerialNumber?: string;
9614
+ /** The lot number of the asset. */
9615
+ LotNumber?: string;
9616
+ /** 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. */
9617
+ SalesTaxCodeRef?: SalesTaxCodeRef;
9618
+ /** If `IsManuallyClosed` is true, this line of the sales order has been closed even if it has not been invoiced. */
9619
+ IsManuallyClosed?: boolean;
9620
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it. The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
9621
+ Other1?: string;
9622
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it. The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
9623
+ Other2?: string;
9624
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
9625
+ DataExt?: DataExt | DataExt[];
8842
9626
  }
8843
- export type ReportDateMacro = "All" | "LastMonth" | "LastMonthToDate" | "LastQuarter" | "LastQuarterToDate" | "LastWeek" | "LastWeekToDate" | "LastYear" | "LastYearToDate" | "NextFourWeeks" | "NextMonth" | "NextQuarter" | "NextWeek" | "NextYear" | "ThisMonth" | "ThisMonthToDate" | "ThisQuarter" | "ThisQuarterToDate" | "ThisWeek" | "ThisWeekToDate" | "ThisYear" | "ThisYearToDate" | "Today" | "Yesterday";
8844
- /** @default: All */
8845
- export type ReportDetailLevelFilter = "All" | "AllExceptSummary" | "SummaryOnly";
8846
- export interface ReportEntityFilter {
8847
- /** Allows you to report on a specific name type. */
8848
- EntityTypeFilter?: EntityTypeFilter;
8849
- /** 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. */
8850
- ListID?: string[] | string;
8851
- /** 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. */
8852
- FullName?: string[] | string;
8853
- /** Allows you to filter for data that relates to the specified object and its descendants. */
8854
- ListIDWithChildren?: string;
8855
- /** 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`. */
8856
- FullNameWithChildren?: string;
9627
+ export interface SalesOrderLineGroupAdd {
9628
+ /** `ItemGroup` objects represent items that are grouped together for fast entry, and an `ItemGroupRef` aggregate refers to one of these item groups. In a request, if an `ItemGroupRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. You can use an `ItemGroupQuery` request to get information about all the item groups that are set up in the QuickBooks file. */
9629
+ ItemGroupRef: ItemGroupRef;
9630
+ /** `QuantityFor` transactions: If an item line add on a transaction request specifies `Quantity` and `Amount` but not `Rate`, QuickBooks will use `Quantity` and `Amount` to calculate `Rate`. Likewise, if a request specifies `Quantity` and `Rate` but not `Amount`, QuickBooks will calculate the `Amount`. If a transaction add request includes a reference to an `ItemDiscount` item, do not include a `Quantity` element as well, or you will get an error. For Item requests: `Quantity` indicates how many of this item there are. */
9631
+ Quantity?: number;
9632
+ /** In a transaction line item, the name of the unit of measure selected from within the item’s available units. If the company file is enabled only for single unit of measure per item, this must be the base unit! */
9633
+ UnitOfMeasure?: string;
9634
+ /** Site where inventory is located. */
9635
+ InventorySiteRef?: InventorySiteRef;
9636
+ /** Location within the Inventory Site. */
9637
+ InventorySiteLocationRef?: InventorySiteLocationRef;
9638
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
9639
+ DataExt?: DataExt | DataExt[];
8857
9640
  }
8858
- /** @default: Quarterly */
8859
- export type ReportingPeriod = "Monthly" | "Quarterly";
8860
- export interface ReportItemFilter {
8861
- /** Allows you to report on a specific item type. */
8862
- ItemTypeFilter?: ItemTypeFilter;
8863
- /** 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. */
8864
- ListID?: string[] | string;
8865
- /** 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. */
8866
- FullName?: string[] | string;
8867
- /** Allows you to filter for data that relates to the specified object and its descendants. */
8868
- ListIDWithChildren?: string;
8869
- /** 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`. */
8870
- FullNameWithChildren?: string;
9641
+ export interface SalesOrderLineGroupMod {
9642
+ /** 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. */
9643
+ TxnLineID: string;
9644
+ /** `ItemGroup` objects represent items that are grouped together for fast entry, and an `ItemGroupRef` aggregate refers to one of these item groups. In a request, if an `ItemGroupRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. You can use an `ItemGroupQuery` request to get information about all the item groups that are set up in the QuickBooks file. */
9645
+ ItemGroupRef?: ItemGroupRef;
9646
+ /** `QuantityFor` transactions: If an item line add on a transaction request specifies `Quantity` and `Amount` but not `Rate`, QuickBooks will use `Quantity` and `Amount` to calculate `Rate`. Likewise, if a request specifies `Quantity` and `Rate` but not `Amount`, QuickBooks will calculate the `Amount`. If a transaction add request includes a reference to an `ItemDiscount` item, do not include a `Quantity` element as well, or you will get an error. For Item requests: `Quantity` indicates how many of this item there are. */
9647
+ Quantity?: number;
9648
+ /** In a transaction line item, the name of the unit of measure selected from within the item’s available units. If the company file is enabled only for single unit of measure per item, this must be the base unit! */
9649
+ UnitOfMeasure?: string;
9650
+ /** When you modify a transaction line to change the unit of measure used in that line, you use this aggregate to specify the UOM set within which you are choosing an available unit of measure. The “override” here refers to the unit within the set, not the UOM Set itself, which you cannot change or override–the UOM set that can be set or changed only in the item itself via an Item Mod request. */
9651
+ OverrideUOMSetRef?: OverrideUOMSetRef;
9652
+ /** A list of `SalesOrderLineRet` objects, each representing one line in the sales order. */
9653
+ SalesOrderLineMod?: SalesOrderLineMod | SalesOrderLineMod[];
8871
9654
  }
8872
- export interface ReportModifiedDateRangeFilter {
8873
- /** Selects information from this date and later. The range of acceptable dates is 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). */
8874
- FromReportModifiedDate?: string;
8875
- /** Selects information created on this date or earlier. The range of acceptable dates is 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). */
8876
- ToReportModifiedDate?: string;
9655
+ export interface SalesOrderLineGroupRet {
9656
+ /** 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. */
9657
+ TxnLineID: string;
9658
+ /** `ItemGroup` objects represent items that are grouped together for fast entry, and an `ItemGroupRef` aggregate refers to one of these item groups. In a request, if an `ItemGroupRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. You can use an `ItemGroupQuery` request to get information about all the item groups that are set up in the QuickBooks file. */
9659
+ ItemGroupRef: ItemGroupRef;
9660
+ /** A descriptive text field. */
9661
+ Desc?: string;
9662
+ /** `QuantityFor` transactions: If an item line add on a transaction request specifies `Quantity` and `Amount` but not `Rate`, QuickBooks will use `Quantity` and `Amount` to calculate `Rate`. Likewise, if a request specifies `Quantity` and `Rate` but not `Amount`, QuickBooks will calculate the `Amount`. If a transaction add request includes a reference to an `ItemDiscount` item, do not include a `Quantity` element as well, or you will get an error. For Item requests: `Quantity` indicates how many of this item there are. */
9663
+ Quantity?: number;
9664
+ /** In a transaction line item, the name of the unit of measure selected from within the item’s available units. If the company file is enabled only for single unit of measure per item, this must be the base unit! */
9665
+ UnitOfMeasure?: string;
9666
+ /** When you modify a transaction line to change the unit of measure used in that line, you use this aggregate to specify the UOM set within which you are choosing an available unit of measure. The “override” here refers to the unit within the set, not the UOM Set itself, which you cannot change or override–the UOM set that can be set or changed only in the item itself via an Item Mod request. */
9667
+ OverrideUOMSetRef?: OverrideUOMSetRef;
9668
+ /** If true, a list of this group’s individual items their amounts will appear on printed forms. */
9669
+ IsPrintItemsInGroup: boolean;
9670
+ /** Total amount of money paid or received. In a receive payment add transaction that has payment amount elements (such as `AppliedToTxnAdd` lines) you must supply a `TotalAmount` and the sum of all the `PaymentAmount` elements must not be greater than the `TotalAmount`. */
9671
+ TotalAmount: string;
9672
+ /** A list of `SalesOrderLineRet` objects, each representing one line in the sales order. */
9673
+ SalesOrderLineRet?: SalesOrderLineRet | SalesOrderLineRet[];
9674
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
9675
+ DataExtRet?: DataExtRet | DataExtRet[];
9676
+ /** The Sales Channel `Name`. */
9677
+ SOChannel?: SOChannel;
9678
+ /** The Sales Store `Name`. */
9679
+ StoreName?: string;
9680
+ /** The Sales Store type. */
9681
+ StoreType?: string;
9682
+ }
9683
+ export interface SalesOrderLineMod {
9684
+ /** 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. */
9685
+ TxnLineID: string;
9686
+ /** Depending on the request containing it, `ItemRef` can refer to an item on any Item list such as `ItemDiscount`, `ItemInventory`, and so forth, or it may accept only a subset of item types. For example, here are some requests that impose limits on what items `ItemRef` can refer to. For `PurchaseOrder` and Bill requests, `ItemRef` cannot refer to discount items or sales-tax `itemsFor` `VehicleMilageAdd` requests, the `ItemRef` must refer to a service item or an other charge item.For `BillingRateAdd` requests, the `ItemRef` must refer to a service item. You can use an `ItemQuery` request to get information about all the items that are set up in the QuickBooks file. “Items” are line items used for fast entry on sales and purchase forms. They include services and goods that a business buys and sells, as well as special items that perform calculations–for example, subtotal, discount, and sales-tax items. Note: In a request, if an `ItemRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9687
+ ItemRef?: ItemRef;
9688
+ /** A descriptive text field. */
9689
+ Desc?: string;
9690
+ /** `QuantityFor` transactions: If an item line add on a transaction request specifies `Quantity` and `Amount` but not `Rate`, QuickBooks will use `Quantity` and `Amount` to calculate `Rate`. Likewise, if a request specifies `Quantity` and `Rate` but not `Amount`, QuickBooks will calculate the `Amount`. If a transaction add request includes a reference to an `ItemDiscount` item, do not include a `Quantity` element as well, or you will get an error. For Item requests: `Quantity` indicates how many of this item there are. */
9691
+ Quantity?: number;
9692
+ /** In a transaction line item, the name of the unit of measure selected from within the item’s available units. If the company file is enabled only for single unit of measure per item, this must be the base unit! */
9693
+ UnitOfMeasure?: string;
9694
+ /** When you modify a transaction line to change the unit of measure used in that line, you use this aggregate to specify the UOM set within which you are choosing an available unit of measure. The “override” here refers to the unit within the set, not the UOM Set itself, which you cannot change or override–the UOM set that can be set or changed only in the item itself via an Item Mod request. */
9695
+ OverrideUOMSetRef?: OverrideUOMSetRef;
9696
+ /** If you specify both `Rate` and `Amount` in a request, the `Rate` you provide will be ignored, and you will receive a warning. If you specify both `Quantity` and `Amount` in an Add request, QuickBooks will use them to calculate `Rate`. (Rate, `Amount`, and `Quantity` cannot be cleared.) */
9697
+ Rate?: string;
9698
+ /** Indicates the price of something as a percent. */
9699
+ RatePercent?: string;
9700
+ /** 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. */
9701
+ PriceLevelRef?: PriceLevelRef;
9702
+ /** 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. */
9703
+ ClassRef?: ClassRef;
9704
+ /** A monetary amount. */
9705
+ Amount?: string;
9706
+ /** Flag to override price rule conflict. */
9707
+ OptionForPriceRuleConflict?: OptionForPriceRuleConflict;
9708
+ /** Site where inventory is located. */
9709
+ InventorySiteRef?: InventorySiteRef;
9710
+ /** Location within the Inventory Site. */
9711
+ InventorySiteLocationRef?: InventorySiteLocationRef;
9712
+ /** The serial number of the asset. */
9713
+ SerialNumber?: string;
9714
+ /** The lot number of the asset. */
9715
+ LotNumber?: string;
9716
+ /** 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. */
9717
+ SalesTaxCodeRef?: SalesTaxCodeRef;
9718
+ /** If `IsManuallyClosed` is true, this line of the sales order has been closed even if it has not been invoiced. */
9719
+ IsManuallyClosed?: boolean;
9720
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it. The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
9721
+ Other1?: string;
9722
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it. The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
9723
+ Other2?: string;
8877
9724
  }
8878
- export type ReportModifiedDateRangeMacro = "All" | "LastMonth" | "LastMonthToDate" | "LastQuarter" | "LastQuarterToDate" | "LastWeek" | "LastWeekToDate" | "LastYear" | "LastYearToDate" | "NextFourWeeks" | "NextMonth" | "NextQuarter" | "NextWeek" | "NextYear" | "ThisMonth" | "ThisMonthToDate" | "ThisQuarter" | "ThisQuarterToDate" | "ThisWeek" | "ThisWeekToDate" | "ThisYear" | "ThisYearToDate" | "Today" | "Yesterday";
8879
- /** @default: Today */
8880
- export type ReportOpenBalanceAsOf = "ReportEndDate" | "Today";
8881
- export interface ReportPeriod {
8882
- /** Selects information from this date and later. The range of acceptable `FromReportDate` and `ToReportDate` values depends on how the report dates are determined. If the report dates are based on the dates of transactions, the range is 01/01/1901 to 12/31/9999. If the report dates are based on modification dates, the range will be 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). If you omit `FromReportDate`, it will be set to 1970-01-01T00:00:00 (1969-12-31T16:00:00-08:00 PST). */
8883
- FromReportDate?: string;
8884
- /** Selects information created on this date or earlier. The range of acceptable `ToReportDate` and `FromReportDate` values depends on how the report dates are determined. If the report dates are based on the dates of transactions, the range is 01/01/1901 to 12/31/9999. If the report dates are based on modification dates, the range will be 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). If you omit `ToReportDate`, it will be set to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). */
8885
- ToReportDate?: string;
9725
+ export interface SalesOrderLineRet {
9726
+ /** 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. */
9727
+ TxnLineID: string;
9728
+ /** Depending on the request containing it, `ItemRef` can refer to an item on any Item list such as `ItemDiscount`, `ItemInventory`, and so forth, or it may accept only a subset of item types. For example, here are some requests that impose limits on what items `ItemRef` can refer to. For `PurchaseOrder` and Bill requests, `ItemRef` cannot refer to discount items or sales-tax `itemsFor` `VehicleMilageAdd` requests, the `ItemRef` must refer to a service item or an other charge item.For `BillingRateAdd` requests, the `ItemRef` must refer to a service item. You can use an `ItemQuery` request to get information about all the items that are set up in the QuickBooks file. “Items” are line items used for fast entry on sales and purchase forms. They include services and goods that a business buys and sells, as well as special items that perform calculations–for example, subtotal, discount, and sales-tax items. Note: In a request, if an `ItemRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9729
+ ItemRef?: ItemRef;
9730
+ /** A descriptive text field. */
9731
+ Desc?: string;
9732
+ /** `QuantityFor` transactions: If an item line add on a transaction request specifies `Quantity` and `Amount` but not `Rate`, QuickBooks will use `Quantity` and `Amount` to calculate `Rate`. Likewise, if a request specifies `Quantity` and `Rate` but not `Amount`, QuickBooks will calculate the `Amount`. If a transaction add request includes a reference to an `ItemDiscount` item, do not include a `Quantity` element as well, or you will get an error. For Item requests: `Quantity` indicates how many of this item there are. */
9733
+ Quantity?: number;
9734
+ /** In a transaction line item, the name of the unit of measure selected from within the item’s available units. If the company file is enabled only for single unit of measure per item, this must be the base unit! */
9735
+ UnitOfMeasure?: string;
9736
+ /** When you modify a transaction line to change the unit of measure used in that line, you use this aggregate to specify the UOM set within which you are choosing an available unit of measure. The “override” here refers to the unit within the set, not the UOM Set itself, which you cannot change or override–the UOM set that can be set or changed only in the item itself via an Item Mod request. */
9737
+ OverrideUOMSetRef?: OverrideUOMSetRef;
9738
+ /** If you specify both `Rate` and `Amount` in a request, the `Rate` you provide will be ignored, and you will receive a warning. If you specify both `Quantity` and `Amount` in an Add request, QuickBooks will use them to calculate `Rate`. (Rate, `Amount`, and `Quantity` cannot be cleared.) */
9739
+ Rate?: string;
9740
+ /** Indicates the price of something as a percent. */
9741
+ RatePercent?: string;
9742
+ /** 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. */
9743
+ ClassRef?: ClassRef;
9744
+ /** A monetary amount. */
9745
+ Amount?: string;
9746
+ /** Site where inventory is located. */
9747
+ InventorySiteRef?: InventorySiteRef;
9748
+ /** Location within the Inventory Site. */
9749
+ InventorySiteLocationRef?: InventorySiteLocationRef;
9750
+ /** The serial number of the asset. */
9751
+ SerialNumber?: string;
9752
+ /** The lot number of the asset. */
9753
+ LotNumber?: string;
9754
+ /** The expiration date of the inventory serial/lot number. Expiration `Date` is supported from QB Desktop 2023 version 3 (USA & Canada) and SDK 16.0. */
9755
+ ExpirationDateForSerialLotNumber?: string;
9756
+ /** 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. */
9757
+ SalesTaxCodeRef?: SalesTaxCodeRef;
9758
+ /** The amount of this sales order line that has been invoiced. */
9759
+ Invoiced?: number;
9760
+ /** If `IsManuallyClosed` is true, this line of the sales order has been closed even if it has not been invoiced. */
9761
+ IsManuallyClosed?: boolean;
9762
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it. The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
9763
+ Other1?: string;
9764
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it. The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
9765
+ Other2?: string;
9766
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
9767
+ DataExtRet?: DataExtRet | DataExtRet[];
8886
9768
  }
8887
- export type ReportPostingStatusFilter = "Either" | "NonPosting" | "Posting";
8888
- export interface ReportRet {
8889
- /** The main title for this report. */
8890
- ReportTitle: string;
8891
- /** The subtitle for this report. */
8892
- ReportSubtitle: string;
8893
- /** If `ReportBasis` is `rbCash`, the report bases income and expenses on the dates when money changed hands.`rbAccrual`, the report bases income on the dates when customers were invoiced and bases expenses on the dates when bills were entered.`rbNone`, the report uses the default `ReportBasis`, which is either the QuickBooks Preference setting or the QuickBooks default for a given type of report. In a report response, the SDK returns `rbNone` for reports that do not support `ReportBasis`. (The 1099 report, for example, has its own basis for generation.) */
8894
- ReportBasis?: ReportBasis;
8895
- /** The number of rows in the report. */
8896
- NumRows: number;
8897
- /** The number of columns in the report. */
8898
- NumColumns: number;
8899
- /** The number of rows to allocate for column titles. Although this number is usually 1, with some reports it is 2 or 3. (For an example of column titles that span multiple rows, look at a `ProfitAndLossByJob` report in QuickBooks.) */
8900
- NumColTitleRows: number;
8901
- /** A list of `IColDesc` objects, each of which identifies one column in the report. Each column is identified by a `colID` (the position of the column in the report), a title, and a type. If the report contains any data, it is given row-by-row in an `IReportData` object. */
8902
- ColDesc: ColDesc | ColDesc[];
8903
- /** If the report contains any data, it is given row-by-row in a `ReportData` aggregate. */
8904
- ReportData?: ReportData;
9769
+ export interface SalesOrderMod {
9770
+ /** 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. */
9771
+ TxnID: string;
9772
+ /** 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. */
9773
+ EditSequence: string;
9774
+ /** 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. */
9775
+ CustomerRef?: CustomerRef;
9776
+ /** 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. */
9777
+ ClassRef?: ClassRef;
9778
+ /** QuickBooks templates specify how to print certain transactions. A template query returns the names of all templates that have been defined in QuickBooks. A `TemplateRef` element refers to one of these templates. */
9779
+ TemplateRef?: TemplateRef;
9780
+ /** 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. */
9781
+ TxnDate?: string;
9782
+ /** 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. */
9783
+ RefNumber?: string;
9784
+ /** 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`. */
9785
+ BillAddress?: BillAddress;
9786
+ /** 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`. */
9787
+ ShipAddress?: ShipAddress;
9788
+ /** Purchase order number. */
9789
+ PONumber?: string;
9790
+ /** 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. */
9791
+ TermsRef?: TermsRef;
9792
+ /** The date on which payment is due. */
9793
+ DueDate?: string;
9794
+ /** 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. */
9795
+ SalesRepRef?: SalesRepRef;
9796
+ /** QuickBooks uses the term `FOB`, “freight on board,” to indicate the place from which the product is shipped. The `FOB` has no accounting implications. */
9797
+ FOB?: string;
9798
+ /** The date when the product was, or will be, shipped. */
9799
+ ShipDate?: string;
9800
+ /** A shipping method, for example, standard mail or overnight delivery. A `ShipMethodRef` aggregate refers to an item on the `ShipMethod` list. In a request, if a `ShipMethodRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9801
+ ShipMethodRef?: ShipMethodRef;
9802
+ /** 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. */
9803
+ ItemSalesTaxRef?: ItemSalesTaxRef;
9804
+ /** If `IsManuallyClosed` is true, this sales order has been closed, even if some line items within it have not been invoiced. */
9805
+ IsManuallyClosed?: boolean;
9806
+ /** Additional information. */
9807
+ Memo?: string;
9808
+ /** A standard message such as “Thank you for your business,” or “Please sign and return this estimate to indicate your approval.” A customer message can be included at the bottom of a form. A `CustomerMsgRef` aggregate refers to one of the messages on the `CustomerMsg` list. In a request, if a `CustomerMsgRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9809
+ CustomerMsgRef?: CustomerMsgRef;
9810
+ /** If `IsToBePrinted` is set to true, this transaction is on a list of forms to be printed later. The user can then choose to print all these forms at once. Notice that setting this field to true does not actually perform the printing. Only the QuickBooks user can do that from within QuickBooks. This cannot be done from the SDK. Setting this field to false does not prevent the QuickBooks user from printing the transaction later. It simply results in the transaction NOT being placed in the list of transactions to be printed. */
9811
+ IsToBePrinted?: boolean;
9812
+ /** If this is set to true, at runtime the customer referenced in this transaction will be checked for a valid email address. If there is no valid email address, the request will fail. If there is a valid email address currently in QuickBooks for the customer, and the request succeeds, the transaction will be added to `QuickBook`’s list of forms to be emailed, possibly in a batch. Notice that setting this field to true does not actually perform the emailing. Only the QuickBooks user can do that from within QuickBooks. This cannot be done from the SDK. Setting this field to false does not prevent the QuickBooks user from emailing the transaction later. It simply results in the transaction NOT being placed in the list of transactions to be emailed. */
9813
+ IsToBeEmailed?: boolean;
9814
+ /** For future use with international versions of QuickBooks. */
9815
+ IsTaxIncluded?: boolean;
9816
+ /** Refers to the sales-tax code for sales related to this customer. (That is, it refers to a member of the `SalesTaxCode` list.) The sales-tax code indicates whether an item is taxable or non-taxable, and why. In a request, if a `CustomerSalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9817
+ CustomerSalesTaxCodeRef?: CustomerSalesTaxCodeRef;
9818
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it. The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
9819
+ Other?: string;
9820
+ /** 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.) */
9821
+ ExchangeRate?: number;
9822
+ /** Represents one line in the sales order. Compare with `SalesOrderLineGroup`, which represents a previously defined group of lines in the sales order. */
9823
+ SalesOrderLineMod?: SalesOrderLineMod;
9824
+ /** Represents a previously defined group of lines in the sales order. Compare with `SalesOrderLine`, which represents just one line in the sales order. */
9825
+ SalesOrderLineGroupMod?: SalesOrderLineGroupMod;
9826
+ /** The Sales Channel `Name`. */
9827
+ SOChannel?: SOChannel;
9828
+ /** The Sales Store `Name`. */
9829
+ StoreName?: string;
9830
+ /** The Sales Store type. */
9831
+ StoreType?: string;
9832
+ }
9833
+ export interface SalesOrderModRq {
9834
+ SalesOrderMod: SalesOrderMod;
9835
+ /** 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. */
9836
+ IncludeRetElement?: string[] | string;
8905
9837
  }
8906
- export interface ReportTxnTypeFilter {
8907
- /** A list of the transaction types you want the report to cover. */
8908
- TxnTypeFilter: TxnTypeFilter | TxnTypeFilter[];
9838
+ export interface SalesOrderModRs {
9839
+ SalesOrderRet?: SalesOrderRet;
9840
+ ErrorRecovery?: ErrorRecovery;
8909
9841
  }
8910
- export type ReturnColumns = "ActiveOnly" | "All" | "NonZero";
8911
- export type ReturnRows = "ActiveOnly" | "All" | "NonZero";
8912
- export interface RowData {
8913
- /** An enumerated value that shows the type of data that this row contains. Values: account class customer `customerMessage` `customerType` employee item `jobType` label `memorizedTxn` `memorizedReport` name `otherName` `paymentMethod` `payrollItem` `salesRep` `salesTaxCode` `shipMethod` state style terms `toDo` vendor `vendorType` */
8914
- RowType: RowType;
8915
- /** The data in this cell of the report. */
8916
- Value: string;
9842
+ export interface SalesOrderQueryRq {
9843
+ /** 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. */
9844
+ TxnID?: string[] | string;
9845
+ /** 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. */
9846
+ RefNumber?: string[] | string;
9847
+ /** 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. */
9848
+ RefNumberCaseSensitive?: string[] | string;
9849
+ /** 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. */
9850
+ MaxReturned?: number;
9851
+ /** 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.) */
9852
+ ModifiedDateRangeFilter?: ModifiedDateRangeFilter;
9853
+ /** Filters according to the original transaction dates. */
9854
+ TxnDateRangeFilter?: TxnDateRangeFilter;
9855
+ /** 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. */
9856
+ EntityFilter?: EntityFilter;
9857
+ /** Filters according to `RefNumber`. */
9858
+ RefNumberFilter?: RefNumberFilter;
9859
+ /** 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`. */
9860
+ RefNumberRangeFilter?: RefNumberRangeFilter;
9861
+ /** Filters by the specified currency. */
9862
+ CurrencyFilter?: CurrencyFilter;
9863
+ /** 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. */
9864
+ IncludeLineItems?: boolean;
9865
+ /** If you set `IncludeLinkedTxns` to true, then the returned object will include a list of all the transactions linked to the queried object. (This list is similar to the History view of a transaction in the user interface, but not identical, as the SDK list contains only linked transactions, not items.) Each linked transaction will be represented by a `LinkedTxn` aggregate. If no linked transactions exist, no `LinkedTxn` aggregates will be returned. */
9866
+ IncludeLinkedTxns?: boolean;
9867
+ /** 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. */
9868
+ IncludeRetElement?: string[] | string;
9869
+ /** 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. */
9870
+ OwnerID?: string[] | string;
8917
9871
  }
8918
- export type RowType = "account" | "class" | "customer" | "customerMessage" | "customerType" | "employee" | "item" | "jobType" | "label" | "memorizedReport" | "memorizedTxn" | "name" | "otherName" | "paymentMethod" | "payrollItem" | "salesRep" | "salesTaxCode" | "shipMethod" | "state" | "style" | "terms" | "toDo" | "vendor" | "vendorType";
8919
- export interface SalesAndPurchase {
8920
- /** Appears in the `Description` column of a sales form when the QuickBooks user sells this item. For a fixed asset, describes the sale of the asset (for accounting purposes). */
8921
- SalesDesc?: string;
8922
- /** Price charged for this item. */
8923
- SalesPrice?: string;
8924
- /** Refers to an income account. If an `IncomeAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
8925
- IncomeAccountRef?: IncomeAccountRef;
8926
- /** Description that appears in the `Description` column of checks, bills, credit card charges, and item receipts (when an item is reordered). For a fixed asset, a description of the item as it was when it was purchased. */
8927
- PurchaseDesc?: string;
8928
- /** Amount that the QuickBooks user expects to pay when ordering or buying this item, or the amount that was actually paid for this item. */
8929
- PurchaseCost?: string;
8930
- /** Account used for taxes on purchases in CA or UK. */
8931
- PurchaseTaxCodeRef?: PurchaseTaxCodeRef;
8932
- /** Refers to an expense account. If an `ExpenseAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
8933
- ExpenseAccountRef?: ExpenseAccountRef;
8934
- /** The preferred vendor for this item. If a `PrefVendorRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
8935
- PrefVendorRef?: PrefVendorRef;
9872
+ export interface SalesOrderQueryRs {
9873
+ SalesOrderRet: SalesOrderRet[];
8936
9874
  }
8937
- export interface SalesAndPurchaseMod {
8938
- /** Appears in the `Description` column of a sales form when the QuickBooks user sells this item. For a fixed asset, describes the sale of the asset (for accounting purposes). */
8939
- SalesDesc?: string;
8940
- /** Price charged for this item. */
8941
- SalesPrice?: string;
8942
- /** Refers to an income account. If an `IncomeAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
8943
- IncomeAccountRef?: IncomeAccountRef;
8944
- /** Used to support changing the `AccountRef` in the Mod request. When you do this, the QuickBooks UI normally displays a prompt asking whether the change should apply to existing transactions or not. Specifying False basically dismisses this with a “No” answer; specifying True dismisses it with a “Yes” answer and then changes the existing transactions that use the item with that `AccountRef`. Setting this to “True” should be used with caution and normally only after some user has indicated that they want those changes made to all those existing transactions! If any affected transactions are protected by a closing date and password, the `AccountRef` changes will not be made and so the Mod request will return an error without making the requested Mod. */
8945
- ApplyIncomeAccountRefToExistingTxns?: boolean;
8946
- /** Description that appears in the `Description` column of checks, bills, credit card charges, and item receipts (when an item is reordered). For a fixed asset, a description of the item as it was when it was purchased. */
8947
- PurchaseDesc?: string;
8948
- /** Amount that the QuickBooks user expects to pay when ordering or buying this item, or the amount that was actually paid for this item. */
8949
- PurchaseCost?: string;
8950
- /** Account used for taxes on purchases in CA or UK. */
8951
- PurchaseTaxCodeRef?: PurchaseTaxCodeRef;
8952
- /** Refers to an expense account. If an `ExpenseAccountRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
8953
- ExpenseAccountRef?: ExpenseAccountRef;
8954
- /** Used to support changing the `AccountRef` in the Mod request. When you do this, the QuickBooks UI normally displays a prompt asking whether the change should apply to existing transactions or not. Specifying False basically dismisses this with a “No” answer; specifying True dismisses it with a “Yes” answer and then changes the existing transactions that use the item with that `AccountRef`. Setting this to “True” should be used with caution and normally only after some user has indicated that they want those changes made to all those existing transactions! If any affected transactions are protected by a closing date and password, the `AccountRef` changes will not be made and so the Mod request will return an error without making the requested Mod. */
8955
- ApplyExpenseAccountRefToExistingTxns?: boolean;
8956
- /** The preferred vendor for this item. If a `PrefVendorRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
8957
- PrefVendorRef?: PrefVendorRef;
9875
+ export interface SalesOrderRet {
9876
+ /** 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. */
9877
+ TxnID: string;
9878
+ /** Time the object was created. */
9879
+ TimeCreated: string;
9880
+ /** Time the object was last modified. */
9881
+ TimeModified: string;
9882
+ /** 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. */
9883
+ EditSequence: string;
9884
+ /** An identifying number for this transaction. */
9885
+ TxnNumber?: number;
9886
+ /** 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. */
9887
+ CustomerRef: CustomerRef;
9888
+ /** 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. */
9889
+ ClassRef?: ClassRef;
9890
+ /** QuickBooks templates specify how to print certain transactions. A template query returns the names of all templates that have been defined in QuickBooks. A `TemplateRef` element refers to one of these templates. */
9891
+ TemplateRef?: TemplateRef;
9892
+ /** 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. */
9893
+ TxnDate: string;
9894
+ /** 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. */
9895
+ RefNumber?: string;
9896
+ /** 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`. */
9897
+ BillAddress?: BillAddress;
9898
+ /** 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. */
9899
+ BillAddressBlock?: BillAddressBlock;
9900
+ /** 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`. */
9901
+ ShipAddress?: ShipAddress;
9902
+ /** 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. */
9903
+ ShipAddressBlock?: ShipAddressBlock;
9904
+ /** Purchase order number. */
9905
+ PONumber?: string;
9906
+ /** 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. */
9907
+ TermsRef?: TermsRef;
9908
+ /** The date on which payment is due. */
9909
+ DueDate?: string;
9910
+ /** 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. */
9911
+ SalesRepRef?: SalesRepRef;
9912
+ /** QuickBooks uses the term `FOB`, “freight on board,” to indicate the place from which the product is shipped. The `FOB` has no accounting implications. */
9913
+ FOB?: string;
9914
+ /** The date when the product was, or will be, shipped. */
9915
+ ShipDate?: string;
9916
+ /** A shipping method, for example, standard mail or overnight delivery. A `ShipMethodRef` aggregate refers to an item on the `ShipMethod` list. In a request, if a `ShipMethodRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9917
+ ShipMethodRef?: ShipMethodRef;
9918
+ /** The total of the amounts in all the lines of an invoice, estimate, sales receipt, or credit memo before taxes or payments are applied. (By contrast, a subtotal item (an `ItemSubtotal` object) gives only the total of the amounts in the lines that appear above it.) */
9919
+ Subtotal?: string;
9920
+ /** 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. */
9921
+ ItemSalesTaxRef?: ItemSalesTaxRef;
9922
+ /** The percentage charged for sales tax. */
9923
+ SalesTaxPercentage?: string;
9924
+ /** The total amount of sales tax charged. */
9925
+ SalesTaxTotal?: string;
9926
+ /** Total amount of money paid or received. In a receive payment add transaction that has payment amount elements (such as `AppliedToTxnAdd` lines) you must supply a `TotalAmount` and the sum of all the `PaymentAmount` elements must not be greater than the `TotalAmount`. */
9927
+ TotalAmount?: string;
9928
+ /** 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. */
9929
+ CurrencyRef?: CurrencyRef;
9930
+ /** 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.) */
9931
+ ExchangeRate?: number;
9932
+ /** Total amount of money paid or received in the home currency. */
9933
+ TotalAmountInHomeCurrency?: string;
9934
+ /** If `IsManuallyClosed` is true, this sales order has been closed, even if some line items within it have not been invoiced. */
9935
+ IsManuallyClosed?: boolean;
9936
+ /** If `IsFullyInvoiced` is true, all the items in the sales order have been invoiced. */
9937
+ IsFullyInvoiced?: boolean;
9938
+ /** Additional information. */
9939
+ Memo?: string;
9940
+ /** A standard message such as “Thank you for your business,” or “Please sign and return this estimate to indicate your approval.” A customer message can be included at the bottom of a form. A `CustomerMsgRef` aggregate refers to one of the messages on the `CustomerMsg` list. In a request, if a `CustomerMsgRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9941
+ CustomerMsgRef?: CustomerMsgRef;
9942
+ /** If `IsToBePrinted` is set to true, this transaction is on a list of forms to be printed later. The user can then choose to print all these forms at once. Notice that setting this field to true does not actually perform the printing. Only the QuickBooks user can do that from within QuickBooks. This cannot be done from the SDK. Setting this field to false does not prevent the QuickBooks user from printing the transaction later. It simply results in the transaction NOT being placed in the list of transactions to be printed. */
9943
+ IsToBePrinted?: boolean;
9944
+ /** If this is set to true, at runtime the customer referenced in this transaction will be checked for a valid email address. If there is no valid email address, the request will fail. If there is a valid email address currently in QuickBooks for the customer, and the request succeeds, the transaction will be added to `QuickBook`’s list of forms to be emailed, possibly in a batch. Notice that setting this field to true does not actually perform the emailing. Only the QuickBooks user can do that from within QuickBooks. This cannot be done from the SDK. Setting this field to false does not prevent the QuickBooks user from emailing the transaction later. It simply results in the transaction NOT being placed in the list of transactions to be emailed. */
9945
+ IsToBeEmailed?: boolean;
9946
+ /** For future use with international versions of QuickBooks. */
9947
+ IsTaxIncluded?: boolean;
9948
+ /** Refers to the sales-tax code for sales related to this customer. (That is, it refers to a member of the `SalesTaxCode` list.) The sales-tax code indicates whether an item is taxable or non-taxable, and why. In a request, if a `CustomerSalesTaxCodeRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. */
9949
+ CustomerSalesTaxCodeRef?: CustomerSalesTaxCodeRef;
9950
+ /** Other, `Other1`, and `Other2` are standard QuickBooks custom fields available to transactions. The `Other` field is a transaction-level field, like the `FOB` field, PO Number field, and so forth. This field appears only once for the transaction: you can write to it and modify it. The `Other1` and `Other2` fields exist at the line item level; each line item has them, and you can write or modify the value in each line. These custom fields are available for immediate use: you don’t need to enable these in the transaction template to be able to access them via SDK. (However, those `Other`, `Other1`, `Other2` fields and their values are viewable and printable in QuickBooks only if the transaction template has these enabled!) `Note`: you cannot use `DataExtDef` to define `Other`, `Other1`, `Other2` for the transaction. There is no need to in any case. Those are automatically available. Notice that the `Other`, `Other1`, and `Other2` names are the real SDK names for those custom fields: that is, their `DataExtName` value will always be `Other`, `Other1`, or `Other2`. Even if the user has re-labelled those custom fields to something else, such as “Barracks Number”, or “`Max` Headroom”, or even “Pleni Potentiary”. This re-labelling has no effect on the SDK. You’ll always write to them or modify them as `Other`, `Other1`, or `Other2`. */
9951
+ Other?: string;
9952
+ /** Allows for the attachment of a user defined GUID value. */
9953
+ ExternalGUID?: string;
9954
+ /** If the `IncludeLinkedTxns` flag is set to true in a query, or if you create an item receipt that links to other transactionsthen the returned object will include a list of linked transactions, if any exist. If no linked transactions exist, the `ILinkedTxnList` object will be empty. The list of linked transactions is similar to the History view of a transaction in the user interface, but not identical, as the SDK list contains only linked transactions, not items. */
9955
+ LinkedTxn?: LinkedTxn | LinkedTxn[];
9956
+ /** Represents one line in the sales order. Compare with `SalesOrderLineGroup`, which represents a previously defined group of lines in the sales order. */
9957
+ SalesOrderLineRet?: SalesOrderLineRet;
9958
+ /** Represents a previously defined group of lines in the sales order. Compare with `SalesOrderLine`, which represents just one line in the sales order. */
9959
+ SalesOrderLineGroupRet?: SalesOrderLineGroupRet;
9960
+ /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
9961
+ DataExtRet?: DataExtRet | DataExtRet[];
8958
9962
  }
8959
9963
  export interface SalesOrPurchase {
8960
9964
  /** A descriptive text field. */
@@ -9508,12 +10512,107 @@ export interface SalesRepRet {
9508
10512
  /** Refers to the sales representative’s full information on the Employee, Vendor, or `OtherName` list. In a request, if a `SalesRepEntityRef` aggregate includes both `FullName` and `ListID`, `FullName` will be ignored. Notice that you cannot supply a customer name here. */
9509
10513
  SalesRepEntityRef: SalesRepEntityRef;
9510
10514
  }
10515
+ export interface SalesTaxCodeAdd {
10516
+ /** Short name that will appear on sales forms to identify the tax status of an item. The `Desc` element gives a longer explanation of `Name`. `Name` must be unique, and it is not case-sensitive. */
10517
+ Name: string;
10518
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
10519
+ IsActive?: boolean;
10520
+ /** Indicates whether this sales-tax code is tracking taxable sales. For any particular sales-tax code, `IsTaxable` cannot be modified once the sales-tax code has been used in a transaction. If the “Do You Charge Sales Tax?” preference is set to Yes within QuickBooks, the default value of `IsTaxable` is true. If the “Do You Charge Sales Tax?” preference is set to No, the default value of `IsTaxable` is false. */
10521
+ IsTaxable: boolean;
10522
+ /** Desc gives a longer explanation of `Name`. */
10523
+ Desc?: string;
10524
+ /** For future use with international versions of QuickBooks. */
10525
+ ItemPurchaseTaxRef?: ItemPurchaseTaxRef;
10526
+ /** 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. */
10527
+ ItemSalesTaxRef?: ItemSalesTaxRef;
10528
+ }
10529
+ export interface SalesTaxCodeAddRq {
10530
+ SalesTaxCodeAdd: SalesTaxCodeAdd;
10531
+ /** 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. */
10532
+ IncludeRetElement?: string[] | string;
10533
+ }
10534
+ export interface SalesTaxCodeAddRs {
10535
+ SalesTaxCodeRet?: SalesTaxCodeRet;
10536
+ ErrorRecovery?: ErrorRecovery;
10537
+ }
10538
+ export interface SalesTaxCodeMod {
10539
+ /** 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. */
10540
+ ListID: string;
10541
+ /** 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. */
10542
+ EditSequence: string;
10543
+ /** Short name that will appear on sales forms to identify the tax status of an item. The `Desc` element gives a longer explanation of `Name`. `Name` must be unique, and it is not case-sensitive. */
10544
+ Name?: string;
10545
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
10546
+ IsActive?: boolean;
10547
+ /** Indicates whether this sales-tax code is tracking taxable sales. For any particular sales-tax code, `IsTaxable` cannot be modified once the sales-tax code has been used in a transaction. If the “Do You Charge Sales Tax?” preference is set to Yes within QuickBooks, the default value of `IsTaxable` is true. If the “Do You Charge Sales Tax?” preference is set to No, the default value of `IsTaxable` is false. */
10548
+ IsTaxable?: boolean;
10549
+ /** Desc gives a longer explanation of `Name`. */
10550
+ Desc?: string;
10551
+ /** For future use with international versions of QuickBooks. */
10552
+ ItemPurchaseTaxRef?: ItemPurchaseTaxRef;
10553
+ /** 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. */
10554
+ ItemSalesTaxRef?: ItemSalesTaxRef;
10555
+ }
10556
+ export interface SalesTaxCodeModRq {
10557
+ SalesTaxCodeMod: SalesTaxCodeMod;
10558
+ /** 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. */
10559
+ IncludeRetElement?: string[] | string;
10560
+ }
10561
+ export interface SalesTaxCodeModRs {
10562
+ SalesTaxCodeRet?: SalesTaxCodeRet;
10563
+ ErrorRecovery?: ErrorRecovery;
10564
+ }
10565
+ export interface SalesTaxCodeQueryRq {
10566
+ /** 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. */
10567
+ ListID?: string[] | string;
10568
+ /** 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. */
10569
+ FullName?: string[] | string;
10570
+ /** 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. */
10571
+ MaxReturned?: number;
10572
+ /** 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. */
10573
+ ActiveStatus?: ActiveStatus;
10574
+ /** 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). */
10575
+ FromModifiedDate?: string;
10576
+ /** 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). */
10577
+ ToModifiedDate?: string;
10578
+ /** Filters according to the object’s `Name`. */
10579
+ NameFilter?: NameFilter;
10580
+ /** Filters according to the object’s `Name`. */
10581
+ NameRangeFilter?: NameRangeFilter;
10582
+ /** 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. */
10583
+ IncludeRetElement?: string[] | string;
10584
+ }
10585
+ export interface SalesTaxCodeQueryRs {
10586
+ SalesTaxCodeRet: SalesTaxCodeRet[];
10587
+ }
9511
10588
  export interface SalesTaxCodeRef {
9512
10589
  /** 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. */
9513
10590
  ListID?: string;
9514
10591
  /** `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. */
9515
10592
  FullName?: string;
9516
10593
  }
10594
+ export interface SalesTaxCodeRet {
10595
+ /** 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. */
10596
+ ListID: string;
10597
+ /** Time the object was created. */
10598
+ TimeCreated: string;
10599
+ /** Time the object was last modified. */
10600
+ TimeModified: string;
10601
+ /** 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. */
10602
+ EditSequence: string;
10603
+ /** Short name that will appear on sales forms to identify the tax status of an item. The `Desc` element gives a longer explanation of `Name`. `Name` must be unique, and it is not case-sensitive. */
10604
+ Name: string;
10605
+ /** If `IsActive` is true, this object is currently enabled for use by QuickBooks. The default value is true. */
10606
+ IsActive?: boolean;
10607
+ /** Indicates whether this sales-tax code is tracking taxable sales. For any particular sales-tax code, `IsTaxable` cannot be modified once the sales-tax code has been used in a transaction. If the “Do You Charge Sales Tax?” preference is set to Yes within QuickBooks, the default value of `IsTaxable` is true. If the “Do You Charge Sales Tax?” preference is set to No, the default value of `IsTaxable` is false. */
10608
+ IsTaxable: boolean;
10609
+ /** Desc gives a longer explanation of `Name`. */
10610
+ Desc?: string;
10611
+ /** For future use with international versions of QuickBooks. */
10612
+ ItemPurchaseTaxRef?: ItemPurchaseTaxRef;
10613
+ /** 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. */
10614
+ ItemSalesTaxRef?: ItemSalesTaxRef;
10615
+ }
9517
10616
  /** @default: Canada */
9518
10617
  export type SalesTaxCountry = "Australia" | "Canada" | "UK" | "US";
9519
10618
  export interface SalesTaxReturnLineRef {
@@ -9690,6 +10789,7 @@ export interface SiteFilter {
9690
10789
  /** 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. */
9691
10790
  FullName?: string[] | string;
9692
10791
  }
10792
+ export type SOChannel = "Blank" | "Ecommerce";
9693
10793
  export type SpecialAccountType = "AccountsPayable" | "AccountsReceivable" | "CondenseItemAdjustmentExpenses" | "CostOfGoodsSold" | "DirectDepositLiabilities" | "Estimates" | "ExchangeGainLoss" | "InventoryAssets" | "ItemReceiptAccount" | "OpeningBalanceEquity" | "PayrollExpenses" | "PayrollLiabilities" | "PettyCash" | "PurchaseOrders" | "ReconciliationDifferences" | "RetainedEarnings" | "SalesOrders" | "SalesTaxPayable" | "UncategorizedExpenses" | "UncategorizedIncome" | "UndepositedFunds";
9694
10794
  export type SpecialItemType = "FinanceCharge" | "ReimbursableExpenseGroup" | "ReimbursableExpenseSubtotal";
9695
10795
  export interface SubscribedServices {