// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import MiniSearch from 'minisearch'; import * as fs from 'node:fs/promises'; import * as path from 'node:path'; import { getLogger } from './logger'; type PerLanguageData = { method?: string; example?: string; }; type MethodEntry = { name: string; endpoint: string; httpMethod: string; summary: string; description: string; stainlessPath: string; qualified: string; params?: string[]; response?: string; markdown?: string; perLanguage?: Record; }; type ProseChunk = { content: string; tag: string; sectionContext?: string; source?: string; }; type MiniSearchDocument = { id: string; kind: 'http_method' | 'prose'; name?: string; endpoint?: string; summary?: string; description?: string; qualified?: string; stainlessPath?: string; content?: string; sectionContext?: string; _original: Record; }; type SearchResult = { results: (string | Record)[]; }; const EMBEDDED_METHODS: MethodEntry[] = [ { name: 'create', endpoint: '/auth-sessions', httpMethod: 'post', summary: 'Create an auth session', description: "To launch the authentication flow, create an auth session and pass the returned session's `authFlowUrl` to the client for your end-user to visit in their browser. Demo: https://connect.conductor.is/qbd/demo", stainlessPath: '(resource) auth_sessions > (method) create', qualified: 'client.authSessions.create', params: [ 'endUserId: string;', 'publishableKey: string;', 'linkExpiryMins?: number;', 'redirectUrl?: string;', ], response: "{ id: string; authFlowUrl: string; clientSecret: string; createdAt: string; endUserId: string; expiresAt: string; objectType: 'auth_session'; redirectUrl: string; }", markdown: "## create\n\n`conductor.authSessions.create(endUserId: string, publishableKey: string, linkExpiryMins?: number, redirectUrl?: string): { id: string; authFlowUrl: string; clientSecret: string; createdAt: string; endUserId: string; expiresAt: string; objectType: 'auth_session'; redirectUrl: string; }`\n\n**post** `/auth-sessions`\n\nTo launch the authentication flow, create an auth session and pass the returned session's `authFlowUrl` to the client for your end-user to visit in their browser. Demo: https://connect.conductor.is/qbd/demo\n\n### Parameters\n\n- `endUserId: string`\n The ID of the end-user for whom to create the integration connection.\n\n- `publishableKey: string`\n Your Conductor publishable key, which we use to create the auth session's `authFlowUrl`.\n\n- `linkExpiryMins?: number`\n The number of minutes after which the auth session will expire. Must be at least 15 minutes and no more than 7 days. If not provided, defaults to 30 minutes.\n\n- `redirectUrl?: string`\n The URL to which Conductor will redirect the end-user to return to your app after they complete the authentication flow. If not provided, their browser tab will close instead.\n\n### Returns\n\n- `{ id: string; authFlowUrl: string; clientSecret: string; createdAt: string; endUserId: string; expiresAt: string; objectType: 'auth_session'; redirectUrl: string; }`\n\n - `id: string`\n - `authFlowUrl: string`\n - `clientSecret: string`\n - `createdAt: string`\n - `endUserId: string`\n - `expiresAt: string`\n - `objectType: 'auth_session'`\n - `redirectUrl: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst authSession = await conductor.authSessions.create({ endUserId: 'end_usr_1234567abcdefg', publishableKey: '{{YOUR_PUBLISHABLE_KEY}}' });\n\nconsole.log(authSession);\n```", perLanguage: { typescript: { method: 'client.authSessions.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst authSession = await conductor.authSessions.create({\n endUserId: 'end_usr_1234567abcdefg',\n publishableKey: '{{YOUR_PUBLISHABLE_KEY}}',\n});\n\nconsole.log(authSession.id);", }, python: { method: 'auth_sessions.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nauth_session = conductor.auth_sessions.create(\n end_user_id="end_usr_1234567abcdefg",\n publishable_key="{{YOUR_PUBLISHABLE_KEY}}",\n)\nprint(auth_session.id)', }, http: { example: 'curl https://api.conductor.is/v1/auth-sessions \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "endUserId": "end_usr_1234567abcdefg",\n "publishableKey": "{{YOUR_PUBLISHABLE_KEY}}",\n "redirectUrl": "https://example.com/auth/conductor-callback"\n }\'', }, }, }, { name: 'create', endpoint: '/end-users', httpMethod: 'post', summary: 'Create an end-user', description: 'Creates an end-user.', stainlessPath: '(resource) end_users > (method) create', qualified: 'client.endUsers.create', params: ['companyName: string;', 'email: string;', 'sourceId: string;'], response: "{ id: string; companyName: string; createdAt: string; email: string; integrationConnections: { id: string; createdAt: string; integrationSlug: 'quickbooks_desktop'; lastRequestAt: string; lastSuccessfulRequestAt: string; objectType: 'integration_connection'; }[]; objectType: 'end_user'; sourceId: string; }", markdown: "## create\n\n`conductor.endUsers.create(companyName: string, email: string, sourceId: string): { id: string; companyName: string; createdAt: string; email: string; integrationConnections: object[]; objectType: 'end_user'; sourceId: string; }`\n\n**post** `/end-users`\n\nCreates an end-user.\n\n### Parameters\n\n- `companyName: string`\n The end-user's company name that will be shown elsewhere in Conductor.\n\n- `email: string`\n The end-user's email address for identification purposes. Setting this field will not cause any emails to be sent.\n\n- `sourceId: string`\n The end-user's unique identifier from your system. Maps users between your database and Conductor. Must be unique for each user. If you have only one user, you may use any string value.\n\n### Returns\n\n- `{ id: string; companyName: string; createdAt: string; email: string; integrationConnections: { id: string; createdAt: string; integrationSlug: 'quickbooks_desktop'; lastRequestAt: string; lastSuccessfulRequestAt: string; objectType: 'integration_connection'; }[]; objectType: 'end_user'; sourceId: string; }`\n\n - `id: string`\n - `companyName: string`\n - `createdAt: string`\n - `email: string`\n - `integrationConnections: { id: string; createdAt: string; integrationSlug: 'quickbooks_desktop'; lastRequestAt: string; lastSuccessfulRequestAt: string; objectType: 'integration_connection'; }[]`\n - `objectType: 'end_user'`\n - `sourceId: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst endUser = await conductor.endUsers.create({\n companyName: 'Acme Inc.',\n email: 'alice@acme.com',\n sourceId: '12345678-abcd-abcd-example-1234567890ab',\n});\n\nconsole.log(endUser);\n```", perLanguage: { typescript: { method: 'client.endUsers.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst endUser = await conductor.endUsers.create({\n companyName: 'Acme Inc.',\n email: 'alice@acme.com',\n sourceId: '12345678-abcd-abcd-example-1234567890ab',\n});\n\nconsole.log(endUser.id);", }, python: { method: 'end_users.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nend_user = conductor.end_users.create(\n company_name="Acme Inc.",\n email="alice@acme.com",\n source_id="12345678-abcd-abcd-example-1234567890ab",\n)\nprint(end_user.id)', }, http: { example: 'curl https://api.conductor.is/v1/end-users \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "companyName": "Acme Inc.",\n "email": "alice@acme.com",\n "sourceId": "12345678-abcd-abcd-example-1234567890ab"\n }\'', }, }, }, { name: 'list', endpoint: '/end-users', httpMethod: 'get', summary: 'List all end-users', description: 'Returns a list of your end-users.', stainlessPath: '(resource) end_users > (method) list', qualified: 'client.endUsers.list', response: "{ data: { id: string; companyName: string; createdAt: string; email: string; integrationConnections: object[]; objectType: 'end_user'; sourceId: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.endUsers.list(): { data: end_user[]; objectType: 'list'; url: string; }`\n\n**get** `/end-users`\n\nReturns a list of your end-users.\n\n### Returns\n\n- `{ data: { id: string; companyName: string; createdAt: string; email: string; integrationConnections: object[]; objectType: 'end_user'; sourceId: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; companyName: string; createdAt: string; email: string; integrationConnections: { id: string; createdAt: string; integrationSlug: 'quickbooks_desktop'; lastRequestAt: string; lastSuccessfulRequestAt: string; objectType: 'integration_connection'; }[]; objectType: 'end_user'; sourceId: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst endUsers = await conductor.endUsers.list();\n\nconsole.log(endUsers);\n```", perLanguage: { typescript: { method: 'client.endUsers.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst endUsers = await conductor.endUsers.list();\n\nconsole.log(endUsers.data);", }, python: { method: 'end_users.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nend_users = conductor.end_users.list()\nprint(end_users.data)', }, http: { example: 'curl https://api.conductor.is/v1/end-users \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/end-users/{id}', httpMethod: 'get', summary: 'Retrieve an end-user', description: 'Retrieves an end-user object.', stainlessPath: '(resource) end_users > (method) retrieve', qualified: 'client.endUsers.retrieve', params: ['id: string;'], response: "{ id: string; companyName: string; createdAt: string; email: string; integrationConnections: { id: string; createdAt: string; integrationSlug: 'quickbooks_desktop'; lastRequestAt: string; lastSuccessfulRequestAt: string; objectType: 'integration_connection'; }[]; objectType: 'end_user'; sourceId: string; }", markdown: "## retrieve\n\n`conductor.endUsers.retrieve(id: string): { id: string; companyName: string; createdAt: string; email: string; integrationConnections: object[]; objectType: 'end_user'; sourceId: string; }`\n\n**get** `/end-users/{id}`\n\nRetrieves an end-user object.\n\n### Parameters\n\n- `id: string`\n The ID of the end-user to retrieve.\n\n### Returns\n\n- `{ id: string; companyName: string; createdAt: string; email: string; integrationConnections: { id: string; createdAt: string; integrationSlug: 'quickbooks_desktop'; lastRequestAt: string; lastSuccessfulRequestAt: string; objectType: 'integration_connection'; }[]; objectType: 'end_user'; sourceId: string; }`\n\n - `id: string`\n - `companyName: string`\n - `createdAt: string`\n - `email: string`\n - `integrationConnections: { id: string; createdAt: string; integrationSlug: 'quickbooks_desktop'; lastRequestAt: string; lastSuccessfulRequestAt: string; objectType: 'integration_connection'; }[]`\n - `objectType: 'end_user'`\n - `sourceId: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst endUser = await conductor.endUsers.retrieve('end_usr_1234567abcdefg');\n\nconsole.log(endUser);\n```", perLanguage: { typescript: { method: 'client.endUsers.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst endUser = await conductor.endUsers.retrieve('end_usr_1234567abcdefg');\n\nconsole.log(endUser.id);", }, python: { method: 'end_users.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nend_user = conductor.end_users.retrieve(\n "end_usr_1234567abcdefg",\n)\nprint(end_user.id)', }, http: { example: 'curl https://api.conductor.is/v1/end-users/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/end-users/{id}', httpMethod: 'delete', summary: 'Delete an end-user', description: 'Permanently deletes an end-user object and all of its connections.', stainlessPath: '(resource) end_users > (method) delete', qualified: 'client.endUsers.delete', params: ['id: string;'], response: "{ id: string; deleted: boolean; objectType: 'end_user'; }", markdown: "## delete\n\n`conductor.endUsers.delete(id: string): { id: string; deleted: boolean; objectType: 'end_user'; }`\n\n**delete** `/end-users/{id}`\n\nPermanently deletes an end-user object and all of its connections.\n\n### Parameters\n\n- `id: string`\n The ID of the end-user to delete.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'end_user'; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'end_user'`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst endUser = await conductor.endUsers.delete('end_usr_1234567abcdefg');\n\nconsole.log(endUser);\n```", perLanguage: { typescript: { method: 'client.endUsers.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst endUser = await conductor.endUsers.delete('end_usr_1234567abcdefg');\n\nconsole.log(endUser.id);", }, python: { method: 'end_users.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nend_user = conductor.end_users.delete(\n "end_usr_1234567abcdefg",\n)\nprint(end_user.id)', }, http: { example: 'curl https://api.conductor.is/v1/end-users/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'passthrough', endpoint: '/end-users/{id}/passthrough/{integrationSlug}', httpMethod: 'post', summary: 'Passthrough', description: "Rare escape hatch for sending raw QuickBooks Desktop qbXML request objects directly. Prefer Conductor's native QuickBooks Desktop endpoints whenever possible: Conductor already exposes more than 250 typed QBD endpoints, covers nearly the entire underlying qbXML API surface, returns all documented response fields in a stable typed JSON shape, and powers Conductor SDK types, documentation, IDE autocomplete, and the API Playground. Use passthrough only when you need one of the few qbXML operations that is not yet available as a native Conductor endpoint, or while testing an unsupported qbXML operation. Known gaps are listed in [Missing QBD types](/api-ref/missing-qbd-types).", stainlessPath: '(resource) end_users > (method) passthrough', qualified: 'client.endUsers.passthrough', params: ['id: string;', "integrationSlug: 'quickbooks_desktop';", 'qbd_payload: object;'], response: 'object', markdown: "## passthrough\n\n`conductor.endUsers.passthrough(id: string, integrationSlug: 'quickbooks_desktop', qbd_payload: object): object`\n\n**post** `/end-users/{id}/passthrough/{integrationSlug}`\n\nRare escape hatch for sending raw QuickBooks Desktop qbXML request objects directly. Prefer Conductor's native QuickBooks Desktop endpoints whenever possible: Conductor already exposes more than 250 typed QBD endpoints, covers nearly the entire underlying qbXML API surface, returns all documented response fields in a stable typed JSON shape, and powers Conductor SDK types, documentation, IDE autocomplete, and the API Playground. Use passthrough only when you need one of the few qbXML operations that is not yet available as a native Conductor endpoint, or while testing an unsupported qbXML operation. Known gaps are listed in [Missing QBD types](/api-ref/missing-qbd-types).\n\n### Parameters\n\n- `id: string`\n The ID of the end-user who owns the integration connection.\n\n- `integrationSlug: 'quickbooks_desktop'`\n The integration identifier for the end-user's connection.\n\n- `qbd_payload: object`\n The raw qbXML request object to send to the integration connection. For QuickBooks Desktop, use a qbXML request wrapper such as `InvoiceQueryRq` or `CustomerQueryRq`. This body is forwarded directly and does not use Conductor field names.\n\n### Returns\n\n- `object`\n The raw response from the integration connection. For QuickBooks Desktop, this is the qbXML response converted to JSON.\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.endUsers.passthrough('quickbooks_desktop', {\n id: 'end_usr_1234567abcdefg',\n qbd_payload: { foo: 'bar' },\n});\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.endUsers.passthrough', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.endUsers.passthrough('quickbooks_desktop', {\n id: 'end_usr_1234567abcdefg',\n qbd_payload: { foo: 'bar' },\n});\n\nconsole.log(response);", }, python: { method: 'end_users.passthrough', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.end_users.passthrough(\n integration_slug="quickbooks_desktop",\n id="end_usr_1234567abcdefg",\n qbd_payload={\n "foo": "bar"\n },\n)\nprint(response)', }, http: { example: 'curl https://api.conductor.is/v1/end-users/$ID/passthrough/$INTEGRATION_SLUG \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "foo": "bar"\n }\'', }, }, }, { name: 'health_check', endpoint: '/quickbooks-desktop/health-check', httpMethod: 'get', summary: 'Health check', description: 'Checks whether the specified QuickBooks Desktop connection is active and can process requests end-to-end. This is useful for showing a "connection status" indicator in your app. If an error occurs, the typical Conductor error response will be returned. As with any request to QuickBooks Desktop, the health check may fail if the application is not running, the wrong company file is open, or if a modal dialog is open. Timeout is 60 seconds.', stainlessPath: '(resource) qbd > (method) health_check', qualified: 'client.qbd.healthCheck', params: ['Conductor-End-User-Id: string;'], response: "{ duration: number; status: 'ok'; }", markdown: "## health_check\n\n`conductor.qbd.healthCheck(Conductor-End-User-Id: string): { duration: number; status: 'ok'; }`\n\n**get** `/quickbooks-desktop/health-check`\n\nChecks whether the specified QuickBooks Desktop connection is active and can process requests end-to-end. This is useful for showing a \"connection status\" indicator in your app. If an error occurs, the typical Conductor error response will be returned. As with any request to QuickBooks Desktop, the health check may fail if the application is not running, the wrong company file is open, or if a modal dialog is open. Timeout is 60 seconds.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ duration: number; status: 'ok'; }`\n\n - `duration: number`\n - `status: 'ok'`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.healthCheck({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.healthCheck', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.healthCheck({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response.duration);", }, python: { method: 'qbd.health_check', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.health_check(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.duration)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/health-check \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/account-tax-lines', httpMethod: 'get', summary: 'List all account tax lines', description: 'Returns a list of account tax lines.\n\n**NOTE:** QuickBooks Desktop does not support pagination for account tax lines; hence, there is no `cursor` parameter. Users typically have few account tax lines.', stainlessPath: '(resource) qbd.account_tax_lines > (method) list', qualified: 'client.qbd.accountTaxLines.list', params: ['Conductor-End-User-Id: string;'], response: "{ data: { taxLineId: number; taxLineName: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.accountTaxLines.list(Conductor-End-User-Id: string): { data: account_tax_line[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/account-tax-lines`\n\nReturns a list of account tax lines.\n\n**NOTE:** QuickBooks Desktop does not support pagination for account tax lines; hence, there is no `cursor` parameter. Users typically have few account tax lines.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ data: { taxLineId: number; taxLineName: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { taxLineId: number; taxLineName: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst accountTaxLines = await conductor.qbd.accountTaxLines.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(accountTaxLines);\n```", perLanguage: { typescript: { method: 'client.qbd.accountTaxLines.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst accountTaxLines = await conductor.qbd.accountTaxLines.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(accountTaxLines.data);", }, python: { method: 'qbd.account_tax_lines.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\naccount_tax_lines = conductor.qbd.account_tax_lines.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(account_tax_lines.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/account-tax-lines \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/accounts', httpMethod: 'post', summary: 'Create an account', description: 'Creates a new financial account. QuickBooks requires you to pick a supported account type for the chart of accounts, and non-posting types can’t be created through the API.', stainlessPath: '(resource) qbd.accounts > (method) create', qualified: 'client.qbd.accounts.create', params: [ 'accountType: string;', 'name: string;', 'Conductor-End-User-Id: string;', 'accountNumber?: string;', 'bankAccountNumber?: string;', 'currencyId?: string;', 'description?: string;', 'isActive?: boolean;', 'openingBalance?: string;', 'openingBalanceDate?: string;', 'parentId?: string;', 'salesTaxCodeId?: string;', 'taxLineId?: number;', ], response: "{ id: string; accountNumber: string; accountType: string; balance: string; bankAccountNumber: string; cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; fullName: string; isActive: boolean; isTaxAccount: boolean; name: string; objectType: 'qbd_account'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; specialAccountType: string; sublevel: number; taxLineDetails: { taxLineId: number; taxLineName: string; }; totalBalance: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.accounts.create(accountType: string, name: string, Conductor-End-User-Id: string, accountNumber?: string, bankAccountNumber?: string, currencyId?: string, description?: string, isActive?: boolean, openingBalance?: string, openingBalanceDate?: string, parentId?: string, salesTaxCodeId?: string, taxLineId?: number): { id: string; accountNumber: string; accountType: string; balance: string; bankAccountNumber: string; cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'; createdAt: string; currency: object; customFields: object[]; description: string; fullName: string; isActive: boolean; isTaxAccount: boolean; name: string; objectType: 'qbd_account'; parent: object; revisionNumber: string; salesTaxCode: object; specialAccountType: string; sublevel: number; taxLineDetails: object; totalBalance: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/accounts`\n\nCreates a new financial account. QuickBooks requires you to pick a supported account type for the chart of accounts, and non-posting types can’t be created through the API.\n\n### Parameters\n\n- `accountType: string`\n The classification of this account, indicating its purpose within the chart of accounts.\n\n**NOTE**: You cannot create an account of type `non_posting` through the API because QuickBooks creates these accounts behind the scenes.\n\n- `name: string`\n The case-insensitive name of this account. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two accounts could both have the `name` \"Accounts-Payable\", but they could have unique `fullName` values, such as \"Corporate:Accounts-Payable\" and \"Finance:Accounts-Payable\".\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountNumber?: string`\n The account's account number, which appears in the QuickBooks chart of accounts, reports, and graphs.\n\nNote that if the \"Use Account Numbers\" preference is turned off in QuickBooks, the account number may not be visible in the user interface, but it can still be set and retrieved through the API.\n\n- `bankAccountNumber?: string`\n The bank account number or identifying note for this account. Access to this field may be restricted based on permissions.\n\n- `currencyId?: string`\n The account's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.\n\n- `description?: string`\n A description of this account.\n\n- `isActive?: boolean`\n Indicates whether this account is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `openingBalance?: string`\n The amount of money in, or the value of, this account as of `openingBalanceDate`. On a bank statement, this would be the amount of money in the account at the beginning of the statement period.\n\n- `openingBalanceDate?: string`\n The date of the opening balance of this account, in ISO 8601 format (YYYY-MM-DD).\n\n- `parentId?: string`\n The parent account one level above this one in the hierarchy. For example, if this account has a `fullName` of \"Corporate:Accounts-Payable\", its parent has a `fullName` of \"Corporate\". If this account is at the top level, this field will be `null`.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for transactions with this account, determining whether the transactions are taxable or non-taxable. This can be overridden at the transaction or transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `taxLineId?: number`\n The identifier of the tax line associated with this account. You can see a list of all available values for this field by calling the endpoint for account tax lines.\n\n### Returns\n\n- `{ id: string; accountNumber: string; accountType: string; balance: string; bankAccountNumber: string; cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; fullName: string; isActive: boolean; isTaxAccount: boolean; name: string; objectType: 'qbd_account'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; specialAccountType: string; sublevel: number; taxLineDetails: { taxLineId: number; taxLineName: string; }; totalBalance: string; updatedAt: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `accountType: string`\n - `balance: string`\n - `bankAccountNumber: string`\n - `cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `fullName: string`\n - `isActive: boolean`\n - `isTaxAccount: boolean`\n - `name: string`\n - `objectType: 'qbd_account'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `specialAccountType: string`\n - `sublevel: number`\n - `taxLineDetails: { taxLineId: number; taxLineName: string; }`\n - `totalBalance: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst account = await conductor.qbd.accounts.create({\n accountType: 'bank',\n name: 'Accounts-Payable',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(account);\n```", perLanguage: { typescript: { method: 'client.qbd.accounts.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst account = await conductor.qbd.accounts.create({\n accountType: 'bank',\n name: 'Accounts-Payable',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(account.id);", }, python: { method: 'qbd.accounts.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\naccount = conductor.qbd.accounts.create(\n account_type="bank",\n name="Accounts-Payable",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(account.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/accounts \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "accountType": "bank",\n "name": "Accounts-Payable",\n "accountNumber": "1010",\n "bankAccountNumber": "123456789",\n "currencyId": "80000001-1234567890",\n "description": "Accounts-payable are the amounts owed to suppliers for goods and services purchased on credit.",\n "isActive": true,\n "openingBalance": "1000.00",\n "openingBalanceDate": "2023-01-01",\n "parentId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "taxLineId": 123\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/accounts', httpMethod: 'get', summary: 'List all accounts', description: 'Returns a list of accounts.\n\n**NOTE:** QuickBooks Desktop does not support pagination for accounts; hence, there is no `cursor` parameter. Users typically have few accounts.', stainlessPath: '(resource) qbd.accounts > (method) list', qualified: 'client.qbd.accounts.list', params: [ 'Conductor-End-User-Id: string;', 'accountType?: string;', 'currencyIds?: string[];', 'fullNames?: string[];', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; accountNumber: string; accountType: string; balance: string; bankAccountNumber: string; cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'; createdAt: string; currency: object; customFields: object[]; description: string; fullName: string; isActive: boolean; isTaxAccount: boolean; name: string; objectType: 'qbd_account'; parent: object; revisionNumber: string; salesTaxCode: object; specialAccountType: string; sublevel: number; taxLineDetails: object; totalBalance: string; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.accounts.list(Conductor-End-User-Id: string, accountType?: string, currencyIds?: string[], fullNames?: string[], ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: account[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/accounts`\n\nReturns a list of accounts.\n\n**NOTE:** QuickBooks Desktop does not support pagination for accounts; hence, there is no `cursor` parameter. Users typically have few accounts.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountType?: string`\n Filter for accounts of this type.\n\n- `currencyIds?: string[]`\n Filter for accounts in these currencies.\n\n- `fullNames?: string[]`\n Filter for specific accounts by their full-name(s), case-insensitive. Like `id`, `fullName` is a unique identifier for an account, formed by by combining the names of its parent objects with its own `name`, separated by colons. For example, if an account is under \"Corporate\" and has the `name` \"Accounts-Payable\", its `fullName` would be \"Corporate:Accounts-Payable\".\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `ids?: string[]`\n Filter for specific accounts by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for accounts. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all accounts without limit, unlike paginated endpoints which default to 150 records. This is acceptable because accounts typically have low record counts.\n\n- `nameContains?: string`\n Filter for accounts whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for accounts whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for accounts whose `name` is alphabetically greater than or equal to this value.\n\n- `nameStartsWith?: string`\n Filter for accounts whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for accounts whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for accounts that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for accounts updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for accounts updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; accountNumber: string; accountType: string; balance: string; bankAccountNumber: string; cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'; createdAt: string; currency: object; customFields: object[]; description: string; fullName: string; isActive: boolean; isTaxAccount: boolean; name: string; objectType: 'qbd_account'; parent: object; revisionNumber: string; salesTaxCode: object; specialAccountType: string; sublevel: number; taxLineDetails: object; totalBalance: string; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; accountNumber: string; accountType: string; balance: string; bankAccountNumber: string; cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; fullName: string; isActive: boolean; isTaxAccount: boolean; name: string; objectType: 'qbd_account'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; specialAccountType: string; sublevel: number; taxLineDetails: { taxLineId: number; taxLineName: string; }; totalBalance: string; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst accounts = await conductor.qbd.accounts.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(accounts);\n```", perLanguage: { typescript: { method: 'client.qbd.accounts.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst accounts = await conductor.qbd.accounts.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(accounts.data);", }, python: { method: 'qbd.accounts.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\naccounts = conductor.qbd.accounts.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(accounts.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/accounts \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/accounts/{id}', httpMethod: 'get', summary: 'Retrieve an account', description: 'Retrieves an account by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific accounts by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.accounts > (method) retrieve', qualified: 'client.qbd.accounts.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; accountNumber: string; accountType: string; balance: string; bankAccountNumber: string; cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; fullName: string; isActive: boolean; isTaxAccount: boolean; name: string; objectType: 'qbd_account'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; specialAccountType: string; sublevel: number; taxLineDetails: { taxLineId: number; taxLineName: string; }; totalBalance: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.accounts.retrieve(id: string, Conductor-End-User-Id: string): { id: string; accountNumber: string; accountType: string; balance: string; bankAccountNumber: string; cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'; createdAt: string; currency: object; customFields: object[]; description: string; fullName: string; isActive: boolean; isTaxAccount: boolean; name: string; objectType: 'qbd_account'; parent: object; revisionNumber: string; salesTaxCode: object; specialAccountType: string; sublevel: number; taxLineDetails: object; totalBalance: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/accounts/{id}`\n\nRetrieves an account by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific accounts by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the account to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; accountNumber: string; accountType: string; balance: string; bankAccountNumber: string; cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; fullName: string; isActive: boolean; isTaxAccount: boolean; name: string; objectType: 'qbd_account'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; specialAccountType: string; sublevel: number; taxLineDetails: { taxLineId: number; taxLineName: string; }; totalBalance: string; updatedAt: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `accountType: string`\n - `balance: string`\n - `bankAccountNumber: string`\n - `cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `fullName: string`\n - `isActive: boolean`\n - `isTaxAccount: boolean`\n - `name: string`\n - `objectType: 'qbd_account'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `specialAccountType: string`\n - `sublevel: number`\n - `taxLineDetails: { taxLineId: number; taxLineName: string; }`\n - `totalBalance: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst account = await conductor.qbd.accounts.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(account);\n```", perLanguage: { typescript: { method: 'client.qbd.accounts.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst account = await conductor.qbd.accounts.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(account.id);", }, python: { method: 'qbd.accounts.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\naccount = conductor.qbd.accounts.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(account.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/accounts/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/accounts/{id}', httpMethod: 'post', summary: 'Update an account', description: 'Updates an existing financial account. You can rename the account, adjust numbering, or change supported attributes, but QuickBooks won’t let you convert it to a non-posting type via the API.', stainlessPath: '(resource) qbd.accounts > (method) update', qualified: 'client.qbd.accounts.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'accountNumber?: string;', 'accountType?: string;', 'bankAccountNumber?: string;', 'currencyId?: string;', 'description?: string;', 'isActive?: boolean;', 'name?: string;', 'openingBalance?: string;', 'openingBalanceDate?: string;', 'parentId?: string;', 'salesTaxCodeId?: string;', 'taxLineId?: number;', ], response: "{ id: string; accountNumber: string; accountType: string; balance: string; bankAccountNumber: string; cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; fullName: string; isActive: boolean; isTaxAccount: boolean; name: string; objectType: 'qbd_account'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; specialAccountType: string; sublevel: number; taxLineDetails: { taxLineId: number; taxLineName: string; }; totalBalance: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.accounts.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, accountNumber?: string, accountType?: string, bankAccountNumber?: string, currencyId?: string, description?: string, isActive?: boolean, name?: string, openingBalance?: string, openingBalanceDate?: string, parentId?: string, salesTaxCodeId?: string, taxLineId?: number): { id: string; accountNumber: string; accountType: string; balance: string; bankAccountNumber: string; cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'; createdAt: string; currency: object; customFields: object[]; description: string; fullName: string; isActive: boolean; isTaxAccount: boolean; name: string; objectType: 'qbd_account'; parent: object; revisionNumber: string; salesTaxCode: object; specialAccountType: string; sublevel: number; taxLineDetails: object; totalBalance: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/accounts/{id}`\n\nUpdates an existing financial account. You can rename the account, adjust numbering, or change supported attributes, but QuickBooks won’t let you convert it to a non-posting type via the API.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the account to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the account object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountNumber?: string`\n The account's account number, which appears in the QuickBooks chart of accounts, reports, and graphs.\n\nNote that if the \"Use Account Numbers\" preference is turned off in QuickBooks, the account number may not be visible in the user interface, but it can still be set and retrieved through the API.\n\n- `accountType?: string`\n The classification of this account, indicating its purpose within the chart of accounts.\n\n**NOTE**: You cannot create an account of type `non_posting` through the API because QuickBooks creates these accounts behind the scenes.\n\n- `bankAccountNumber?: string`\n The bank account number or identifying note for this account. Access to this field may be restricted based on permissions.\n\n- `currencyId?: string`\n The account's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.\n\n- `description?: string`\n A description of this account.\n\n- `isActive?: boolean`\n Indicates whether this account is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `name?: string`\n The case-insensitive name of this account. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two accounts could both have the `name` \"Accounts-Payable\", but they could have unique `fullName` values, such as \"Corporate:Accounts-Payable\" and \"Finance:Accounts-Payable\".\n\nMaximum length: 31 characters.\n\n- `openingBalance?: string`\n The amount of money in, or the value of, this account as of `openingBalanceDate`. On a bank statement, this would be the amount of money in the account at the beginning of the statement period.\n\n- `openingBalanceDate?: string`\n The date of the opening balance of this account, in ISO 8601 format (YYYY-MM-DD).\n\n- `parentId?: string`\n The parent account one level above this one in the hierarchy. For example, if this account has a `fullName` of \"Corporate:Accounts-Payable\", its parent has a `fullName` of \"Corporate\". If this account is at the top level, this field will be `null`.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for transactions with this account, determining whether the transactions are taxable or non-taxable. This can be overridden at the transaction or transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `taxLineId?: number`\n The identifier of the tax line associated with this account. You can see a list of all available values for this field by calling the endpoint for account tax lines.\n\n### Returns\n\n- `{ id: string; accountNumber: string; accountType: string; balance: string; bankAccountNumber: string; cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; fullName: string; isActive: boolean; isTaxAccount: boolean; name: string; objectType: 'qbd_account'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; specialAccountType: string; sublevel: number; taxLineDetails: { taxLineId: number; taxLineName: string; }; totalBalance: string; updatedAt: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `accountType: string`\n - `balance: string`\n - `bankAccountNumber: string`\n - `cashFlowClassification: 'financing' | 'investing' | 'none' | 'not_applicable' | 'operating'`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `fullName: string`\n - `isActive: boolean`\n - `isTaxAccount: boolean`\n - `name: string`\n - `objectType: 'qbd_account'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `specialAccountType: string`\n - `sublevel: number`\n - `taxLineDetails: { taxLineId: number; taxLineName: string; }`\n - `totalBalance: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst account = await conductor.qbd.accounts.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(account);\n```", perLanguage: { typescript: { method: 'client.qbd.accounts.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst account = await conductor.qbd.accounts.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(account.id);", }, python: { method: 'qbd.accounts.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\naccount = conductor.qbd.accounts.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(account.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/accounts/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "accountNumber": "1010",\n "accountType": "bank",\n "bankAccountNumber": "123456789",\n "currencyId": "80000001-1234567890",\n "description": "Accounts-payable are the amounts owed to suppliers for goods and services purchased on credit.",\n "isActive": true,\n "name": "Accounts-Payable",\n "openingBalance": "1000.00",\n "openingBalanceDate": "2023-01-01",\n "parentId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "taxLineId": 123\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/bill-check-payments', httpMethod: 'post', summary: 'Create a bill check payment', description: 'Records a check payment against one vendor’s open bills. Each bill allocation must include a payment amount, discount, or vendor credit, and the accounts payable account has to match the one used on the bills you’re closing.', stainlessPath: '(resource) qbd.bill_check_payments > (method) create', qualified: 'client.qbd.billCheckPayments.create', params: [ 'applyToTransactions: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[];', 'bankAccountId: string;', 'transactionDate: string;', 'vendorId: string;', 'Conductor-End-User-Id: string;', 'exchangeRate?: number;', 'externalId?: string;', 'isQueuedForPrint?: boolean;', 'memo?: string;', 'payablesAccountId?: string;', 'refNumber?: string;', ], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: object; discountAmount: string; discountClass: object; linkedTransactions: object[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; bankAccount: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; isQueuedForPrint: boolean; memo: string; objectType: 'qbd_bill_check_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }", markdown: "## create\n\n`conductor.qbd.billCheckPayments.create(applyToTransactions: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[], bankAccountId: string, transactionDate: string, vendorId: string, Conductor-End-User-Id: string, exchangeRate?: number, externalId?: string, isQueuedForPrint?: boolean, memo?: string, payablesAccountId?: string, refNumber?: string): { id: string; address: object; amount: string; amountInHomeCurrency: string; appliedToTransactions: object[]; bankAccount: object; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; externalId: string; isQueuedForPrint: boolean; memo: string; objectType: 'qbd_bill_check_payment'; payablesAccount: object; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**post** `/quickbooks-desktop/bill-check-payments`\n\nRecords a check payment against one vendor’s open bills. Each bill allocation must include a payment amount, discount, or vendor credit, and the accounts payable account has to match the one used on the bills you’re closing.\n\n### Parameters\n\n- `applyToTransactions: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[]`\n The bills to be paid by this bill check payment. This will create a link between this bill check payment and the specified bills.\n\n**IMPORTANT**: In each `applyToTransactions` object, you must specify either `paymentAmount`, `applyCredits`, `discountAmount`, or any combination of these; if none of these are specified, you will receive an error for an empty transaction.\n\n**IMPORTANT**: The target bill must have `isPaid=false`, otherwise, QuickBooks will report this object as \"cannot be found\".\n\n- `bankAccountId: string`\n The bank account from which the funds are being drawn for this bill check payment; e.g., Checking or Savings. This bill check payment will decrease the balance of this account.\n\n- `transactionDate: string`\n The date of this bill check payment, in ISO 8601 format (YYYY-MM-DD).\n\n- `vendorId: string`\n The vendor who sent the bill(s) that this bill check payment is paying and who will receive this payment.\n\n**IMPORTANT**: This vendor must match the `vendor` on the bill(s) specified in `applyToTransactions`; otherwise, QuickBooks will say the `transactionId` in `applyToTransactions` \"does not exist\".\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `exchangeRate?: number`\n The market exchange rate between this bill check payment's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this bill check payment is included in the queue of documents for QuickBooks to print.\n\n- `memo?: string`\n A memo or note for this bill check payment.\n\n- `payablesAccountId?: string`\n The Accounts-Payable (A/P) account to which this bill check payment is assigned, used for accounts-payable tracking. If omitted, QuickBooks Desktop uses the default A/P account configured in the company file.\n\n**IMPORTANT**: If this bill check payment is linked to other transactions, this A/P account must match the `payablesAccount` used in those other transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this bill check payment, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\n**IMPORTANT**: For checks, this field is the check number.\n\nMaximum length: 11 characters.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; bankAccount: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; isQueuedForPrint: boolean; memo: string; objectType: 'qbd_bill_check_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `bankAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `isQueuedForPrint: boolean`\n - `memo: string`\n - `objectType: 'qbd_bill_check_payment'`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst billCheckPayment = await conductor.qbd.billCheckPayments.create({\n applyToTransactions: [{ transactionId: '123ABC-1234567890' }],\n bankAccountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(billCheckPayment);\n```", perLanguage: { typescript: { method: 'client.qbd.billCheckPayments.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst billCheckPayment = await conductor.qbd.billCheckPayments.create({\n applyToTransactions: [{ transactionId: '123ABC-1234567890' }],\n bankAccountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(billCheckPayment.id);", }, python: { method: 'qbd.bill_check_payments.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbill_check_payment = conductor.qbd.bill_check_payments.create(\n apply_to_transactions=[{\n "transaction_id": "123ABC-1234567890"\n }],\n bank_account_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n vendor_id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(bill_check_payment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bill-check-payments \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "applyToTransactions": [\n {\n "transactionId": "123ABC-1234567890"\n }\n ],\n "bankAccountId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "vendorId": "80000001-1234567890",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isQueuedForPrint": true,\n "memo": "Payment for office supplies - Invoice INV-1234",\n "payablesAccountId": "80000001-1234567890",\n "refNumber": "CHECK-1234"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/bill-check-payments', httpMethod: 'get', summary: 'List all bill check payments', description: 'Returns a list of bill check payments. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.bill_check_payments > (method) list', qualified: 'client.qbd.billCheckPayments.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'ids?: string[];', 'includeLineItems?: boolean;', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', 'vendorIds?: string[];', ], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: object; discountAmount: string; discountClass: object; linkedTransactions: object[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; bankAccount: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; isQueuedForPrint: boolean; memo: string; objectType: 'qbd_bill_check_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }", markdown: "## list\n\n`conductor.qbd.billCheckPayments.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, ids?: string[], includeLineItems?: boolean, limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string, vendorIds?: string[]): { id: string; address: object; amount: string; amountInHomeCurrency: string; appliedToTransactions: object[]; bankAccount: object; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; externalId: string; isQueuedForPrint: boolean; memo: string; objectType: 'qbd_bill_check_payment'; payablesAccount: object; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**get** `/quickbooks-desktop/bill-check-payments`\n\nReturns a list of bill check payments. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for bill check payments associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for bill check payments in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific bill check payments by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for bill check payments whose `refNumber` contains this substring. (For checks, this field is the check number.)\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for bill check payments whose `refNumber` ends with this substring. (For checks, this field is the check number.)\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for bill check payments whose `refNumber` is greater than or equal to this value. (For checks, this field is the check number.) If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific bill check payments by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for bill check payments whose `refNumber` starts with this substring. (For checks, this field is the check number.)\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for bill check payments whose `refNumber` is less than or equal to this value. (For checks, this field is the check number.) If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for bill check payments whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for bill check payments whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for bill check payments updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for bill check payments updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `vendorIds?: string[]`\n Filter for bill check payments sent to these vendors. These are the vendors who sent the bills paid by these checks.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; bankAccount: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; isQueuedForPrint: boolean; memo: string; objectType: 'qbd_bill_check_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `bankAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `isQueuedForPrint: boolean`\n - `memo: string`\n - `objectType: 'qbd_bill_check_payment'`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const billCheckPayment of conductor.qbd.billCheckPayments.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(billCheckPayment);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.billCheckPayments.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const billCheckPayment of conductor.qbd.billCheckPayments.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(billCheckPayment.id);\n}", }, python: { method: 'qbd.bill_check_payments.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.bill_check_payments.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bill-check-payments \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/bill-check-payments/{id}', httpMethod: 'get', summary: 'Retrieve a bill check payment', description: 'Retrieves a bill check payment by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific bill check payments by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.bill_check_payments > (method) retrieve', qualified: 'client.qbd.billCheckPayments.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: object; discountAmount: string; discountClass: object; linkedTransactions: object[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; bankAccount: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; isQueuedForPrint: boolean; memo: string; objectType: 'qbd_bill_check_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }", markdown: "## retrieve\n\n`conductor.qbd.billCheckPayments.retrieve(id: string, Conductor-End-User-Id: string): { id: string; address: object; amount: string; amountInHomeCurrency: string; appliedToTransactions: object[]; bankAccount: object; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; externalId: string; isQueuedForPrint: boolean; memo: string; objectType: 'qbd_bill_check_payment'; payablesAccount: object; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**get** `/quickbooks-desktop/bill-check-payments/{id}`\n\nRetrieves a bill check payment by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific bill check payments by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the bill check payment to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; bankAccount: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; isQueuedForPrint: boolean; memo: string; objectType: 'qbd_bill_check_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `bankAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `isQueuedForPrint: boolean`\n - `memo: string`\n - `objectType: 'qbd_bill_check_payment'`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst billCheckPayment = await conductor.qbd.billCheckPayments.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(billCheckPayment);\n```", perLanguage: { typescript: { method: 'client.qbd.billCheckPayments.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst billCheckPayment = await conductor.qbd.billCheckPayments.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(billCheckPayment.id);", }, python: { method: 'qbd.bill_check_payments.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbill_check_payment = conductor.qbd.bill_check_payments.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(bill_check_payment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bill-check-payments/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/bill-check-payments/{id}', httpMethod: 'post', summary: 'Update a bill check payment', description: 'Updates a bill check payment so you can reallocate how amounts, discounts, or credits are applied to the vendor’s bills. When you update a payment, QuickBooks clears the prior allocations but keeps any existing vendor credits unchanged, so submit the full list of bill applications in this request.', stainlessPath: '(resource) qbd.bill_check_payments > (method) update', qualified: 'client.qbd.billCheckPayments.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'amount?: string;', 'applyToTransactions?: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[];', 'bankAccountId?: string;', 'exchangeRate?: number;', 'isQueuedForPrint?: boolean;', 'memo?: string;', 'refNumber?: string;', 'transactionDate?: string;', ], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: object; discountAmount: string; discountClass: object; linkedTransactions: object[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; bankAccount: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; isQueuedForPrint: boolean; memo: string; objectType: 'qbd_bill_check_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }", markdown: "## update\n\n`conductor.qbd.billCheckPayments.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, amount?: string, applyToTransactions?: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[], bankAccountId?: string, exchangeRate?: number, isQueuedForPrint?: boolean, memo?: string, refNumber?: string, transactionDate?: string): { id: string; address: object; amount: string; amountInHomeCurrency: string; appliedToTransactions: object[]; bankAccount: object; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; externalId: string; isQueuedForPrint: boolean; memo: string; objectType: 'qbd_bill_check_payment'; payablesAccount: object; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**post** `/quickbooks-desktop/bill-check-payments/{id}`\n\nUpdates a bill check payment so you can reallocate how amounts, discounts, or credits are applied to the vendor’s bills. When you update a payment, QuickBooks clears the prior allocations but keeps any existing vendor credits unchanged, so submit the full list of bill applications in this request.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the bill check payment to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the bill check payment object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `amount?: string`\n The monetary amount of this bill check payment, represented as a decimal string.\n\nDecimal string format: exactly 2 decimal places when cents are included and up to 13 digits before the decimal point (for example, \"123.45\").\n\n- `applyToTransactions?: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[]`\n The bills to be paid by this bill check payment. This will create a link between this bill check payment and the specified bills.\n\n**IMPORTANT**: In each `applyToTransactions` object, you must specify either `paymentAmount`, `applyCredits`, `discountAmount`, or any combination of these; if none of these are specified, you will receive an error for an empty transaction.\n\n**IMPORTANT**: The target bill must have `isPaid=false`, otherwise, QuickBooks will report this object as \"cannot be found\".\n\n- `bankAccountId?: string`\n The bank account from which the funds are being drawn for this bill check payment; e.g., Checking or Savings. This bill check payment will decrease the balance of this account.\n\n- `exchangeRate?: number`\n The market exchange rate between this bill check payment's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this bill check payment is included in the queue of documents for QuickBooks to print.\n\n- `memo?: string`\n A memo or note for this bill check payment.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this bill check payment, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: For checks, this field is the check number.\n\nMaximum length: 11 characters.\n\n- `transactionDate?: string`\n The date of this bill check payment, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; bankAccount: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; isQueuedForPrint: boolean; memo: string; objectType: 'qbd_bill_check_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `bankAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `isQueuedForPrint: boolean`\n - `memo: string`\n - `objectType: 'qbd_bill_check_payment'`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst billCheckPayment = await conductor.qbd.billCheckPayments.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(billCheckPayment);\n```", perLanguage: { typescript: { method: 'client.qbd.billCheckPayments.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst billCheckPayment = await conductor.qbd.billCheckPayments.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(billCheckPayment.id);", }, python: { method: 'qbd.bill_check_payments.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbill_check_payment = conductor.qbd.bill_check_payments.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(bill_check_payment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bill-check-payments/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "amount": "1000.00",\n "bankAccountId": "80000001-1234567890",\n "exchangeRate": 1.2345,\n "isQueuedForPrint": true,\n "memo": "Payment for office supplies - Invoice INV-1234",\n "refNumber": "CHECK-1234",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/bill-check-payments/{id}/void', httpMethod: 'post', summary: 'Void a bill check payment', description: 'Voids a bill check payment by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the bill check payment is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.bill_check_payments > (method) void', qualified: 'client.qbd.billCheckPayments.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_bill_check_payment'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.billCheckPayments.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_bill_check_payment'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/bill-check-payments/{id}/void`\n\nVoids a bill check payment by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the bill check payment is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the bill check payment to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_bill_check_payment'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_bill_check_payment'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.billCheckPayments.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.billCheckPayments.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.billCheckPayments.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.bill_check_payments.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.bill_check_payments.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bill-check-payments/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/bill-check-payments/{id}', httpMethod: 'delete', summary: 'Delete a bill check payment', description: 'Permanently deletes a bill check payment. The deletion will fail if the bill check payment is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.bill_check_payments > (method) delete', qualified: 'client.qbd.billCheckPayments.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_bill_check_payment'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.billCheckPayments.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_bill_check_payment'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/bill-check-payments/{id}`\n\nPermanently deletes a bill check payment. The deletion will fail if the bill check payment is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the bill check payment to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_bill_check_payment'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_bill_check_payment'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst billCheckPayment = await conductor.qbd.billCheckPayments.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(billCheckPayment);\n```", perLanguage: { typescript: { method: 'client.qbd.billCheckPayments.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst billCheckPayment = await conductor.qbd.billCheckPayments.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(billCheckPayment.id);", }, python: { method: 'qbd.bill_check_payments.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbill_check_payment = conductor.qbd.bill_check_payments.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(bill_check_payment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bill-check-payments/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/bill-credit-card-payments', httpMethod: 'post', summary: 'Create a bill credit card payment', description: 'Charges one vendor’s bills to a credit card account. Each bill allocation must supply a payment amount, discount, or credit, and you have to use the same accounts payable account that’s on the bills being closed.', stainlessPath: '(resource) qbd.bill_credit_card_payments > (method) create', qualified: 'client.qbd.billCreditCardPayments.create', params: [ 'applyToTransactions: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[];', 'creditCardAccountId: string;', 'transactionDate: string;', 'vendorId: string;', 'Conductor-End-User-Id: string;', 'exchangeRate?: number;', 'externalId?: string;', 'memo?: string;', 'payablesAccountId?: string;', 'refNumber?: string;', ], response: "{ id: string; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardAccount: { id: string; fullName: string; }; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_bill_credit_card_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }", markdown: "## create\n\n`conductor.qbd.billCreditCardPayments.create(applyToTransactions: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[], creditCardAccountId: string, transactionDate: string, vendorId: string, Conductor-End-User-Id: string, exchangeRate?: number, externalId?: string, memo?: string, payablesAccountId?: string, refNumber?: string): { id: string; amount: string; amountInHomeCurrency: string; appliedToTransactions: object[]; createdAt: string; creditCardAccount: object; currency: object; customFields: object[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_bill_credit_card_payment'; payablesAccount: object; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**post** `/quickbooks-desktop/bill-credit-card-payments`\n\nCharges one vendor’s bills to a credit card account. Each bill allocation must supply a payment amount, discount, or credit, and you have to use the same accounts payable account that’s on the bills being closed.\n\n### Parameters\n\n- `applyToTransactions: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[]`\n The bills to be paid by this bill credit card payment. This will create a link between this bill credit card payment and the specified bills.\n\n**IMPORTANT**: In each `applyToTransactions` object, you must specify either `paymentAmount`, `applyCredits`, `discountAmount`, or any combination of these; if none of these are specified, you will receive an error for an empty transaction.\n\n**IMPORTANT**: The target bill must have `isPaid=false`, otherwise, QuickBooks will report this object as \"cannot be found\".\n\n- `creditCardAccountId: string`\n The credit card account to which this bill credit card payment is being charged. This bill credit card payment will decrease the balance of this account.\n\n- `transactionDate: string`\n The date of this bill credit card payment, in ISO 8601 format (YYYY-MM-DD).\n\n- `vendorId: string`\n The vendor who sent the bill(s) that this bill credit card payment is paying and who will receive this payment.\n\n**IMPORTANT**: This vendor must match the `vendor` on the bill(s) specified in `applyToTransactions`; otherwise, QuickBooks will say the `transactionId` in `applyToTransactions` \"does not exist\".\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `exchangeRate?: number`\n The market exchange rate between this bill credit card payment's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `memo?: string`\n A memo or note for this bill credit card payment.\n\n- `payablesAccountId?: string`\n The Accounts-Payable (A/P) account to which this bill credit card payment is assigned, used for accounts-payable tracking. If omitted, QuickBooks Desktop uses the default A/P account configured in the company file.\n\n**IMPORTANT**: If this bill credit card payment is linked to other transactions, this A/P account must match the `payablesAccount` used in those other transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this bill credit card payment, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n### Returns\n\n- `{ id: string; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardAccount: { id: string; fullName: string; }; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_bill_credit_card_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `createdAt: string`\n - `creditCardAccount: { id: string; fullName: string; }`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `memo: string`\n - `objectType: 'qbd_bill_credit_card_payment'`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst billCreditCardPayment = await conductor.qbd.billCreditCardPayments.create({\n applyToTransactions: [{ transactionId: '123ABC-1234567890' }],\n creditCardAccountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(billCreditCardPayment);\n```", perLanguage: { typescript: { method: 'client.qbd.billCreditCardPayments.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst billCreditCardPayment = await conductor.qbd.billCreditCardPayments.create({\n applyToTransactions: [{ transactionId: '123ABC-1234567890' }],\n creditCardAccountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(billCreditCardPayment.id);", }, python: { method: 'qbd.bill_credit_card_payments.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbill_credit_card_payment = conductor.qbd.bill_credit_card_payments.create(\n apply_to_transactions=[{\n "transaction_id": "123ABC-1234567890"\n }],\n credit_card_account_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n vendor_id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(bill_credit_card_payment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bill-credit-card-payments \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "applyToTransactions": [\n {\n "transactionId": "123ABC-1234567890"\n }\n ],\n "creditCardAccountId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "vendorId": "80000001-1234567890",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "memo": "Payment for office supplies - Invoice INV-1234",\n "payablesAccountId": "80000001-1234567890",\n "refNumber": "CARD-1234"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/bill-credit-card-payments', httpMethod: 'get', summary: 'List all bill credit card payments', description: 'Returns a list of bill credit card payments. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.bill_credit_card_payments > (method) list', qualified: 'client.qbd.billCreditCardPayments.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'ids?: string[];', 'includeLineItems?: boolean;', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', 'vendorIds?: string[];', ], response: "{ id: string; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardAccount: { id: string; fullName: string; }; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_bill_credit_card_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }", markdown: "## list\n\n`conductor.qbd.billCreditCardPayments.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, ids?: string[], includeLineItems?: boolean, limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string, vendorIds?: string[]): { id: string; amount: string; amountInHomeCurrency: string; appliedToTransactions: object[]; createdAt: string; creditCardAccount: object; currency: object; customFields: object[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_bill_credit_card_payment'; payablesAccount: object; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**get** `/quickbooks-desktop/bill-credit-card-payments`\n\nReturns a list of bill credit card payments. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for bill credit card payments associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for bill credit card payments in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific bill credit card payments by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for bill credit card payments whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for bill credit card payments whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for bill credit card payments whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific bill credit card payments by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for bill credit card payments whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for bill credit card payments whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for bill credit card payments whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for bill credit card payments whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for bill credit card payments updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for bill credit card payments updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `vendorIds?: string[]`\n Filter for bill credit card payments sent to these vendors. These are the vendors who sent the bills paid by these credit card payments.\n\n### Returns\n\n- `{ id: string; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardAccount: { id: string; fullName: string; }; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_bill_credit_card_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `createdAt: string`\n - `creditCardAccount: { id: string; fullName: string; }`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `memo: string`\n - `objectType: 'qbd_bill_credit_card_payment'`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const billCreditCardPayment of conductor.qbd.billCreditCardPayments.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(billCreditCardPayment);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.billCreditCardPayments.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const billCreditCardPayment of conductor.qbd.billCreditCardPayments.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(billCreditCardPayment.id);\n}", }, python: { method: 'qbd.bill_credit_card_payments.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.bill_credit_card_payments.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bill-credit-card-payments \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/bill-credit-card-payments/{id}', httpMethod: 'get', summary: 'Retrieve a bill credit card payment', description: 'Retrieves a bill credit card payment by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific bill credit card payments by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.bill_credit_card_payments > (method) retrieve', qualified: 'client.qbd.billCreditCardPayments.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardAccount: { id: string; fullName: string; }; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_bill_credit_card_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }", markdown: "## retrieve\n\n`conductor.qbd.billCreditCardPayments.retrieve(id: string, Conductor-End-User-Id: string): { id: string; amount: string; amountInHomeCurrency: string; appliedToTransactions: object[]; createdAt: string; creditCardAccount: object; currency: object; customFields: object[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_bill_credit_card_payment'; payablesAccount: object; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**get** `/quickbooks-desktop/bill-credit-card-payments/{id}`\n\nRetrieves a bill credit card payment by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific bill credit card payments by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the bill credit card payment to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; amount: string; amountInHomeCurrency: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardAccount: { id: string; fullName: string; }; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_bill_credit_card_payment'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `createdAt: string`\n - `creditCardAccount: { id: string; fullName: string; }`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `memo: string`\n - `objectType: 'qbd_bill_credit_card_payment'`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst billCreditCardPayment = await conductor.qbd.billCreditCardPayments.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(billCreditCardPayment);\n```", perLanguage: { typescript: { method: 'client.qbd.billCreditCardPayments.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst billCreditCardPayment = await conductor.qbd.billCreditCardPayments.retrieve(\n '123ABC-1234567890',\n { conductorEndUserId: 'end_usr_1234567abcdefg' },\n);\n\nconsole.log(billCreditCardPayment.id);", }, python: { method: 'qbd.bill_credit_card_payments.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbill_credit_card_payment = conductor.qbd.bill_credit_card_payments.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(bill_credit_card_payment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bill-credit-card-payments/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/bill-credit-card-payments/{id}/void', httpMethod: 'post', summary: 'Void a bill credit card payment', description: 'Voids a bill credit card payment by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the bill credit card payment is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.bill_credit_card_payments > (method) void', qualified: 'client.qbd.billCreditCardPayments.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_bill_credit_card_payment'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.billCreditCardPayments.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_bill_credit_card_payment'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/bill-credit-card-payments/{id}/void`\n\nVoids a bill credit card payment by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the bill credit card payment is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the bill credit card payment to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_bill_credit_card_payment'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_bill_credit_card_payment'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.billCreditCardPayments.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.billCreditCardPayments.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.billCreditCardPayments.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.bill_credit_card_payments.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.bill_credit_card_payments.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bill-credit-card-payments/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/bill-credit-card-payments/{id}', httpMethod: 'delete', summary: 'Delete a bill credit card payment', description: 'Permanently deletes a bill credit card payment. The deletion will fail if the bill credit card payment is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.bill_credit_card_payments > (method) delete', qualified: 'client.qbd.billCreditCardPayments.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_bill_credit_card_payment'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.billCreditCardPayments.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_bill_credit_card_payment'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/bill-credit-card-payments/{id}`\n\nPermanently deletes a bill credit card payment. The deletion will fail if the bill credit card payment is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the bill credit card payment to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_bill_credit_card_payment'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_bill_credit_card_payment'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst billCreditCardPayment = await conductor.qbd.billCreditCardPayments.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(billCreditCardPayment);\n```", perLanguage: { typescript: { method: 'client.qbd.billCreditCardPayments.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst billCreditCardPayment = await conductor.qbd.billCreditCardPayments.delete(\n '123ABC-1234567890',\n { conductorEndUserId: 'end_usr_1234567abcdefg' },\n);\n\nconsole.log(billCreditCardPayment.id);", }, python: { method: 'qbd.bill_credit_card_payments.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbill_credit_card_payment = conductor.qbd.bill_credit_card_payments.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(bill_credit_card_payment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bill-credit-card-payments/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/bills', httpMethod: 'post', summary: 'Create a bill', description: "Creates a vendor bill and posts it to accounts payable. You can also link eligible purchase orders so QuickBooks pulls their lines onto the bill before it's saved.", stainlessPath: '(resource) qbd.bills > (method) create', qualified: 'client.qbd.bills.create', params: [ 'transactionDate: string;', 'vendorId: string;', 'Conductor-End-User-Id: string;', 'dueDate?: string;', 'exchangeRate?: number;', "expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[];", 'externalId?: string;', 'itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[];', "itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'linkToTransactionIds?: string[];', 'memo?: string;', 'payablesAccountId?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', 'termsId?: string;', 'vendorAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', ], response: "{ id: string; amountDue: string; amountDueInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; dueDate: string; exchangeRate: number; expenseLines: object[]; externalId: string; isPaid: boolean; isPending: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_bill'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; terms: object; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; }", markdown: "## create\n\n`conductor.qbd.bills.create(transactionDate: string, vendorId: string, Conductor-End-User-Id: string, dueDate?: string, exchangeRate?: number, expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[], externalId?: string, itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[], itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], linkToTransactionIds?: string[], memo?: string, payablesAccountId?: string, refNumber?: string, salesTaxCodeId?: string, termsId?: string, vendorAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }): { id: string; amountDue: string; amountDueInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; dueDate: string; exchangeRate: number; expenseLines: object[]; externalId: string; isPaid: boolean; isPending: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_bill'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; terms: object; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; }`\n\n**post** `/quickbooks-desktop/bills`\n\nCreates a vendor bill and posts it to accounts payable. You can also link eligible purchase orders so QuickBooks pulls their lines onto the bill before it's saved.\n\n### Parameters\n\n- `transactionDate: string`\n The date of this bill, in ISO 8601 format (YYYY-MM-DD).\n\n- `vendorId: string`\n The vendor who sent this bill for goods or services purchased.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `dueDate?: string`\n The date by which this bill must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n- `exchangeRate?: number`\n The market exchange rate between this bill's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[]`\n The bill's expense lines, each representing one line in this expense.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The bill's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.\n\n- `itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The bill's item lines, each representing the purchase of a specific item or service.\n\n- `linkToTransactionIds?: string[]`\n IDs of existing purchase orders that you wish to link to this bill. Note that this links entire transactions, not individual transaction lines. If you want to link individual lines in a transaction, instead use the field `linkToTransactionLine` on this bill's lines, if available.\n\nTransactions can only be linked when creating this bill and cannot be unlinked later.\n\nYou can use both `linkToTransactionIds` (on this bill) and `linkToTransactionLine` (on its transaction lines) as long as they do NOT link to the same transaction (otherwise, QuickBooks will return an error). QuickBooks will also return an error if you attempt to link a transaction that is empty or already closed.\n\n**IMPORTANT**: By default, QuickBooks will not return any information about the linked transactions in this endpoint's response even when this request is successful. To see the transactions linked via this field, refetch the bill and check the `linkedTransactions` response field. If fetching a list of bills, you must also specify the parameter `includeLinkedTransactions=true` to see the `linkedTransactions` response field.\n\n- `memo?: string`\n A memo or note for this bill that appears in the Accounts-Payable register and in reports that include this bill.\n\n- `payablesAccountId?: string`\n The Accounts-Payable (A/P) account to which this bill is assigned, used for accounts-payable tracking. If omitted, QuickBooks Desktop uses the default A/P account configured in the company file.\n\n**IMPORTANT**: If this bill is linked to other transactions, this A/P account must match the `payablesAccount` used in those other transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this bill, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 20 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this bill, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the vendor. This can be overridden on the bill's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `termsId?: string`\n The bill's payment terms, defining when payment is due and any applicable discounts.\n\n- `vendorAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The address of the vendor who sent this bill.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n### Returns\n\n- `{ id: string; amountDue: string; amountDueInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; dueDate: string; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; isPaid: boolean; isPending: boolean; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_bill'; openAmount: string; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; terms: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; }`\n\n - `id: string`\n - `amountDue: string`\n - `amountDueInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `dueDate: string`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `isPaid: boolean`\n - `isPending: boolean`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_bill'`\n - `openAmount: string`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `terms: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n - `vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst bill = await conductor.qbd.bills.create({\n transactionDate: '2024-10-01',\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(bill);\n```", perLanguage: { typescript: { method: 'client.qbd.bills.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst bill = await conductor.qbd.bills.create({\n transactionDate: '2024-10-01',\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(bill.id);", }, python: { method: 'qbd.bills.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbill = conductor.qbd.bills.create(\n transaction_date=date.fromisoformat("2024-10-01"),\n vendor_id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(bill.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bills \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "transactionDate": "2024-10-01",\n "vendorId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "memo": "Office supplies for September",\n "payablesAccountId": "80000001-1234567890",\n "refNumber": "BILL-1234",\n "salesTaxCodeId": "80000001-1234567890",\n "termsId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/bills', httpMethod: 'get', summary: 'List all bills', description: 'Returns a list of bills. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.bills > (method) list', qualified: 'client.qbd.bills.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'ids?: string[];', 'includeLineItems?: boolean;', 'includeLinkedTransactions?: boolean;', 'limit?: number;', "paymentStatus?: 'all' | 'paid' | 'not_paid';", 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', 'vendorIds?: string[];', ], response: "{ id: string; amountDue: string; amountDueInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; dueDate: string; exchangeRate: number; expenseLines: object[]; externalId: string; isPaid: boolean; isPending: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_bill'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; terms: object; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; }", markdown: "## list\n\n`conductor.qbd.bills.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, ids?: string[], includeLineItems?: boolean, includeLinkedTransactions?: boolean, limit?: number, paymentStatus?: 'all' | 'paid' | 'not_paid', refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string, vendorIds?: string[]): { id: string; amountDue: string; amountDueInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; dueDate: string; exchangeRate: number; expenseLines: object[]; externalId: string; isPaid: boolean; isPending: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_bill'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; terms: object; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; }`\n\n**get** `/quickbooks-desktop/bills`\n\nReturns a list of bills. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for bills associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for bills in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific bills by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `includeLinkedTransactions?: boolean`\n Whether to include linked transactions in the response. Defaults to `false`. For example, a payment linked to the corresponding bill.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `paymentStatus?: 'all' | 'paid' | 'not_paid'`\n Filter for bills that are paid, not paid, or both.\n\n- `refNumberContains?: string`\n Filter for bills whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for bills whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for bills whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific bills by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for bills whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for bills whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for bills whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for bills whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for bills updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for bills updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `vendorIds?: string[]`\n Filter for bills received from these vendors.\n\n### Returns\n\n- `{ id: string; amountDue: string; amountDueInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; dueDate: string; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; isPaid: boolean; isPending: boolean; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_bill'; openAmount: string; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; terms: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; }`\n\n - `id: string`\n - `amountDue: string`\n - `amountDueInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `dueDate: string`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `isPaid: boolean`\n - `isPending: boolean`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_bill'`\n - `openAmount: string`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `terms: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n - `vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const bill of conductor.qbd.bills.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(bill);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.bills.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const bill of conductor.qbd.bills.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(bill.id);\n}", }, python: { method: 'qbd.bills.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.bills.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bills \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/bills/{id}', httpMethod: 'get', summary: 'Retrieve a bill', description: 'Retrieves a bill by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific bills by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.', stainlessPath: '(resource) qbd.bills > (method) retrieve', qualified: 'client.qbd.bills.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; amountDue: string; amountDueInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; dueDate: string; exchangeRate: number; expenseLines: object[]; externalId: string; isPaid: boolean; isPending: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_bill'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; terms: object; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; }", markdown: "## retrieve\n\n`conductor.qbd.bills.retrieve(id: string, Conductor-End-User-Id: string): { id: string; amountDue: string; amountDueInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; dueDate: string; exchangeRate: number; expenseLines: object[]; externalId: string; isPaid: boolean; isPending: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_bill'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; terms: object; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; }`\n\n**get** `/quickbooks-desktop/bills/{id}`\n\nRetrieves a bill by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific bills by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the bill to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; amountDue: string; amountDueInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; dueDate: string; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; isPaid: boolean; isPending: boolean; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_bill'; openAmount: string; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; terms: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; }`\n\n - `id: string`\n - `amountDue: string`\n - `amountDueInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `dueDate: string`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `isPaid: boolean`\n - `isPending: boolean`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_bill'`\n - `openAmount: string`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `terms: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n - `vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst bill = await conductor.qbd.bills.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(bill);\n```", perLanguage: { typescript: { method: 'client.qbd.bills.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst bill = await conductor.qbd.bills.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(bill.id);", }, python: { method: 'qbd.bills.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbill = conductor.qbd.bills.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(bill.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bills/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/bills/{id}', httpMethod: 'post', summary: 'Update a bill', description: 'Updates an existing vendor bill while keeping the required references intact. QuickBooks does not let this update request add new purchase order links, and you must continue to supply the vendor, accounts payable account, and at least one expense or item line when you resubmit the bill.\n\n**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.bills > (method) update', qualified: 'client.qbd.bills.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'clearExpenseLines?: boolean;', 'clearItemLines?: boolean;', 'dueDate?: string;', 'exchangeRate?: number;', "expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[];", "itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[];", "itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'payablesAccountId?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', 'termsId?: string;', 'transactionDate?: string;', 'vendorAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'vendorId?: string;', ], response: "{ id: string; amountDue: string; amountDueInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; dueDate: string; exchangeRate: number; expenseLines: object[]; externalId: string; isPaid: boolean; isPending: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_bill'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; terms: object; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; }", markdown: "## update\n\n`conductor.qbd.bills.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, clearExpenseLines?: boolean, clearItemLines?: boolean, dueDate?: string, exchangeRate?: number, expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[], itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[], itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], memo?: string, payablesAccountId?: string, refNumber?: string, salesTaxCodeId?: string, termsId?: string, transactionDate?: string, vendorAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, vendorId?: string): { id: string; amountDue: string; amountDueInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; dueDate: string; exchangeRate: number; expenseLines: object[]; externalId: string; isPaid: boolean; isPending: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_bill'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; terms: object; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; }`\n\n**post** `/quickbooks-desktop/bills/{id}`\n\nUpdates an existing vendor bill while keeping the required references intact. QuickBooks does not let this update request add new purchase order links, and you must continue to supply the vendor, accounts payable account, and at least one expense or item line when you resubmit the bill.\n\n**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the bill to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the bill object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `clearExpenseLines?: boolean`\n When `true`, removes all existing expense lines associated with this bill. To modify or add individual expense lines, use the field `expenseLines` instead.\n\n- `clearItemLines?: boolean`\n When `true`, removes all existing item lines associated with this bill. To modify or add individual item lines, use the field `itemLines` instead.\n\n- `dueDate?: string`\n The date by which this bill must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n- `exchangeRate?: number`\n The market exchange rate between this bill's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[]`\n The bill's expense lines, each representing one line in this expense.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing expense lines for the bill with this array. To keep any existing expense lines, you must include them in this array even if they have not changed. **Any expense lines not included will be removed.**\n\n2. To add a new expense line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any expense lines, omit this field entirely to keep them unchanged.\n\n- `itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The bill's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item group lines for the bill with this array. To keep any existing item group lines, you must include them in this array even if they have not changed. **Any item group lines not included will be removed.**\n\n2. To add a new item group line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item group lines, omit this field entirely to keep them unchanged.\n\n- `itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The bill's item lines, each representing the purchase of a specific item or service.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item lines for the bill with this array. To keep any existing item lines, you must include them in this array even if they have not changed. **Any item lines not included will be removed.**\n\n2. To add a new item line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item lines, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this bill that appears in the Accounts-Payable register and in reports that include this bill.\n\n- `payablesAccountId?: string`\n The Accounts-Payable (A/P) account to which this bill is assigned, used for accounts-payable tracking. If omitted, QuickBooks Desktop uses the default A/P account configured in the company file.\n\n**IMPORTANT**: If this bill is linked to other transactions, this A/P account must match the `payablesAccount` used in those other transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this bill, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 20 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this bill, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the vendor. This can be overridden on the bill's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `termsId?: string`\n The bill's payment terms, defining when payment is due and any applicable discounts.\n\n- `transactionDate?: string`\n The date of this bill, in ISO 8601 format (YYYY-MM-DD).\n\n- `vendorAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The address of the vendor who sent this bill.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `vendorId?: string`\n The vendor who sent this bill for goods or services purchased.\n\n### Returns\n\n- `{ id: string; amountDue: string; amountDueInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; dueDate: string; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; isPaid: boolean; isPending: boolean; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_bill'; openAmount: string; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; terms: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; }`\n\n - `id: string`\n - `amountDue: string`\n - `amountDueInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `dueDate: string`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `isPaid: boolean`\n - `isPending: boolean`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_bill'`\n - `openAmount: string`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `terms: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n - `vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst bill = await conductor.qbd.bills.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(bill);\n```", perLanguage: { typescript: { method: 'client.qbd.bills.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst bill = await conductor.qbd.bills.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(bill.id);", }, python: { method: 'qbd.bills.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbill = conductor.qbd.bills.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(bill.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bills/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "clearExpenseLines": false,\n "clearItemLines": false,\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "memo": "Office supplies for September",\n "payablesAccountId": "80000001-1234567890",\n "refNumber": "BILL-1234",\n "salesTaxCodeId": "80000001-1234567890",\n "termsId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "vendorId": "80000001-1234567890"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/bills/{id}/void', httpMethod: 'post', summary: 'Void a bill', description: 'Voids a bill by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the bill is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.bills > (method) void', qualified: 'client.qbd.bills.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_bill'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.bills.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_bill'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/bills/{id}/void`\n\nVoids a bill by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the bill is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the bill to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_bill'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_bill'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.bills.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.bills.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.bills.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.bills.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.bills.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bills/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/bills/{id}', httpMethod: 'delete', summary: 'Delete a bill', description: 'Permanently deletes a bill. The deletion will fail if the bill is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.bills > (method) delete', qualified: 'client.qbd.bills.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_bill'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.bills.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_bill'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/bills/{id}`\n\nPermanently deletes a bill. The deletion will fail if the bill is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the bill to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_bill'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_bill'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst bill = await conductor.qbd.bills.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(bill);\n```", perLanguage: { typescript: { method: 'client.qbd.bills.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst bill = await conductor.qbd.bills.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(bill.id);", }, python: { method: 'qbd.bills.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbill = conductor.qbd.bills.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(bill.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bills/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/bills-to-pay', httpMethod: 'get', summary: 'List bills and credits available to pay for a vendor', description: "Lists open vendor bills and available vendor credits for a specific QuickBooks Desktop vendor. Use each `bill.billId` as `applyToTransactions[].transactionId` in bill-payment requests. To apply a returned credit, place it under the target bill's `applyToTransactions[].applyCredits[]` entry, set `creditTransactionId` to `credit.creditTransactionId`, and choose an `appliedAmount` that does not exceed `credit.creditRemaining` or the target bill's remaining amount due.\n\n**NOTE:** QuickBooks Desktop does not support pagination for bills to pay; hence, there is no `cursor` parameter. Users typically have few bills to pay.", stainlessPath: '(resource) qbd.bills_to_pay > (method) list', qualified: 'client.qbd.billsToPay.list', params: [ 'vendorId: string;', 'Conductor-End-User-Id: string;', 'currencyIds?: string[];', 'dueDate?: string;', 'payablesAccountId?: string;', ], response: "{ data: { bill: object; credit: object; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.billsToPay.list(vendorId: string, Conductor-End-User-Id: string, currencyIds?: string[], dueDate?: string, payablesAccountId?: string): { data: bill_to_pay[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/bills-to-pay`\n\nLists open vendor bills and available vendor credits for a specific QuickBooks Desktop vendor. Use each `bill.billId` as `applyToTransactions[].transactionId` in bill-payment requests. To apply a returned credit, place it under the target bill's `applyToTransactions[].applyCredits[]` entry, set `creditTransactionId` to `credit.creditTransactionId`, and choose an `appliedAmount` that does not exceed `credit.creditRemaining` or the target bill's remaining amount due.\n\n**NOTE:** QuickBooks Desktop does not support pagination for bills to pay; hence, there is no `cursor` parameter. Users typically have few bills to pay.\n\n### Parameters\n\n- `vendorId: string`\n The vendor whose open bills and available credits should be returned.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `currencyIds?: string[]`\n Filter for open bills and available credits in these currencies.\n\n- `dueDate?: string`\n Filter the bill branch to open bills due on or before this date, in ISO 8601 format (YYYY-MM-DD). If omitted, QuickBooks Desktop returns open bills from all due dates. Available credits can still be returned because credits do not have a due date.\n\n- `payablesAccountId?: string`\n Filter for open bills and available credits assigned to this Accounts-Payable account. If omitted, QuickBooks Desktop uses the default A/P account configured in the company file.\n\n### Returns\n\n- `{ data: { bill: object; credit: object; }[]; objectType: 'list'; url: string; }`\n\n - `data: { bill: { amountDue: string; amountDueInHomeCurrency: string; billId: string; currency: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; payablesAccount: { id: string; fullName: string; }; refNumber: string; transactionDate: string; transactionType: string; }; credit: { creditRemaining: string; creditRemainingInHomeCurrency: string; creditTransactionId: string; currency: { id: string; fullName: string; }; exchangeRate: number; payablesAccount: { id: string; fullName: string; }; refNumber: string; transactionDate: string; transactionType: string; }; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst billsToPays = await conductor.qbd.billsToPay.list({ vendorId: '80000001-1234567890', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(billsToPays);\n```", perLanguage: { typescript: { method: 'client.qbd.billsToPay.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst billsToPays = await conductor.qbd.billsToPay.list({\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(billsToPays.data);", }, python: { method: 'qbd.bills_to_pay.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbills_to_pays = conductor.qbd.bills_to_pay.list(\n vendor_id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(bills_to_pays.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/bills-to-pay \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/build-assemblies', httpMethod: 'post', summary: 'Create a build assembly', description: 'Creates a build assembly transaction that consumes component quantities and increases the finished assembly on hand. If components are short you can mark the build as pending instead of failing.', stainlessPath: '(resource) qbd.build_assemblies > (method) create', qualified: 'client.qbd.buildAssemblies.create', params: [ 'inventoryAssemblyItemId: string;', 'quantityToBuild: number;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'expirationDate?: string;', 'externalId?: string;', 'inventorySiteId?: string;', 'inventorySiteLocationId?: string;', 'lotNumber?: string;', 'markPendingIfRequired?: boolean;', 'memo?: string;', 'refNumber?: string;', 'serialNumber?: string;', ], response: "{ id: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; expirationDate: string; externalId: string; inventoryAssemblyItem: { id: string; fullName: string; }; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isPending: boolean; lines: { description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; quantityNeeded: number; quantityOnHand: number; serialNumber: string; }[]; lotNumber: string; memo: string; objectType: 'qbd_build_assembly'; quantityCanBuild: number; quantityOnHand: number; quantityOnSalesOrder: number; quantityToBuild: number; refNumber: string; revisionNumber: string; serialNumber: string; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.buildAssemblies.create(inventoryAssemblyItemId: string, quantityToBuild: number, transactionDate: string, Conductor-End-User-Id: string, expirationDate?: string, externalId?: string, inventorySiteId?: string, inventorySiteLocationId?: string, lotNumber?: string, markPendingIfRequired?: boolean, memo?: string, refNumber?: string, serialNumber?: string): { id: string; createdAt: string; customFields: object[]; expirationDate: string; externalId: string; inventoryAssemblyItem: object; inventorySite: object; inventorySiteLocation: object; isPending: boolean; lines: object[]; lotNumber: string; memo: string; objectType: 'qbd_build_assembly'; quantityCanBuild: number; quantityOnHand: number; quantityOnSalesOrder: number; quantityToBuild: number; refNumber: string; revisionNumber: string; serialNumber: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/build-assemblies`\n\nCreates a build assembly transaction that consumes component quantities and increases the finished assembly on hand. If components are short you can mark the build as pending instead of failing.\n\n### Parameters\n\n- `inventoryAssemblyItemId: string`\n The inventory assembly item associated with this build assembly. An inventory assembly item is assembled or manufactured from other inventory items, and the items and/or assemblies that make up the assembly are called components.\n\n- `quantityToBuild: number`\n The number of build assembly to be built. The transaction will fail if the number specified here exceeds the number of on-hand components.\n\n- `transactionDate: string`\n The date of this build assembly, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `expirationDate?: string`\n The expiration date for the serial number or lot number of the item associated with this build assembly, in ISO 8601 format (YYYY-MM-DD). This is particularly relevant for perishable or time-sensitive inventory items. Note that this field is only supported on QuickBooks Desktop 2023 or later.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `inventorySiteId?: string`\n The site location where inventory for the item associated with this build assembly is stored.\n\n- `inventorySiteLocationId?: string`\n The specific location (e.g., bin or shelf) within the inventory site where the item associated with this build assembly is stored.\n\n- `lotNumber?: string`\n The lot number of the item associated with this build assembly. Used for tracking groups of inventory items that are purchased or manufactured together.\n\n- `markPendingIfRequired?: boolean`\n When `true`, the build assembly will be marked pending if there are insufficient quantities to complete the build assembly.\n\n- `memo?: string`\n A memo or note for this build assembly.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this build assembly, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n- `serialNumber?: string`\n The serial number of the item associated with this build assembly. This is used for tracking individual units of serialized inventory items.\n\n### Returns\n\n- `{ id: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; expirationDate: string; externalId: string; inventoryAssemblyItem: { id: string; fullName: string; }; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isPending: boolean; lines: { description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; quantityNeeded: number; quantityOnHand: number; serialNumber: string; }[]; lotNumber: string; memo: string; objectType: 'qbd_build_assembly'; quantityCanBuild: number; quantityOnHand: number; quantityOnSalesOrder: number; quantityToBuild: number; refNumber: string; revisionNumber: string; serialNumber: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `expirationDate: string`\n - `externalId: string`\n - `inventoryAssemblyItem: { id: string; fullName: string; }`\n - `inventorySite: { id: string; fullName: string; }`\n - `inventorySiteLocation: { id: string; fullName: string; }`\n - `isPending: boolean`\n - `lines: { description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; quantityNeeded: number; quantityOnHand: number; serialNumber: string; }[]`\n - `lotNumber: string`\n - `memo: string`\n - `objectType: 'qbd_build_assembly'`\n - `quantityCanBuild: number`\n - `quantityOnHand: number`\n - `quantityOnSalesOrder: number`\n - `quantityToBuild: number`\n - `refNumber: string`\n - `revisionNumber: string`\n - `serialNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst buildAssembly = await conductor.qbd.buildAssemblies.create({\n inventoryAssemblyItemId: '80000001-1234567890',\n quantityToBuild: 7,\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(buildAssembly);\n```", perLanguage: { typescript: { method: 'client.qbd.buildAssemblies.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst buildAssembly = await conductor.qbd.buildAssemblies.create({\n inventoryAssemblyItemId: '80000001-1234567890',\n quantityToBuild: 7,\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(buildAssembly.id);", }, python: { method: 'qbd.build_assemblies.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbuild_assembly = conductor.qbd.build_assemblies.create(\n inventory_assembly_item_id="80000001-1234567890",\n quantity_to_build=7,\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(build_assembly.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/build-assemblies \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "inventoryAssemblyItemId": "80000001-1234567890",\n "quantityToBuild": 7,\n "transactionDate": "2024-10-01",\n "expirationDate": "2025-12-31",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "inventorySiteId": "80000001-1234567890",\n "inventorySiteLocationId": "80000001-1234567890",\n "lotNumber": "LOT2023-001",\n "markPendingIfRequired": true,\n "memo": "Assembled 25 units of Model ABC-123 Office Chair",\n "refNumber": "BUILD-1234",\n "serialNumber": "SN1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/build-assemblies', httpMethod: 'get', summary: 'List all build assemblies', description: 'Returns a list of build assemblies. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.build_assemblies > (method) list', qualified: 'client.qbd.buildAssemblies.list', params: [ 'Conductor-End-User-Id: string;', 'cursor?: string;', 'ids?: string[];', 'includeComponentLineItems?: boolean;', 'itemIds?: string[];', 'limit?: number;', "pendingStatus?: 'all' | 'not_pending' | 'pending';", 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; expirationDate: string; externalId: string; inventoryAssemblyItem: { id: string; fullName: string; }; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isPending: boolean; lines: { description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; quantityNeeded: number; quantityOnHand: number; serialNumber: string; }[]; lotNumber: string; memo: string; objectType: 'qbd_build_assembly'; quantityCanBuild: number; quantityOnHand: number; quantityOnSalesOrder: number; quantityToBuild: number; refNumber: string; revisionNumber: string; serialNumber: string; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.buildAssemblies.list(Conductor-End-User-Id: string, cursor?: string, ids?: string[], includeComponentLineItems?: boolean, itemIds?: string[], limit?: number, pendingStatus?: 'all' | 'not_pending' | 'pending', refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; createdAt: string; customFields: object[]; expirationDate: string; externalId: string; inventoryAssemblyItem: object; inventorySite: object; inventorySiteLocation: object; isPending: boolean; lines: object[]; lotNumber: string; memo: string; objectType: 'qbd_build_assembly'; quantityCanBuild: number; quantityOnHand: number; quantityOnSalesOrder: number; quantityToBuild: number; refNumber: string; revisionNumber: string; serialNumber: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/build-assemblies`\n\nReturns a list of build assemblies. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific build assemblies by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeComponentLineItems?: boolean`\n Whether to include component line items in the response. Defaults to `true`.\n\n- `itemIds?: string[]`\n Filter for build assemblies containing these items.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `pendingStatus?: 'all' | 'not_pending' | 'pending'`\n Filter for build assemblies that are pending, not pending, or both.\n\n- `refNumberContains?: string`\n Filter for build assemblies whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for build assemblies whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for build assemblies whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific build assemblies by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for build assemblies whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for build assemblies whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for build assemblies whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for build assemblies whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for build assemblies updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for build assemblies updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; expirationDate: string; externalId: string; inventoryAssemblyItem: { id: string; fullName: string; }; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isPending: boolean; lines: { description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; quantityNeeded: number; quantityOnHand: number; serialNumber: string; }[]; lotNumber: string; memo: string; objectType: 'qbd_build_assembly'; quantityCanBuild: number; quantityOnHand: number; quantityOnSalesOrder: number; quantityToBuild: number; refNumber: string; revisionNumber: string; serialNumber: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `expirationDate: string`\n - `externalId: string`\n - `inventoryAssemblyItem: { id: string; fullName: string; }`\n - `inventorySite: { id: string; fullName: string; }`\n - `inventorySiteLocation: { id: string; fullName: string; }`\n - `isPending: boolean`\n - `lines: { description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; quantityNeeded: number; quantityOnHand: number; serialNumber: string; }[]`\n - `lotNumber: string`\n - `memo: string`\n - `objectType: 'qbd_build_assembly'`\n - `quantityCanBuild: number`\n - `quantityOnHand: number`\n - `quantityOnSalesOrder: number`\n - `quantityToBuild: number`\n - `refNumber: string`\n - `revisionNumber: string`\n - `serialNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const buildAssembly of conductor.qbd.buildAssemblies.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(buildAssembly);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.buildAssemblies.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const buildAssembly of conductor.qbd.buildAssemblies.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(buildAssembly.id);\n}", }, python: { method: 'qbd.build_assemblies.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.build_assemblies.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/build-assemblies \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/build-assemblies/{id}', httpMethod: 'get', summary: 'Retrieve a build assembly', description: 'Retrieves a build assembly by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific build assemblies by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.build_assemblies > (method) retrieve', qualified: 'client.qbd.buildAssemblies.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; expirationDate: string; externalId: string; inventoryAssemblyItem: { id: string; fullName: string; }; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isPending: boolean; lines: { description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; quantityNeeded: number; quantityOnHand: number; serialNumber: string; }[]; lotNumber: string; memo: string; objectType: 'qbd_build_assembly'; quantityCanBuild: number; quantityOnHand: number; quantityOnSalesOrder: number; quantityToBuild: number; refNumber: string; revisionNumber: string; serialNumber: string; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.buildAssemblies.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; customFields: object[]; expirationDate: string; externalId: string; inventoryAssemblyItem: object; inventorySite: object; inventorySiteLocation: object; isPending: boolean; lines: object[]; lotNumber: string; memo: string; objectType: 'qbd_build_assembly'; quantityCanBuild: number; quantityOnHand: number; quantityOnSalesOrder: number; quantityToBuild: number; refNumber: string; revisionNumber: string; serialNumber: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/build-assemblies/{id}`\n\nRetrieves a build assembly by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific build assemblies by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the build assembly to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; expirationDate: string; externalId: string; inventoryAssemblyItem: { id: string; fullName: string; }; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isPending: boolean; lines: { description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; quantityNeeded: number; quantityOnHand: number; serialNumber: string; }[]; lotNumber: string; memo: string; objectType: 'qbd_build_assembly'; quantityCanBuild: number; quantityOnHand: number; quantityOnSalesOrder: number; quantityToBuild: number; refNumber: string; revisionNumber: string; serialNumber: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `expirationDate: string`\n - `externalId: string`\n - `inventoryAssemblyItem: { id: string; fullName: string; }`\n - `inventorySite: { id: string; fullName: string; }`\n - `inventorySiteLocation: { id: string; fullName: string; }`\n - `isPending: boolean`\n - `lines: { description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; quantityNeeded: number; quantityOnHand: number; serialNumber: string; }[]`\n - `lotNumber: string`\n - `memo: string`\n - `objectType: 'qbd_build_assembly'`\n - `quantityCanBuild: number`\n - `quantityOnHand: number`\n - `quantityOnSalesOrder: number`\n - `quantityToBuild: number`\n - `refNumber: string`\n - `revisionNumber: string`\n - `serialNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst buildAssembly = await conductor.qbd.buildAssemblies.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(buildAssembly);\n```", perLanguage: { typescript: { method: 'client.qbd.buildAssemblies.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst buildAssembly = await conductor.qbd.buildAssemblies.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(buildAssembly.id);", }, python: { method: 'qbd.build_assemblies.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbuild_assembly = conductor.qbd.build_assemblies.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(build_assembly.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/build-assemblies/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/build-assemblies/{id}', httpMethod: 'post', summary: 'Update a build assembly', description: 'Updates an existing build assembly.', stainlessPath: '(resource) qbd.build_assemblies > (method) update', qualified: 'client.qbd.buildAssemblies.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'expirationDate?: string;', 'inventorySiteId?: string;', 'inventorySiteLocationId?: string;', 'lotNumber?: string;', 'markPendingIfRequired?: boolean;', 'memo?: string;', 'quantityToBuild?: number;', 'refNumber?: string;', 'removePending?: boolean;', 'serialNumber?: string;', 'transactionDate?: string;', ], response: "{ id: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; expirationDate: string; externalId: string; inventoryAssemblyItem: { id: string; fullName: string; }; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isPending: boolean; lines: { description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; quantityNeeded: number; quantityOnHand: number; serialNumber: string; }[]; lotNumber: string; memo: string; objectType: 'qbd_build_assembly'; quantityCanBuild: number; quantityOnHand: number; quantityOnSalesOrder: number; quantityToBuild: number; refNumber: string; revisionNumber: string; serialNumber: string; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.buildAssemblies.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, expirationDate?: string, inventorySiteId?: string, inventorySiteLocationId?: string, lotNumber?: string, markPendingIfRequired?: boolean, memo?: string, quantityToBuild?: number, refNumber?: string, removePending?: boolean, serialNumber?: string, transactionDate?: string): { id: string; createdAt: string; customFields: object[]; expirationDate: string; externalId: string; inventoryAssemblyItem: object; inventorySite: object; inventorySiteLocation: object; isPending: boolean; lines: object[]; lotNumber: string; memo: string; objectType: 'qbd_build_assembly'; quantityCanBuild: number; quantityOnHand: number; quantityOnSalesOrder: number; quantityToBuild: number; refNumber: string; revisionNumber: string; serialNumber: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/build-assemblies/{id}`\n\nUpdates an existing build assembly.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the build assembly to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the build assembly object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `expirationDate?: string`\n The expiration date for the serial number or lot number of the item associated with this build assembly, in ISO 8601 format (YYYY-MM-DD). This is particularly relevant for perishable or time-sensitive inventory items. Note that this field is only supported on QuickBooks Desktop 2023 or later.\n\n- `inventorySiteId?: string`\n The site location where inventory for the item associated with this build assembly is stored.\n\n- `inventorySiteLocationId?: string`\n The specific location (e.g., bin or shelf) within the inventory site where the item associated with this build assembly is stored.\n\n- `lotNumber?: string`\n The lot number of the item associated with this build assembly. Used for tracking groups of inventory items that are purchased or manufactured together.\n\n- `markPendingIfRequired?: boolean`\n When `true`, the build assembly will be marked pending if there are insufficient quantities to complete the build assembly.\n\n- `memo?: string`\n A memo or note for this build assembly.\n\n- `quantityToBuild?: number`\n The number of build assembly to be built. The transaction will fail if the number specified here exceeds the number of on-hand components.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this build assembly, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 11 characters.\n\n- `removePending?: boolean`\n When `true`, changes this build assembly's status from pending to non-pending, which effectively performs the build transaction. The operation will fail if there are insufficient component quantities on hand to complete the build.\n\n- `serialNumber?: string`\n The serial number of the item associated with this build assembly. This is used for tracking individual units of serialized inventory items.\n\n- `transactionDate?: string`\n The date of this build assembly, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; expirationDate: string; externalId: string; inventoryAssemblyItem: { id: string; fullName: string; }; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isPending: boolean; lines: { description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; quantityNeeded: number; quantityOnHand: number; serialNumber: string; }[]; lotNumber: string; memo: string; objectType: 'qbd_build_assembly'; quantityCanBuild: number; quantityOnHand: number; quantityOnSalesOrder: number; quantityToBuild: number; refNumber: string; revisionNumber: string; serialNumber: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `expirationDate: string`\n - `externalId: string`\n - `inventoryAssemblyItem: { id: string; fullName: string; }`\n - `inventorySite: { id: string; fullName: string; }`\n - `inventorySiteLocation: { id: string; fullName: string; }`\n - `isPending: boolean`\n - `lines: { description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; quantityNeeded: number; quantityOnHand: number; serialNumber: string; }[]`\n - `lotNumber: string`\n - `memo: string`\n - `objectType: 'qbd_build_assembly'`\n - `quantityCanBuild: number`\n - `quantityOnHand: number`\n - `quantityOnSalesOrder: number`\n - `quantityToBuild: number`\n - `refNumber: string`\n - `revisionNumber: string`\n - `serialNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst buildAssembly = await conductor.qbd.buildAssemblies.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(buildAssembly);\n```", perLanguage: { typescript: { method: 'client.qbd.buildAssemblies.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst buildAssembly = await conductor.qbd.buildAssemblies.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(buildAssembly.id);", }, python: { method: 'qbd.build_assemblies.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbuild_assembly = conductor.qbd.build_assemblies.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(build_assembly.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/build-assemblies/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "expirationDate": "2025-12-31",\n "inventorySiteId": "80000001-1234567890",\n "inventorySiteLocationId": "80000001-1234567890",\n "lotNumber": "LOT2023-001",\n "markPendingIfRequired": true,\n "memo": "Assembled 25 units of Model ABC-123 Office Chair",\n "quantityToBuild": 7,\n "refNumber": "BUILD-1234",\n "removePending": true,\n "serialNumber": "SN1234567890",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/build-assemblies/{id}', httpMethod: 'delete', summary: 'Delete a build assembly', description: 'Permanently deletes a build assembly. The deletion will fail if the build assembly is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.build_assemblies > (method) delete', qualified: 'client.qbd.buildAssemblies.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_build_assembly'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.buildAssemblies.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_build_assembly'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/build-assemblies/{id}`\n\nPermanently deletes a build assembly. The deletion will fail if the build assembly is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the build assembly to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_build_assembly'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_build_assembly'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst buildAssembly = await conductor.qbd.buildAssemblies.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(buildAssembly);\n```", perLanguage: { typescript: { method: 'client.qbd.buildAssemblies.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst buildAssembly = await conductor.qbd.buildAssemblies.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(buildAssembly.id);", }, python: { method: 'qbd.build_assemblies.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nbuild_assembly = conductor.qbd.build_assemblies.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(build_assembly.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/build-assemblies/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/checks', httpMethod: 'post', summary: 'Create a check', description: 'Creates a non-payroll check from a bank account. QuickBooks uses this request for direct expense disbursements; to pay vendor bills or payroll liabilities you must use the dedicated bill-payment or payroll transactions instead.', stainlessPath: '(resource) qbd.checks > (method) create', qualified: 'client.qbd.checks.create', params: [ 'bankAccountId: string;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'applyToTransactions?: { transactionId: string; amount?: string; }[];', 'exchangeRate?: number;', "expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[];", 'externalId?: string;', 'isQueuedForPrint?: boolean;', 'itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[];', "itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'payeeId?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', ], response: "{ id: string; address: object; amount: string; amountInHomeCurrency: string; bankAccount: object; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; isPending: boolean; isQueuedForPrint: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_check'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.checks.create(bankAccountId: string, transactionDate: string, Conductor-End-User-Id: string, address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, applyToTransactions?: { transactionId: string; amount?: string; }[], exchangeRate?: number, expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[], externalId?: string, isQueuedForPrint?: boolean, itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[], itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], memo?: string, payeeId?: string, refNumber?: string, salesTaxCodeId?: string): { id: string; address: object; amount: string; amountInHomeCurrency: string; bankAccount: object; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; isPending: boolean; isQueuedForPrint: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_check'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/checks`\n\nCreates a non-payroll check from a bank account. QuickBooks uses this request for direct expense disbursements; to pay vendor bills or payroll liabilities you must use the dedicated bill-payment or payroll transactions instead.\n\n### Parameters\n\n- `bankAccountId: string`\n The bank account from which the funds are being drawn for this check; e.g., Checking or Savings. This check will decrease the balance of this account.\n\n- `transactionDate: string`\n The date written on this check, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The address that is printed on the check.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `applyToTransactions?: { transactionId: string; amount?: string; }[]`\n Transactions to be paid by this check. This will create a link between this check and the specified transactions.\n\n**IMPORTANT**: By default, QuickBooks will not return any information about the linked transactions in this endpoint's response even when this request is successful. To see the transactions linked via this field, refetch the check and check the `linkedTransactions` response field. If fetching a list of checks, you must also specify the parameter `includeLinkedTransactions=true` to see the `linkedTransactions` response field.\n\n- `exchangeRate?: number`\n The market exchange rate between this check's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[]`\n The check's expense lines, each representing one line in this expense.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this check is included in the queue of documents for QuickBooks to print.\n\n- `itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The check's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.\n\n- `itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The check's item lines, each representing the purchase of a specific item or service.\n\n- `memo?: string`\n The memo that is printed on this check.\n\n- `payeeId?: string`\n The person or company who will receive this check.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this check, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\n**IMPORTANT**: For checks, this field is the check number.\n\nMaximum length: 11 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this check, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the payee. This can be overridden on the check's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; amountInHomeCurrency: string; bankAccount: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; isPending: boolean; isQueuedForPrint: boolean; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_check'; payee: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `bankAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `isPending: boolean`\n - `isQueuedForPrint: boolean`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_check'`\n - `payee: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst check = await conductor.qbd.checks.create({\n bankAccountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(check);\n```", perLanguage: { typescript: { method: 'client.qbd.checks.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst check = await conductor.qbd.checks.create({\n bankAccountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(check.id);", }, python: { method: 'qbd.checks.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncheck = conductor.qbd.checks.create(\n bank_account_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(check.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/checks \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "bankAccountId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isQueuedForPrint": true,\n "memo": "Payment for office supplies - Invoice INV-1234",\n "payeeId": "80000001-1234567890",\n "refNumber": "CHECK-1234",\n "salesTaxCodeId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/checks', httpMethod: 'get', summary: 'List all checks', description: 'Returns a list of checks. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.checks > (method) list', qualified: 'client.qbd.checks.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'ids?: string[];', 'includeLineItems?: boolean;', 'includeLinkedTransactions?: boolean;', 'limit?: number;', 'payeeIds?: string[];', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; address: object; amount: string; amountInHomeCurrency: string; bankAccount: object; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; isPending: boolean; isQueuedForPrint: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_check'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.checks.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, ids?: string[], includeLineItems?: boolean, includeLinkedTransactions?: boolean, limit?: number, payeeIds?: string[], refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; address: object; amount: string; amountInHomeCurrency: string; bankAccount: object; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; isPending: boolean; isQueuedForPrint: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_check'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/checks`\n\nReturns a list of checks. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for checks associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for checks in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific checks by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `includeLinkedTransactions?: boolean`\n Whether to include linked transactions in the response. Defaults to `false`. For example, a payment linked to the corresponding check.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `payeeIds?: string[]`\n Filter for checks addressed to these payees. These are the people or companies who will receive these checks.\n\n- `refNumberContains?: string`\n Filter for checks whose `refNumber` contains this substring. (For checks, this field is the check number.)\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for checks whose `refNumber` ends with this substring. (For checks, this field is the check number.)\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for checks whose `refNumber` is greater than or equal to this value. (For checks, this field is the check number.) If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific checks by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for checks whose `refNumber` starts with this substring. (For checks, this field is the check number.)\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for checks whose `refNumber` is less than or equal to this value. (For checks, this field is the check number.) If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for checks whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for checks whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for checks updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for checks updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; amountInHomeCurrency: string; bankAccount: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; isPending: boolean; isQueuedForPrint: boolean; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_check'; payee: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `bankAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `isPending: boolean`\n - `isQueuedForPrint: boolean`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_check'`\n - `payee: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const check of conductor.qbd.checks.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(check);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.checks.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const check of conductor.qbd.checks.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(check.id);\n}", }, python: { method: 'qbd.checks.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.checks.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/checks \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/checks/{id}', httpMethod: 'get', summary: 'Retrieve a check', description: 'Retrieves a check by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific checks by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.', stainlessPath: '(resource) qbd.checks > (method) retrieve', qualified: 'client.qbd.checks.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; address: object; amount: string; amountInHomeCurrency: string; bankAccount: object; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; isPending: boolean; isQueuedForPrint: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_check'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.checks.retrieve(id: string, Conductor-End-User-Id: string): { id: string; address: object; amount: string; amountInHomeCurrency: string; bankAccount: object; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; isPending: boolean; isQueuedForPrint: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_check'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/checks/{id}`\n\nRetrieves a check by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific checks by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the check to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; amountInHomeCurrency: string; bankAccount: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; isPending: boolean; isQueuedForPrint: boolean; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_check'; payee: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `bankAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `isPending: boolean`\n - `isQueuedForPrint: boolean`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_check'`\n - `payee: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst check = await conductor.qbd.checks.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(check);\n```", perLanguage: { typescript: { method: 'client.qbd.checks.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst check = await conductor.qbd.checks.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(check.id);", }, python: { method: 'qbd.checks.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncheck = conductor.qbd.checks.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(check.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/checks/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/checks/{id}', httpMethod: 'post', summary: 'Update a check', description: 'Updates a standard check so you can adjust the issuing account, payee details, memo, transaction date, or expense and item lines. This request cannot modify checks created through the bill-payment workflow.\n\n**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.checks > (method) update', qualified: 'client.qbd.checks.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'applyToTransactions?: { transactionId: string; amount?: string; }[];', 'bankAccountId?: string;', 'clearExpenseLines?: boolean;', 'clearItemLines?: boolean;', 'exchangeRate?: number;', "expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[];", 'isQueuedForPrint?: boolean;', "itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[];", "itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'payeeId?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', 'transactionDate?: string;', ], response: "{ id: string; address: object; amount: string; amountInHomeCurrency: string; bankAccount: object; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; isPending: boolean; isQueuedForPrint: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_check'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.checks.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, applyToTransactions?: { transactionId: string; amount?: string; }[], bankAccountId?: string, clearExpenseLines?: boolean, clearItemLines?: boolean, exchangeRate?: number, expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[], isQueuedForPrint?: boolean, itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[], itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], memo?: string, payeeId?: string, refNumber?: string, salesTaxCodeId?: string, transactionDate?: string): { id: string; address: object; amount: string; amountInHomeCurrency: string; bankAccount: object; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; isPending: boolean; isQueuedForPrint: boolean; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_check'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/checks/{id}`\n\nUpdates a standard check so you can adjust the issuing account, payee details, memo, transaction date, or expense and item lines. This request cannot modify checks created through the bill-payment workflow.\n\n**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the check to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the check object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The address that is printed on the check.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `applyToTransactions?: { transactionId: string; amount?: string; }[]`\n Transactions to be paid by this check. This will create a link between this check and the specified transactions.\n\n**IMPORTANT**: By default, QuickBooks will not return any information about the linked transactions in this endpoint's response even when this request is successful. To see the transactions linked via this field, refetch the check and check the `linkedTransactions` response field. If fetching a list of checks, you must also specify the parameter `includeLinkedTransactions=true` to see the `linkedTransactions` response field.\n\n- `bankAccountId?: string`\n The bank account from which the funds are being drawn for this check; e.g., Checking or Savings. This check will decrease the balance of this account.\n\n- `clearExpenseLines?: boolean`\n When `true`, removes all existing expense lines associated with this check. To modify or add individual expense lines, use the field `expenseLines` instead.\n\n- `clearItemLines?: boolean`\n When `true`, removes all existing item lines associated with this check. To modify or add individual item lines, use the field `itemLines` instead.\n\n- `exchangeRate?: number`\n The market exchange rate between this check's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[]`\n The check's expense lines, each representing one line in this expense.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing expense lines for the check with this array. To keep any existing expense lines, you must include them in this array even if they have not changed. **Any expense lines not included will be removed.**\n\n2. To add a new expense line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any expense lines, omit this field entirely to keep them unchanged.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this check is included in the queue of documents for QuickBooks to print.\n\n- `itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The check's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item group lines for the check with this array. To keep any existing item group lines, you must include them in this array even if they have not changed. **Any item group lines not included will be removed.**\n\n2. To add a new item group line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item group lines, omit this field entirely to keep them unchanged.\n\n- `itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The check's item lines, each representing the purchase of a specific item or service.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item lines for the check with this array. To keep any existing item lines, you must include them in this array even if they have not changed. **Any item lines not included will be removed.**\n\n2. To add a new item line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item lines, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n The memo that is printed on this check.\n\n- `payeeId?: string`\n The person or company who will receive this check.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this check, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: For checks, this field is the check number.\n\nMaximum length: 11 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this check, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the payee. This can be overridden on the check's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `transactionDate?: string`\n The date written on this check, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; amountInHomeCurrency: string; bankAccount: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; isPending: boolean; isQueuedForPrint: boolean; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_check'; payee: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `bankAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `isPending: boolean`\n - `isQueuedForPrint: boolean`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_check'`\n - `payee: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst check = await conductor.qbd.checks.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(check);\n```", perLanguage: { typescript: { method: 'client.qbd.checks.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst check = await conductor.qbd.checks.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(check.id);", }, python: { method: 'qbd.checks.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncheck = conductor.qbd.checks.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(check.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/checks/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "bankAccountId": "80000001-1234567890",\n "clearExpenseLines": false,\n "clearItemLines": false,\n "exchangeRate": 1.2345,\n "isQueuedForPrint": true,\n "memo": "Payment for office supplies - Invoice INV-1234",\n "payeeId": "80000001-1234567890",\n "refNumber": "CHECK-1234",\n "salesTaxCodeId": "80000001-1234567890",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/checks/{id}/void', httpMethod: 'post', summary: 'Void a check', description: 'Voids a check by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the check is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.checks > (method) void', qualified: 'client.qbd.checks.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_check'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.checks.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_check'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/checks/{id}/void`\n\nVoids a check by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the check is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the check to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_check'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_check'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.checks.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.checks.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.checks.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.checks.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.checks.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/checks/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/checks/{id}', httpMethod: 'delete', summary: 'Delete a check', description: 'Permanently deletes a check. The deletion will fail if the check is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.checks > (method) delete', qualified: 'client.qbd.checks.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_check'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.checks.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_check'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/checks/{id}`\n\nPermanently deletes a check. The deletion will fail if the check is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the check to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_check'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_check'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst check = await conductor.qbd.checks.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(check);\n```", perLanguage: { typescript: { method: 'client.qbd.checks.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst check = await conductor.qbd.checks.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(check.id);", }, python: { method: 'qbd.checks.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncheck = conductor.qbd.checks.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(check.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/checks/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/classes', httpMethod: 'post', summary: 'Create a class', description: 'Creates a new class.', stainlessPath: '(resource) qbd.classes > (method) create', qualified: 'client.qbd.classes.create', params: ['name: string;', 'Conductor-End-User-Id: string;', 'isActive?: boolean;', 'parentId?: string;'], response: "{ id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_class'; parent: { id: string; fullName: string; }; revisionNumber: string; sublevel: number; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.classes.create(name: string, Conductor-End-User-Id: string, isActive?: boolean, parentId?: string): { id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_class'; parent: object; revisionNumber: string; sublevel: number; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/classes`\n\nCreates a new class.\n\n### Parameters\n\n- `name: string`\n The case-insensitive name of this class. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two classes could both have the `name` \"Marketing\", but they could have unique `fullName` values, such as \"Department:Marketing\" and \"Internal:Marketing\".\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `isActive?: boolean`\n Indicates whether this class is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `parentId?: string`\n The parent class one level above this one in the hierarchy. For example, if this class has a `fullName` of \"Department:Marketing\", its parent has a `fullName` of \"Department\". If this class is at the top level, this field will be `null`.\n\n### Returns\n\n- `{ id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_class'; parent: { id: string; fullName: string; }; revisionNumber: string; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_class'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst _class = await conductor.qbd.classes.create({ name: 'Marketing', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(_class);\n```", perLanguage: { typescript: { method: 'client.qbd.classes.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst _class = await conductor.qbd.classes.create({\n name: 'Marketing',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(_class.id);", }, python: { method: 'qbd.classes.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nclass_ = conductor.qbd.classes.create(\n name="Marketing",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(class_.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/classes \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Marketing",\n "isActive": true,\n "parentId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/classes', httpMethod: 'get', summary: 'List all classes', description: 'Returns a list of classes.\n\n**NOTE:** QuickBooks Desktop does not support pagination for classes; hence, there is no `cursor` parameter. Users typically have few classes.', stainlessPath: '(resource) qbd.classes > (method) list', qualified: 'client.qbd.classes.list', params: [ 'Conductor-End-User-Id: string;', 'fullNames?: string[];', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_class'; parent: object; revisionNumber: string; sublevel: number; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.classes.list(Conductor-End-User-Id: string, fullNames?: string[], ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: class[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/classes`\n\nReturns a list of classes.\n\n**NOTE:** QuickBooks Desktop does not support pagination for classes; hence, there is no `cursor` parameter. Users typically have few classes.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `fullNames?: string[]`\n Filter for specific classes by their full-name(s), case-insensitive. Like `id`, `fullName` is a unique identifier for a class, formed by by combining the names of its parent objects with its own `name`, separated by colons. For example, if a class is under \"Department\" and has the `name` \"Marketing\", its `fullName` would be \"Department:Marketing\".\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `ids?: string[]`\n Filter for specific classes by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for classes. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all classes without limit, unlike paginated endpoints which default to 150 records. This is acceptable because classes typically have low record counts.\n\n- `nameContains?: string`\n Filter for classes whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for classes whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for classes whose `name` is alphabetically greater than or equal to this value.\n\n- `nameStartsWith?: string`\n Filter for classes whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for classes whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for classes that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for classes updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for classes updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_class'; parent: object; revisionNumber: string; sublevel: number; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_class'; parent: { id: string; fullName: string; }; revisionNumber: string; sublevel: number; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst classes = await conductor.qbd.classes.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(classes);\n```", perLanguage: { typescript: { method: 'client.qbd.classes.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst classes = await conductor.qbd.classes.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(classes.data);", }, python: { method: 'qbd.classes.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nclasses = conductor.qbd.classes.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(classes.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/classes \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/classes/{id}', httpMethod: 'get', summary: 'Retrieve a class', description: 'Retrieves a class by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific classes by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.classes > (method) retrieve', qualified: 'client.qbd.classes.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_class'; parent: { id: string; fullName: string; }; revisionNumber: string; sublevel: number; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.classes.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_class'; parent: object; revisionNumber: string; sublevel: number; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/classes/{id}`\n\nRetrieves a class by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific classes by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the class to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_class'; parent: { id: string; fullName: string; }; revisionNumber: string; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_class'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst _class = await conductor.qbd.classes.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(_class);\n```", perLanguage: { typescript: { method: 'client.qbd.classes.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst _class = await conductor.qbd.classes.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(_class.id);", }, python: { method: 'qbd.classes.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nclass_ = conductor.qbd.classes.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(class_.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/classes/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/classes/{id}', httpMethod: 'post', summary: 'Update a class', description: 'Updates an existing class.', stainlessPath: '(resource) qbd.classes > (method) update', qualified: 'client.qbd.classes.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'isActive?: boolean;', 'name?: string;', 'parentId?: string;', ], response: "{ id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_class'; parent: { id: string; fullName: string; }; revisionNumber: string; sublevel: number; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.classes.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, isActive?: boolean, name?: string, parentId?: string): { id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_class'; parent: object; revisionNumber: string; sublevel: number; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/classes/{id}`\n\nUpdates an existing class.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the class to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the class object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `isActive?: boolean`\n Indicates whether this class is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `name?: string`\n The case-insensitive name of this class. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two classes could both have the `name` \"Marketing\", but they could have unique `fullName` values, such as \"Department:Marketing\" and \"Internal:Marketing\".\n\nMaximum length: 31 characters.\n\n- `parentId?: string`\n The parent class one level above this one in the hierarchy. For example, if this class has a `fullName` of \"Department:Marketing\", its parent has a `fullName` of \"Department\". If this class is at the top level, this field will be `null`.\n\n### Returns\n\n- `{ id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_class'; parent: { id: string; fullName: string; }; revisionNumber: string; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_class'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst _class = await conductor.qbd.classes.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(_class);\n```", perLanguage: { typescript: { method: 'client.qbd.classes.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst _class = await conductor.qbd.classes.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(_class.id);", }, python: { method: 'qbd.classes.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nclass_ = conductor.qbd.classes.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(class_.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/classes/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "isActive": true,\n "name": "Marketing",\n "parentId": "80000001-1234567890"\n }\'', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/company', httpMethod: 'get', summary: 'Retrieve company file info', description: 'Returns detailed information about the connected QuickBooks company file, including company address, legal name, preferences, and subscribed services. Note that company information cannot be modified through the API, only through the QuickBooks Desktop user interface.', stainlessPath: '(resource) qbd.company > (method) retrieve', qualified: 'client.qbd.company.retrieve', params: ['Conductor-End-User-Id: string;'], response: "{ accountantCopy: { accountantCopyExists: boolean; dividingDate: string; }; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; addressForCustomer: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; companyName: string; companyType: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; ein: string; email: string; fax: string; fiscalYearStartMonth: string; incomeTaxYearStartMonth: string; isSampleCompanyFile: boolean; legalAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; legalCompanyName: string; phone: string; ssn: string; subscribedServices: { services: { domain: string; name: string; serviceStatus: 'active' | 'expired' | 'never' | 'pending' | 'suspended' | 'terminated' | 'trial'; }[]; }; taxForm: string; website: string; }", markdown: "## retrieve\n\n`conductor.qbd.company.retrieve(Conductor-End-User-Id: string): { accountantCopy: object; address: object; addressForCustomer: object; companyName: string; companyType: string; customFields: object[]; ein: string; email: string; fax: string; fiscalYearStartMonth: string; incomeTaxYearStartMonth: string; isSampleCompanyFile: boolean; legalAddress: object; legalCompanyName: string; phone: string; ssn: string; subscribedServices: object; taxForm: string; website: string; }`\n\n**get** `/quickbooks-desktop/company`\n\nReturns detailed information about the connected QuickBooks company file, including company address, legal name, preferences, and subscribed services. Note that company information cannot be modified through the API, only through the QuickBooks Desktop user interface.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ accountantCopy: { accountantCopyExists: boolean; dividingDate: string; }; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; addressForCustomer: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; companyName: string; companyType: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; ein: string; email: string; fax: string; fiscalYearStartMonth: string; incomeTaxYearStartMonth: string; isSampleCompanyFile: boolean; legalAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; legalCompanyName: string; phone: string; ssn: string; subscribedServices: { services: { domain: string; name: string; serviceStatus: 'active' | 'expired' | 'never' | 'pending' | 'suspended' | 'terminated' | 'trial'; }[]; }; taxForm: string; website: string; }`\n\n - `accountantCopy: { accountantCopyExists: boolean; dividingDate: string; }`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `addressForCustomer: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `companyName: string`\n - `companyType: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `ein: string`\n - `email: string`\n - `fax: string`\n - `fiscalYearStartMonth: string`\n - `incomeTaxYearStartMonth: string`\n - `isSampleCompanyFile: boolean`\n - `legalAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `legalCompanyName: string`\n - `phone: string`\n - `ssn: string`\n - `subscribedServices: { services: { domain: string; name: string; serviceStatus: 'active' | 'expired' | 'never' | 'pending' | 'suspended' | 'terminated' | 'trial'; }[]; }`\n - `taxForm: string`\n - `website: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst company = await conductor.qbd.company.retrieve({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(company);\n```", perLanguage: { typescript: { method: 'client.qbd.company.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst company = await conductor.qbd.company.retrieve({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(company.accountantCopy);", }, python: { method: 'qbd.company.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncompany = conductor.qbd.company.retrieve(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(company.accountant_copy)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/company \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/credit-card-charges', httpMethod: 'post', summary: 'Create a credit card charge', description: 'Creates a new credit card charge for the specified account.', stainlessPath: '(resource) qbd.credit_card_charges > (method) create', qualified: 'client.qbd.creditCardCharges.create', params: [ 'accountId: string;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'exchangeRate?: number;', "expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[];", 'externalId?: string;', 'itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[];', "itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'payeeId?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', ], response: "{ id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_charge'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.creditCardCharges.create(accountId: string, transactionDate: string, Conductor-End-User-Id: string, exchangeRate?: number, expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[], externalId?: string, itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[], itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], memo?: string, payeeId?: string, refNumber?: string, salesTaxCodeId?: string): { id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_charge'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/credit-card-charges`\n\nCreates a new credit card charge for the specified account.\n\n### Parameters\n\n- `accountId: string`\n The bank or credit card account to which money is owed for this credit card charge.\n\n- `transactionDate: string`\n The date of this credit card charge, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `exchangeRate?: number`\n The market exchange rate between this credit card charge's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[]`\n The credit card charge's expense lines, each representing one line in this expense.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The credit card charge's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.\n\n- `itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The credit card charge's item lines, each representing the purchase of a specific item or service.\n\n- `memo?: string`\n A memo or note for this credit card charge.\n\n- `payeeId?: string`\n The vendor or company from whom merchandise or services were purchased for this credit card charge.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this credit card charge, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this credit card charge, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the payee. This can be overridden on the credit card charge's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; amount: string; amountInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; memo: string; objectType: 'qbd_credit_card_charge'; payee: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_credit_card_charge'`\n - `payee: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditCardCharge = await conductor.qbd.creditCardCharges.create({\n accountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardCharge);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardCharges.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditCardCharge = await conductor.qbd.creditCardCharges.create({\n accountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardCharge.id);", }, python: { method: 'qbd.credit_card_charges.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_card_charge = conductor.qbd.credit_card_charges.create(\n account_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_card_charge.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-charges \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "accountId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "memo": "Office supplies for Q3 marketing campaign",\n "payeeId": "80000001-1234567890",\n "refNumber": "CARD-1234",\n "salesTaxCodeId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/credit-card-charges', httpMethod: 'get', summary: 'List all credit card charges', description: 'Returns a list of credit card charges. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.credit_card_charges > (method) list', qualified: 'client.qbd.creditCardCharges.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'ids?: string[];', 'includeLineItems?: boolean;', 'limit?: number;', 'payeeIds?: string[];', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_charge'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.creditCardCharges.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, ids?: string[], includeLineItems?: boolean, limit?: number, payeeIds?: string[], refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_charge'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/credit-card-charges`\n\nReturns a list of credit card charges. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for credit card charges associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for credit card charges in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific credit card charges by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `payeeIds?: string[]`\n Filter for credit card charges paid to these payees. These are the vendors or companies from whom merchandise or services were purchased for these credit card charges.\n\n- `refNumberContains?: string`\n Filter for credit card charges whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for credit card charges whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for credit card charges whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific credit card charges by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for credit card charges whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for credit card charges whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for credit card charges whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for credit card charges whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for credit card charges updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for credit card charges updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; amount: string; amountInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; memo: string; objectType: 'qbd_credit_card_charge'; payee: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_credit_card_charge'`\n - `payee: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const creditCardCharge of conductor.qbd.creditCardCharges.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(creditCardCharge);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardCharges.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const creditCardCharge of conductor.qbd.creditCardCharges.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(creditCardCharge.id);\n}", }, python: { method: 'qbd.credit_card_charges.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.credit_card_charges.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-charges \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/credit-card-charges/{id}', httpMethod: 'get', summary: 'Retrieve a credit card charge', description: 'Retrieves a credit card charge by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific credit card charges by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.credit_card_charges > (method) retrieve', qualified: 'client.qbd.creditCardCharges.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_charge'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.creditCardCharges.retrieve(id: string, Conductor-End-User-Id: string): { id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_charge'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/credit-card-charges/{id}`\n\nRetrieves a credit card charge by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific credit card charges by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit card charge to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; amount: string; amountInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; memo: string; objectType: 'qbd_credit_card_charge'; payee: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_credit_card_charge'`\n - `payee: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditCardCharge = await conductor.qbd.creditCardCharges.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(creditCardCharge);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardCharges.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditCardCharge = await conductor.qbd.creditCardCharges.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardCharge.id);", }, python: { method: 'qbd.credit_card_charges.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_card_charge = conductor.qbd.credit_card_charges.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_card_charge.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-charges/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/credit-card-charges/{id}', httpMethod: 'post', summary: 'Update a credit card charge', description: 'Updates an existing credit card charge so you can adjust the credit card account, payee, memo, transaction date, and expense or item lines. The total is recalculated from the line details.\n\n**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.credit_card_charges > (method) update', qualified: 'client.qbd.creditCardCharges.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'accountId?: string;', 'clearExpenseLines?: boolean;', 'clearItemLines?: boolean;', 'exchangeRate?: number;', "expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[];", "itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[];", "itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'payeeId?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', 'transactionDate?: string;', ], response: "{ id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_charge'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.creditCardCharges.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, accountId?: string, clearExpenseLines?: boolean, clearItemLines?: boolean, exchangeRate?: number, expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[], itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[], itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], memo?: string, payeeId?: string, refNumber?: string, salesTaxCodeId?: string, transactionDate?: string): { id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_charge'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/credit-card-charges/{id}`\n\nUpdates an existing credit card charge so you can adjust the credit card account, payee, memo, transaction date, and expense or item lines. The total is recalculated from the line details.\n\n**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit card charge to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the credit card charge object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountId?: string`\n The bank or credit card account to which money is owed for this credit card charge.\n\n- `clearExpenseLines?: boolean`\n When `true`, removes all existing expense lines associated with this credit card charge. To modify or add individual expense lines, use the field `expenseLines` instead.\n\n- `clearItemLines?: boolean`\n When `true`, removes all existing item lines associated with this credit card charge. To modify or add individual item lines, use the field `itemLines` instead.\n\n- `exchangeRate?: number`\n The market exchange rate between this credit card charge's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[]`\n The credit card charge's expense lines, each representing one line in this expense.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing expense lines for the credit card charge with this array. To keep any existing expense lines, you must include them in this array even if they have not changed. **Any expense lines not included will be removed.**\n\n2. To add a new expense line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any expense lines, omit this field entirely to keep them unchanged.\n\n- `itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The credit card charge's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item group lines for the credit card charge with this array. To keep any existing item group lines, you must include them in this array even if they have not changed. **Any item group lines not included will be removed.**\n\n2. To add a new item group line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item group lines, omit this field entirely to keep them unchanged.\n\n- `itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The credit card charge's item lines, each representing the purchase of a specific item or service.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item lines for the credit card charge with this array. To keep any existing item lines, you must include them in this array even if they have not changed. **Any item lines not included will be removed.**\n\n2. To add a new item line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item lines, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this credit card charge.\n\n- `payeeId?: string`\n The vendor or company from whom merchandise or services were purchased for this credit card charge.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this credit card charge, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 11 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this credit card charge, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the payee. This can be overridden on the credit card charge's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `transactionDate?: string`\n The date of this credit card charge, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; amount: string; amountInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; memo: string; objectType: 'qbd_credit_card_charge'; payee: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_credit_card_charge'`\n - `payee: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditCardCharge = await conductor.qbd.creditCardCharges.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(creditCardCharge);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardCharges.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditCardCharge = await conductor.qbd.creditCardCharges.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardCharge.id);", }, python: { method: 'qbd.credit_card_charges.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_card_charge = conductor.qbd.credit_card_charges.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_card_charge.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-charges/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "accountId": "80000001-1234567890",\n "clearExpenseLines": false,\n "clearItemLines": false,\n "exchangeRate": 1.2345,\n "memo": "Office supplies for Q3 marketing campaign",\n "payeeId": "80000001-1234567890",\n "refNumber": "CARD-1234",\n "salesTaxCodeId": "80000001-1234567890",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/credit-card-charges/{id}/void', httpMethod: 'post', summary: 'Void a credit card charge', description: 'Voids a credit card charge by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the credit card charge is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.credit_card_charges > (method) void', qualified: 'client.qbd.creditCardCharges.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_credit_card_charge'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.creditCardCharges.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_credit_card_charge'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/credit-card-charges/{id}/void`\n\nVoids a credit card charge by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the credit card charge is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit card charge to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_credit_card_charge'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_credit_card_charge'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.creditCardCharges.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardCharges.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.creditCardCharges.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.credit_card_charges.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.credit_card_charges.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-charges/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/credit-card-charges/{id}', httpMethod: 'delete', summary: 'Delete a credit card charge', description: 'Permanently deletes a credit card charge. The deletion will fail if the credit card charge is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.credit_card_charges > (method) delete', qualified: 'client.qbd.creditCardCharges.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_credit_card_charge'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.creditCardCharges.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_credit_card_charge'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/credit-card-charges/{id}`\n\nPermanently deletes a credit card charge. The deletion will fail if the credit card charge is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit card charge to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_credit_card_charge'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_credit_card_charge'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditCardCharge = await conductor.qbd.creditCardCharges.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(creditCardCharge);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardCharges.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditCardCharge = await conductor.qbd.creditCardCharges.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardCharge.id);", }, python: { method: 'qbd.credit_card_charges.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_card_charge = conductor.qbd.credit_card_charges.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_card_charge.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-charges/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/credit-card-credits', httpMethod: 'post', summary: 'Create a credit card credit', description: 'Creates a new credit card credit for the specified account.', stainlessPath: '(resource) qbd.credit_card_credits > (method) create', qualified: 'client.qbd.creditCardCredits.create', params: [ 'accountId: string;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'exchangeRate?: number;', "expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[];", 'externalId?: string;', 'itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[];', "itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'payeeId?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', ], response: "{ id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_credit'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.creditCardCredits.create(accountId: string, transactionDate: string, Conductor-End-User-Id: string, exchangeRate?: number, expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[], externalId?: string, itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[], itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], memo?: string, payeeId?: string, refNumber?: string, salesTaxCodeId?: string): { id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_credit'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/credit-card-credits`\n\nCreates a new credit card credit for the specified account.\n\n### Parameters\n\n- `accountId: string`\n The bank or credit card account to which this credit card credit is posted.\n\n- `transactionDate: string`\n The date of this credit card credit, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `exchangeRate?: number`\n The market exchange rate between this credit card credit's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[]`\n The credit card credit's expense lines, each representing one line in this expense.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The credit card credit's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.\n\n- `itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The credit card credit's item lines, each representing the purchase of a specific item or service.\n\n- `memo?: string`\n A memo or note for this credit card credit.\n\n- `payeeId?: string`\n The vendor or company from whom this credit card credit was received for purchased merchandise or services.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this credit card credit, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this credit card credit, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the payee. This can be overridden on the credit card credit's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; amount: string; amountInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; memo: string; objectType: 'qbd_credit_card_credit'; payee: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_credit_card_credit'`\n - `payee: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditCardCredit = await conductor.qbd.creditCardCredits.create({\n accountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardCredit);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardCredits.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditCardCredit = await conductor.qbd.creditCardCredits.create({\n accountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardCredit.id);", }, python: { method: 'qbd.credit_card_credits.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_card_credit = conductor.qbd.credit_card_credits.create(\n account_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_card_credit.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-credits \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "accountId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "memo": "Refund for returned office supplies",\n "payeeId": "80000001-1234567890",\n "refNumber": "CREDIT-1234",\n "salesTaxCodeId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/credit-card-credits', httpMethod: 'get', summary: 'List all credit card credits', description: 'Returns a list of credit card credits. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.credit_card_credits > (method) list', qualified: 'client.qbd.creditCardCredits.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'ids?: string[];', 'includeLineItems?: boolean;', 'limit?: number;', 'payeeIds?: string[];', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_credit'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.creditCardCredits.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, ids?: string[], includeLineItems?: boolean, limit?: number, payeeIds?: string[], refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_credit'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/credit-card-credits`\n\nReturns a list of credit card credits. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for credit card credits associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for credit card credits in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific credit card credits by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `payeeIds?: string[]`\n Filter for credit card credits received from these payees. These are the vendors or companies from whom these credit card credits were received.\n\n- `refNumberContains?: string`\n Filter for credit card credits whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for credit card credits whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for credit card credits whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific credit card credits by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for credit card credits whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for credit card credits whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for credit card credits whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for credit card credits whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for credit card credits updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for credit card credits updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; amount: string; amountInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; memo: string; objectType: 'qbd_credit_card_credit'; payee: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_credit_card_credit'`\n - `payee: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const creditCardCredit of conductor.qbd.creditCardCredits.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(creditCardCredit);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardCredits.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const creditCardCredit of conductor.qbd.creditCardCredits.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(creditCardCredit.id);\n}", }, python: { method: 'qbd.credit_card_credits.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.credit_card_credits.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-credits \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/credit-card-credits/{id}', httpMethod: 'get', summary: 'Retrieve a credit card credit', description: 'Retrieves a credit card credit by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific credit card credits by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.credit_card_credits > (method) retrieve', qualified: 'client.qbd.creditCardCredits.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_credit'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.creditCardCredits.retrieve(id: string, Conductor-End-User-Id: string): { id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_credit'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/credit-card-credits/{id}`\n\nRetrieves a credit card credit by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific credit card credits by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit card credit to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; amount: string; amountInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; memo: string; objectType: 'qbd_credit_card_credit'; payee: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_credit_card_credit'`\n - `payee: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditCardCredit = await conductor.qbd.creditCardCredits.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(creditCardCredit);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardCredits.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditCardCredit = await conductor.qbd.creditCardCredits.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardCredit.id);", }, python: { method: 'qbd.credit_card_credits.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_card_credit = conductor.qbd.credit_card_credits.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_card_credit.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-credits/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/credit-card-credits/{id}', httpMethod: 'post', summary: 'Update a credit card credit', description: 'Updates an existing credit card credit.\n\n**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.credit_card_credits > (method) update', qualified: 'client.qbd.creditCardCredits.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'accountId?: string;', 'clearExpenseLines?: boolean;', 'clearItemLines?: boolean;', 'exchangeRate?: number;', "expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[];", "itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[];", "itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'payeeId?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', 'transactionDate?: string;', ], response: "{ id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_credit'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.creditCardCredits.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, accountId?: string, clearExpenseLines?: boolean, clearItemLines?: boolean, exchangeRate?: number, expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[], itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[], itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], memo?: string, payeeId?: string, refNumber?: string, salesTaxCodeId?: string, transactionDate?: string): { id: string; account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; memo: string; objectType: 'qbd_credit_card_credit'; payee: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/credit-card-credits/{id}`\n\nUpdates an existing credit card credit.\n\n**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit card credit to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the credit card credit object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountId?: string`\n The bank or credit card account to which this credit card credit is posted.\n\n- `clearExpenseLines?: boolean`\n When `true`, removes all existing expense lines associated with this credit card credit. To modify or add individual expense lines, use the field `expenseLines` instead.\n\n- `clearItemLines?: boolean`\n When `true`, removes all existing item lines associated with this credit card credit. To modify or add individual item lines, use the field `itemLines` instead.\n\n- `exchangeRate?: number`\n The market exchange rate between this credit card credit's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[]`\n The credit card credit's expense lines, each representing one line in this expense.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing expense lines for the credit card credit with this array. To keep any existing expense lines, you must include them in this array even if they have not changed. **Any expense lines not included will be removed.**\n\n2. To add a new expense line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any expense lines, omit this field entirely to keep them unchanged.\n\n- `itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The credit card credit's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item group lines for the credit card credit with this array. To keep any existing item group lines, you must include them in this array even if they have not changed. **Any item group lines not included will be removed.**\n\n2. To add a new item group line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item group lines, omit this field entirely to keep them unchanged.\n\n- `itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The credit card credit's item lines, each representing the purchase of a specific item or service.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item lines for the credit card credit with this array. To keep any existing item lines, you must include them in this array even if they have not changed. **Any item lines not included will be removed.**\n\n2. To add a new item line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item lines, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this credit card credit.\n\n- `payeeId?: string`\n The vendor or company from whom this credit card credit was received for purchased merchandise or services.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this credit card credit, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 11 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this credit card credit, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the payee. This can be overridden on the credit card credit's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `transactionDate?: string`\n The date of this credit card credit, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; amount: string; amountInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; memo: string; objectType: 'qbd_credit_card_credit'; payee: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_credit_card_credit'`\n - `payee: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditCardCredit = await conductor.qbd.creditCardCredits.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(creditCardCredit);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardCredits.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditCardCredit = await conductor.qbd.creditCardCredits.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardCredit.id);", }, python: { method: 'qbd.credit_card_credits.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_card_credit = conductor.qbd.credit_card_credits.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_card_credit.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-credits/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "accountId": "80000001-1234567890",\n "clearExpenseLines": false,\n "clearItemLines": false,\n "exchangeRate": 1.2345,\n "memo": "Refund for returned office supplies",\n "payeeId": "80000001-1234567890",\n "refNumber": "CREDIT-1234",\n "salesTaxCodeId": "80000001-1234567890",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/credit-card-credits/{id}/void', httpMethod: 'post', summary: 'Void a credit card credit', description: 'Voids a credit card credit by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the credit card credit is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.credit_card_credits > (method) void', qualified: 'client.qbd.creditCardCredits.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_credit_card_credit'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.creditCardCredits.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_credit_card_credit'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/credit-card-credits/{id}/void`\n\nVoids a credit card credit by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the credit card credit is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit card credit to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_credit_card_credit'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_credit_card_credit'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.creditCardCredits.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardCredits.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.creditCardCredits.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.credit_card_credits.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.credit_card_credits.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-credits/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/credit-card-credits/{id}', httpMethod: 'delete', summary: 'Delete a credit card credit', description: 'Permanently deletes a credit card credit. The deletion will fail if the credit card credit is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.credit_card_credits > (method) delete', qualified: 'client.qbd.creditCardCredits.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_credit_card_credit'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.creditCardCredits.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_credit_card_credit'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/credit-card-credits/{id}`\n\nPermanently deletes a credit card credit. The deletion will fail if the credit card credit is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit card credit to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_credit_card_credit'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_credit_card_credit'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditCardCredit = await conductor.qbd.creditCardCredits.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(creditCardCredit);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardCredits.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditCardCredit = await conductor.qbd.creditCardCredits.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardCredit.id);", }, python: { method: 'qbd.credit_card_credits.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_card_credit = conductor.qbd.credit_card_credits.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_card_credit.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-credits/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/credit-card-refunds', httpMethod: 'post', summary: 'Create a credit card refund', description: 'Creates a credit card refund linked to one or more existing credit transactions, such as credit memos or overpayments. You must supply at least one entry in `refundAppliedToTransactions`, and the refund amount cannot exceed the available balance on the linked credits.', stainlessPath: '(resource) qbd.credit_card_refunds > (method) create', qualified: 'client.qbd.creditCardRefunds.create', params: [ 'customerId: string;', 'refundAppliedToTransactions: { refundAmount: string; transactionId: string; }[];', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', "creditCardTransaction?: { request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }; };", 'exchangeRate?: number;', 'externalId?: string;', 'memo?: string;', 'paymentMethodId?: string;', 'receivablesAccountId?: string;', 'refNumber?: string;', 'refundFromAccountId?: string;', ], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; createdAt: string; creditCardTransaction: { request: object; response: object; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_credit_card_refund'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; refundAppliedToTransactions: { creditRemaining: string; creditRemainingInHomeCurrency: string; refNumber: string; refundAmount: string; refundAmountInHomeCurrency: string; transactionDate: string; transactionId: string; transactionType: string; }[]; refundFromAccount: { id: string; fullName: string; }; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.creditCardRefunds.create(customerId: string, refundAppliedToTransactions: { refundAmount: string; transactionId: string; }[], transactionDate: string, Conductor-End-User-Id: string, address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, creditCardTransaction?: { request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }; }, exchangeRate?: number, externalId?: string, memo?: string, paymentMethodId?: string, receivablesAccountId?: string, refNumber?: string, refundFromAccountId?: string): { id: string; address: object; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customFields: object[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_credit_card_refund'; paymentMethod: object; receivablesAccount: object; refNumber: string; refundAppliedToTransactions: object[]; refundFromAccount: object; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/credit-card-refunds`\n\nCreates a credit card refund linked to one or more existing credit transactions, such as credit memos or overpayments. You must supply at least one entry in `refundAppliedToTransactions`, and the refund amount cannot exceed the available balance on the linked credits.\n\n### Parameters\n\n- `customerId: string`\n The customer or customer-job associated with this credit card refund.\n\n- `refundAppliedToTransactions: { refundAmount: string; transactionId: string; }[]`\n The credit transactions to refund in this credit card refund. Each entry links this credit card refund to an existing credit (for example, a credit memo or unused receive-payment credit).\n\n**IMPORTANT**: The `refundAmount` for each linked credit cannot exceed that credit's remaining balance, and the combined `refundAmount` across all links cannot exceed this credit card refund's `totalAmount`.\n\n- `transactionDate: string`\n The date of this credit card refund, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The address that is printed on the credit card refund.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `creditCardTransaction?: { request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }; }`\n The credit card transaction data for this credit card refund's payment when using QuickBooks Merchant Services (QBMS). If specifying this field, you must also specify the `paymentMethod` field.\n - `request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }`\n The transaction request data originally supplied for this credit card transaction when using QuickBooks Merchant Services (QBMS).\n - `response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }`\n The transaction response data for this credit card transaction when using QuickBooks Merchant Services (QBMS).\n\n- `exchangeRate?: number`\n The market exchange rate between this credit card refund's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `memo?: string`\n A memo or note for this credit card refund.\n\n- `paymentMethodId?: string`\n The credit card refund's payment method (e.g., cash, check, credit card).\n\n**NOTE**: If this credit card refund contains credit card transaction data supplied from QuickBooks Merchant Services (QBMS) transaction responses, you must specify a credit card payment method (e.g., \"Visa\", \"MasterCard\", etc.).\n\n- `receivablesAccountId?: string`\n The Accounts-Receivable (A/R) account to which this credit card refund is assigned, used to track the amount owed. If omitted, QuickBooks Desktop uses the default A/R account configured in the company file.\n\n**IMPORTANT**: If this credit card refund is linked to other transactions, this A/R account must match the `receivablesAccount` used in all linked transactions. For example, when refunding a credit card payment, the A/R account must match the one used in each linked credit transaction being refunded.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this credit card refund, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n- `refundFromAccountId?: string`\n The account providing funds for this credit card refund. This is typically the Undeposited Funds account used to hold customer payments. If omitted, QuickBooks Desktop uses the default Undeposited Funds account configured in the company file.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; createdAt: string; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_credit_card_refund'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; refundAppliedToTransactions: { creditRemaining: string; creditRemainingInHomeCurrency: string; refNumber: string; refundAmount: string; refundAmountInHomeCurrency: string; transactionDate: string; transactionId: string; transactionType: string; }[]; refundFromAccount: { id: string; fullName: string; }; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `createdAt: string`\n - `creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `memo: string`\n - `objectType: 'qbd_credit_card_refund'`\n - `paymentMethod: { id: string; fullName: string; }`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `refundAppliedToTransactions: { creditRemaining: string; creditRemainingInHomeCurrency: string; refNumber: string; refundAmount: string; refundAmountInHomeCurrency: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `refundFromAccount: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditCardRefund = await conductor.qbd.creditCardRefunds.create({\n customerId: '80000001-1234567890',\n refundAppliedToTransactions: [{ refundAmount: '15.00', transactionId: '123ABC-1234567890' }],\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardRefund);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardRefunds.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditCardRefund = await conductor.qbd.creditCardRefunds.create({\n customerId: '80000001-1234567890',\n refundAppliedToTransactions: [{ refundAmount: '15.00', transactionId: '123ABC-1234567890' }],\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardRefund.id);", }, python: { method: 'qbd.credit_card_refunds.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_card_refund = conductor.qbd.credit_card_refunds.create(\n customer_id="80000001-1234567890",\n refund_applied_to_transactions=[{\n "refund_amount": "15.00",\n "transaction_id": "123ABC-1234567890",\n }],\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_card_refund.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-refunds \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "customerId": "80000001-1234567890",\n "refundAppliedToTransactions": [\n {\n "refundAmount": "15.00",\n "transactionId": "123ABC-1234567890"\n }\n ],\n "transactionDate": "2024-10-01",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "memo": "Refund to customer for duplicate credit card charge",\n "paymentMethodId": "80000001-1234567890",\n "receivablesAccountId": "80000001-1234567890",\n "refNumber": "REFUND-1234",\n "refundFromAccountId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/credit-card-refunds', httpMethod: 'get', summary: 'List all credit card refunds', description: 'Returns a list of credit card refunds. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.credit_card_refunds > (method) list', qualified: 'client.qbd.creditCardRefunds.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'customerIds?: string[];', 'ids?: string[];', 'includeLineItems?: boolean;', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; createdAt: string; creditCardTransaction: { request: object; response: object; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_credit_card_refund'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; refundAppliedToTransactions: { creditRemaining: string; creditRemainingInHomeCurrency: string; refNumber: string; refundAmount: string; refundAmountInHomeCurrency: string; transactionDate: string; transactionId: string; transactionType: string; }[]; refundFromAccount: { id: string; fullName: string; }; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.creditCardRefunds.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, customerIds?: string[], ids?: string[], includeLineItems?: boolean, limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; address: object; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customFields: object[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_credit_card_refund'; paymentMethod: object; receivablesAccount: object; refNumber: string; refundAppliedToTransactions: object[]; refundFromAccount: object; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/credit-card-refunds`\n\nReturns a list of credit card refunds. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for credit card refunds associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for credit card refunds in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `customerIds?: string[]`\n Filter for credit card refunds refunded to these customers.\n\n- `ids?: string[]`\n Filter for specific credit card refunds by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for credit card refunds whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for credit card refunds whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for credit card refunds whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific credit card refunds by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for credit card refunds whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for credit card refunds whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for credit card refunds whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for credit card refunds whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for credit card refunds updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for credit card refunds updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; createdAt: string; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_credit_card_refund'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; refundAppliedToTransactions: { creditRemaining: string; creditRemainingInHomeCurrency: string; refNumber: string; refundAmount: string; refundAmountInHomeCurrency: string; transactionDate: string; transactionId: string; transactionType: string; }[]; refundFromAccount: { id: string; fullName: string; }; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `createdAt: string`\n - `creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `memo: string`\n - `objectType: 'qbd_credit_card_refund'`\n - `paymentMethod: { id: string; fullName: string; }`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `refundAppliedToTransactions: { creditRemaining: string; creditRemainingInHomeCurrency: string; refNumber: string; refundAmount: string; refundAmountInHomeCurrency: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `refundFromAccount: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const creditCardRefund of conductor.qbd.creditCardRefunds.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(creditCardRefund);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardRefunds.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const creditCardRefund of conductor.qbd.creditCardRefunds.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(creditCardRefund.id);\n}", }, python: { method: 'qbd.credit_card_refunds.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.credit_card_refunds.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-refunds \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/credit-card-refunds/{id}', httpMethod: 'get', summary: 'Retrieve a credit card refund', description: 'Retrieves a credit card refund by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific credit card refunds by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.credit_card_refunds > (method) retrieve', qualified: 'client.qbd.creditCardRefunds.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; createdAt: string; creditCardTransaction: { request: object; response: object; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_credit_card_refund'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; refundAppliedToTransactions: { creditRemaining: string; creditRemainingInHomeCurrency: string; refNumber: string; refundAmount: string; refundAmountInHomeCurrency: string; transactionDate: string; transactionId: string; transactionType: string; }[]; refundFromAccount: { id: string; fullName: string; }; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.creditCardRefunds.retrieve(id: string, Conductor-End-User-Id: string): { id: string; address: object; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customFields: object[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_credit_card_refund'; paymentMethod: object; receivablesAccount: object; refNumber: string; refundAppliedToTransactions: object[]; refundFromAccount: object; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/credit-card-refunds/{id}`\n\nRetrieves a credit card refund by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific credit card refunds by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit card refund to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; createdAt: string; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_credit_card_refund'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; refundAppliedToTransactions: { creditRemaining: string; creditRemainingInHomeCurrency: string; refNumber: string; refundAmount: string; refundAmountInHomeCurrency: string; transactionDate: string; transactionId: string; transactionType: string; }[]; refundFromAccount: { id: string; fullName: string; }; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `createdAt: string`\n - `creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `memo: string`\n - `objectType: 'qbd_credit_card_refund'`\n - `paymentMethod: { id: string; fullName: string; }`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `refundAppliedToTransactions: { creditRemaining: string; creditRemainingInHomeCurrency: string; refNumber: string; refundAmount: string; refundAmountInHomeCurrency: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `refundFromAccount: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditCardRefund = await conductor.qbd.creditCardRefunds.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(creditCardRefund);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardRefunds.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditCardRefund = await conductor.qbd.creditCardRefunds.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardRefund.id);", }, python: { method: 'qbd.credit_card_refunds.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_card_refund = conductor.qbd.credit_card_refunds.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_card_refund.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-refunds/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/credit-card-refunds/{id}/void', httpMethod: 'post', summary: 'Void a credit card refund', description: 'Voids a credit card refund by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the credit card refund is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.credit_card_refunds > (method) void', qualified: 'client.qbd.creditCardRefunds.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_credit_card_refund'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.creditCardRefunds.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_credit_card_refund'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/credit-card-refunds/{id}/void`\n\nVoids a credit card refund by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the credit card refund is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit card refund to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_credit_card_refund'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_credit_card_refund'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.creditCardRefunds.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardRefunds.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.creditCardRefunds.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.credit_card_refunds.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.credit_card_refunds.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-refunds/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/credit-card-refunds/{id}', httpMethod: 'delete', summary: 'Delete a credit card refund', description: 'Permanently deletes a credit card refund. The deletion will fail if the credit card refund is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.credit_card_refunds > (method) delete', qualified: 'client.qbd.creditCardRefunds.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_credit_card_refund'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.creditCardRefunds.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_credit_card_refund'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/credit-card-refunds/{id}`\n\nPermanently deletes a credit card refund. The deletion will fail if the credit card refund is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit card refund to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_credit_card_refund'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_credit_card_refund'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditCardRefund = await conductor.qbd.creditCardRefunds.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(creditCardRefund);\n```", perLanguage: { typescript: { method: 'client.qbd.creditCardRefunds.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditCardRefund = await conductor.qbd.creditCardRefunds.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditCardRefund.id);", }, python: { method: 'qbd.credit_card_refunds.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_card_refund = conductor.qbd.credit_card_refunds.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_card_refund.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-card-refunds/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/credit-memos', httpMethod: 'post', summary: 'Create a credit memo', description: 'Creates a new credit memo.', stainlessPath: '(resource) qbd.credit_memos > (method) create', qualified: 'client.qbd.creditMemos.create', params: [ 'customerId: string;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'classId?: string;', 'customerMessageId?: string;', 'documentTemplateId?: string;', 'dueDate?: string;', 'exchangeRate?: number;', 'externalId?: string;', 'isPending?: boolean;', 'isQueuedForEmail?: boolean;', 'isQueuedForPrint?: boolean;', 'lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; serviceDate?: string; unitOfMeasure?: string; }[];', 'lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; priceLevelId?: string; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[];', 'memo?: string;', 'otherCustomField?: string;', 'purchaseOrderNumber?: string;', 'receivablesAccountId?: string;', 'refNumber?: string;', 'salesRepresentativeId?: string;', 'salesTaxCodeId?: string;', 'salesTaxItemId?: string;', 'shipmentOrigin?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'shippingDate?: string;', 'shippingMethodId?: string;', 'termsId?: string;', ], response: "{ id: string; billingAddress: object; class: object; createdAt: string; creditRemaining: string; creditRemainingInHomeCurrency: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_credit_memo'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.creditMemos.create(customerId: string, transactionDate: string, Conductor-End-User-Id: string, billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, classId?: string, customerMessageId?: string, documentTemplateId?: string, dueDate?: string, exchangeRate?: number, externalId?: string, isPending?: boolean, isQueuedForEmail?: boolean, isQueuedForPrint?: boolean, lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; serviceDate?: string; unitOfMeasure?: string; }[], lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; priceLevelId?: string; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[], memo?: string, otherCustomField?: string, purchaseOrderNumber?: string, receivablesAccountId?: string, refNumber?: string, salesRepresentativeId?: string, salesTaxCodeId?: string, salesTaxItemId?: string, shipmentOrigin?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, shippingDate?: string, shippingMethodId?: string, termsId?: string): { id: string; billingAddress: object; class: object; createdAt: string; creditRemaining: string; creditRemainingInHomeCurrency: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_credit_memo'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/credit-memos`\n\nCreates a new credit memo.\n\n### Parameters\n\n- `customerId: string`\n The customer or customer-job associated with this credit memo.\n\n- `transactionDate: string`\n The date of this credit memo, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The credit memo's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `classId?: string`\n The credit memo's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this credit memo's line items unless overridden at the line item level.\n\n- `customerMessageId?: string`\n The message to display to the customer on the credit memo.\n\n- `documentTemplateId?: string`\n The predefined template in QuickBooks that determines the layout and formatting for this credit memo when printed or displayed.\n\n- `dueDate?: string`\n The date by which this credit memo must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n- `exchangeRate?: number`\n The market exchange rate between this credit memo's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isPending?: boolean`\n Indicates whether this credit memo has not been completed.\n\n- `isQueuedForEmail?: boolean`\n Indicates whether this credit memo is included in the queue of documents for QuickBooks to email to the customer.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this credit memo is included in the queue of documents for QuickBooks to print.\n\n- `lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; serviceDate?: string; unitOfMeasure?: string; }[]`\n The credit memo's line item groups, each representing a predefined set of related items.\n\n**IMPORTANT**: You must specify `lines`, `lineGroups`, or both when creating a credit memo.\n\n- `lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; priceLevelId?: string; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]`\n The credit memo's line items, each representing a single product or service sold.\n\n**IMPORTANT**: You must specify `lines`, `lineGroups`, or both when creating a credit memo.\n\n- `memo?: string`\n A memo or note for this credit memo that appears in the account register and customer register, but not on the credit memo itself.\n\n- `otherCustomField?: string`\n A built-in custom field for additional information specific to this credit memo. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all credit memos for convenience. Developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Unlike `otherCustomField1` and `otherCustomField2`, which are line item fields, this exists at the transaction level. Hidden by default in the QuickBooks UI.\n\n- `purchaseOrderNumber?: string`\n The customer's Purchase Order (PO) number associated with this credit memo. This field is often used to cross-reference the credit memo with the customer's purchasing system.\n\nMaximum length: 25 characters.\n\n- `receivablesAccountId?: string`\n The Accounts-Receivable (A/R) account to which this credit memo is assigned, used to track the amount owed. If omitted, QuickBooks Desktop uses the default A/R account configured in the company file.\n\n**IMPORTANT**: If this credit memo is linked to other transactions, this A/R account must match the `receivablesAccount` used in all linked transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this credit memo, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n- `salesRepresentativeId?: string`\n The credit memo's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this credit memo, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this credit memo's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\n- `shipmentOrigin?: string`\n The origin location from where the product associated with this credit memo is shipped. This is the point at which ownership and liability for goods transfer from seller to buyer. Internally, QuickBooks uses the term \"FOB\" for this field, which stands for \"freight on board\". This field is informational and has no accounting implications.\n\nMaximum length: 13 characters.\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The credit memo's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `shippingDate?: string`\n The date when the products or services for this credit memo were shipped or are expected to be shipped, in ISO 8601 format (YYYY-MM-DD).\n\n- `shippingMethodId?: string`\n The shipping method used for this credit memo, such as standard mail or overnight delivery.\n\n- `termsId?: string`\n The credit memo's payment terms, defining when payment is due and any applicable discounts.\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; creditRemaining: string; creditRemainingInHomeCurrency: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_credit_memo_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_credit_memo'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; terms: { id: string; fullName: string; }; totalAmount: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `creditRemaining: string`\n - `creditRemainingInHomeCurrency: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isPending: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_credit_memo_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_credit_memo'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditMemo = await conductor.qbd.creditMemos.create({\n customerId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditMemo);\n```", perLanguage: { typescript: { method: 'client.qbd.creditMemos.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditMemo = await conductor.qbd.creditMemos.create({\n customerId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditMemo.id);", }, python: { method: 'qbd.credit_memos.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_memo = conductor.qbd.credit_memos.create(\n customer_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_memo.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-memos \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "customerId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "classId": "80000001-1234567890",\n "customerMessageId": "80000001-1234567890",\n "documentTemplateId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isPending": false,\n "isQueuedForEmail": true,\n "isQueuedForPrint": true,\n "memo": "Customer refund for damaged shipment",\n "otherCustomField": "Special handling required",\n "purchaseOrderNumber": "PO-1234",\n "receivablesAccountId": "80000001-1234567890",\n "refNumber": "CM-1234",\n "salesRepresentativeId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxItemId": "80000001-1234567890",\n "shipmentOrigin": "shipmentOrigin",\n "shippingDate": "2024-10-01",\n "shippingMethodId": "80000001-1234567890",\n "termsId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/credit-memos', httpMethod: 'get', summary: 'List all credit memos', description: 'Returns a list of credit memos. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.credit_memos > (method) list', qualified: 'client.qbd.creditMemos.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'customerIds?: string[];', 'ids?: string[];', 'includeLineItems?: boolean;', 'includeLinkedTransactions?: boolean;', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; billingAddress: object; class: object; createdAt: string; creditRemaining: string; creditRemainingInHomeCurrency: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_credit_memo'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.creditMemos.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, customerIds?: string[], ids?: string[], includeLineItems?: boolean, includeLinkedTransactions?: boolean, limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; billingAddress: object; class: object; createdAt: string; creditRemaining: string; creditRemainingInHomeCurrency: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_credit_memo'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/credit-memos`\n\nReturns a list of credit memos. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for credit memos associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for credit memos in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `customerIds?: string[]`\n Filter for credit memos created for these customers. These are the customers who are owed money.\n\n- `ids?: string[]`\n Filter for specific credit memos by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `includeLinkedTransactions?: boolean`\n Whether to include linked transactions in the response. Defaults to `false`. For example, a payment linked to the corresponding credit memo.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for credit memos whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for credit memos whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for credit memos whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific credit memos by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for credit memos whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for credit memos whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for credit memos whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for credit memos whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for credit memos updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for credit memos updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; creditRemaining: string; creditRemainingInHomeCurrency: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_credit_memo_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_credit_memo'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; terms: { id: string; fullName: string; }; totalAmount: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `creditRemaining: string`\n - `creditRemainingInHomeCurrency: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isPending: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_credit_memo_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_credit_memo'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const creditMemo of conductor.qbd.creditMemos.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(creditMemo);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.creditMemos.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const creditMemo of conductor.qbd.creditMemos.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(creditMemo.id);\n}", }, python: { method: 'qbd.credit_memos.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.credit_memos.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-memos \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/credit-memos/{id}', httpMethod: 'get', summary: 'Retrieve a credit memo', description: 'Retrieves a credit memo by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific credit memos by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.', stainlessPath: '(resource) qbd.credit_memos > (method) retrieve', qualified: 'client.qbd.creditMemos.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; billingAddress: object; class: object; createdAt: string; creditRemaining: string; creditRemainingInHomeCurrency: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_credit_memo'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.creditMemos.retrieve(id: string, Conductor-End-User-Id: string): { id: string; billingAddress: object; class: object; createdAt: string; creditRemaining: string; creditRemainingInHomeCurrency: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_credit_memo'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/credit-memos/{id}`\n\nRetrieves a credit memo by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific credit memos by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit memo to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; creditRemaining: string; creditRemainingInHomeCurrency: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_credit_memo_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_credit_memo'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; terms: { id: string; fullName: string; }; totalAmount: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `creditRemaining: string`\n - `creditRemainingInHomeCurrency: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isPending: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_credit_memo_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_credit_memo'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditMemo = await conductor.qbd.creditMemos.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(creditMemo);\n```", perLanguage: { typescript: { method: 'client.qbd.creditMemos.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditMemo = await conductor.qbd.creditMemos.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditMemo.id);", }, python: { method: 'qbd.credit_memos.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_memo = conductor.qbd.credit_memos.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_memo.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-memos/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/credit-memos/{id}', httpMethod: 'post', summary: 'Update a credit memo', description: 'Updates an existing credit memo.\n\n**NOTE:** If you include `lines` or `lineGroups`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.credit_memos > (method) update', qualified: 'client.qbd.creditMemos.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'classId?: string;', 'customerId?: string;', 'customerMessageId?: string;', 'documentTemplateId?: string;', 'dueDate?: string;', 'exchangeRate?: number;', 'isPending?: boolean;', 'isQueuedForEmail?: boolean;', 'isQueuedForPrint?: boolean;', 'lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[];', 'lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[];', 'memo?: string;', 'otherCustomField?: string;', 'purchaseOrderNumber?: string;', 'receivablesAccountId?: string;', 'refNumber?: string;', 'salesRepresentativeId?: string;', 'salesTaxCodeId?: string;', 'salesTaxItemId?: string;', 'shipmentOrigin?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'shippingDate?: string;', 'shippingMethodId?: string;', 'termsId?: string;', 'transactionDate?: string;', ], response: "{ id: string; billingAddress: object; class: object; createdAt: string; creditRemaining: string; creditRemainingInHomeCurrency: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_credit_memo'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.creditMemos.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, classId?: string, customerId?: string, customerMessageId?: string, documentTemplateId?: string, dueDate?: string, exchangeRate?: number, isPending?: boolean, isQueuedForEmail?: boolean, isQueuedForPrint?: boolean, lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[], lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[], memo?: string, otherCustomField?: string, purchaseOrderNumber?: string, receivablesAccountId?: string, refNumber?: string, salesRepresentativeId?: string, salesTaxCodeId?: string, salesTaxItemId?: string, shipmentOrigin?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, shippingDate?: string, shippingMethodId?: string, termsId?: string, transactionDate?: string): { id: string; billingAddress: object; class: object; createdAt: string; creditRemaining: string; creditRemainingInHomeCurrency: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_credit_memo'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/credit-memos/{id}`\n\nUpdates an existing credit memo.\n\n**NOTE:** If you include `lines` or `lineGroups`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit memo to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the credit memo object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The credit memo's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `classId?: string`\n The credit memo's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this credit memo's line items unless overridden at the line item level.\n\n- `customerId?: string`\n The customer or customer-job associated with this credit memo.\n\n- `customerMessageId?: string`\n The message to display to the customer on the credit memo.\n\n- `documentTemplateId?: string`\n The predefined template in QuickBooks that determines the layout and formatting for this credit memo when printed or displayed.\n\n- `dueDate?: string`\n The date by which this credit memo must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n- `exchangeRate?: number`\n The market exchange rate between this credit memo's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `isPending?: boolean`\n Indicates whether this credit memo has not been completed.\n\n- `isQueuedForEmail?: boolean`\n Indicates whether this credit memo is included in the queue of documents for QuickBooks to email to the customer.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this credit memo is included in the queue of documents for QuickBooks to print.\n\n- `lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The credit memo's line item groups, each representing a predefined set of related items.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing line item groups for the credit memo with this array. To keep any existing line item groups, you must include them in this array even if they have not changed. **Any line item groups not included will be removed.**\n\n2. To add a new line item group, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any line item groups, omit this field entirely to keep them unchanged.\n\n- `lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]`\n The credit memo's line items, each representing a single product or service sold.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing line items for the credit memo with this array. To keep any existing line items, you must include them in this array even if they have not changed. **Any line items not included will be removed.**\n\n2. To add a new line item, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any line items, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this credit memo that appears in the account register and customer register, but not on the credit memo itself.\n\n- `otherCustomField?: string`\n A built-in custom field for additional information specific to this credit memo. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all credit memos for convenience. Developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Unlike `otherCustomField1` and `otherCustomField2`, which are line item fields, this exists at the transaction level. Hidden by default in the QuickBooks UI.\n\n- `purchaseOrderNumber?: string`\n The customer's Purchase Order (PO) number associated with this credit memo. This field is often used to cross-reference the credit memo with the customer's purchasing system.\n\nMaximum length: 25 characters.\n\n- `receivablesAccountId?: string`\n The Accounts-Receivable (A/R) account to which this credit memo is assigned, used to track the amount owed. If omitted, QuickBooks Desktop uses the default A/R account configured in the company file.\n\n**IMPORTANT**: If this credit memo is linked to other transactions, this A/R account must match the `receivablesAccount` used in all linked transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this credit memo, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 11 characters.\n\n- `salesRepresentativeId?: string`\n The credit memo's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this credit memo, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this credit memo's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\n- `shipmentOrigin?: string`\n The origin location from where the product associated with this credit memo is shipped. This is the point at which ownership and liability for goods transfer from seller to buyer. Internally, QuickBooks uses the term \"FOB\" for this field, which stands for \"freight on board\". This field is informational and has no accounting implications.\n\nMaximum length: 13 characters.\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The credit memo's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `shippingDate?: string`\n The date when the products or services for this credit memo were shipped or are expected to be shipped, in ISO 8601 format (YYYY-MM-DD).\n\n- `shippingMethodId?: string`\n The shipping method used for this credit memo, such as standard mail or overnight delivery.\n\n- `termsId?: string`\n The credit memo's payment terms, defining when payment is due and any applicable discounts.\n\n- `transactionDate?: string`\n The date of this credit memo, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; creditRemaining: string; creditRemainingInHomeCurrency: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_credit_memo_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_credit_memo'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; terms: { id: string; fullName: string; }; totalAmount: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `creditRemaining: string`\n - `creditRemainingInHomeCurrency: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isPending: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_credit_memo_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_credit_memo_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_credit_memo'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditMemo = await conductor.qbd.creditMemos.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(creditMemo);\n```", perLanguage: { typescript: { method: 'client.qbd.creditMemos.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditMemo = await conductor.qbd.creditMemos.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditMemo.id);", }, python: { method: 'qbd.credit_memos.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_memo = conductor.qbd.credit_memos.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_memo.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-memos/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "classId": "80000001-1234567890",\n "customerId": "80000001-1234567890",\n "customerMessageId": "80000001-1234567890",\n "documentTemplateId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "isPending": false,\n "isQueuedForEmail": true,\n "isQueuedForPrint": true,\n "memo": "Customer refund for damaged shipment",\n "otherCustomField": "Special handling required",\n "purchaseOrderNumber": "PO-1234",\n "receivablesAccountId": "80000001-1234567890",\n "refNumber": "CM-1234",\n "salesRepresentativeId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxItemId": "80000001-1234567890",\n "shipmentOrigin": "shipmentOrigin",\n "shippingDate": "2024-10-01",\n "shippingMethodId": "80000001-1234567890",\n "termsId": "80000001-1234567890",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/credit-memos/{id}/void', httpMethod: 'post', summary: 'Void a credit memo', description: 'Voids a credit memo by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the credit memo is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.credit_memos > (method) void', qualified: 'client.qbd.creditMemos.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_credit_memo'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.creditMemos.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_credit_memo'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/credit-memos/{id}/void`\n\nVoids a credit memo by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the credit memo is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit memo to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_credit_memo'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_credit_memo'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.creditMemos.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.creditMemos.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.creditMemos.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.credit_memos.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.credit_memos.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-memos/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/credit-memos/{id}', httpMethod: 'delete', summary: 'Delete a credit memo', description: 'Permanently deletes a credit memo. The deletion will fail if the credit memo is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.credit_memos > (method) delete', qualified: 'client.qbd.creditMemos.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_credit_memo'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.creditMemos.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_credit_memo'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/credit-memos/{id}`\n\nPermanently deletes a credit memo. The deletion will fail if the credit memo is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the credit memo to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_credit_memo'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_credit_memo'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst creditMemo = await conductor.qbd.creditMemos.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(creditMemo);\n```", perLanguage: { typescript: { method: 'client.qbd.creditMemos.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst creditMemo = await conductor.qbd.creditMemos.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(creditMemo.id);", }, python: { method: 'qbd.credit_memos.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncredit_memo = conductor.qbd.credit_memos.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(credit_memo.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/credit-memos/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/currencies', httpMethod: 'post', summary: 'Create a currency', description: 'Creates a user-defined currency with the specified name and currency code. Exchange rates for user-defined currencies are not updated automatically by QuickBooks Desktop; update them manually as needed.', stainlessPath: '(resource) qbd.currencies > (method) create', qualified: 'client.qbd.currencies.create', params: [ 'currencyCode: string;', 'name: string;', 'Conductor-End-User-Id: string;', "currencyFormat?: { decimalPlaces?: '0' | '2'; decimalSeparator?: 'comma' | 'period'; thousandSeparator?: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping?: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; };", 'isActive?: boolean;', ], response: "{ id: string; asOfDate: string; createdAt: string; currencyCode: string; currencyFormat: { decimalPlaces: '0' | '2'; decimalSeparator: 'comma' | 'period'; thousandSeparator: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }; exchangeRate: number; isActive: boolean; isUserDefinedCurrency: boolean; name: string; objectType: 'qbd_currency'; revisionNumber: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.currencies.create(currencyCode: string, name: string, Conductor-End-User-Id: string, currencyFormat?: { decimalPlaces?: '0' | '2'; decimalSeparator?: 'comma' | 'period'; thousandSeparator?: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping?: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }, isActive?: boolean): { id: string; asOfDate: string; createdAt: string; currencyCode: string; currencyFormat: object; exchangeRate: number; isActive: boolean; isUserDefinedCurrency: boolean; name: string; objectType: 'qbd_currency'; revisionNumber: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/currencies`\n\nCreates a user-defined currency with the specified name and currency code. Exchange rates for user-defined currencies are not updated automatically by QuickBooks Desktop; update them manually as needed.\n\n### Parameters\n\n- `currencyCode: string`\n The internationally accepted currency code used by this currency, typically based on the ISO 4217 standard (for example, USD for US Dollars). Built-in QuickBooks currencies follow ISO 4217. For user-defined currencies, following ISO 4217 is recommended but not required. In many cases, the three-letter code is formed from the country's two-letter internet code plus a currency letter (e.g., BZ + D → BZD for Belize Dollar).\n\nMaximum length: 3 characters.\n\n- `name: string`\n The case-insensitive unique name of this currency, unique across all currencies. For built-in currencies, the name is the internationally accepted currency name and is not editable.\n\n**NOTE**: Currencies do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 64 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `currencyFormat?: { decimalPlaces?: '0' | '2'; decimalSeparator?: 'comma' | 'period'; thousandSeparator?: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping?: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }`\n Controls how this currency displays thousands separators, grouping, and decimal places.\n - `decimalPlaces?: '0' | '2'`\n Controls the number of decimal places displayed for currency values. Use `0` to hide decimals or `2` to display cents.\n - `decimalSeparator?: 'comma' | 'period'`\n Controls the decimal separator when displaying currency values (for example, \"1.00\" vs \"1,00\"). Defaults to period.\n - `thousandSeparator?: 'apostrophe' | 'comma' | 'period' | 'space'`\n Controls the thousands separator when displaying currency values (for example, \"1,000,000\"). Defaults to comma.\n - `thousandSeparatorGrouping?: 'x_xx_xx_xxx' | 'xx_xxx_xxx'`\n Controls how digits are grouped for thousands when displaying currency values (for example, \"10,000,000\").\n\n- `isActive?: boolean`\n Indicates whether this currency is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n### Returns\n\n- `{ id: string; asOfDate: string; createdAt: string; currencyCode: string; currencyFormat: { decimalPlaces: '0' | '2'; decimalSeparator: 'comma' | 'period'; thousandSeparator: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }; exchangeRate: number; isActive: boolean; isUserDefinedCurrency: boolean; name: string; objectType: 'qbd_currency'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `asOfDate: string`\n - `createdAt: string`\n - `currencyCode: string`\n - `currencyFormat: { decimalPlaces: '0' | '2'; decimalSeparator: 'comma' | 'period'; thousandSeparator: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }`\n - `exchangeRate: number`\n - `isActive: boolean`\n - `isUserDefinedCurrency: boolean`\n - `name: string`\n - `objectType: 'qbd_currency'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst currency = await conductor.qbd.currencies.create({\n currencyCode: 'USD',\n name: 'United States Dollar',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(currency);\n```", perLanguage: { typescript: { method: 'client.qbd.currencies.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst currency = await conductor.qbd.currencies.create({\n currencyCode: 'USD',\n name: 'United States Dollar',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(currency.id);", }, python: { method: 'qbd.currencies.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncurrency = conductor.qbd.currencies.create(\n currency_code="USD",\n name="United States Dollar",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(currency.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/currencies \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "currencyCode": "USD",\n "name": "United States Dollar",\n "isActive": true\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/currencies', httpMethod: 'get', summary: 'List all currencies', description: 'Returns a list of currencies.\n\n**NOTE:** QuickBooks Desktop does not support pagination for currencies; hence, there is no `cursor` parameter. Users typically have few currencies.', stainlessPath: '(resource) qbd.currencies > (method) list', qualified: 'client.qbd.currencies.list', params: [ 'Conductor-End-User-Id: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; asOfDate: string; createdAt: string; currencyCode: string; currencyFormat: object; exchangeRate: number; isActive: boolean; isUserDefinedCurrency: boolean; name: string; objectType: 'qbd_currency'; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.currencies.list(Conductor-End-User-Id: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: currency[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/currencies`\n\nReturns a list of currencies.\n\n**NOTE:** QuickBooks Desktop does not support pagination for currencies; hence, there is no `cursor` parameter. Users typically have few currencies.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `ids?: string[]`\n Filter for specific currencies by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for currencies. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all currencies without limit, unlike paginated endpoints which default to 150 records. This is acceptable because currencies typically have low record counts.\n\n- `nameContains?: string`\n Filter for currencies whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for currencies whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for currencies whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific currencies by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a currency.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for currencies whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for currencies whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for currencies that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for currencies updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for currencies updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; asOfDate: string; createdAt: string; currencyCode: string; currencyFormat: object; exchangeRate: number; isActive: boolean; isUserDefinedCurrency: boolean; name: string; objectType: 'qbd_currency'; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; asOfDate: string; createdAt: string; currencyCode: string; currencyFormat: { decimalPlaces: '0' | '2'; decimalSeparator: 'comma' | 'period'; thousandSeparator: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }; exchangeRate: number; isActive: boolean; isUserDefinedCurrency: boolean; name: string; objectType: 'qbd_currency'; revisionNumber: string; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst currencies = await conductor.qbd.currencies.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(currencies);\n```", perLanguage: { typescript: { method: 'client.qbd.currencies.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst currencies = await conductor.qbd.currencies.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(currencies.data);", }, python: { method: 'qbd.currencies.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncurrencies = conductor.qbd.currencies.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(currencies.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/currencies \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/currencies/{id}', httpMethod: 'get', summary: 'Retrieve a currency', description: 'Retrieves a currency by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific currencies by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.currencies > (method) retrieve', qualified: 'client.qbd.currencies.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; asOfDate: string; createdAt: string; currencyCode: string; currencyFormat: { decimalPlaces: '0' | '2'; decimalSeparator: 'comma' | 'period'; thousandSeparator: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }; exchangeRate: number; isActive: boolean; isUserDefinedCurrency: boolean; name: string; objectType: 'qbd_currency'; revisionNumber: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.currencies.retrieve(id: string, Conductor-End-User-Id: string): { id: string; asOfDate: string; createdAt: string; currencyCode: string; currencyFormat: object; exchangeRate: number; isActive: boolean; isUserDefinedCurrency: boolean; name: string; objectType: 'qbd_currency'; revisionNumber: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/currencies/{id}`\n\nRetrieves a currency by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific currencies by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the currency to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; asOfDate: string; createdAt: string; currencyCode: string; currencyFormat: { decimalPlaces: '0' | '2'; decimalSeparator: 'comma' | 'period'; thousandSeparator: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }; exchangeRate: number; isActive: boolean; isUserDefinedCurrency: boolean; name: string; objectType: 'qbd_currency'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `asOfDate: string`\n - `createdAt: string`\n - `currencyCode: string`\n - `currencyFormat: { decimalPlaces: '0' | '2'; decimalSeparator: 'comma' | 'period'; thousandSeparator: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }`\n - `exchangeRate: number`\n - `isActive: boolean`\n - `isUserDefinedCurrency: boolean`\n - `name: string`\n - `objectType: 'qbd_currency'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst currency = await conductor.qbd.currencies.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(currency);\n```", perLanguage: { typescript: { method: 'client.qbd.currencies.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst currency = await conductor.qbd.currencies.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(currency.id);", }, python: { method: 'qbd.currencies.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncurrency = conductor.qbd.currencies.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(currency.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/currencies/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/currencies/{id}', httpMethod: 'post', summary: 'Update a currency', description: 'Updates an existing currency. For built-in currencies, only the `isActive` status can be changed; name and currency code are not editable. For user-defined currencies, all fields in this request are editable.', stainlessPath: '(resource) qbd.currencies > (method) update', qualified: 'client.qbd.currencies.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'currencyCode?: string;', "currencyFormat?: { decimalPlaces?: '0' | '2'; decimalSeparator?: 'comma' | 'period'; thousandSeparator?: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping?: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; };", 'isActive?: boolean;', 'name?: string;', ], response: "{ id: string; asOfDate: string; createdAt: string; currencyCode: string; currencyFormat: { decimalPlaces: '0' | '2'; decimalSeparator: 'comma' | 'period'; thousandSeparator: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }; exchangeRate: number; isActive: boolean; isUserDefinedCurrency: boolean; name: string; objectType: 'qbd_currency'; revisionNumber: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.currencies.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, currencyCode?: string, currencyFormat?: { decimalPlaces?: '0' | '2'; decimalSeparator?: 'comma' | 'period'; thousandSeparator?: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping?: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }, isActive?: boolean, name?: string): { id: string; asOfDate: string; createdAt: string; currencyCode: string; currencyFormat: object; exchangeRate: number; isActive: boolean; isUserDefinedCurrency: boolean; name: string; objectType: 'qbd_currency'; revisionNumber: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/currencies/{id}`\n\nUpdates an existing currency. For built-in currencies, only the `isActive` status can be changed; name and currency code are not editable. For user-defined currencies, all fields in this request are editable.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the currency to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the currency object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `currencyCode?: string`\n The internationally accepted currency code used by this currency, typically based on the ISO 4217 standard (for example, USD for US Dollars). Built-in QuickBooks currencies follow ISO 4217. For user-defined currencies, following ISO 4217 is recommended but not required. In many cases, the three-letter code is formed from the country's two-letter internet code plus a currency letter (e.g., BZ + D → BZD for Belize Dollar).\n\nMaximum length: 3 characters.\n\n- `currencyFormat?: { decimalPlaces?: '0' | '2'; decimalSeparator?: 'comma' | 'period'; thousandSeparator?: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping?: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }`\n Controls how this currency displays thousands separators, grouping, and decimal places.\n - `decimalPlaces?: '0' | '2'`\n Controls the number of decimal places displayed for currency values. Use `0` to hide decimals or `2` to display cents.\n - `decimalSeparator?: 'comma' | 'period'`\n Controls the decimal separator when displaying currency values (for example, \"1.00\" vs \"1,00\"). Defaults to period.\n - `thousandSeparator?: 'apostrophe' | 'comma' | 'period' | 'space'`\n Controls the thousands separator when displaying currency values (for example, \"1,000,000\"). Defaults to comma.\n - `thousandSeparatorGrouping?: 'x_xx_xx_xxx' | 'xx_xxx_xxx'`\n Controls how digits are grouped for thousands when displaying currency values (for example, \"10,000,000\").\n\n- `isActive?: boolean`\n Indicates whether this currency is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `name?: string`\n The case-insensitive unique name of this currency, unique across all currencies. For built-in currencies, the name is the internationally accepted currency name and is not editable.\n\n**NOTE**: Currencies do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 64 characters.\n\n### Returns\n\n- `{ id: string; asOfDate: string; createdAt: string; currencyCode: string; currencyFormat: { decimalPlaces: '0' | '2'; decimalSeparator: 'comma' | 'period'; thousandSeparator: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }; exchangeRate: number; isActive: boolean; isUserDefinedCurrency: boolean; name: string; objectType: 'qbd_currency'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `asOfDate: string`\n - `createdAt: string`\n - `currencyCode: string`\n - `currencyFormat: { decimalPlaces: '0' | '2'; decimalSeparator: 'comma' | 'period'; thousandSeparator: 'apostrophe' | 'comma' | 'period' | 'space'; thousandSeparatorGrouping: 'x_xx_xx_xxx' | 'xx_xxx_xxx'; }`\n - `exchangeRate: number`\n - `isActive: boolean`\n - `isUserDefinedCurrency: boolean`\n - `name: string`\n - `objectType: 'qbd_currency'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst currency = await conductor.qbd.currencies.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(currency);\n```", perLanguage: { typescript: { method: 'client.qbd.currencies.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst currency = await conductor.qbd.currencies.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(currency.id);", }, python: { method: 'qbd.currencies.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncurrency = conductor.qbd.currencies.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(currency.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/currencies/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "currencyCode": "USD",\n "isActive": true,\n "name": "United States Dollar"\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/customer-types', httpMethod: 'post', summary: 'Create a customer type', description: 'Creates a new customer type.', stainlessPath: '(resource) qbd.customer_types > (method) create', qualified: 'client.qbd.customerTypes.create', params: ['name: string;', 'Conductor-End-User-Id: string;', 'isActive?: boolean;', 'parentId?: string;'], response: "{ id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_customer_type'; parent: { id: string; fullName: string; }; revisionNumber: string; sublevel: number; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.customerTypes.create(name: string, Conductor-End-User-Id: string, isActive?: boolean, parentId?: string): { id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_customer_type'; parent: object; revisionNumber: string; sublevel: number; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/customer-types`\n\nCreates a new customer type.\n\n### Parameters\n\n- `name: string`\n The case-insensitive name of this customer type. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two customer types could both have the `name` \"Healthcare\", but they could have unique `fullName` values, such as \"Industry:Healthcare\" and \"Region:Healthcare\".\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `isActive?: boolean`\n Indicates whether this customer type is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `parentId?: string`\n The parent customer type one level above this one in the hierarchy. For example, if this customer type has a `fullName` of \"Industry:Healthcare\", its parent has a `fullName` of \"Industry\". If this customer type is at the top level, this field will be `null`.\n\n### Returns\n\n- `{ id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_customer_type'; parent: { id: string; fullName: string; }; revisionNumber: string; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_customer_type'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst customerType = await conductor.qbd.customerTypes.create({ name: 'Healthcare', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(customerType);\n```", perLanguage: { typescript: { method: 'client.qbd.customerTypes.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst customerType = await conductor.qbd.customerTypes.create({\n name: 'Healthcare',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(customerType.id);", }, python: { method: 'qbd.customer_types.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncustomer_type = conductor.qbd.customer_types.create(\n name="Healthcare",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(customer_type.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/customer-types \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Healthcare",\n "isActive": true,\n "parentId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/customer-types', httpMethod: 'get', summary: 'List all customer types', description: 'Returns a list of customer types.\n\n**NOTE:** QuickBooks Desktop does not support pagination for customer types; hence, there is no `cursor` parameter. Users typically have few customer types.', stainlessPath: '(resource) qbd.customer_types > (method) list', qualified: 'client.qbd.customerTypes.list', params: [ 'Conductor-End-User-Id: string;', 'fullNames?: string[];', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_customer_type'; parent: object; revisionNumber: string; sublevel: number; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.customerTypes.list(Conductor-End-User-Id: string, fullNames?: string[], ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: customer_type[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/customer-types`\n\nReturns a list of customer types.\n\n**NOTE:** QuickBooks Desktop does not support pagination for customer types; hence, there is no `cursor` parameter. Users typically have few customer types.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `fullNames?: string[]`\n Filter for specific customer types by their full-name(s), case-insensitive. Like `id`, `fullName` is a unique identifier for a customer type, formed by by combining the names of its parent objects with its own `name`, separated by colons. For example, if a customer type is under \"Industry\" and has the `name` \"Healthcare\", its `fullName` would be \"Industry:Healthcare\".\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `ids?: string[]`\n Filter for specific customer types by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for customer types. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all customer types without limit, unlike paginated endpoints which default to 150 records. This is acceptable because customer types typically have low record counts.\n\n- `nameContains?: string`\n Filter for customer types whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for customer types whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for customer types whose `name` is alphabetically greater than or equal to this value.\n\n- `nameStartsWith?: string`\n Filter for customer types whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for customer types whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for customer types that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for customer types updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for customer types updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_customer_type'; parent: object; revisionNumber: string; sublevel: number; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_customer_type'; parent: { id: string; fullName: string; }; revisionNumber: string; sublevel: number; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst customerTypes = await conductor.qbd.customerTypes.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(customerTypes);\n```", perLanguage: { typescript: { method: 'client.qbd.customerTypes.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst customerTypes = await conductor.qbd.customerTypes.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(customerTypes.data);", }, python: { method: 'qbd.customer_types.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncustomer_types = conductor.qbd.customer_types.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(customer_types.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/customer-types \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/customer-types/{id}', httpMethod: 'get', summary: 'Retrieve a customer type', description: 'Retrieves a customer type by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific customer types by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.customer_types > (method) retrieve', qualified: 'client.qbd.customerTypes.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_customer_type'; parent: { id: string; fullName: string; }; revisionNumber: string; sublevel: number; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.customerTypes.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_customer_type'; parent: object; revisionNumber: string; sublevel: number; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/customer-types/{id}`\n\nRetrieves a customer type by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific customer types by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the customer type to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_customer_type'; parent: { id: string; fullName: string; }; revisionNumber: string; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_customer_type'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst customerType = await conductor.qbd.customerTypes.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(customerType);\n```", perLanguage: { typescript: { method: 'client.qbd.customerTypes.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst customerType = await conductor.qbd.customerTypes.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(customerType.id);", }, python: { method: 'qbd.customer_types.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncustomer_type = conductor.qbd.customer_types.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(customer_type.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/customer-types/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/customers', httpMethod: 'post', summary: 'Create a customer', description: 'Creates a new customer.', stainlessPath: '(resource) qbd.customers > (method) create', qualified: 'client.qbd.customers.create', params: [ 'name: string;', 'Conductor-End-User-Id: string;', 'accountNumber?: string;', 'additionalContacts?: { firstName: string; customContactFields?: { name: string; value: string; }[]; jobTitle?: string; lastName?: string; middleName?: string; salutation?: string; }[];', 'additionalNotes?: { note: string; }[];', 'alternateContact?: string;', 'alternatePhone?: string;', 'alternateShippingAddresses?: { name: string; city?: string; country?: string; isDefaultShippingAddress?: boolean; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }[];', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'ccEmail?: string;', 'classId?: string;', 'companyName?: string;', 'contact?: string;', 'creditCard?: { address?: string; expirationMonth?: number; expirationYear?: number; name?: string; number?: string; postalCode?: string; };', 'creditLimit?: string;', 'currencyId?: string;', 'customContactFields?: { name: string; value: string; }[];', 'customerTypeId?: string;', 'email?: string;', 'externalId?: string;', 'fax?: string;', 'firstName?: string;', 'isActive?: boolean;', 'jobDescription?: string;', 'jobEndDate?: string;', 'jobProjectedEndDate?: string;', 'jobStartDate?: string;', "jobStatus?: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending';", 'jobTitle?: string;', 'jobTypeId?: string;', 'lastName?: string;', 'middleName?: string;', 'note?: string;', 'openingBalance?: string;', 'openingBalanceDate?: string;', 'parentId?: string;', 'phone?: string;', "preferredDeliveryMethod?: 'email' | 'mail' | 'none';", 'preferredPaymentMethodId?: string;', 'priceLevelId?: string;', 'resaleNumber?: string;', 'salesRepresentativeId?: string;', 'salesTaxCodeId?: string;', "salesTaxCountry?: 'australia' | 'canada' | 'uk' | 'us';", 'salesTaxItemId?: string;', 'salutation?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'taxRegistrationNumber?: string;', 'termsId?: string;', ], response: 'object', markdown: "## create\n\n`conductor.qbd.customers.create(name: string, Conductor-End-User-Id: string, accountNumber?: string, additionalContacts?: { firstName: string; customContactFields?: { name: string; value: string; }[]; jobTitle?: string; lastName?: string; middleName?: string; salutation?: string; }[], additionalNotes?: { note: string; }[], alternateContact?: string, alternatePhone?: string, alternateShippingAddresses?: { name: string; city?: string; country?: string; isDefaultShippingAddress?: boolean; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }[], billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, ccEmail?: string, classId?: string, companyName?: string, contact?: string, creditCard?: { address?: string; expirationMonth?: number; expirationYear?: number; name?: string; number?: string; postalCode?: string; }, creditLimit?: string, currencyId?: string, customContactFields?: { name: string; value: string; }[], customerTypeId?: string, email?: string, externalId?: string, fax?: string, firstName?: string, isActive?: boolean, jobDescription?: string, jobEndDate?: string, jobProjectedEndDate?: string, jobStartDate?: string, jobStatus?: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending', jobTitle?: string, jobTypeId?: string, lastName?: string, middleName?: string, note?: string, openingBalance?: string, openingBalanceDate?: string, parentId?: string, phone?: string, preferredDeliveryMethod?: 'email' | 'mail' | 'none', preferredPaymentMethodId?: string, priceLevelId?: string, resaleNumber?: string, salesRepresentativeId?: string, salesTaxCodeId?: string, salesTaxCountry?: 'australia' | 'canada' | 'uk' | 'us', salesTaxItemId?: string, salutation?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, taxRegistrationNumber?: string, termsId?: string): { id: string; accountNumber: string; additionalContacts: object[]; additionalNotes: object[]; alternateContact: string; alternatePhone: string; alternateShippingAddresses: object[]; balance: string; billingAddress: object; ccEmail: string; class: object; companyName: string; contact: string; createdAt: string; creditCard: object; creditLimit: string; currency: object; customContactFields: object[]; customerType: object; customFields: object[]; email: string; externalId: string; fax: string; firstName: string; fullName: string; isActive: boolean; jobDescription: string; jobEndDate: string; jobProjectedEndDate: string; jobStartDate: string; jobStatus: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'; jobTitle: string; jobType: object; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_customer'; parent: object; phone: string; preferredDeliveryMethod: 'email' | 'mail' | 'none'; preferredPaymentMethod: object; priceLevel: object; resaleNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxCountry: string; salesTaxItem: object; salutation: string; shippingAddress: object; sublevel: number; taxRegistrationNumber: string; terms: object; totalBalance: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/customers`\n\nCreates a new customer.\n\n### Parameters\n\n- `name: string`\n The case-insensitive name of this customer. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two customers could both have the `name` \"Website Redesign Project\", but they could have unique `fullName` values, such as \"ABC Corporation:Website Redesign Project\" and \"Baker:Website Redesign Project\".\n\nMaximum length: 41 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountNumber?: string`\n The customer's account number, which appears in the QuickBooks chart of accounts, reports, and graphs.\n\nNote that if the \"Use Account Numbers\" preference is turned off in QuickBooks, the account number may not be visible in the user interface, but it can still be set and retrieved through the API.\n\n- `additionalContacts?: { firstName: string; customContactFields?: { name: string; value: string; }[]; jobTitle?: string; lastName?: string; middleName?: string; salutation?: string; }[]`\n Additional alternate contacts for this customer.\n\n- `additionalNotes?: { note: string; }[]`\n Additional notes about this customer.\n\n- `alternateContact?: string`\n The name of a alternate contact person for this customer.\n\n- `alternatePhone?: string`\n The customer's alternate telephone number.\n\nMaximum length: 21 characters.\n\n- `alternateShippingAddresses?: { name: string; city?: string; country?: string; isDefaultShippingAddress?: boolean; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }[]`\n A list of additional shipping addresses for this customer. Useful when the customer has multiple shipping locations.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The customer's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `ccEmail?: string`\n An email address to carbon copy (CC) on communications with this customer.\n\n- `classId?: string`\n The customer's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `companyName?: string`\n The name of the company associated with this customer. This name is used on invoices, checks, and other forms.\n\nMaximum length: 41 characters.\n\n- `contact?: string`\n The name of the primary contact person for this customer.\n\n- `creditCard?: { address?: string; expirationMonth?: number; expirationYear?: number; name?: string; number?: string; postalCode?: string; }`\n The customer's credit card information, including card type, number, and expiration date, used for processing credit card payments.\n - `address?: string`\n The card's billing address.\n - `expirationMonth?: number`\n The month when the credit card expires.\n - `expirationYear?: number`\n The year when the credit card expires.\n - `name?: string`\n The cardholder's name on the card.\n - `number?: string`\n The credit card number. Must be masked with lower case \"x\" and no dashes.\n - `postalCode?: string`\n The card's billing address ZIP or postal code.\n\n- `creditLimit?: string`\n The customer's credit limit, represented as a decimal string. This is the maximum amount of money this customer can spend before being billed. If `null`, there is no credit limit.\n\n- `currencyId?: string`\n The customer's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.\n\n- `customContactFields?: { name: string; value: string; }[]`\n Additional custom contact fields for this customer, such as phone numbers or email addresses.\n\n- `customerTypeId?: string`\n The customer's type, used for categorizing customers into meaningful segments, such as industry or region.\n\n- `email?: string`\n The customer's email address.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `fax?: string`\n The customer's fax number.\n\nMaximum length: 21 characters.\n\n- `firstName?: string`\n The first name of the contact person for this customer.\n\nMaximum length: 25 characters.\n\n- `isActive?: boolean`\n Indicates whether this customer is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `jobDescription?: string`\n A brief description of this customer's job, if this object is a job (i.e., sub-customer).\n\n- `jobEndDate?: string`\n The actual completion date of this customer's job, if applicable, in ISO 8601 format (YYYY-MM-DD).\n\n- `jobProjectedEndDate?: string`\n The projected completion date for this customer's job, if applicable, in ISO 8601 format (YYYY-MM-DD).\n\n- `jobStartDate?: string`\n The date when work on this customer's job began, if applicable, in ISO 8601 format (YYYY-MM-DD).\n\n- `jobStatus?: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'`\n The status of this customer's job, if this object is a job (i.e., sub-customer).\n\n- `jobTitle?: string`\n The job title of the contact person for this customer.\n\n- `jobTypeId?: string`\n The type or category of this customer's job, if this object is a job (i.e., sub-customer). Useful for classifying into meaningful segments (e.g., repair, installation, consulting).\n\n- `lastName?: string`\n The last name of the contact person for this customer.\n\nMaximum length: 25 characters.\n\n- `middleName?: string`\n The middle name of the contact person for this customer.\n\nMaximum length: 5 characters.\n\n- `note?: string`\n A note or comment about this customer.\n\n- `openingBalance?: string`\n The opening balance of this customer's account, indicating the amount owed by this customer, represented as a decimal string.\n\n- `openingBalanceDate?: string`\n The date of the opening balance of this customer, in ISO 8601 format (YYYY-MM-DD).\n\n- `parentId?: string`\n The parent customer one level above this one in the hierarchy. For example, if this customer has a `fullName` of \"ABC Corporation:Website Redesign Project\", its parent has a `fullName` of \"ABC Corporation\". If this customer is at the top level, this field will be `null`.\n\n- `phone?: string`\n The customer's primary telephone number.\n\nMaximum length: 21 characters.\n\n- `preferredDeliveryMethod?: 'email' | 'mail' | 'none'`\n The preferred method for delivering invoices and other documents to this customer.\n\n- `preferredPaymentMethodId?: string`\n The customer's preferred payment method (e.g., cash, check, credit card).\n\n- `priceLevelId?: string`\n The customer's custom price level that QuickBooks automatically applies to calculate item rates in new transactions (e.g., invoices, sales receipts, sales orders, and credit memos) for this customer. While applied automatically, this can be overridden when creating individual transactions. Note that transactions will not show the price level itself, only the final `rate` calculated from it.\n\n- `resaleNumber?: string`\n The customer's resale number, used if the customer is purchasing items for resale. This number does not affect sales tax calculations or reports in QuickBooks.\n\n- `salesRepresentativeId?: string`\n The customer's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for transactions with this customer, determining whether the transactions are taxable or non-taxable. This can be overridden at the transaction or transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxCountry?: 'australia' | 'canada' | 'uk' | 'us'`\n The country for which sales tax is collected for this customer.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this customer's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\n- `salutation?: string`\n The formal salutation title that precedes the name of the contact person for this customer, such as \"Mr.\", \"Ms.\", or \"Dr.\".\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The customer's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `taxRegistrationNumber?: string`\n The customer's tax registration number, for use in Canada or the UK.\n\n- `termsId?: string`\n The customer's payment terms, defining when payment is due and any applicable discounts.\n\n### Returns\n\n- `{ id: string; accountNumber: string; additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]; additionalNotes: { id: number; date: string; note: string; }[]; alternateContact: string; alternatePhone: string; alternateShippingAddresses: { city: string; country: string; isDefaultShippingAddress: boolean; line1: string; line2: string; line3: string; line4: string; line5: string; name: string; note: string; postalCode: string; state: string; }[]; balance: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; ccEmail: string; class: { id: string; fullName: string; }; companyName: string; contact: string; createdAt: string; creditCard: { address: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; }; creditLimit: string; currency: { id: string; fullName: string; }; customContactFields: { name: string; value: string; }[]; customerType: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; email: string; externalId: string; fax: string; firstName: string; fullName: string; isActive: boolean; jobDescription: string; jobEndDate: string; jobProjectedEndDate: string; jobStartDate: string; jobStatus: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'; jobTitle: string; jobType: { id: string; fullName: string; }; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_customer'; parent: { id: string; fullName: string; }; phone: string; preferredDeliveryMethod: 'email' | 'mail' | 'none'; preferredPaymentMethod: { id: string; fullName: string; }; priceLevel: { id: string; fullName: string; }; resaleNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxCountry: string; salesTaxItem: { id: string; fullName: string; }; salutation: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; sublevel: number; taxRegistrationNumber: string; terms: { id: string; fullName: string; }; totalBalance: string; updatedAt: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]`\n - `additionalNotes: { id: number; date: string; note: string; }[]`\n - `alternateContact: string`\n - `alternatePhone: string`\n - `alternateShippingAddresses: { city: string; country: string; isDefaultShippingAddress: boolean; line1: string; line2: string; line3: string; line4: string; line5: string; name: string; note: string; postalCode: string; state: string; }[]`\n - `balance: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `ccEmail: string`\n - `class: { id: string; fullName: string; }`\n - `companyName: string`\n - `contact: string`\n - `createdAt: string`\n - `creditCard: { address: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; }`\n - `creditLimit: string`\n - `currency: { id: string; fullName: string; }`\n - `customContactFields: { name: string; value: string; }[]`\n - `customerType: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `email: string`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `fullName: string`\n - `isActive: boolean`\n - `jobDescription: string`\n - `jobEndDate: string`\n - `jobProjectedEndDate: string`\n - `jobStartDate: string`\n - `jobStatus: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'`\n - `jobTitle: string`\n - `jobType: { id: string; fullName: string; }`\n - `lastName: string`\n - `middleName: string`\n - `name: string`\n - `note: string`\n - `objectType: 'qbd_customer'`\n - `parent: { id: string; fullName: string; }`\n - `phone: string`\n - `preferredDeliveryMethod: 'email' | 'mail' | 'none'`\n - `preferredPaymentMethod: { id: string; fullName: string; }`\n - `priceLevel: { id: string; fullName: string; }`\n - `resaleNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxCountry: string`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salutation: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `sublevel: number`\n - `taxRegistrationNumber: string`\n - `terms: { id: string; fullName: string; }`\n - `totalBalance: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst customer = await conductor.qbd.customers.create({ name: 'Website Redesign Project', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(customer);\n```", perLanguage: { typescript: { method: 'client.qbd.customers.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst customer = await conductor.qbd.customers.create({\n name: 'Website Redesign Project',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(customer.id);", }, python: { method: 'qbd.customers.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncustomer = conductor.qbd.customers.create(\n name="Website Redesign Project",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(customer.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/customers \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Website Redesign Project",\n "accountNumber": "1010",\n "alternateContact": "Bob Johnson",\n "alternatePhone": "+1-555-987-6543",\n "ccEmail": "manager@example.com",\n "classId": "80000001-1234567890",\n "companyName": "Acme Corporation",\n "contact": "Jane Smith",\n "creditLimit": "5000.00",\n "currencyId": "80000001-1234567890",\n "customerTypeId": "80000001-1234567890",\n "email": "customer@example.com",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "fax": "+1-555-555-1212",\n "firstName": "John",\n "isActive": true,\n "jobDescription": "Kitchen renovation project for residential client.",\n "jobEndDate": "2024-11-30",\n "jobProjectedEndDate": "2024-12-31",\n "jobStartDate": "2024-01-15",\n "jobStatus": "in_progress",\n "jobTitle": "Purchasing Manager",\n "jobTypeId": "80000001-1234567890",\n "lastName": "Doe",\n "middleName": "A.",\n "note": "Our favorite customer.",\n "openingBalance": "1000.00",\n "openingBalanceDate": "2023-01-01",\n "parentId": "80000001-1234567890",\n "phone": "+1-555-123-4567",\n "preferredDeliveryMethod": "email",\n "preferredPaymentMethodId": "80000001-1234567890",\n "priceLevelId": "80000001-1234567890",\n "resaleNumber": "123456789",\n "salesRepresentativeId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxCountry": "us",\n "salesTaxItemId": "80000001-1234567890",\n "salutation": "Dr.",\n "taxRegistrationNumber": "GB123456789",\n "termsId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/customers', httpMethod: 'get', summary: 'List all customers', description: 'Returns a list of customers. Use the `cursor` parameter to paginate through the results.\n\n**IMPORTANT**: If this request times out or is slow, set `excludeAlternateShippingAddresses=true` to significantly improve performance. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.customers > (method) list', qualified: 'client.qbd.customers.list', params: [ 'Conductor-End-User-Id: string;', 'classIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'excludeAlternateShippingAddresses?: boolean;', 'fullNames?: string[];', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'totalBalance?: string;', 'totalBalanceGreaterThan?: string;', 'totalBalanceGreaterThanOrEqualTo?: string;', 'totalBalanceLessThan?: string;', 'totalBalanceLessThanOrEqualTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: 'object', markdown: "## list\n\n`conductor.qbd.customers.list(Conductor-End-User-Id: string, classIds?: string[], currencyIds?: string[], cursor?: string, excludeAlternateShippingAddresses?: boolean, fullNames?: string[], ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', totalBalance?: string, totalBalanceGreaterThan?: string, totalBalanceGreaterThanOrEqualTo?: string, totalBalanceLessThan?: string, totalBalanceLessThanOrEqualTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; accountNumber: string; additionalContacts: object[]; additionalNotes: object[]; alternateContact: string; alternatePhone: string; alternateShippingAddresses: object[]; balance: string; billingAddress: object; ccEmail: string; class: object; companyName: string; contact: string; createdAt: string; creditCard: object; creditLimit: string; currency: object; customContactFields: object[]; customerType: object; customFields: object[]; email: string; externalId: string; fax: string; firstName: string; fullName: string; isActive: boolean; jobDescription: string; jobEndDate: string; jobProjectedEndDate: string; jobStartDate: string; jobStatus: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'; jobTitle: string; jobType: object; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_customer'; parent: object; phone: string; preferredDeliveryMethod: 'email' | 'mail' | 'none'; preferredPaymentMethod: object; priceLevel: object; resaleNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxCountry: string; salesTaxItem: object; salutation: string; shippingAddress: object; sublevel: number; taxRegistrationNumber: string; terms: object; totalBalance: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/customers`\n\nReturns a list of customers. Use the `cursor` parameter to paginate through the results.\n\n**IMPORTANT**: If this request times out or is slow, set `excludeAlternateShippingAddresses=true` to significantly improve performance. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classIds?: string[]`\n Filter for customers of these classes. A class is a way end-users can categorize customers in QuickBooks.\n\n- `currencyIds?: string[]`\n Filter for customers in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `excludeAlternateShippingAddresses?: boolean`\n Excludes alternate shipping addresses from each customer returned by the list request. When true, the response returns `alternateShippingAddresses` as `null` instead of fetching the address array. Use this when your integration does not need alternate shipping addresses. This significantly improves performance for company files where some customers have many saved shipping addresses (sometimes dozens or hundreds).\n\n- `fullNames?: string[]`\n Filter for specific customers by their full-name(s), case-insensitive. Like `id`, `fullName` is a unique identifier for a customer, formed by by combining the names of its parent objects with its own `name`, separated by colons. For example, if a customer is under \"ABC Corporation\" and has the `name` \"Website Redesign Project\", its `fullName` would be \"ABC Corporation:Website Redesign Project\".\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `ids?: string[]`\n Filter for specific customers by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for customers whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for customers whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for customers whose `name` is alphabetically greater than or equal to this value.\n\n- `nameStartsWith?: string`\n Filter for customers whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for customers whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for customers that are active, inactive, or both.\n\n- `totalBalance?: string`\n Filter for customers whose `totalBalance` equals this amount, represented as a decimal string. You can only use one total-balance filter at a time.\n\n- `totalBalanceGreaterThan?: string`\n Filter for customers whose `totalBalance` is greater than this amount, represented as a decimal string. You can only use one total-balance filter at a time.\n\n- `totalBalanceGreaterThanOrEqualTo?: string`\n Filter for customers whose `totalBalance` is greater than or equal to this amount, represented as a decimal string. You can only use one total-balance filter at a time.\n\n- `totalBalanceLessThan?: string`\n Filter for customers whose `totalBalance` is less than this amount, represented as a decimal string. You can only use one total-balance filter at a time.\n\n- `totalBalanceLessThanOrEqualTo?: string`\n Filter for customers whose `totalBalance` is less than or equal to this amount, represented as a decimal string. You can only use one total-balance filter at a time.\n\n- `updatedAfter?: string`\n Filter for customers updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for customers updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; accountNumber: string; additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]; additionalNotes: { id: number; date: string; note: string; }[]; alternateContact: string; alternatePhone: string; alternateShippingAddresses: { city: string; country: string; isDefaultShippingAddress: boolean; line1: string; line2: string; line3: string; line4: string; line5: string; name: string; note: string; postalCode: string; state: string; }[]; balance: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; ccEmail: string; class: { id: string; fullName: string; }; companyName: string; contact: string; createdAt: string; creditCard: { address: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; }; creditLimit: string; currency: { id: string; fullName: string; }; customContactFields: { name: string; value: string; }[]; customerType: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; email: string; externalId: string; fax: string; firstName: string; fullName: string; isActive: boolean; jobDescription: string; jobEndDate: string; jobProjectedEndDate: string; jobStartDate: string; jobStatus: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'; jobTitle: string; jobType: { id: string; fullName: string; }; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_customer'; parent: { id: string; fullName: string; }; phone: string; preferredDeliveryMethod: 'email' | 'mail' | 'none'; preferredPaymentMethod: { id: string; fullName: string; }; priceLevel: { id: string; fullName: string; }; resaleNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxCountry: string; salesTaxItem: { id: string; fullName: string; }; salutation: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; sublevel: number; taxRegistrationNumber: string; terms: { id: string; fullName: string; }; totalBalance: string; updatedAt: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]`\n - `additionalNotes: { id: number; date: string; note: string; }[]`\n - `alternateContact: string`\n - `alternatePhone: string`\n - `alternateShippingAddresses: { city: string; country: string; isDefaultShippingAddress: boolean; line1: string; line2: string; line3: string; line4: string; line5: string; name: string; note: string; postalCode: string; state: string; }[]`\n - `balance: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `ccEmail: string`\n - `class: { id: string; fullName: string; }`\n - `companyName: string`\n - `contact: string`\n - `createdAt: string`\n - `creditCard: { address: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; }`\n - `creditLimit: string`\n - `currency: { id: string; fullName: string; }`\n - `customContactFields: { name: string; value: string; }[]`\n - `customerType: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `email: string`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `fullName: string`\n - `isActive: boolean`\n - `jobDescription: string`\n - `jobEndDate: string`\n - `jobProjectedEndDate: string`\n - `jobStartDate: string`\n - `jobStatus: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'`\n - `jobTitle: string`\n - `jobType: { id: string; fullName: string; }`\n - `lastName: string`\n - `middleName: string`\n - `name: string`\n - `note: string`\n - `objectType: 'qbd_customer'`\n - `parent: { id: string; fullName: string; }`\n - `phone: string`\n - `preferredDeliveryMethod: 'email' | 'mail' | 'none'`\n - `preferredPaymentMethod: { id: string; fullName: string; }`\n - `priceLevel: { id: string; fullName: string; }`\n - `resaleNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxCountry: string`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salutation: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `sublevel: number`\n - `taxRegistrationNumber: string`\n - `terms: { id: string; fullName: string; }`\n - `totalBalance: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const customer of conductor.qbd.customers.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(customer);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.customers.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const customer of conductor.qbd.customers.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(customer.id);\n}", }, python: { method: 'qbd.customers.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.customers.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/customers \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/customers/{id}', httpMethod: 'get', summary: 'Retrieve a customer', description: 'Retrieves a customer by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific customers by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.customers > (method) retrieve', qualified: 'client.qbd.customers.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: 'object', markdown: "## retrieve\n\n`conductor.qbd.customers.retrieve(id: string, Conductor-End-User-Id: string): { id: string; accountNumber: string; additionalContacts: object[]; additionalNotes: object[]; alternateContact: string; alternatePhone: string; alternateShippingAddresses: object[]; balance: string; billingAddress: object; ccEmail: string; class: object; companyName: string; contact: string; createdAt: string; creditCard: object; creditLimit: string; currency: object; customContactFields: object[]; customerType: object; customFields: object[]; email: string; externalId: string; fax: string; firstName: string; fullName: string; isActive: boolean; jobDescription: string; jobEndDate: string; jobProjectedEndDate: string; jobStartDate: string; jobStatus: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'; jobTitle: string; jobType: object; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_customer'; parent: object; phone: string; preferredDeliveryMethod: 'email' | 'mail' | 'none'; preferredPaymentMethod: object; priceLevel: object; resaleNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxCountry: string; salesTaxItem: object; salutation: string; shippingAddress: object; sublevel: number; taxRegistrationNumber: string; terms: object; totalBalance: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/customers/{id}`\n\nRetrieves a customer by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific customers by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the customer to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; accountNumber: string; additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]; additionalNotes: { id: number; date: string; note: string; }[]; alternateContact: string; alternatePhone: string; alternateShippingAddresses: { city: string; country: string; isDefaultShippingAddress: boolean; line1: string; line2: string; line3: string; line4: string; line5: string; name: string; note: string; postalCode: string; state: string; }[]; balance: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; ccEmail: string; class: { id: string; fullName: string; }; companyName: string; contact: string; createdAt: string; creditCard: { address: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; }; creditLimit: string; currency: { id: string; fullName: string; }; customContactFields: { name: string; value: string; }[]; customerType: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; email: string; externalId: string; fax: string; firstName: string; fullName: string; isActive: boolean; jobDescription: string; jobEndDate: string; jobProjectedEndDate: string; jobStartDate: string; jobStatus: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'; jobTitle: string; jobType: { id: string; fullName: string; }; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_customer'; parent: { id: string; fullName: string; }; phone: string; preferredDeliveryMethod: 'email' | 'mail' | 'none'; preferredPaymentMethod: { id: string; fullName: string; }; priceLevel: { id: string; fullName: string; }; resaleNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxCountry: string; salesTaxItem: { id: string; fullName: string; }; salutation: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; sublevel: number; taxRegistrationNumber: string; terms: { id: string; fullName: string; }; totalBalance: string; updatedAt: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]`\n - `additionalNotes: { id: number; date: string; note: string; }[]`\n - `alternateContact: string`\n - `alternatePhone: string`\n - `alternateShippingAddresses: { city: string; country: string; isDefaultShippingAddress: boolean; line1: string; line2: string; line3: string; line4: string; line5: string; name: string; note: string; postalCode: string; state: string; }[]`\n - `balance: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `ccEmail: string`\n - `class: { id: string; fullName: string; }`\n - `companyName: string`\n - `contact: string`\n - `createdAt: string`\n - `creditCard: { address: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; }`\n - `creditLimit: string`\n - `currency: { id: string; fullName: string; }`\n - `customContactFields: { name: string; value: string; }[]`\n - `customerType: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `email: string`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `fullName: string`\n - `isActive: boolean`\n - `jobDescription: string`\n - `jobEndDate: string`\n - `jobProjectedEndDate: string`\n - `jobStartDate: string`\n - `jobStatus: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'`\n - `jobTitle: string`\n - `jobType: { id: string; fullName: string; }`\n - `lastName: string`\n - `middleName: string`\n - `name: string`\n - `note: string`\n - `objectType: 'qbd_customer'`\n - `parent: { id: string; fullName: string; }`\n - `phone: string`\n - `preferredDeliveryMethod: 'email' | 'mail' | 'none'`\n - `preferredPaymentMethod: { id: string; fullName: string; }`\n - `priceLevel: { id: string; fullName: string; }`\n - `resaleNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxCountry: string`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salutation: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `sublevel: number`\n - `taxRegistrationNumber: string`\n - `terms: { id: string; fullName: string; }`\n - `totalBalance: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst customer = await conductor.qbd.customers.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(customer);\n```", perLanguage: { typescript: { method: 'client.qbd.customers.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst customer = await conductor.qbd.customers.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(customer.id);", }, python: { method: 'qbd.customers.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncustomer = conductor.qbd.customers.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(customer.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/customers/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/customers/{id}', httpMethod: 'post', summary: 'Update a customer', description: 'Updates an existing customer.', stainlessPath: '(resource) qbd.customers > (method) update', qualified: 'client.qbd.customers.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'accountNumber?: string;', 'additionalContacts?: { id: string; revisionNumber: string; customContactFields?: { name: string; value: string; }[]; firstName?: string; jobTitle?: string; lastName?: string; middleName?: string; salutation?: string; }[];', 'additionalNotes?: { id: number; note: string; }[];', 'alternateContact?: string;', 'alternatePhone?: string;', 'alternateShippingAddresses?: { name: string; city?: string; country?: string; isDefaultShippingAddress?: boolean; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }[];', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'ccEmail?: string;', 'classId?: string;', 'companyName?: string;', 'contact?: string;', 'creditCard?: { address?: string; expirationMonth?: number; expirationYear?: number; name?: string; number?: string; postalCode?: string; };', 'creditLimit?: string;', 'currencyId?: string;', 'customContactFields?: { name: string; value: string; }[];', 'customerTypeId?: string;', 'email?: string;', 'fax?: string;', 'firstName?: string;', 'isActive?: boolean;', 'jobDescription?: string;', 'jobEndDate?: string;', 'jobProjectedEndDate?: string;', 'jobStartDate?: string;', "jobStatus?: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending';", 'jobTitle?: string;', 'jobTypeId?: string;', 'lastName?: string;', 'middleName?: string;', 'name?: string;', 'note?: string;', 'parentId?: string;', 'phone?: string;', "preferredDeliveryMethod?: 'email' | 'mail' | 'none';", 'preferredPaymentMethodId?: string;', 'priceLevelId?: string;', 'resaleNumber?: string;', 'salesRepresentativeId?: string;', 'salesTaxCodeId?: string;', "salesTaxCountry?: 'australia' | 'canada' | 'uk' | 'us';", 'salesTaxItemId?: string;', 'salutation?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'taxRegistrationNumber?: string;', 'termsId?: string;', ], response: 'object', markdown: "## update\n\n`conductor.qbd.customers.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, accountNumber?: string, additionalContacts?: { id: string; revisionNumber: string; customContactFields?: { name: string; value: string; }[]; firstName?: string; jobTitle?: string; lastName?: string; middleName?: string; salutation?: string; }[], additionalNotes?: { id: number; note: string; }[], alternateContact?: string, alternatePhone?: string, alternateShippingAddresses?: { name: string; city?: string; country?: string; isDefaultShippingAddress?: boolean; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }[], billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, ccEmail?: string, classId?: string, companyName?: string, contact?: string, creditCard?: { address?: string; expirationMonth?: number; expirationYear?: number; name?: string; number?: string; postalCode?: string; }, creditLimit?: string, currencyId?: string, customContactFields?: { name: string; value: string; }[], customerTypeId?: string, email?: string, fax?: string, firstName?: string, isActive?: boolean, jobDescription?: string, jobEndDate?: string, jobProjectedEndDate?: string, jobStartDate?: string, jobStatus?: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending', jobTitle?: string, jobTypeId?: string, lastName?: string, middleName?: string, name?: string, note?: string, parentId?: string, phone?: string, preferredDeliveryMethod?: 'email' | 'mail' | 'none', preferredPaymentMethodId?: string, priceLevelId?: string, resaleNumber?: string, salesRepresentativeId?: string, salesTaxCodeId?: string, salesTaxCountry?: 'australia' | 'canada' | 'uk' | 'us', salesTaxItemId?: string, salutation?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, taxRegistrationNumber?: string, termsId?: string): { id: string; accountNumber: string; additionalContacts: object[]; additionalNotes: object[]; alternateContact: string; alternatePhone: string; alternateShippingAddresses: object[]; balance: string; billingAddress: object; ccEmail: string; class: object; companyName: string; contact: string; createdAt: string; creditCard: object; creditLimit: string; currency: object; customContactFields: object[]; customerType: object; customFields: object[]; email: string; externalId: string; fax: string; firstName: string; fullName: string; isActive: boolean; jobDescription: string; jobEndDate: string; jobProjectedEndDate: string; jobStartDate: string; jobStatus: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'; jobTitle: string; jobType: object; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_customer'; parent: object; phone: string; preferredDeliveryMethod: 'email' | 'mail' | 'none'; preferredPaymentMethod: object; priceLevel: object; resaleNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxCountry: string; salesTaxItem: object; salutation: string; shippingAddress: object; sublevel: number; taxRegistrationNumber: string; terms: object; totalBalance: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/customers/{id}`\n\nUpdates an existing customer.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the customer to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the customer object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountNumber?: string`\n The customer's account number, which appears in the QuickBooks chart of accounts, reports, and graphs.\n\nNote that if the \"Use Account Numbers\" preference is turned off in QuickBooks, the account number may not be visible in the user interface, but it can still be set and retrieved through the API.\n\n- `additionalContacts?: { id: string; revisionNumber: string; customContactFields?: { name: string; value: string; }[]; firstName?: string; jobTitle?: string; lastName?: string; middleName?: string; salutation?: string; }[]`\n Additional alternate contacts for this customer.\n\n- `additionalNotes?: { id: number; note: string; }[]`\n Additional notes about this customer.\n\n- `alternateContact?: string`\n The name of a alternate contact person for this customer.\n\n- `alternatePhone?: string`\n The customer's alternate telephone number.\n\nMaximum length: 21 characters.\n\n- `alternateShippingAddresses?: { name: string; city?: string; country?: string; isDefaultShippingAddress?: boolean; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }[]`\n A list of additional shipping addresses for this customer. Useful when the customer has multiple shipping locations.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The customer's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `ccEmail?: string`\n An email address to carbon copy (CC) on communications with this customer.\n\n- `classId?: string`\n The customer's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `companyName?: string`\n The name of the company associated with this customer. This name is used on invoices, checks, and other forms.\n\nMaximum length: 41 characters.\n\n- `contact?: string`\n The name of the primary contact person for this customer.\n\n- `creditCard?: { address?: string; expirationMonth?: number; expirationYear?: number; name?: string; number?: string; postalCode?: string; }`\n The customer's credit card information, including card type, number, and expiration date, used for processing credit card payments.\n - `address?: string`\n The card's billing address.\n - `expirationMonth?: number`\n The month when the credit card expires.\n - `expirationYear?: number`\n The year when the credit card expires.\n - `name?: string`\n The cardholder's name on the card.\n - `number?: string`\n The credit card number. Must be masked with lower case \"x\" and no dashes.\n - `postalCode?: string`\n The card's billing address ZIP or postal code.\n\n- `creditLimit?: string`\n The customer's credit limit, represented as a decimal string. This is the maximum amount of money this customer can spend before being billed. If `null`, there is no credit limit.\n\n- `currencyId?: string`\n The customer's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.\n\n- `customContactFields?: { name: string; value: string; }[]`\n Additional custom contact fields for this customer, such as phone numbers or email addresses.\n\n- `customerTypeId?: string`\n The customer's type, used for categorizing customers into meaningful segments, such as industry or region.\n\n- `email?: string`\n The customer's email address.\n\n- `fax?: string`\n The customer's fax number.\n\nMaximum length: 21 characters.\n\n- `firstName?: string`\n The first name of the contact person for this customer.\n\nMaximum length: 25 characters.\n\n- `isActive?: boolean`\n Indicates whether this customer is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `jobDescription?: string`\n A brief description of this customer's job, if this object is a job (i.e., sub-customer).\n\n- `jobEndDate?: string`\n The actual completion date of this customer's job, if applicable, in ISO 8601 format (YYYY-MM-DD).\n\n- `jobProjectedEndDate?: string`\n The projected completion date for this customer's job, if applicable, in ISO 8601 format (YYYY-MM-DD).\n\n- `jobStartDate?: string`\n The date when work on this customer's job began, if applicable, in ISO 8601 format (YYYY-MM-DD).\n\n- `jobStatus?: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'`\n The status of this customer's job, if this object is a job (i.e., sub-customer).\n\n- `jobTitle?: string`\n The job title of the contact person for this customer.\n\n- `jobTypeId?: string`\n The type or category of this customer's job, if this object is a job (i.e., sub-customer). Useful for classifying into meaningful segments (e.g., repair, installation, consulting).\n\n- `lastName?: string`\n The last name of the contact person for this customer.\n\nMaximum length: 25 characters.\n\n- `middleName?: string`\n The middle name of the contact person for this customer.\n\nMaximum length: 5 characters.\n\n- `name?: string`\n The case-insensitive name of this customer. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two customers could both have the `name` \"Website Redesign Project\", but they could have unique `fullName` values, such as \"ABC Corporation:Website Redesign Project\" and \"Baker:Website Redesign Project\".\n\nMaximum length: 41 characters.\n\n- `note?: string`\n A note or comment about this customer.\n\n- `parentId?: string`\n The parent customer one level above this one in the hierarchy. For example, if this customer has a `fullName` of \"ABC Corporation:Website Redesign Project\", its parent has a `fullName` of \"ABC Corporation\". If this customer is at the top level, this field will be `null`.\n\n- `phone?: string`\n The customer's primary telephone number.\n\nMaximum length: 21 characters.\n\n- `preferredDeliveryMethod?: 'email' | 'mail' | 'none'`\n The preferred method for delivering invoices and other documents to this customer.\n\n- `preferredPaymentMethodId?: string`\n The customer's preferred payment method (e.g., cash, check, credit card).\n\n- `priceLevelId?: string`\n The customer's custom price level that QuickBooks automatically applies to calculate item rates in new transactions (e.g., invoices, sales receipts, sales orders, and credit memos) for this customer. While applied automatically, this can be overridden when creating individual transactions. Note that transactions will not show the price level itself, only the final `rate` calculated from it.\n\n- `resaleNumber?: string`\n The customer's resale number, used if the customer is purchasing items for resale. This number does not affect sales tax calculations or reports in QuickBooks.\n\n- `salesRepresentativeId?: string`\n The customer's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for transactions with this customer, determining whether the transactions are taxable or non-taxable. This can be overridden at the transaction or transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxCountry?: 'australia' | 'canada' | 'uk' | 'us'`\n The country for which sales tax is collected for this customer.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this customer's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\n- `salutation?: string`\n The formal salutation title that precedes the name of the contact person for this customer, such as \"Mr.\", \"Ms.\", or \"Dr.\".\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The customer's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `taxRegistrationNumber?: string`\n The customer's tax registration number, for use in Canada or the UK.\n\n- `termsId?: string`\n The customer's payment terms, defining when payment is due and any applicable discounts.\n\n### Returns\n\n- `{ id: string; accountNumber: string; additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]; additionalNotes: { id: number; date: string; note: string; }[]; alternateContact: string; alternatePhone: string; alternateShippingAddresses: { city: string; country: string; isDefaultShippingAddress: boolean; line1: string; line2: string; line3: string; line4: string; line5: string; name: string; note: string; postalCode: string; state: string; }[]; balance: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; ccEmail: string; class: { id: string; fullName: string; }; companyName: string; contact: string; createdAt: string; creditCard: { address: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; }; creditLimit: string; currency: { id: string; fullName: string; }; customContactFields: { name: string; value: string; }[]; customerType: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; email: string; externalId: string; fax: string; firstName: string; fullName: string; isActive: boolean; jobDescription: string; jobEndDate: string; jobProjectedEndDate: string; jobStartDate: string; jobStatus: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'; jobTitle: string; jobType: { id: string; fullName: string; }; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_customer'; parent: { id: string; fullName: string; }; phone: string; preferredDeliveryMethod: 'email' | 'mail' | 'none'; preferredPaymentMethod: { id: string; fullName: string; }; priceLevel: { id: string; fullName: string; }; resaleNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxCountry: string; salesTaxItem: { id: string; fullName: string; }; salutation: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; sublevel: number; taxRegistrationNumber: string; terms: { id: string; fullName: string; }; totalBalance: string; updatedAt: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]`\n - `additionalNotes: { id: number; date: string; note: string; }[]`\n - `alternateContact: string`\n - `alternatePhone: string`\n - `alternateShippingAddresses: { city: string; country: string; isDefaultShippingAddress: boolean; line1: string; line2: string; line3: string; line4: string; line5: string; name: string; note: string; postalCode: string; state: string; }[]`\n - `balance: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `ccEmail: string`\n - `class: { id: string; fullName: string; }`\n - `companyName: string`\n - `contact: string`\n - `createdAt: string`\n - `creditCard: { address: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; }`\n - `creditLimit: string`\n - `currency: { id: string; fullName: string; }`\n - `customContactFields: { name: string; value: string; }[]`\n - `customerType: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `email: string`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `fullName: string`\n - `isActive: boolean`\n - `jobDescription: string`\n - `jobEndDate: string`\n - `jobProjectedEndDate: string`\n - `jobStartDate: string`\n - `jobStatus: 'awarded' | 'closed' | 'in_progress' | 'none' | 'not_awarded' | 'pending'`\n - `jobTitle: string`\n - `jobType: { id: string; fullName: string; }`\n - `lastName: string`\n - `middleName: string`\n - `name: string`\n - `note: string`\n - `objectType: 'qbd_customer'`\n - `parent: { id: string; fullName: string; }`\n - `phone: string`\n - `preferredDeliveryMethod: 'email' | 'mail' | 'none'`\n - `preferredPaymentMethod: { id: string; fullName: string; }`\n - `priceLevel: { id: string; fullName: string; }`\n - `resaleNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxCountry: string`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salutation: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `sublevel: number`\n - `taxRegistrationNumber: string`\n - `terms: { id: string; fullName: string; }`\n - `totalBalance: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst customer = await conductor.qbd.customers.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(customer);\n```", perLanguage: { typescript: { method: 'client.qbd.customers.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst customer = await conductor.qbd.customers.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(customer.id);", }, python: { method: 'qbd.customers.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ncustomer = conductor.qbd.customers.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(customer.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/customers/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "accountNumber": "1010",\n "alternateContact": "Bob Johnson",\n "alternatePhone": "+1-555-987-6543",\n "ccEmail": "manager@example.com",\n "classId": "80000001-1234567890",\n "companyName": "Acme Corporation",\n "contact": "Jane Smith",\n "creditLimit": "5000.00",\n "currencyId": "80000001-1234567890",\n "customerTypeId": "80000001-1234567890",\n "email": "customer@example.com",\n "fax": "+1-555-555-1212",\n "firstName": "John",\n "isActive": true,\n "jobDescription": "Kitchen renovation project for residential client.",\n "jobEndDate": "2024-11-30",\n "jobProjectedEndDate": "2024-12-31",\n "jobStartDate": "2024-01-15",\n "jobStatus": "in_progress",\n "jobTitle": "Purchasing Manager",\n "jobTypeId": "80000001-1234567890",\n "lastName": "Doe",\n "middleName": "A.",\n "name": "Website Redesign Project",\n "note": "Our favorite customer.",\n "parentId": "80000001-1234567890",\n "phone": "+1-555-123-4567",\n "preferredDeliveryMethod": "email",\n "preferredPaymentMethodId": "80000001-1234567890",\n "priceLevelId": "80000001-1234567890",\n "resaleNumber": "123456789",\n "salesRepresentativeId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxCountry": "us",\n "salesTaxItemId": "80000001-1234567890",\n "salutation": "Dr.",\n "taxRegistrationNumber": "GB123456789",\n "termsId": "80000001-1234567890"\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/date-driven-terms', httpMethod: 'post', summary: 'Create a date-driven term', description: 'Creates a date-driven term that sets the payment due on a specific day of the month and can optionally grant an early-payment discount before `discountDayOfMonth`. Use it when you need due dates tied to calendar days instead of a fixed number of days after the transaction.', stainlessPath: '(resource) qbd.date_driven_terms > (method) create', qualified: 'client.qbd.dateDrivenTerms.create', params: [ 'dueDayOfMonth: number;', 'name: string;', 'Conductor-End-User-Id: string;', 'discountDayOfMonth?: number;', 'discountPercentage?: string;', 'gracePeriodDays?: number;', 'isActive?: boolean;', ], response: "{ id: string; createdAt: string; discountDayOfMonth: number; discountPercentage: string; dueDayOfMonth: number; gracePeriodDays: number; isActive: boolean; name: string; objectType: 'qbd_date_driven_term'; revisionNumber: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.dateDrivenTerms.create(dueDayOfMonth: number, name: string, Conductor-End-User-Id: string, discountDayOfMonth?: number, discountPercentage?: string, gracePeriodDays?: number, isActive?: boolean): { id: string; createdAt: string; discountDayOfMonth: number; discountPercentage: string; dueDayOfMonth: number; gracePeriodDays: number; isActive: boolean; name: string; objectType: 'qbd_date_driven_term'; revisionNumber: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/date-driven-terms`\n\nCreates a date-driven term that sets the payment due on a specific day of the month and can optionally grant an early-payment discount before `discountDayOfMonth`. Use it when you need due dates tied to calendar days instead of a fixed number of days after the transaction.\n\n### Parameters\n\n- `dueDayOfMonth: number`\n The day of the month when full payment is due without discount.\n\n- `name: string`\n The case-insensitive unique name of this date-driven term, unique across all date-driven terms.\n\n**NOTE**: Date-driven terms do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `discountDayOfMonth?: number`\n The day of the month within which payment must be received to qualify for the discount specified by `discountPercentage`.\n\n- `discountPercentage?: string`\n The discount percentage applied to the payment if received on or before the specified `discountDayOfMonth`. The value is between 0 and 100.\n\n- `gracePeriodDays?: number`\n The number of days before `dueDayOfMonth` when an invoice or bill issued within this threshold is considered due the following month. For example, with `dueDayOfMonth` set to 15 and `gracePeriodDays` set to 2, an invoice issued on the 13th would be due on the 15th of the next month, while an invoice issued on the 12th would be due on the 15th of the current month.\n\n- `isActive?: boolean`\n Indicates whether this date-driven term is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n### Returns\n\n- `{ id: string; createdAt: string; discountDayOfMonth: number; discountPercentage: string; dueDayOfMonth: number; gracePeriodDays: number; isActive: boolean; name: string; objectType: 'qbd_date_driven_term'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `discountDayOfMonth: number`\n - `discountPercentage: string`\n - `dueDayOfMonth: number`\n - `gracePeriodDays: number`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_date_driven_term'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst dateDrivenTerm = await conductor.qbd.dateDrivenTerms.create({\n dueDayOfMonth: 15,\n name: '2% 5th Net 25th',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(dateDrivenTerm);\n```", perLanguage: { typescript: { method: 'client.qbd.dateDrivenTerms.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst dateDrivenTerm = await conductor.qbd.dateDrivenTerms.create({\n dueDayOfMonth: 15,\n name: '2% 5th Net 25th',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(dateDrivenTerm.id);", }, python: { method: 'qbd.date_driven_terms.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ndate_driven_term = conductor.qbd.date_driven_terms.create(\n due_day_of_month=15,\n name="2% 5th Net 25th",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(date_driven_term.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/date-driven-terms \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "dueDayOfMonth": 15,\n "name": "2% 5th Net 25th",\n "discountDayOfMonth": 5,\n "discountPercentage": "10",\n "gracePeriodDays": 2,\n "isActive": true\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/date-driven-terms', httpMethod: 'get', summary: 'List all date-driven terms', description: 'Returns a list of date-driven terms.\n\n**NOTE:** QuickBooks Desktop does not support pagination for date-driven terms; hence, there is no `cursor` parameter. Users typically have few date-driven terms.', stainlessPath: '(resource) qbd.date_driven_terms > (method) list', qualified: 'client.qbd.dateDrivenTerms.list', params: [ 'Conductor-End-User-Id: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; createdAt: string; discountDayOfMonth: number; discountPercentage: string; dueDayOfMonth: number; gracePeriodDays: number; isActive: boolean; name: string; objectType: 'qbd_date_driven_term'; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.dateDrivenTerms.list(Conductor-End-User-Id: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: date_driven_term[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/date-driven-terms`\n\nReturns a list of date-driven terms.\n\n**NOTE:** QuickBooks Desktop does not support pagination for date-driven terms; hence, there is no `cursor` parameter. Users typically have few date-driven terms.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `ids?: string[]`\n Filter for specific date-driven terms by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for date-driven terms. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all date-driven terms without limit, unlike paginated endpoints which default to 150 records. This is acceptable because date-driven terms typically have low record counts.\n\n- `nameContains?: string`\n Filter for date-driven terms whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for date-driven terms whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for date-driven terms whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific date-driven terms by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a date-driven term.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for date-driven terms whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for date-driven terms whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for date-driven terms that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for date-driven terms updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for date-driven terms updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; discountDayOfMonth: number; discountPercentage: string; dueDayOfMonth: number; gracePeriodDays: number; isActive: boolean; name: string; objectType: 'qbd_date_driven_term'; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; createdAt: string; discountDayOfMonth: number; discountPercentage: string; dueDayOfMonth: number; gracePeriodDays: number; isActive: boolean; name: string; objectType: 'qbd_date_driven_term'; revisionNumber: string; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst dateDrivenTerms = await conductor.qbd.dateDrivenTerms.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(dateDrivenTerms);\n```", perLanguage: { typescript: { method: 'client.qbd.dateDrivenTerms.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst dateDrivenTerms = await conductor.qbd.dateDrivenTerms.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(dateDrivenTerms.data);", }, python: { method: 'qbd.date_driven_terms.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ndate_driven_terms = conductor.qbd.date_driven_terms.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(date_driven_terms.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/date-driven-terms \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/date-driven-terms/{id}', httpMethod: 'get', summary: 'Retrieve a date-driven term', description: 'Retrieves a date-driven term by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific date-driven terms by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.date_driven_terms > (method) retrieve', qualified: 'client.qbd.dateDrivenTerms.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; discountDayOfMonth: number; discountPercentage: string; dueDayOfMonth: number; gracePeriodDays: number; isActive: boolean; name: string; objectType: 'qbd_date_driven_term'; revisionNumber: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.dateDrivenTerms.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; discountDayOfMonth: number; discountPercentage: string; dueDayOfMonth: number; gracePeriodDays: number; isActive: boolean; name: string; objectType: 'qbd_date_driven_term'; revisionNumber: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/date-driven-terms/{id}`\n\nRetrieves a date-driven term by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific date-driven terms by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the date-driven term to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; discountDayOfMonth: number; discountPercentage: string; dueDayOfMonth: number; gracePeriodDays: number; isActive: boolean; name: string; objectType: 'qbd_date_driven_term'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `discountDayOfMonth: number`\n - `discountPercentage: string`\n - `dueDayOfMonth: number`\n - `gracePeriodDays: number`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_date_driven_term'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst dateDrivenTerm = await conductor.qbd.dateDrivenTerms.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(dateDrivenTerm);\n```", perLanguage: { typescript: { method: 'client.qbd.dateDrivenTerms.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst dateDrivenTerm = await conductor.qbd.dateDrivenTerms.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(dateDrivenTerm.id);", }, python: { method: 'qbd.date_driven_terms.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ndate_driven_term = conductor.qbd.date_driven_terms.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(date_driven_term.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/date-driven-terms/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/deleted-list-objects', httpMethod: 'get', summary: 'List all deleted list-objects', description: 'Lists deleted non-transaction list-objects (e.g., customers, vendors, employees, items) from the last 90 days. Results are grouped by list-object type and ordered by actual delete time (ascending). For deleted transactions (e.g., invoices, bills, estimates), see the deleted-transactions endpoint.\n\n**NOTE:** QuickBooks Desktop does not support pagination for deleted list-objects; hence, there is no `cursor` parameter. Users typically have few deleted list-objects.', stainlessPath: '(resource) qbd.deleted_list_objects > (method) list', qualified: 'client.qbd.deletedListObjects.list', params: [ 'objectTypes: string[];', 'Conductor-End-User-Id: string;', 'deletedAfter?: string;', 'deletedBefore?: string;', ], response: "{ data: { id: string; createdAt: string; deletedAt: string; fullName: string; listType: string; objectType: 'qbd_deleted_list_object'; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.deletedListObjects.list(objectTypes: string[], Conductor-End-User-Id: string, deletedAfter?: string, deletedBefore?: string): { data: deleted_list_object[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/deleted-list-objects`\n\nLists deleted non-transaction list-objects (e.g., customers, vendors, employees, items) from the last 90 days. Results are grouped by list-object type and ordered by actual delete time (ascending). For deleted transactions (e.g., invoices, bills, estimates), see the deleted-transactions endpoint.\n\n**NOTE:** QuickBooks Desktop does not support pagination for deleted list-objects; hence, there is no `cursor` parameter. Users typically have few deleted list-objects.\n\n### Parameters\n\n- `objectTypes: string[]`\n Filter for deleted list-objects by their list-object type(s).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `deletedAfter?: string`\n Filter for deleted list-objects deleted on or after this date/time, within the last 90 days (QuickBooks limit). Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `deletedBefore?: string`\n Filter for deleted list-objects deleted on or before this date/time, within the last 90 days (QuickBooks limit). Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; deletedAt: string; fullName: string; listType: string; objectType: 'qbd_deleted_list_object'; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; createdAt: string; deletedAt: string; fullName: string; listType: string; objectType: 'qbd_deleted_list_object'; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst deletedListObjects = await conductor.qbd.deletedListObjects.list({ objectTypes: ['customer'], conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(deletedListObjects);\n```", perLanguage: { typescript: { method: 'client.qbd.deletedListObjects.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst deletedListObjects = await conductor.qbd.deletedListObjects.list({\n objectTypes: ['customer'],\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(deletedListObjects.data);", }, python: { method: 'qbd.deleted_list_objects.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ndeleted_list_objects = conductor.qbd.deleted_list_objects.list(\n object_types=["customer"],\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(deleted_list_objects.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/deleted-list-objects \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/deleted-transactions', httpMethod: 'get', summary: 'List all deleted transactions', description: 'Lists deleted transactions of the specified type(s) (e.g., invoice, bill, estimate) in the last 90 days. Results are grouped by transaction type and ordered by actual delete time (ascending). NOTE: For deleted non-transaction list-objects (e.g., customer, vendor, employee), see the deleted-list-objects endpoint.\n\n**NOTE:** QuickBooks Desktop does not support pagination for deleted transactions; hence, there is no `cursor` parameter. Users typically have few deleted transactions.', stainlessPath: '(resource) qbd.deleted_transactions > (method) list', qualified: 'client.qbd.deletedTransactions.list', params: [ 'transactionTypes: string[];', 'Conductor-End-User-Id: string;', 'deletedAfter?: string;', 'deletedBefore?: string;', ], response: "{ data: { id: string; createdAt: string; deletedAt: string; objectType: 'qbd_deleted_transaction'; refNumber: string; transactionType: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.deletedTransactions.list(transactionTypes: string[], Conductor-End-User-Id: string, deletedAfter?: string, deletedBefore?: string): { data: deleted_transaction[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/deleted-transactions`\n\nLists deleted transactions of the specified type(s) (e.g., invoice, bill, estimate) in the last 90 days. Results are grouped by transaction type and ordered by actual delete time (ascending). NOTE: For deleted non-transaction list-objects (e.g., customer, vendor, employee), see the deleted-list-objects endpoint.\n\n**NOTE:** QuickBooks Desktop does not support pagination for deleted transactions; hence, there is no `cursor` parameter. Users typically have few deleted transactions.\n\n### Parameters\n\n- `transactionTypes: string[]`\n Filter for deleted transactions by their transaction type(s).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `deletedAfter?: string`\n Filter for deleted transactions deleted on or after this date/time, within the last 90 days (QuickBooks limit). Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `deletedBefore?: string`\n Filter for deleted transactions deleted on or before this date/time, within the last 90 days (QuickBooks limit). Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; deletedAt: string; objectType: 'qbd_deleted_transaction'; refNumber: string; transactionType: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; createdAt: string; deletedAt: string; objectType: 'qbd_deleted_transaction'; refNumber: string; transactionType: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst deletedTransactions = await conductor.qbd.deletedTransactions.list({ transactionTypes: ['invoice'], conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(deletedTransactions);\n```", perLanguage: { typescript: { method: 'client.qbd.deletedTransactions.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst deletedTransactions = await conductor.qbd.deletedTransactions.list({\n transactionTypes: ['invoice'],\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(deletedTransactions.data);", }, python: { method: 'qbd.deleted_transactions.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ndeleted_transactions = conductor.qbd.deleted_transactions.list(\n transaction_types=["invoice"],\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(deleted_transactions.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/deleted-transactions \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/deposits', httpMethod: 'post', summary: 'Create a deposit', description: 'Creates a deposit into a QuickBooks Desktop bank or other asset account. Lines can either reference existing payments waiting to be deposited, using `paymentTransactionId` and optionally `paymentTransactionLineId`, or describe a manual transfer from another account using `accountId` and related line details.', stainlessPath: '(resource) qbd.deposits > (method) create', qualified: 'client.qbd.deposits.create', params: [ 'depositToAccountId: string;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'cashBack?: { accountId: string; amount?: string; memo?: string; };', 'currencyId?: string;', 'exchangeRate?: number;', 'externalId?: string;', 'lines?: { accountId?: string; amount?: string; checkNumber?: string; classId?: string; entityId?: string; memo?: string; overrideCheckNumber?: string; overrideClassId?: string; overrideMemo?: string; paymentMethodId?: string; paymentTransactionId?: string; paymentTransactionLineId?: string; }[];', 'memo?: string;', ], response: "{ id: string; cashBack: { id: string; account: { id: string; fullName: string; }; amount: string; memo: string; objectType: 'qbd_deposit_cash_back_line'; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; lines: { id: string; account: { id: string; fullName: string; }; amount: string; checkNumber: string; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_deposit_line'; paymentMethod: { id: string; fullName: string; }; paymentTransactionId: string; paymentTransactionLineId: string; transactionType: string; }[]; memo: string; objectType: 'qbd_deposit'; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.deposits.create(depositToAccountId: string, transactionDate: string, Conductor-End-User-Id: string, cashBack?: { accountId: string; amount?: string; memo?: string; }, currencyId?: string, exchangeRate?: number, externalId?: string, lines?: { accountId?: string; amount?: string; checkNumber?: string; classId?: string; entityId?: string; memo?: string; overrideCheckNumber?: string; overrideClassId?: string; overrideMemo?: string; paymentMethodId?: string; paymentTransactionId?: string; paymentTransactionLineId?: string; }[], memo?: string): { id: string; cashBack: object; createdAt: string; currency: object; customFields: object[]; depositToAccount: object; exchangeRate: number; externalId: string; lines: object[]; memo: string; objectType: 'qbd_deposit'; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/deposits`\n\nCreates a deposit into a QuickBooks Desktop bank or other asset account. Lines can either reference existing payments waiting to be deposited, using `paymentTransactionId` and optionally `paymentTransactionLineId`, or describe a manual transfer from another account using `accountId` and related line details.\n\n### Parameters\n\n- `depositToAccountId: string`\n The account where the funds for this deposit will be deposited.\n\n- `transactionDate: string`\n The date of this deposit, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `cashBack?: { accountId: string; amount?: string; memo?: string; }`\n Cash back taken out of this deposit and recorded to another account, such as Petty Cash.\n - `accountId: string`\n The account where this deposit cash-back line's cash-back amount is recorded, such as Petty Cash. This amount reduces the total credited to the deposit's destination account.\n - `amount?: string`\n The cash-back amount taken out of the deposit and recorded to this deposit cash-back line's account, represented as a decimal string.\n\nDecimal string format: exactly 2 decimal places when cents are included and up to 13 digits before the decimal point (for example, \"123.45\").\n - `memo?: string`\n A memo or note for this deposit cash-back line.\n\n- `currencyId?: string`\n The deposit's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.\n\n- `exchangeRate?: number`\n The market exchange rate between this deposit's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `lines?: { accountId?: string; amount?: string; checkNumber?: string; classId?: string; entityId?: string; memo?: string; overrideCheckNumber?: string; overrideClassId?: string; overrideMemo?: string; paymentMethodId?: string; paymentTransactionId?: string; paymentTransactionLineId?: string; }[]`\n The deposit's deposit lines, each representing either an existing payment selected for deposit or a manual transfer from another account into the deposit account.\n\n- `memo?: string`\n A memo or note for this deposit.\n\n### Returns\n\n- `{ id: string; cashBack: { id: string; account: { id: string; fullName: string; }; amount: string; memo: string; objectType: 'qbd_deposit_cash_back_line'; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; lines: { id: string; account: { id: string; fullName: string; }; amount: string; checkNumber: string; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_deposit_line'; paymentMethod: { id: string; fullName: string; }; paymentTransactionId: string; paymentTransactionLineId: string; transactionType: string; }[]; memo: string; objectType: 'qbd_deposit'; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `cashBack: { id: string; account: { id: string; fullName: string; }; amount: string; memo: string; objectType: 'qbd_deposit_cash_back_line'; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `depositToAccount: { id: string; fullName: string; }`\n - `exchangeRate: number`\n - `externalId: string`\n - `lines: { id: string; account: { id: string; fullName: string; }; amount: string; checkNumber: string; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_deposit_line'; paymentMethod: { id: string; fullName: string; }; paymentTransactionId: string; paymentTransactionLineId: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_deposit'`\n - `revisionNumber: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst deposit = await conductor.qbd.deposits.create({\n depositToAccountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(deposit);\n```", perLanguage: { typescript: { method: 'client.qbd.deposits.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst deposit = await conductor.qbd.deposits.create({\n depositToAccountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(deposit.id);", }, python: { method: 'qbd.deposits.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ndeposit = conductor.qbd.deposits.create(\n deposit_to_account_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(deposit.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/deposits \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "depositToAccountId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "currencyId": "80000001-1234567890",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "memo": "Batch settlement deposit"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/deposits', httpMethod: 'get', summary: 'List all deposits', description: 'Returns a list of deposits. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.deposits > (method) list', qualified: 'client.qbd.deposits.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'entityIds?: string[];', 'ids?: string[];', 'includeLineItems?: boolean;', 'limit?: number;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; cashBack: { id: string; account: { id: string; fullName: string; }; amount: string; memo: string; objectType: 'qbd_deposit_cash_back_line'; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; lines: { id: string; account: { id: string; fullName: string; }; amount: string; checkNumber: string; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_deposit_line'; paymentMethod: { id: string; fullName: string; }; paymentTransactionId: string; paymentTransactionLineId: string; transactionType: string; }[]; memo: string; objectType: 'qbd_deposit'; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.deposits.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, entityIds?: string[], ids?: string[], includeLineItems?: boolean, limit?: number, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; cashBack: object; createdAt: string; currency: object; customFields: object[]; depositToAccount: object; exchangeRate: number; externalId: string; lines: object[]; memo: string; objectType: 'qbd_deposit'; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/deposits`\n\nReturns a list of deposits. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for deposits associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for deposits in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `entityIds?: string[]`\n Filter for deposits associated with these entities (customers, vendors, employees, etc.). These are the entities referenced on the deposit's manual lines.\n\n- `ids?: string[]`\n Filter for specific deposits by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `transactionDateFrom?: string`\n Filter for deposits whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for deposits whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for deposits updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for deposits updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; cashBack: { id: string; account: { id: string; fullName: string; }; amount: string; memo: string; objectType: 'qbd_deposit_cash_back_line'; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; lines: { id: string; account: { id: string; fullName: string; }; amount: string; checkNumber: string; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_deposit_line'; paymentMethod: { id: string; fullName: string; }; paymentTransactionId: string; paymentTransactionLineId: string; transactionType: string; }[]; memo: string; objectType: 'qbd_deposit'; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `cashBack: { id: string; account: { id: string; fullName: string; }; amount: string; memo: string; objectType: 'qbd_deposit_cash_back_line'; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `depositToAccount: { id: string; fullName: string; }`\n - `exchangeRate: number`\n - `externalId: string`\n - `lines: { id: string; account: { id: string; fullName: string; }; amount: string; checkNumber: string; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_deposit_line'; paymentMethod: { id: string; fullName: string; }; paymentTransactionId: string; paymentTransactionLineId: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_deposit'`\n - `revisionNumber: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const deposit of conductor.qbd.deposits.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(deposit);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.deposits.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const deposit of conductor.qbd.deposits.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(deposit.id);\n}", }, python: { method: 'qbd.deposits.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.deposits.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/deposits \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/deposits/{id}', httpMethod: 'get', summary: 'Retrieve a deposit', description: 'Retrieves a deposit by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific deposits by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.deposits > (method) retrieve', qualified: 'client.qbd.deposits.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; cashBack: { id: string; account: { id: string; fullName: string; }; amount: string; memo: string; objectType: 'qbd_deposit_cash_back_line'; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; lines: { id: string; account: { id: string; fullName: string; }; amount: string; checkNumber: string; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_deposit_line'; paymentMethod: { id: string; fullName: string; }; paymentTransactionId: string; paymentTransactionLineId: string; transactionType: string; }[]; memo: string; objectType: 'qbd_deposit'; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.deposits.retrieve(id: string, Conductor-End-User-Id: string): { id: string; cashBack: object; createdAt: string; currency: object; customFields: object[]; depositToAccount: object; exchangeRate: number; externalId: string; lines: object[]; memo: string; objectType: 'qbd_deposit'; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/deposits/{id}`\n\nRetrieves a deposit by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific deposits by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the deposit to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; cashBack: { id: string; account: { id: string; fullName: string; }; amount: string; memo: string; objectType: 'qbd_deposit_cash_back_line'; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; lines: { id: string; account: { id: string; fullName: string; }; amount: string; checkNumber: string; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_deposit_line'; paymentMethod: { id: string; fullName: string; }; paymentTransactionId: string; paymentTransactionLineId: string; transactionType: string; }[]; memo: string; objectType: 'qbd_deposit'; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `cashBack: { id: string; account: { id: string; fullName: string; }; amount: string; memo: string; objectType: 'qbd_deposit_cash_back_line'; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `depositToAccount: { id: string; fullName: string; }`\n - `exchangeRate: number`\n - `externalId: string`\n - `lines: { id: string; account: { id: string; fullName: string; }; amount: string; checkNumber: string; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_deposit_line'; paymentMethod: { id: string; fullName: string; }; paymentTransactionId: string; paymentTransactionLineId: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_deposit'`\n - `revisionNumber: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst deposit = await conductor.qbd.deposits.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(deposit);\n```", perLanguage: { typescript: { method: 'client.qbd.deposits.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst deposit = await conductor.qbd.deposits.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(deposit.id);", }, python: { method: 'qbd.deposits.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ndeposit = conductor.qbd.deposits.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(deposit.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/deposits/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/deposits/{id}', httpMethod: 'post', summary: 'Update a deposit', description: 'Updates an existing deposit.\n\n**NOTE:** If you include `lines`, QuickBooks Desktop replaces that line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.deposits > (method) update', qualified: 'client.qbd.deposits.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'cashBack?: { accountId?: string; amount?: string; memo?: string; };', 'currencyId?: string;', 'depositToAccountId?: string;', 'exchangeRate?: number;', 'lines?: { id: string; accountId?: string; amount?: string; checkNumber?: string; classId?: string; entityId?: string; memo?: string; overrideCheckNumber?: string; overrideClassId?: string; overrideMemo?: string; paymentMethodId?: string; paymentTransactionId?: string; paymentTransactionLineId?: string; }[];', 'memo?: string;', 'transactionDate?: string;', ], response: "{ id: string; cashBack: { id: string; account: { id: string; fullName: string; }; amount: string; memo: string; objectType: 'qbd_deposit_cash_back_line'; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; lines: { id: string; account: { id: string; fullName: string; }; amount: string; checkNumber: string; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_deposit_line'; paymentMethod: { id: string; fullName: string; }; paymentTransactionId: string; paymentTransactionLineId: string; transactionType: string; }[]; memo: string; objectType: 'qbd_deposit'; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.deposits.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, cashBack?: { accountId?: string; amount?: string; memo?: string; }, currencyId?: string, depositToAccountId?: string, exchangeRate?: number, lines?: { id: string; accountId?: string; amount?: string; checkNumber?: string; classId?: string; entityId?: string; memo?: string; overrideCheckNumber?: string; overrideClassId?: string; overrideMemo?: string; paymentMethodId?: string; paymentTransactionId?: string; paymentTransactionLineId?: string; }[], memo?: string, transactionDate?: string): { id: string; cashBack: object; createdAt: string; currency: object; customFields: object[]; depositToAccount: object; exchangeRate: number; externalId: string; lines: object[]; memo: string; objectType: 'qbd_deposit'; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/deposits/{id}`\n\nUpdates an existing deposit.\n\n**NOTE:** If you include `lines`, QuickBooks Desktop replaces that line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the deposit to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the deposit object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `cashBack?: { accountId?: string; amount?: string; memo?: string; }`\n Cash back taken out of this deposit and recorded to another account, such as Petty Cash.\n - `accountId?: string`\n The account where this deposit cash-back line's cash-back amount is recorded, such as Petty Cash. This amount reduces the total credited to the deposit's destination account.\n - `amount?: string`\n The cash-back amount taken out of the deposit and recorded to this deposit cash-back line's account, represented as a decimal string.\n\nDecimal string format: exactly 2 decimal places when cents are included and up to 13 digits before the decimal point (for example, \"123.45\").\n - `memo?: string`\n A memo or note for this deposit cash-back line.\n\n- `currencyId?: string`\n The deposit's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.\n\n- `depositToAccountId?: string`\n The account where the funds for this deposit will be deposited.\n\n- `exchangeRate?: number`\n The market exchange rate between this deposit's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `lines?: { id: string; accountId?: string; amount?: string; checkNumber?: string; classId?: string; entityId?: string; memo?: string; overrideCheckNumber?: string; overrideClassId?: string; overrideMemo?: string; paymentMethodId?: string; paymentTransactionId?: string; paymentTransactionLineId?: string; }[]`\n The deposit's deposit lines, each representing either an existing payment selected for deposit or a manual transfer from another account into the deposit account.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing deposit lines for the deposit with this array. To keep any existing deposit lines, you must include them in this array even if they have not changed. **Any deposit lines not included will be removed.**\n\n2. To add a new deposit line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any deposit lines, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this deposit.\n\n- `transactionDate?: string`\n The date of this deposit, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; cashBack: { id: string; account: { id: string; fullName: string; }; amount: string; memo: string; objectType: 'qbd_deposit_cash_back_line'; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; lines: { id: string; account: { id: string; fullName: string; }; amount: string; checkNumber: string; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_deposit_line'; paymentMethod: { id: string; fullName: string; }; paymentTransactionId: string; paymentTransactionLineId: string; transactionType: string; }[]; memo: string; objectType: 'qbd_deposit'; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `cashBack: { id: string; account: { id: string; fullName: string; }; amount: string; memo: string; objectType: 'qbd_deposit_cash_back_line'; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `depositToAccount: { id: string; fullName: string; }`\n - `exchangeRate: number`\n - `externalId: string`\n - `lines: { id: string; account: { id: string; fullName: string; }; amount: string; checkNumber: string; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_deposit_line'; paymentMethod: { id: string; fullName: string; }; paymentTransactionId: string; paymentTransactionLineId: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_deposit'`\n - `revisionNumber: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst deposit = await conductor.qbd.deposits.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(deposit);\n```", perLanguage: { typescript: { method: 'client.qbd.deposits.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst deposit = await conductor.qbd.deposits.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(deposit.id);", }, python: { method: 'qbd.deposits.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ndeposit = conductor.qbd.deposits.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(deposit.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/deposits/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "currencyId": "80000001-1234567890",\n "depositToAccountId": "80000001-1234567890",\n "exchangeRate": 1.2345,\n "memo": "Batch settlement deposit",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/deposits/{id}/void', httpMethod: 'post', summary: 'Void a deposit', description: 'Voids a deposit by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the deposit is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.deposits > (method) void', qualified: 'client.qbd.deposits.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_deposit'; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.deposits.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_deposit'; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/deposits/{id}/void`\n\nVoids a deposit by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the deposit is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the deposit to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_deposit'; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_deposit'`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.deposits.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.deposits.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.deposits.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.deposits.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.deposits.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/deposits/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/deposits/{id}', httpMethod: 'delete', summary: 'Delete a deposit', description: 'Permanently deletes a deposit. The deletion will fail if the deposit is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.deposits > (method) delete', qualified: 'client.qbd.deposits.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_deposit'; }", markdown: "## delete\n\n`conductor.qbd.deposits.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_deposit'; }`\n\n**delete** `/quickbooks-desktop/deposits/{id}`\n\nPermanently deletes a deposit. The deletion will fail if the deposit is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the deposit to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_deposit'; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_deposit'`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst deposit = await conductor.qbd.deposits.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(deposit);\n```", perLanguage: { typescript: { method: 'client.qbd.deposits.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst deposit = await conductor.qbd.deposits.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(deposit.id);", }, python: { method: 'qbd.deposits.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ndeposit = conductor.qbd.deposits.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(deposit.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/deposits/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/discount-items', httpMethod: 'post', summary: 'Create a discount item', description: 'Creates a discount item that subtracts either a percentage or fixed amount from transaction totals. Percentage discounts only affect the preceding line, while fixed-amount discounts reduce the accumulated amount above them unless you bound the target lines with a subtotal item.', stainlessPath: '(resource) qbd.discount_items > (method) create', qualified: 'client.qbd.discountItems.create', params: [ 'accountId: string;', 'name: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'classId?: string;', 'description?: string;', 'discountRate?: string;', 'discountRatePercent?: string;', 'externalId?: string;', 'isActive?: boolean;', 'parentId?: string;', 'salesTaxCodeId?: string;', ], response: "{ id: string; account: { id: string; fullName: string; }; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; discountRate: string; discountRatePercent: string; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_discount_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; sublevel: number; updatedAt: string; }", markdown: '## create\n\n`conductor.qbd.discountItems.create(accountId: string, name: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, classId?: string, description?: string, discountRate?: string, discountRatePercent?: string, externalId?: string, isActive?: boolean, parentId?: string, salesTaxCodeId?: string): { id: string; account: object; barcode: string; class: object; createdAt: string; customFields: object[]; description: string; discountRate: string; discountRatePercent: string; externalId: string; fullName: string; isActive: boolean; name: string; objectType: \'qbd_discount_item\'; parent: object; revisionNumber: string; salesTaxCode: object; sublevel: number; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/discount-items`\n\nCreates a discount item that subtracts either a percentage or fixed amount from transaction totals. Percentage discounts only affect the preceding line, while fixed-amount discounts reduce the accumulated amount above them unless you bound the target lines with a subtotal item.\n\n### Parameters\n\n- `accountId: string`\n The posting account to which transactions involving this discount item are posted for tracking discounts.\n\n- `name: string`\n The case-insensitive name of this discount item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two discount items could both have the `name` "10% labor discount", but they could have unique `fullName` values, such as "Discounts:10% labor discount" and "Promotions:10% labor discount".\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The discount item\'s barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item\'s barcode value.\n\n- `classId?: string`\n The discount item\'s class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `description?: string`\n The discount item\'s description that will appear on sales forms that include this item.\n\n- `discountRate?: string`\n The monetary amount to subtract from the total or subtotal when applying this discount item to a transaction, represented as a decimal string.\n\n**NOTE**: A flat rate discount applies to ALL lines recorded above it and distributes the discount amount equally across those lines, which affects tax calculations. For example, a $10 discount applied to a $100 taxable item and $100 non-taxable item would result in a $5 taxable discount and $5 non-taxable discount.\n\nDecimal string format: up to 5 decimal places and up to 10 digits before the decimal point (for example, "123.45").\n\n- `discountRatePercent?: string`\n The percentage amount to subtract from the total or subtotal when applying this discount item to a transaction.\n\n**NOTE**: A percentage discount only applies to the line immediately above it, so tax implications only affect that specific line.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isActive?: boolean`\n Indicates whether this discount item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `parentId?: string`\n The parent discount item one level above this one in the hierarchy. For example, if this discount item has a `fullName` of "Discounts:10% labor discount", its parent has a `fullName` of "Discounts". If this discount item is at the top level, this field will be `null`.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for this discount item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include "Non" (non-taxable) and "Tax" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the "Do You Charge Sales Tax?" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; discountRate: string; discountRatePercent: string; externalId: string; fullName: string; isActive: boolean; name: string; objectType: \'qbd_discount_item\'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `discountRate: string`\n - `discountRatePercent: string`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: \'qbd_discount_item\'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from \'conductor-node\';\n\nconst client = new Conductor();\n\nconst discountItem = await conductor.qbd.discountItems.create({\n accountId: \'80000001-1234567890\',\n name: \'10% labor discount\',\n conductorEndUserId: \'end_usr_1234567abcdefg\',\n});\n\nconsole.log(discountItem);\n```', perLanguage: { typescript: { method: 'client.qbd.discountItems.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst discountItem = await conductor.qbd.discountItems.create({\n accountId: '80000001-1234567890',\n name: '10% labor discount',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(discountItem.id);", }, python: { method: 'qbd.discount_items.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ndiscount_item = conductor.qbd.discount_items.create(\n account_id="80000001-1234567890",\n name="10% labor discount",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(discount_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/discount-items \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "accountId": "80000001-1234567890",\n "name": "10% labor discount",\n "classId": "80000001-1234567890",\n "description": "10% discount for early payment on labor charges",\n "discountRate": "25.00",\n "discountRatePercent": "10.5",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isActive": true,\n "parentId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/discount-items', httpMethod: 'get', summary: 'List all discount items', description: 'Returns a list of discount items. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.discount_items > (method) list', qualified: 'client.qbd.discountItems.list', params: [ 'Conductor-End-User-Id: string;', 'classIds?: string[];', 'cursor?: string;', 'fullNames?: string[];', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; account: { id: string; fullName: string; }; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; discountRate: string; discountRatePercent: string; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_discount_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; sublevel: number; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.discountItems.list(Conductor-End-User-Id: string, classIds?: string[], cursor?: string, fullNames?: string[], ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { id: string; account: object; barcode: string; class: object; createdAt: string; customFields: object[]; description: string; discountRate: string; discountRatePercent: string; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_discount_item'; parent: object; revisionNumber: string; salesTaxCode: object; sublevel: number; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/discount-items`\n\nReturns a list of discount items. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classIds?: string[]`\n Filter for discount items of these classes. A class is a way end-users can categorize discount items in QuickBooks.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `fullNames?: string[]`\n Filter for specific discount items by their full-name(s), case-insensitive. Like `id`, `fullName` is a unique identifier for a discount item, formed by by combining the names of its parent objects with its own `name`, separated by colons. For example, if a discount item is under \"Discounts\" and has the `name` \"10% labor discount\", its `fullName` would be \"Discounts:10% labor discount\".\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `ids?: string[]`\n Filter for specific discount items by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for discount items whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for discount items whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for discount items whose `name` is alphabetically greater than or equal to this value.\n\n- `nameStartsWith?: string`\n Filter for discount items whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for discount items whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for discount items that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for discount items updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for discount items updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; discountRate: string; discountRatePercent: string; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_discount_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `discountRate: string`\n - `discountRatePercent: string`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_discount_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const discountItem of conductor.qbd.discountItems.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(discountItem);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.discountItems.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const discountItem of conductor.qbd.discountItems.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(discountItem.id);\n}", }, python: { method: 'qbd.discount_items.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.discount_items.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/discount-items \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/discount-items/{id}', httpMethod: 'get', summary: 'Retrieve a discount item', description: 'Retrieves a discount item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific discount items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.discount_items > (method) retrieve', qualified: 'client.qbd.discountItems.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; account: { id: string; fullName: string; }; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; discountRate: string; discountRatePercent: string; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_discount_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; sublevel: number; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.discountItems.retrieve(id: string, Conductor-End-User-Id: string): { id: string; account: object; barcode: string; class: object; createdAt: string; customFields: object[]; description: string; discountRate: string; discountRatePercent: string; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_discount_item'; parent: object; revisionNumber: string; salesTaxCode: object; sublevel: number; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/discount-items/{id}`\n\nRetrieves a discount item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific discount items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the discount item to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; discountRate: string; discountRatePercent: string; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_discount_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `discountRate: string`\n - `discountRatePercent: string`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_discount_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst discountItem = await conductor.qbd.discountItems.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(discountItem);\n```", perLanguage: { typescript: { method: 'client.qbd.discountItems.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst discountItem = await conductor.qbd.discountItems.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(discountItem.id);", }, python: { method: 'qbd.discount_items.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ndiscount_item = conductor.qbd.discount_items.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(discount_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/discount-items/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/discount-items/{id}', httpMethod: 'post', summary: 'Update a discount item', description: 'Updates a discount item, including its linked account or discount rate. When changing the account, use `updateExistingTransactionsAccount` to control whether existing transactions that reference the item should also be updated.', stainlessPath: '(resource) qbd.discount_items > (method) update', qualified: 'client.qbd.discountItems.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'accountId?: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'classId?: string;', 'description?: string;', 'discountRate?: string;', 'discountRatePercent?: string;', 'isActive?: boolean;', 'name?: string;', 'parentId?: string;', 'salesTaxCodeId?: string;', 'updateExistingTransactionsAccount?: boolean;', ], response: "{ id: string; account: { id: string; fullName: string; }; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; discountRate: string; discountRatePercent: string; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_discount_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; sublevel: number; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.discountItems.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, accountId?: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, classId?: string, description?: string, discountRate?: string, discountRatePercent?: string, isActive?: boolean, name?: string, parentId?: string, salesTaxCodeId?: string, updateExistingTransactionsAccount?: boolean): { id: string; account: object; barcode: string; class: object; createdAt: string; customFields: object[]; description: string; discountRate: string; discountRatePercent: string; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_discount_item'; parent: object; revisionNumber: string; salesTaxCode: object; sublevel: number; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/discount-items/{id}`\n\nUpdates a discount item, including its linked account or discount rate. When changing the account, use `updateExistingTransactionsAccount` to control whether existing transactions that reference the item should also be updated.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the discount item to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the discount item object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountId?: string`\n The posting account to which transactions involving this discount item are posted for tracking discounts.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The discount item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `classId?: string`\n The discount item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `description?: string`\n The discount item's description that will appear on sales forms that include this item.\n\n- `discountRate?: string`\n The monetary amount to subtract from the total or subtotal when applying this discount item to a transaction, represented as a decimal string.\n\n**NOTE**: A flat rate discount applies to ALL lines recorded above it and distributes the discount amount equally across those lines, which affects tax calculations. For example, a $10 discount applied to a $100 taxable item and $100 non-taxable item would result in a $5 taxable discount and $5 non-taxable discount.\n\nDecimal string format: up to 5 decimal places and up to 10 digits before the decimal point (for example, \"123.45\").\n\n- `discountRatePercent?: string`\n The percentage amount to subtract from the total or subtotal when applying this discount item to a transaction.\n\n**NOTE**: A percentage discount only applies to the line immediately above it, so tax implications only affect that specific line.\n\n- `isActive?: boolean`\n Indicates whether this discount item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `name?: string`\n The case-insensitive name of this discount item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two discount items could both have the `name` \"10% labor discount\", but they could have unique `fullName` values, such as \"Discounts:10% labor discount\" and \"Promotions:10% labor discount\".\n\nMaximum length: 31 characters.\n\n- `parentId?: string`\n The parent discount item one level above this one in the hierarchy. For example, if this discount item has a `fullName` of \"Discounts:10% labor discount\", its parent has a `fullName` of \"Discounts\". If this discount item is at the top level, this field will be `null`.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for this discount item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `updateExistingTransactionsAccount?: boolean`\n When `true`, applies the new account (specified by the `accountId` field) to all existing transactions associated with this discount item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; discountRate: string; discountRatePercent: string; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_discount_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `discountRate: string`\n - `discountRatePercent: string`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_discount_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst discountItem = await conductor.qbd.discountItems.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(discountItem);\n```", perLanguage: { typescript: { method: 'client.qbd.discountItems.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst discountItem = await conductor.qbd.discountItems.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(discountItem.id);", }, python: { method: 'qbd.discount_items.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ndiscount_item = conductor.qbd.discount_items.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(discount_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/discount-items/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "accountId": "80000001-1234567890",\n "classId": "80000001-1234567890",\n "description": "10% discount for early payment on labor charges",\n "discountRate": "25.00",\n "discountRatePercent": "10.5",\n "isActive": true,\n "name": "10% labor discount",\n "parentId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "updateExistingTransactionsAccount": false\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/employees', httpMethod: 'post', summary: 'Create an employee', description: 'Creates an employee record that captures personal details, contact information, employment dates, and payroll settings in a single request so the employee is ready for scheduling, time tracking, and payroll processing.', stainlessPath: '(resource) qbd.employees > (method) create', qualified: 'client.qbd.employees.create', params: [ 'Conductor-End-User-Id: string;', 'accountNumber?: string;', 'additionalNotes?: { note: string; }[];', 'address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; postalCode?: string; state?: string; };', 'adjustedServiceDate?: string;', 'alternatePhone?: string;', 'billingRateId?: string;', 'birthDate?: string;', 'customContactFields?: { name: string; value: string; }[];', 'department?: string;', 'description?: string;', 'disabilityDescription?: string;', "disabilityStatus?: 'disabled' | 'non_disabled';", 'email?: string;', 'emergencyContact?: { primaryContact?: { name: string; value: string; relation?: string; }; secondaryContact?: { name: string; value: string; relation?: string; }; };', "employeePayroll?: { classId?: string; earnings?: { payrollWageItemId: string; rate?: string; ratePercent?: string; }[]; payPeriod?: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }; useTimeDataToCreatePaychecks?: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }; };", "employeeType?: 'officer' | 'owner' | 'regular' | 'statutory';", "employmentStatus?: 'full_time' | 'part_time';", "ethnicity?: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races';", 'externalId?: string;', 'fax?: string;', 'firstName?: string;', "gender?: 'male' | 'female';", 'hiredDate?: string;', "i9OnFileStatus?: 'on_file' | 'not_on_file';", 'isActive?: boolean;', 'jobTitle?: string;', "keyEmployeeStatus?: 'key_employee' | 'non_key_employee';", 'lastName?: string;', 'middleName?: string;', "militaryStatus?: 'active' | 'reserve';", 'mobile?: string;', 'note?: string;', 'originalHireDate?: string;', "overtimeExemptStatus?: 'exempt' | 'non_exempt';", 'pager?: string;', 'pagerPin?: string;', 'phone?: string;', 'printAs?: string;', 'salutation?: string;', 'ssn?: string;', 'supervisorId?: string;', 'targetBonus?: string;', 'terminationDate?: string;', "usCitizenshipStatus?: 'citizen' | 'non_citizen';", "usVeteranStatus?: 'veteran' | 'non_veteran';", 'workAuthorizationExpirationDate?: string;', ], response: 'object', markdown: "## create\n\n`conductor.qbd.employees.create(Conductor-End-User-Id: string, accountNumber?: string, additionalNotes?: { note: string; }[], address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; postalCode?: string; state?: string; }, adjustedServiceDate?: string, alternatePhone?: string, billingRateId?: string, birthDate?: string, customContactFields?: { name: string; value: string; }[], department?: string, description?: string, disabilityDescription?: string, disabilityStatus?: 'disabled' | 'non_disabled', email?: string, emergencyContact?: { primaryContact?: { name: string; value: string; relation?: string; }; secondaryContact?: { name: string; value: string; relation?: string; }; }, employeePayroll?: { classId?: string; earnings?: { payrollWageItemId: string; rate?: string; ratePercent?: string; }[]; payPeriod?: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }; useTimeDataToCreatePaychecks?: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }; }, employeeType?: 'officer' | 'owner' | 'regular' | 'statutory', employmentStatus?: 'full_time' | 'part_time', ethnicity?: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races', externalId?: string, fax?: string, firstName?: string, gender?: 'male' | 'female', hiredDate?: string, i9OnFileStatus?: 'on_file' | 'not_on_file', isActive?: boolean, jobTitle?: string, keyEmployeeStatus?: 'key_employee' | 'non_key_employee', lastName?: string, middleName?: string, militaryStatus?: 'active' | 'reserve', mobile?: string, note?: string, originalHireDate?: string, overtimeExemptStatus?: 'exempt' | 'non_exempt', pager?: string, pagerPin?: string, phone?: string, printAs?: string, salutation?: string, ssn?: string, supervisorId?: string, targetBonus?: string, terminationDate?: string, usCitizenshipStatus?: 'citizen' | 'non_citizen', usVeteranStatus?: 'veteran' | 'non_veteran', workAuthorizationExpirationDate?: string): { id: string; accountNumber: string; additionalNotes: object[]; address: object; adjustedServiceDate: string; alternatePhone: string; billingRate: object; birthDate: string; createdAt: string; customContactFields: object[]; customFields: object[]; department: string; description: string; disabilityDescription: string; disabilityStatus: 'disabled' | 'non_disabled'; email: string; emergencyContact: object; employeePayroll: object; employeeType: 'officer' | 'owner' | 'regular' | 'statutory'; employmentStatus: 'full_time' | 'part_time'; ethnicity: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'; externalId: string; fax: string; firstName: string; gender: 'male' | 'female'; hiredDate: string; i9OnFileStatus: 'on_file' | 'not_on_file'; isActive: boolean; jobTitle: string; keyEmployeeStatus: 'key_employee' | 'non_key_employee'; lastName: string; middleName: string; militaryStatus: 'active' | 'reserve'; mobile: string; name: string; note: string; objectType: 'qbd_employee'; originalHireDate: string; overtimeExemptStatus: 'exempt' | 'non_exempt'; pager: string; pagerPin: string; phone: string; printAs: string; revisionNumber: string; salutation: string; ssn: string; supervisor: object; targetBonus: string; terminationDate: string; updatedAt: string; usCitizenshipStatus: 'citizen' | 'non_citizen'; usVeteranStatus: 'veteran' | 'non_veteran'; workAuthorizationExpirationDate: string; }`\n\n**post** `/quickbooks-desktop/employees`\n\nCreates an employee record that captures personal details, contact information, employment dates, and payroll settings in a single request so the employee is ready for scheduling, time tracking, and payroll processing.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountNumber?: string`\n The employee's account number, which appears in the QuickBooks chart of accounts, reports, and graphs.\n\nNote that if the \"Use Account Numbers\" preference is turned off in QuickBooks, the account number may not be visible in the user interface, but it can still be set and retrieved through the API.\n\n- `additionalNotes?: { note: string; }[]`\n Additional notes about this employee.\n\n- `address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; postalCode?: string; state?: string; }`\n The employee's address.\n\nIf the company uses QuickBooks Payroll for this employee, this address must specify a complete address, including city, state, ZIP (or postal) code, and at least one line of the street address.\n - `city?: string`\n The city, district, suburb, town, or village name of the employee address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the employee address.\n - `line1?: string`\n The first line of the employee address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the employee address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the employee address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the employee address, if needed.\n\nMaximum length: 41 characters.\n - `postalCode?: string`\n The postal code or ZIP code of the employee address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The U.S. state or Canadian province of the employee address. QuickBooks requires this field to be a two-letter abbreviation (e.g., \"CA\" for California or \"ON\" for Ontario). See enum for all possible values. QuickBooks may reject values that the connected company file's edition does not support (e.g., a Canadian province on a U.S. company file).\n\n- `adjustedServiceDate?: string`\n The adjusted service date for this employee, in ISO 8601 format (YYYY-MM-DD). This date accounts for previous employment periods or leaves that affect seniority.\n\n- `alternatePhone?: string`\n The employee's alternate telephone number.\n\nMaximum length: 21 characters.\n\n- `billingRateId?: string`\n The employee's billing rate, used to override service item rates in time tracking activities.\n\n- `birthDate?: string`\n This employee's date of birth, in ISO 8601 format (YYYY-MM-DD).\n\n- `customContactFields?: { name: string; value: string; }[]`\n Additional custom contact fields for this employee, such as phone numbers or email addresses.\n\n- `department?: string`\n The employee's department. Found in the \"employment job details\" section of the employee's record in QuickBooks.\n\n- `description?: string`\n A description of this employee. Found in the \"employment job details\" section of the employee's record in QuickBooks.\n\n- `disabilityDescription?: string`\n A description of this employee's disability.\n\n- `disabilityStatus?: 'disabled' | 'non_disabled'`\n Indicates whether this employee is disabled.\n\n- `email?: string`\n The employee's email address.\n\n- `emergencyContact?: { primaryContact?: { name: string; value: string; relation?: string; }; secondaryContact?: { name: string; value: string; relation?: string; }; }`\n The employee's emergency contacts.\n - `primaryContact?: { name: string; value: string; relation?: string; }`\n The employee's primary emergency contact.\n - `secondaryContact?: { name: string; value: string; relation?: string; }`\n The employee's secondary emergency contact.\n\n- `employeePayroll?: { classId?: string; earnings?: { payrollWageItemId: string; rate?: string; ratePercent?: string; }[]; payPeriod?: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }; useTimeDataToCreatePaychecks?: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }; }`\n The employee's payroll information.\n - `classId?: string`\n The employee's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n - `earnings?: { payrollWageItemId: string; rate?: string; ratePercent?: string; }[]`\n The employee's earnings.\n - `payPeriod?: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'`\n How frequently this employee is paid (e.g., weekly, biweekly, monthly). This determines the schedule for generating paychecks.\n - `sickHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }`\n The employee's sick hours, including how sick time is accrued and the total hours accrued.\n - `useTimeDataToCreatePaychecks?: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'`\n Indicates whether this employee is using time-tracking data to create paychecks.\n - `vacationHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }`\n The employee's vacation hours, including how vacation time is accrued and the total hours accrued.\n\n- `employeeType?: 'officer' | 'owner' | 'regular' | 'statutory'`\n The employee type. This affects payroll taxes - a statutory employee is defined as an employee by statute. Note that owners/partners are typically on the \"Other Names\" list in QuickBooks, but if listed as an employee their type will be `owner`.\n\n- `employmentStatus?: 'full_time' | 'part_time'`\n Indicates whether this employee is a part-time or full-time employee.\n\n- `ethnicity?: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'`\n This employee's ethnicity.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `fax?: string`\n The employee's fax number.\n\nMaximum length: 21 characters.\n\n- `firstName?: string`\n The employee's first name.\n\nMaximum length: 25 characters.\n\n- `gender?: 'male' | 'female'`\n This employee's gender.\n\n- `hiredDate?: string`\n The date this employee was hired, in ISO 8601 format (YYYY-MM-DD).\n\n- `i9OnFileStatus?: 'on_file' | 'not_on_file'`\n Indicates whether this employee's I-9 is on file.\n\n- `isActive?: boolean`\n Indicates whether this employee is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `jobTitle?: string`\n The employee's job title.\n\n- `keyEmployeeStatus?: 'key_employee' | 'non_key_employee'`\n Indicates whether this employee is a key employee.\n\n- `lastName?: string`\n The employee's last name.\n\nMaximum length: 25 characters.\n\n- `middleName?: string`\n The employee's middle name.\n\nMaximum length: 5 characters.\n\n- `militaryStatus?: 'active' | 'reserve'`\n This employee's military status if they are a U.S. veteran.\n\n- `mobile?: string`\n The employee's mobile phone number.\n\nMaximum length: 21 characters.\n\n- `note?: string`\n A note or comment about this employee.\n\n- `originalHireDate?: string`\n The original hire date for this employee, in ISO 8601 format (YYYY-MM-DD).\n\n- `overtimeExemptStatus?: 'exempt' | 'non_exempt'`\n Indicates whether this employee is exempt from overtime pay. This classification is based on U.S. labor laws (FLSA).\n\n- `pager?: string`\n The employee's pager number.\n\nMaximum length: 21 characters.\n\n- `pagerPin?: string`\n The employee's pager PIN.\n\n- `phone?: string`\n The employee's primary telephone number.\n\nMaximum length: 21 characters.\n\n- `printAs?: string`\n The name to use when printing this employee from QuickBooks. By default, this is the same as the `name` field.\n\n- `salutation?: string`\n The employee's formal salutation title that precedes their name, such as \"Mr.\", \"Ms.\", or \"Dr.\".\n\n- `ssn?: string`\n The employee's Social Security Number. The value can be with or without dashes.\n\n**NOTE**: This field cannot be changed after the employee is created.\n\n- `supervisorId?: string`\n The employee's supervisor. Found in the \"employment job details\" section of the employee's record in QuickBooks.\n\n- `targetBonus?: string`\n The target bonus for this employee, represented as a decimal string. Found in the \"employment job details\" section of the employee's record in QuickBooks.\n\n- `terminationDate?: string`\n The date this employee's employment ended with the company, in ISO 8601 format (YYYY-MM-DD). This is also known as the released date or separation date.\n\n- `usCitizenshipStatus?: 'citizen' | 'non_citizen'`\n Indicates whether this employee is a U.S. citizen.\n\n- `usVeteranStatus?: 'veteran' | 'non_veteran'`\n Indicates whether this employee is a U.S. veteran.\n\n- `workAuthorizationExpirationDate?: string`\n The date this employee's work authorization expires, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; accountNumber: string; additionalNotes: { id: number; date: string; note: string; }[]; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; postalCode: string; state: string; }; adjustedServiceDate: string; alternatePhone: string; billingRate: { id: string; fullName: string; }; birthDate: string; createdAt: string; customContactFields: { name: string; value: string; }[]; customFields: { name: string; ownerId: string; type: string; value: string; }[]; department: string; description: string; disabilityDescription: string; disabilityStatus: 'disabled' | 'non_disabled'; email: string; emergencyContact: { primaryContact: { name: string; relation: string; value: string; }; secondaryContact: { name: string; relation: string; value: string; }; }; employeePayroll: { class: { id: string; fullName: string; }; earnings: { payrollWageItem: object; rate: string; ratePercent: string; }[]; payPeriod: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; useTimeDataToCreatePaychecks: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; }; employeeType: 'officer' | 'owner' | 'regular' | 'statutory'; employmentStatus: 'full_time' | 'part_time'; ethnicity: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'; externalId: string; fax: string; firstName: string; gender: 'male' | 'female'; hiredDate: string; i9OnFileStatus: 'on_file' | 'not_on_file'; isActive: boolean; jobTitle: string; keyEmployeeStatus: 'key_employee' | 'non_key_employee'; lastName: string; middleName: string; militaryStatus: 'active' | 'reserve'; mobile: string; name: string; note: string; objectType: 'qbd_employee'; originalHireDate: string; overtimeExemptStatus: 'exempt' | 'non_exempt'; pager: string; pagerPin: string; phone: string; printAs: string; revisionNumber: string; salutation: string; ssn: string; supervisor: { id: string; fullName: string; }; targetBonus: string; terminationDate: string; updatedAt: string; usCitizenshipStatus: 'citizen' | 'non_citizen'; usVeteranStatus: 'veteran' | 'non_veteran'; workAuthorizationExpirationDate: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `additionalNotes: { id: number; date: string; note: string; }[]`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; postalCode: string; state: string; }`\n - `adjustedServiceDate: string`\n - `alternatePhone: string`\n - `billingRate: { id: string; fullName: string; }`\n - `birthDate: string`\n - `createdAt: string`\n - `customContactFields: { name: string; value: string; }[]`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `department: string`\n - `description: string`\n - `disabilityDescription: string`\n - `disabilityStatus: 'disabled' | 'non_disabled'`\n - `email: string`\n - `emergencyContact: { primaryContact: { name: string; relation: string; value: string; }; secondaryContact: { name: string; relation: string; value: string; }; }`\n - `employeePayroll: { class: { id: string; fullName: string; }; earnings: { payrollWageItem: { id: string; fullName: string; }; rate: string; ratePercent: string; }[]; payPeriod: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; useTimeDataToCreatePaychecks: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; }`\n - `employeeType: 'officer' | 'owner' | 'regular' | 'statutory'`\n - `employmentStatus: 'full_time' | 'part_time'`\n - `ethnicity: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `gender: 'male' | 'female'`\n - `hiredDate: string`\n - `i9OnFileStatus: 'on_file' | 'not_on_file'`\n - `isActive: boolean`\n - `jobTitle: string`\n - `keyEmployeeStatus: 'key_employee' | 'non_key_employee'`\n - `lastName: string`\n - `middleName: string`\n - `militaryStatus: 'active' | 'reserve'`\n - `mobile: string`\n - `name: string`\n - `note: string`\n - `objectType: 'qbd_employee'`\n - `originalHireDate: string`\n - `overtimeExemptStatus: 'exempt' | 'non_exempt'`\n - `pager: string`\n - `pagerPin: string`\n - `phone: string`\n - `printAs: string`\n - `revisionNumber: string`\n - `salutation: string`\n - `ssn: string`\n - `supervisor: { id: string; fullName: string; }`\n - `targetBonus: string`\n - `terminationDate: string`\n - `updatedAt: string`\n - `usCitizenshipStatus: 'citizen' | 'non_citizen'`\n - `usVeteranStatus: 'veteran' | 'non_veteran'`\n - `workAuthorizationExpirationDate: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst employee = await conductor.qbd.employees.create({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(employee);\n```", perLanguage: { typescript: { method: 'client.qbd.employees.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst employee = await conductor.qbd.employees.create({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(employee.id);", }, python: { method: 'qbd.employees.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nemployee = conductor.qbd.employees.create(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(employee.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/employees \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "accountNumber": "1010",\n "adjustedServiceDate": "2024-01-01",\n "alternatePhone": "+1-555-987-6543",\n "billingRateId": "80000001-1234567890",\n "birthDate": "1990-01-01",\n "department": "Sales",\n "description": "This employee is a key employee.",\n "disabilityDescription": "Cerebral Palsy",\n "disabilityStatus": "disabled",\n "email": "employee@example.com",\n "employeeType": "regular",\n "employmentStatus": "full_time",\n "ethnicity": "asian",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "fax": "+1-555-555-1212",\n "firstName": "John",\n "gender": "male",\n "hiredDate": "2024-01-01",\n "i9OnFileStatus": "on_file",\n "isActive": true,\n "jobTitle": "Purchasing Manager",\n "keyEmployeeStatus": "key_employee",\n "lastName": "Doe",\n "middleName": "A.",\n "militaryStatus": "active",\n "mobile": "+1-555-555-1212",\n "note": "This employee is a key employee.",\n "originalHireDate": "2024-01-01",\n "overtimeExemptStatus": "exempt",\n "pager": "+1-555-555-1212",\n "pagerPin": "1234",\n "phone": "+1-555-123-4567",\n "printAs": "John Doe",\n "salutation": "Dr.",\n "ssn": "123-45-6789",\n "supervisorId": "80000001-1234567890",\n "targetBonus": "10000.00",\n "terminationDate": "2024-01-01",\n "usCitizenshipStatus": "citizen",\n "usVeteranStatus": "veteran",\n "workAuthorizationExpirationDate": "2024-01-01"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/employees', httpMethod: 'get', summary: 'List all employees', description: 'Returns a list of employees.\n\n**NOTE:** QuickBooks Desktop does not support pagination for employees; hence, there is no `cursor` parameter. Users typically have few employees.', stainlessPath: '(resource) qbd.employees > (method) list', qualified: 'client.qbd.employees.list', params: [ 'Conductor-End-User-Id: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: object[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.employees.list(Conductor-End-User-Id: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: employee[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/employees`\n\nReturns a list of employees.\n\n**NOTE:** QuickBooks Desktop does not support pagination for employees; hence, there is no `cursor` parameter. Users typically have few employees.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `ids?: string[]`\n Filter for specific employees by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for employees. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all employees without limit, unlike paginated endpoints which default to 150 records. This is acceptable because employees typically have low record counts.\n\n- `nameContains?: string`\n Filter for employees whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for employees whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for employees whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific employees by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for an employee.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for employees whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for employees whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for employees that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for employees updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for employees updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; accountNumber: string; additionalNotes: object[]; address: object; adjustedServiceDate: string; alternatePhone: string; billingRate: object; birthDate: string; createdAt: string; customContactFields: object[]; customFields: object[]; department: string; description: string; disabilityDescription: string; disabilityStatus: 'disabled' | 'non_disabled'; email: string; emergencyContact: object; employeePayroll: object; employeeType: 'officer' | 'owner' | 'regular' | 'statutory'; employmentStatus: 'full_time' | 'part_time'; ethnicity: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'; externalId: string; fax: string; firstName: string; gender: 'male' | 'female'; hiredDate: string; i9OnFileStatus: 'on_file' | 'not_on_file'; isActive: boolean; jobTitle: string; keyEmployeeStatus: 'key_employee' | 'non_key_employee'; lastName: string; middleName: string; militaryStatus: 'active' | 'reserve'; mobile: string; name: string; note: string; objectType: 'qbd_employee'; originalHireDate: string; overtimeExemptStatus: 'exempt' | 'non_exempt'; pager: string; pagerPin: string; phone: string; printAs: string; revisionNumber: string; salutation: string; ssn: string; supervisor: object; targetBonus: string; terminationDate: string; updatedAt: string; usCitizenshipStatus: 'citizen' | 'non_citizen'; usVeteranStatus: 'veteran' | 'non_veteran'; workAuthorizationExpirationDate: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; accountNumber: string; additionalNotes: { id: number; date: string; note: string; }[]; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; postalCode: string; state: string; }; adjustedServiceDate: string; alternatePhone: string; billingRate: { id: string; fullName: string; }; birthDate: string; createdAt: string; customContactFields: { name: string; value: string; }[]; customFields: { name: string; ownerId: string; type: string; value: string; }[]; department: string; description: string; disabilityDescription: string; disabilityStatus: 'disabled' | 'non_disabled'; email: string; emergencyContact: { primaryContact: { name: string; relation: string; value: string; }; secondaryContact: { name: string; relation: string; value: string; }; }; employeePayroll: { class: { id: string; fullName: string; }; earnings: { payrollWageItem: object; rate: string; ratePercent: string; }[]; payPeriod: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; useTimeDataToCreatePaychecks: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; }; employeeType: 'officer' | 'owner' | 'regular' | 'statutory'; employmentStatus: 'full_time' | 'part_time'; ethnicity: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'; externalId: string; fax: string; firstName: string; gender: 'male' | 'female'; hiredDate: string; i9OnFileStatus: 'on_file' | 'not_on_file'; isActive: boolean; jobTitle: string; keyEmployeeStatus: 'key_employee' | 'non_key_employee'; lastName: string; middleName: string; militaryStatus: 'active' | 'reserve'; mobile: string; name: string; note: string; objectType: 'qbd_employee'; originalHireDate: string; overtimeExemptStatus: 'exempt' | 'non_exempt'; pager: string; pagerPin: string; phone: string; printAs: string; revisionNumber: string; salutation: string; ssn: string; supervisor: { id: string; fullName: string; }; targetBonus: string; terminationDate: string; updatedAt: string; usCitizenshipStatus: 'citizen' | 'non_citizen'; usVeteranStatus: 'veteran' | 'non_veteran'; workAuthorizationExpirationDate: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst employees = await conductor.qbd.employees.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(employees);\n```", perLanguage: { typescript: { method: 'client.qbd.employees.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst employees = await conductor.qbd.employees.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(employees.data);", }, python: { method: 'qbd.employees.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nemployees = conductor.qbd.employees.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(employees.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/employees \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/employees/{id}', httpMethod: 'get', summary: 'Retrieve an employee', description: 'Retrieves an employee by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific employees by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.employees > (method) retrieve', qualified: 'client.qbd.employees.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: 'object', markdown: "## retrieve\n\n`conductor.qbd.employees.retrieve(id: string, Conductor-End-User-Id: string): { id: string; accountNumber: string; additionalNotes: object[]; address: object; adjustedServiceDate: string; alternatePhone: string; billingRate: object; birthDate: string; createdAt: string; customContactFields: object[]; customFields: object[]; department: string; description: string; disabilityDescription: string; disabilityStatus: 'disabled' | 'non_disabled'; email: string; emergencyContact: object; employeePayroll: object; employeeType: 'officer' | 'owner' | 'regular' | 'statutory'; employmentStatus: 'full_time' | 'part_time'; ethnicity: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'; externalId: string; fax: string; firstName: string; gender: 'male' | 'female'; hiredDate: string; i9OnFileStatus: 'on_file' | 'not_on_file'; isActive: boolean; jobTitle: string; keyEmployeeStatus: 'key_employee' | 'non_key_employee'; lastName: string; middleName: string; militaryStatus: 'active' | 'reserve'; mobile: string; name: string; note: string; objectType: 'qbd_employee'; originalHireDate: string; overtimeExemptStatus: 'exempt' | 'non_exempt'; pager: string; pagerPin: string; phone: string; printAs: string; revisionNumber: string; salutation: string; ssn: string; supervisor: object; targetBonus: string; terminationDate: string; updatedAt: string; usCitizenshipStatus: 'citizen' | 'non_citizen'; usVeteranStatus: 'veteran' | 'non_veteran'; workAuthorizationExpirationDate: string; }`\n\n**get** `/quickbooks-desktop/employees/{id}`\n\nRetrieves an employee by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific employees by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the employee to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; accountNumber: string; additionalNotes: { id: number; date: string; note: string; }[]; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; postalCode: string; state: string; }; adjustedServiceDate: string; alternatePhone: string; billingRate: { id: string; fullName: string; }; birthDate: string; createdAt: string; customContactFields: { name: string; value: string; }[]; customFields: { name: string; ownerId: string; type: string; value: string; }[]; department: string; description: string; disabilityDescription: string; disabilityStatus: 'disabled' | 'non_disabled'; email: string; emergencyContact: { primaryContact: { name: string; relation: string; value: string; }; secondaryContact: { name: string; relation: string; value: string; }; }; employeePayroll: { class: { id: string; fullName: string; }; earnings: { payrollWageItem: object; rate: string; ratePercent: string; }[]; payPeriod: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; useTimeDataToCreatePaychecks: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; }; employeeType: 'officer' | 'owner' | 'regular' | 'statutory'; employmentStatus: 'full_time' | 'part_time'; ethnicity: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'; externalId: string; fax: string; firstName: string; gender: 'male' | 'female'; hiredDate: string; i9OnFileStatus: 'on_file' | 'not_on_file'; isActive: boolean; jobTitle: string; keyEmployeeStatus: 'key_employee' | 'non_key_employee'; lastName: string; middleName: string; militaryStatus: 'active' | 'reserve'; mobile: string; name: string; note: string; objectType: 'qbd_employee'; originalHireDate: string; overtimeExemptStatus: 'exempt' | 'non_exempt'; pager: string; pagerPin: string; phone: string; printAs: string; revisionNumber: string; salutation: string; ssn: string; supervisor: { id: string; fullName: string; }; targetBonus: string; terminationDate: string; updatedAt: string; usCitizenshipStatus: 'citizen' | 'non_citizen'; usVeteranStatus: 'veteran' | 'non_veteran'; workAuthorizationExpirationDate: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `additionalNotes: { id: number; date: string; note: string; }[]`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; postalCode: string; state: string; }`\n - `adjustedServiceDate: string`\n - `alternatePhone: string`\n - `billingRate: { id: string; fullName: string; }`\n - `birthDate: string`\n - `createdAt: string`\n - `customContactFields: { name: string; value: string; }[]`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `department: string`\n - `description: string`\n - `disabilityDescription: string`\n - `disabilityStatus: 'disabled' | 'non_disabled'`\n - `email: string`\n - `emergencyContact: { primaryContact: { name: string; relation: string; value: string; }; secondaryContact: { name: string; relation: string; value: string; }; }`\n - `employeePayroll: { class: { id: string; fullName: string; }; earnings: { payrollWageItem: { id: string; fullName: string; }; rate: string; ratePercent: string; }[]; payPeriod: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; useTimeDataToCreatePaychecks: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; }`\n - `employeeType: 'officer' | 'owner' | 'regular' | 'statutory'`\n - `employmentStatus: 'full_time' | 'part_time'`\n - `ethnicity: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `gender: 'male' | 'female'`\n - `hiredDate: string`\n - `i9OnFileStatus: 'on_file' | 'not_on_file'`\n - `isActive: boolean`\n - `jobTitle: string`\n - `keyEmployeeStatus: 'key_employee' | 'non_key_employee'`\n - `lastName: string`\n - `middleName: string`\n - `militaryStatus: 'active' | 'reserve'`\n - `mobile: string`\n - `name: string`\n - `note: string`\n - `objectType: 'qbd_employee'`\n - `originalHireDate: string`\n - `overtimeExemptStatus: 'exempt' | 'non_exempt'`\n - `pager: string`\n - `pagerPin: string`\n - `phone: string`\n - `printAs: string`\n - `revisionNumber: string`\n - `salutation: string`\n - `ssn: string`\n - `supervisor: { id: string; fullName: string; }`\n - `targetBonus: string`\n - `terminationDate: string`\n - `updatedAt: string`\n - `usCitizenshipStatus: 'citizen' | 'non_citizen'`\n - `usVeteranStatus: 'veteran' | 'non_veteran'`\n - `workAuthorizationExpirationDate: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst employee = await conductor.qbd.employees.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(employee);\n```", perLanguage: { typescript: { method: 'client.qbd.employees.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst employee = await conductor.qbd.employees.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(employee.id);", }, python: { method: 'qbd.employees.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nemployee = conductor.qbd.employees.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(employee.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/employees/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/employees/{id}', httpMethod: 'post', summary: 'Update an employee', description: 'Updates an employee record, allowing you to revise contact details, employment status dates, supervisory assignments, payroll configuration, and additional notes to keep workforce data current.', stainlessPath: '(resource) qbd.employees > (method) update', qualified: 'client.qbd.employees.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'accountNumber?: string;', 'additionalNotes?: { id: number; note: string; }[];', 'address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; postalCode?: string; state?: string; };', 'adjustedServiceDate?: string;', 'alternatePhone?: string;', 'billingRateId?: string;', 'birthDate?: string;', 'customContactFields?: { name: string; value: string; }[];', 'department?: string;', 'description?: string;', 'disabilityDescription?: string;', "disabilityStatus?: 'disabled' | 'non_disabled';", 'email?: string;', 'emergencyContact?: { primaryContact?: { name: string; value: string; relation?: string; }; secondaryContact?: { name: string; value: string; relation?: string; }; };', "employeePayroll?: { classId?: string; deleteAllEarnings?: boolean; earnings?: { payrollWageItemId: string; rate?: string; ratePercent?: string; }[]; payPeriod?: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }; useTimeDataToCreatePaychecks?: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }; };", "employeeType?: 'officer' | 'owner' | 'regular' | 'statutory';", "employmentStatus?: 'full_time' | 'part_time';", "ethnicity?: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races';", 'fax?: string;', 'firstName?: string;', 'hiredDate?: string;', "i9OnFileStatus?: 'on_file' | 'not_on_file';", 'isActive?: boolean;', 'jobTitle?: string;', "keyEmployeeStatus?: 'key_employee' | 'non_key_employee';", 'lastName?: string;', 'middleName?: string;', "militaryStatus?: 'active' | 'reserve';", 'mobile?: string;', 'note?: string;', 'originalHireDate?: string;', "overtimeExemptStatus?: 'exempt' | 'non_exempt';", 'pager?: string;', 'pagerPin?: string;', 'phone?: string;', 'printAs?: string;', 'salutation?: string;', 'supervisorId?: string;', 'targetBonus?: string;', 'terminationDate?: string;', "usCitizenshipStatus?: 'citizen' | 'non_citizen';", "usVeteranStatus?: 'veteran' | 'non_veteran';", 'workAuthorizationExpirationDate?: string;', ], response: 'object', markdown: "## update\n\n`conductor.qbd.employees.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, accountNumber?: string, additionalNotes?: { id: number; note: string; }[], address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; postalCode?: string; state?: string; }, adjustedServiceDate?: string, alternatePhone?: string, billingRateId?: string, birthDate?: string, customContactFields?: { name: string; value: string; }[], department?: string, description?: string, disabilityDescription?: string, disabilityStatus?: 'disabled' | 'non_disabled', email?: string, emergencyContact?: { primaryContact?: { name: string; value: string; relation?: string; }; secondaryContact?: { name: string; value: string; relation?: string; }; }, employeePayroll?: { classId?: string; deleteAllEarnings?: boolean; earnings?: { payrollWageItemId: string; rate?: string; ratePercent?: string; }[]; payPeriod?: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }; useTimeDataToCreatePaychecks?: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }; }, employeeType?: 'officer' | 'owner' | 'regular' | 'statutory', employmentStatus?: 'full_time' | 'part_time', ethnicity?: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races', fax?: string, firstName?: string, hiredDate?: string, i9OnFileStatus?: 'on_file' | 'not_on_file', isActive?: boolean, jobTitle?: string, keyEmployeeStatus?: 'key_employee' | 'non_key_employee', lastName?: string, middleName?: string, militaryStatus?: 'active' | 'reserve', mobile?: string, note?: string, originalHireDate?: string, overtimeExemptStatus?: 'exempt' | 'non_exempt', pager?: string, pagerPin?: string, phone?: string, printAs?: string, salutation?: string, supervisorId?: string, targetBonus?: string, terminationDate?: string, usCitizenshipStatus?: 'citizen' | 'non_citizen', usVeteranStatus?: 'veteran' | 'non_veteran', workAuthorizationExpirationDate?: string): { id: string; accountNumber: string; additionalNotes: object[]; address: object; adjustedServiceDate: string; alternatePhone: string; billingRate: object; birthDate: string; createdAt: string; customContactFields: object[]; customFields: object[]; department: string; description: string; disabilityDescription: string; disabilityStatus: 'disabled' | 'non_disabled'; email: string; emergencyContact: object; employeePayroll: object; employeeType: 'officer' | 'owner' | 'regular' | 'statutory'; employmentStatus: 'full_time' | 'part_time'; ethnicity: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'; externalId: string; fax: string; firstName: string; gender: 'male' | 'female'; hiredDate: string; i9OnFileStatus: 'on_file' | 'not_on_file'; isActive: boolean; jobTitle: string; keyEmployeeStatus: 'key_employee' | 'non_key_employee'; lastName: string; middleName: string; militaryStatus: 'active' | 'reserve'; mobile: string; name: string; note: string; objectType: 'qbd_employee'; originalHireDate: string; overtimeExemptStatus: 'exempt' | 'non_exempt'; pager: string; pagerPin: string; phone: string; printAs: string; revisionNumber: string; salutation: string; ssn: string; supervisor: object; targetBonus: string; terminationDate: string; updatedAt: string; usCitizenshipStatus: 'citizen' | 'non_citizen'; usVeteranStatus: 'veteran' | 'non_veteran'; workAuthorizationExpirationDate: string; }`\n\n**post** `/quickbooks-desktop/employees/{id}`\n\nUpdates an employee record, allowing you to revise contact details, employment status dates, supervisory assignments, payroll configuration, and additional notes to keep workforce data current.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the employee to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the employee object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountNumber?: string`\n The employee's account number, which appears in the QuickBooks chart of accounts, reports, and graphs.\n\nNote that if the \"Use Account Numbers\" preference is turned off in QuickBooks, the account number may not be visible in the user interface, but it can still be set and retrieved through the API.\n\n- `additionalNotes?: { id: number; note: string; }[]`\n Additional notes about this employee.\n\n- `address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; postalCode?: string; state?: string; }`\n The employee's address.\n\nIf the company uses QuickBooks Payroll for this employee, this address must specify a complete address, including city, state, ZIP (or postal) code, and at least one line of the street address.\n - `city?: string`\n The city, district, suburb, town, or village name of the employee address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the employee address.\n - `line1?: string`\n The first line of the employee address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the employee address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the employee address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the employee address, if needed.\n\nMaximum length: 41 characters.\n - `postalCode?: string`\n The postal code or ZIP code of the employee address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The U.S. state or Canadian province of the employee address. QuickBooks requires this field to be a two-letter abbreviation (e.g., \"CA\" for California or \"ON\" for Ontario). See enum for all possible values. QuickBooks may reject values that the connected company file's edition does not support (e.g., a Canadian province on a U.S. company file).\n\n- `adjustedServiceDate?: string`\n The adjusted service date for this employee, in ISO 8601 format (YYYY-MM-DD). This date accounts for previous employment periods or leaves that affect seniority.\n\n- `alternatePhone?: string`\n The employee's alternate telephone number.\n\nMaximum length: 21 characters.\n\n- `billingRateId?: string`\n The employee's billing rate, used to override service item rates in time tracking activities.\n\n- `birthDate?: string`\n This employee's date of birth, in ISO 8601 format (YYYY-MM-DD).\n\n- `customContactFields?: { name: string; value: string; }[]`\n Additional custom contact fields for this employee, such as phone numbers or email addresses.\n\n- `department?: string`\n The employee's department. Found in the \"employment job details\" section of the employee's record in QuickBooks.\n\n- `description?: string`\n A description of this employee. Found in the \"employment job details\" section of the employee's record in QuickBooks.\n\n- `disabilityDescription?: string`\n A description of this employee's disability.\n\n- `disabilityStatus?: 'disabled' | 'non_disabled'`\n Indicates whether this employee is disabled.\n\n- `email?: string`\n The employee's email address.\n\n- `emergencyContact?: { primaryContact?: { name: string; value: string; relation?: string; }; secondaryContact?: { name: string; value: string; relation?: string; }; }`\n The employee's emergency contacts.\n - `primaryContact?: { name: string; value: string; relation?: string; }`\n The employee's primary emergency contact.\n - `secondaryContact?: { name: string; value: string; relation?: string; }`\n The employee's secondary emergency contact.\n\n- `employeePayroll?: { classId?: string; deleteAllEarnings?: boolean; earnings?: { payrollWageItemId: string; rate?: string; ratePercent?: string; }[]; payPeriod?: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }; useTimeDataToCreatePaychecks?: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }; }`\n The employee's payroll information.\n\n**IMPORTANT**: QuickBooks Desktop requires the connected app to have personal data access enabled to update this field. If updating this field fails with a personal data permission error, confirm this setting is enabled in QuickBooks Desktop: sign in as Admin in Single-User Mode and go to `Edit > Preferences > Integrated Applications > Company Preferences`, select the app, click `Properties`, then check \"Allow this application to access personal data such as Social Security Numbers and customer credit card information\".\n - `classId?: string`\n The employee's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n - `deleteAllEarnings?: boolean`\n When `true`, deletes all earnings records for this employee.\n - `earnings?: { payrollWageItemId: string; rate?: string; ratePercent?: string; }[]`\n The employee's earnings.\n\n**IMPORTANT**: When updating employees, if you include any earnings records in your update request, QuickBooks will delete all existing earnings records for this employee and replace them with the new records you provide. If you do not include any earnings records, the existing earnings records will remain unchanged. To delete all earnings records without adding new ones, set the `deleteAllEarnings` field to `true`.\n - `payPeriod?: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'`\n How frequently this employee is paid (e.g., weekly, biweekly, monthly). This determines the schedule for generating paychecks.\n - `sickHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }`\n The employee's sick hours, including how sick time is accrued and the total hours accrued.\n - `useTimeDataToCreatePaychecks?: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'`\n Indicates whether this employee is using time-tracking data to create paychecks.\n - `vacationHours?: { accrualPeriod?: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate?: string; hoursAccruedPerPeriod?: string; hoursAvailable?: string; hoursUsed?: string; maximumHours?: string; resetsHoursEachYear?: boolean; }`\n The employee's vacation hours, including how vacation time is accrued and the total hours accrued.\n\n- `employeeType?: 'officer' | 'owner' | 'regular' | 'statutory'`\n The employee type. This affects payroll taxes - a statutory employee is defined as an employee by statute. Note that owners/partners are typically on the \"Other Names\" list in QuickBooks, but if listed as an employee their type will be `owner`.\n\n- `employmentStatus?: 'full_time' | 'part_time'`\n Indicates whether this employee is a part-time or full-time employee.\n\n- `ethnicity?: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'`\n This employee's ethnicity.\n\n- `fax?: string`\n The employee's fax number.\n\nMaximum length: 21 characters.\n\n- `firstName?: string`\n The employee's first name.\n\nMaximum length: 25 characters.\n\n- `hiredDate?: string`\n The date this employee was hired, in ISO 8601 format (YYYY-MM-DD).\n\n- `i9OnFileStatus?: 'on_file' | 'not_on_file'`\n Indicates whether this employee's I-9 is on file.\n\n- `isActive?: boolean`\n Indicates whether this employee is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `jobTitle?: string`\n The employee's job title.\n\n- `keyEmployeeStatus?: 'key_employee' | 'non_key_employee'`\n Indicates whether this employee is a key employee.\n\n- `lastName?: string`\n The employee's last name.\n\nMaximum length: 25 characters.\n\n- `middleName?: string`\n The employee's middle name.\n\nMaximum length: 5 characters.\n\n- `militaryStatus?: 'active' | 'reserve'`\n This employee's military status if they are a U.S. veteran.\n\n- `mobile?: string`\n The employee's mobile phone number.\n\nMaximum length: 21 characters.\n\n- `note?: string`\n A note or comment about this employee.\n\n- `originalHireDate?: string`\n The original hire date for this employee, in ISO 8601 format (YYYY-MM-DD).\n\n- `overtimeExemptStatus?: 'exempt' | 'non_exempt'`\n Indicates whether this employee is exempt from overtime pay. This classification is based on U.S. labor laws (FLSA).\n\n- `pager?: string`\n The employee's pager number.\n\nMaximum length: 21 characters.\n\n- `pagerPin?: string`\n The employee's pager PIN.\n\n- `phone?: string`\n The employee's primary telephone number.\n\nMaximum length: 21 characters.\n\n- `printAs?: string`\n The name to use when printing this employee from QuickBooks. By default, this is the same as the `name` field.\n\n- `salutation?: string`\n The employee's formal salutation title that precedes their name, such as \"Mr.\", \"Ms.\", or \"Dr.\".\n\n- `supervisorId?: string`\n The employee's supervisor. Found in the \"employment job details\" section of the employee's record in QuickBooks.\n\n- `targetBonus?: string`\n The target bonus for this employee, represented as a decimal string. Found in the \"employment job details\" section of the employee's record in QuickBooks.\n\n- `terminationDate?: string`\n The date this employee's employment ended with the company, in ISO 8601 format (YYYY-MM-DD). This is also known as the released date or separation date.\n\n- `usCitizenshipStatus?: 'citizen' | 'non_citizen'`\n Indicates whether this employee is a U.S. citizen.\n\n- `usVeteranStatus?: 'veteran' | 'non_veteran'`\n Indicates whether this employee is a U.S. veteran.\n\n- `workAuthorizationExpirationDate?: string`\n The date this employee's work authorization expires, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; accountNumber: string; additionalNotes: { id: number; date: string; note: string; }[]; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; postalCode: string; state: string; }; adjustedServiceDate: string; alternatePhone: string; billingRate: { id: string; fullName: string; }; birthDate: string; createdAt: string; customContactFields: { name: string; value: string; }[]; customFields: { name: string; ownerId: string; type: string; value: string; }[]; department: string; description: string; disabilityDescription: string; disabilityStatus: 'disabled' | 'non_disabled'; email: string; emergencyContact: { primaryContact: { name: string; relation: string; value: string; }; secondaryContact: { name: string; relation: string; value: string; }; }; employeePayroll: { class: { id: string; fullName: string; }; earnings: { payrollWageItem: object; rate: string; ratePercent: string; }[]; payPeriod: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; useTimeDataToCreatePaychecks: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; }; employeeType: 'officer' | 'owner' | 'regular' | 'statutory'; employmentStatus: 'full_time' | 'part_time'; ethnicity: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'; externalId: string; fax: string; firstName: string; gender: 'male' | 'female'; hiredDate: string; i9OnFileStatus: 'on_file' | 'not_on_file'; isActive: boolean; jobTitle: string; keyEmployeeStatus: 'key_employee' | 'non_key_employee'; lastName: string; middleName: string; militaryStatus: 'active' | 'reserve'; mobile: string; name: string; note: string; objectType: 'qbd_employee'; originalHireDate: string; overtimeExemptStatus: 'exempt' | 'non_exempt'; pager: string; pagerPin: string; phone: string; printAs: string; revisionNumber: string; salutation: string; ssn: string; supervisor: { id: string; fullName: string; }; targetBonus: string; terminationDate: string; updatedAt: string; usCitizenshipStatus: 'citizen' | 'non_citizen'; usVeteranStatus: 'veteran' | 'non_veteran'; workAuthorizationExpirationDate: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `additionalNotes: { id: number; date: string; note: string; }[]`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; postalCode: string; state: string; }`\n - `adjustedServiceDate: string`\n - `alternatePhone: string`\n - `billingRate: { id: string; fullName: string; }`\n - `birthDate: string`\n - `createdAt: string`\n - `customContactFields: { name: string; value: string; }[]`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `department: string`\n - `description: string`\n - `disabilityDescription: string`\n - `disabilityStatus: 'disabled' | 'non_disabled'`\n - `email: string`\n - `emergencyContact: { primaryContact: { name: string; relation: string; value: string; }; secondaryContact: { name: string; relation: string; value: string; }; }`\n - `employeePayroll: { class: { id: string; fullName: string; }; earnings: { payrollWageItem: { id: string; fullName: string; }; rate: string; ratePercent: string; }[]; payPeriod: 'biweekly' | 'daily' | 'monthly' | 'quarterly' | 'semimonthly' | 'weekly' | 'yearly'; sickHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; useTimeDataToCreatePaychecks: 'does_not_use_time_data' | 'not_set' | 'uses_time_data'; vacationHours: { accrualPeriod: 'accrues_annually' | 'accrues_hourly' | 'accrues_per_paycheck'; accrualStartDate: string; hoursAccruedPerPeriod: string; hoursAvailable: string; hoursUsed: string; maximumHours: string; resetsHoursEachYear: boolean; }; }`\n - `employeeType: 'officer' | 'owner' | 'regular' | 'statutory'`\n - `employmentStatus: 'full_time' | 'part_time'`\n - `ethnicity: 'american_indian' | 'asian' | 'black' | 'hawaiian' | 'hispanic' | 'white' | 'two_or_more_races'`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `gender: 'male' | 'female'`\n - `hiredDate: string`\n - `i9OnFileStatus: 'on_file' | 'not_on_file'`\n - `isActive: boolean`\n - `jobTitle: string`\n - `keyEmployeeStatus: 'key_employee' | 'non_key_employee'`\n - `lastName: string`\n - `middleName: string`\n - `militaryStatus: 'active' | 'reserve'`\n - `mobile: string`\n - `name: string`\n - `note: string`\n - `objectType: 'qbd_employee'`\n - `originalHireDate: string`\n - `overtimeExemptStatus: 'exempt' | 'non_exempt'`\n - `pager: string`\n - `pagerPin: string`\n - `phone: string`\n - `printAs: string`\n - `revisionNumber: string`\n - `salutation: string`\n - `ssn: string`\n - `supervisor: { id: string; fullName: string; }`\n - `targetBonus: string`\n - `terminationDate: string`\n - `updatedAt: string`\n - `usCitizenshipStatus: 'citizen' | 'non_citizen'`\n - `usVeteranStatus: 'veteran' | 'non_veteran'`\n - `workAuthorizationExpirationDate: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst employee = await conductor.qbd.employees.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(employee);\n```", perLanguage: { typescript: { method: 'client.qbd.employees.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst employee = await conductor.qbd.employees.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(employee.id);", }, python: { method: 'qbd.employees.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nemployee = conductor.qbd.employees.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(employee.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/employees/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "accountNumber": "1010",\n "adjustedServiceDate": "2024-01-01",\n "alternatePhone": "+1-555-987-6543",\n "billingRateId": "80000001-1234567890",\n "birthDate": "1990-01-01",\n "department": "Sales",\n "description": "This employee is a key employee.",\n "disabilityDescription": "Cerebral Palsy",\n "disabilityStatus": "disabled",\n "email": "employee@example.com",\n "employeeType": "regular",\n "employmentStatus": "full_time",\n "ethnicity": "asian",\n "fax": "+1-555-555-1212",\n "firstName": "John",\n "hiredDate": "2024-01-01",\n "i9OnFileStatus": "on_file",\n "isActive": true,\n "jobTitle": "Purchasing Manager",\n "keyEmployeeStatus": "key_employee",\n "lastName": "Doe",\n "middleName": "A.",\n "militaryStatus": "active",\n "mobile": "+1-555-555-1212",\n "note": "This employee is a key employee.",\n "originalHireDate": "2024-01-01",\n "overtimeExemptStatus": "exempt",\n "pager": "+1-555-555-1212",\n "pagerPin": "1234",\n "phone": "+1-555-123-4567",\n "printAs": "John Doe",\n "salutation": "Dr.",\n "supervisorId": "80000001-1234567890",\n "targetBonus": "10000.00",\n "terminationDate": "2024-01-01",\n "usCitizenshipStatus": "citizen",\n "usVeteranStatus": "veteran",\n "workAuthorizationExpirationDate": "2024-01-01"\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/estimates', httpMethod: 'post', summary: 'Create an estimate', description: 'Creates a new estimate.', stainlessPath: '(resource) qbd.estimates > (method) create', qualified: 'client.qbd.estimates.create', params: [ 'customerId: string;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'classId?: string;', 'customerMessageId?: string;', 'documentTemplateId?: string;', 'dueDate?: string;', 'exchangeRate?: number;', 'externalId?: string;', 'isActive?: boolean;', 'isQueuedForEmail?: boolean;', 'lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[];', "lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; markupRate?: string; markupRatePercent?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'otherCustomField?: string;', 'purchaseOrderNumber?: string;', 'refNumber?: string;', 'salesRepresentativeId?: string;', 'salesTaxCodeId?: string;', 'salesTaxItemId?: string;', 'shipmentOrigin?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'termsId?: string;', ], response: "{ id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isActive: boolean; isQueuedForEmail: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_estimate'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.estimates.create(customerId: string, transactionDate: string, Conductor-End-User-Id: string, billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, classId?: string, customerMessageId?: string, documentTemplateId?: string, dueDate?: string, exchangeRate?: number, externalId?: string, isActive?: boolean, isQueuedForEmail?: boolean, lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[], lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; markupRate?: string; markupRatePercent?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; unitOfMeasure?: string; }[], memo?: string, otherCustomField?: string, purchaseOrderNumber?: string, refNumber?: string, salesRepresentativeId?: string, salesTaxCodeId?: string, salesTaxItemId?: string, shipmentOrigin?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, termsId?: string): { id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isActive: boolean; isQueuedForEmail: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_estimate'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/estimates`\n\nCreates a new estimate.\n\n### Parameters\n\n- `customerId: string`\n The customer or customer-job associated with this estimate.\n\n- `transactionDate: string`\n The date of this estimate, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The estimate's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `classId?: string`\n The estimate's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this estimate's line items unless overridden at the line item level.\n\n- `customerMessageId?: string`\n The message to display to the customer on the estimate.\n\n- `documentTemplateId?: string`\n The predefined template in QuickBooks that determines the layout and formatting for this estimate when printed or displayed.\n\n- `dueDate?: string`\n The date by which this estimate must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n- `exchangeRate?: number`\n The market exchange rate between this estimate's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isActive?: boolean`\n Indicates whether this estimate is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `isQueuedForEmail?: boolean`\n Indicates whether this estimate is included in the queue of documents for QuickBooks to email to the customer.\n\n- `lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The estimate's line item groups, each representing a predefined set of related items.\n\n**IMPORTANT**: You must specify `lines`, `lineGroups`, or both when creating an estimate.\n\n- `lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; markupRate?: string; markupRatePercent?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; unitOfMeasure?: string; }[]`\n The estimate's line items, each representing a single product or service quoted.\n\n**IMPORTANT**: You must specify `lines`, `lineGroups`, or both when creating an estimate.\n\n- `memo?: string`\n A memo or note for this estimate that appears in reports, but not on the estimate. Use `customerMessage` to add a note to this estimate.\n\n- `otherCustomField?: string`\n A built-in custom field for additional information specific to this estimate. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all estimates for convenience. Developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Unlike `otherCustomField1` and `otherCustomField2`, which are line item fields, this exists at the transaction level. Hidden by default in the QuickBooks UI.\n\n- `purchaseOrderNumber?: string`\n The customer's Purchase Order (PO) number associated with this estimate. This field is often used to cross-reference the estimate with the customer's purchasing system.\n\nMaximum length: 25 characters.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this estimate, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n- `salesRepresentativeId?: string`\n The estimate's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this estimate, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this estimate's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\n- `shipmentOrigin?: string`\n The origin location from where the product associated with this estimate is shipped. This is the point at which ownership and liability for goods transfer from seller to buyer. Internally, QuickBooks uses the term \"FOB\" for this field, which stands for \"freight on board\". This field is informational and has no accounting implications.\n\nMaximum length: 13 characters.\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The estimate's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `termsId?: string`\n The estimate's payment terms, defining when payment is due and any applicable discounts.\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isActive: boolean; isQueuedForEmail: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; inventorySite: object; inventorySiteLocation: object; item: object; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; unitOfMeasure: string; }[]; objectType: 'qbd_estimate_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_estimate'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; subtotal: string; terms: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isActive: boolean`\n - `isQueuedForEmail: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; unitOfMeasure: string; }[]; objectType: 'qbd_estimate_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_estimate'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `subtotal: string`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst estimate = await conductor.qbd.estimates.create({\n customerId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(estimate);\n```", perLanguage: { typescript: { method: 'client.qbd.estimates.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst estimate = await conductor.qbd.estimates.create({\n customerId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(estimate.id);", }, python: { method: 'qbd.estimates.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nestimate = conductor.qbd.estimates.create(\n customer_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(estimate.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/estimates \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "customerId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "classId": "80000001-1234567890",\n "customerMessageId": "80000001-1234567890",\n "documentTemplateId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isActive": true,\n "isQueuedForEmail": true,\n "memo": "Proposal for website redesign",\n "otherCustomField": "Special handling required",\n "purchaseOrderNumber": "PO-1234",\n "refNumber": "EST-1234",\n "salesRepresentativeId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxItemId": "80000001-1234567890",\n "shipmentOrigin": "shipmentOrigin",\n "termsId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/estimates', httpMethod: 'get', summary: 'List all estimates', description: 'Returns a list of estimates. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.estimates > (method) list', qualified: 'client.qbd.estimates.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'customerIds?: string[];', 'ids?: string[];', 'includeLineItems?: boolean;', 'includeLinkedTransactions?: boolean;', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isActive: boolean; isQueuedForEmail: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_estimate'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.estimates.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, customerIds?: string[], ids?: string[], includeLineItems?: boolean, includeLinkedTransactions?: boolean, limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isActive: boolean; isQueuedForEmail: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_estimate'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/estimates`\n\nReturns a list of estimates. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for estimates associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for estimates in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `customerIds?: string[]`\n Filter for estimates created for these customers.\n\n- `ids?: string[]`\n Filter for specific estimates by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `includeLinkedTransactions?: boolean`\n Whether to include linked transactions in the response. Defaults to `false`. For example, a payment linked to the corresponding estimate.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for estimates whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for estimates whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for estimates whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific estimates by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for estimates whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for estimates whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for estimates whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for estimates whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for estimates updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for estimates updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isActive: boolean; isQueuedForEmail: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; inventorySite: object; inventorySiteLocation: object; item: object; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; unitOfMeasure: string; }[]; objectType: 'qbd_estimate_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_estimate'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; subtotal: string; terms: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isActive: boolean`\n - `isQueuedForEmail: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; unitOfMeasure: string; }[]; objectType: 'qbd_estimate_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_estimate'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `subtotal: string`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const estimate of conductor.qbd.estimates.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(estimate);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.estimates.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const estimate of conductor.qbd.estimates.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(estimate.id);\n}", }, python: { method: 'qbd.estimates.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.estimates.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/estimates \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/estimates/{id}', httpMethod: 'get', summary: 'Retrieve an estimate', description: 'Retrieves an estimate by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific estimates by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.', stainlessPath: '(resource) qbd.estimates > (method) retrieve', qualified: 'client.qbd.estimates.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isActive: boolean; isQueuedForEmail: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_estimate'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.estimates.retrieve(id: string, Conductor-End-User-Id: string): { id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isActive: boolean; isQueuedForEmail: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_estimate'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/estimates/{id}`\n\nRetrieves an estimate by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific estimates by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the estimate to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isActive: boolean; isQueuedForEmail: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; inventorySite: object; inventorySiteLocation: object; item: object; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; unitOfMeasure: string; }[]; objectType: 'qbd_estimate_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_estimate'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; subtotal: string; terms: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isActive: boolean`\n - `isQueuedForEmail: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; unitOfMeasure: string; }[]; objectType: 'qbd_estimate_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_estimate'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `subtotal: string`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst estimate = await conductor.qbd.estimates.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(estimate);\n```", perLanguage: { typescript: { method: 'client.qbd.estimates.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst estimate = await conductor.qbd.estimates.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(estimate.id);", }, python: { method: 'qbd.estimates.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nestimate = conductor.qbd.estimates.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(estimate.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/estimates/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/estimates/{id}', httpMethod: 'post', summary: 'Update an estimate', description: 'Updates an existing estimate.\n\n**NOTE:** If you include `lines` or `lineGroups`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.estimates > (method) update', qualified: 'client.qbd.estimates.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'classId?: string;', 'createChangeOrder?: boolean;', 'customerId?: string;', 'customerMessageId?: string;', 'documentTemplateId?: string;', 'dueDate?: string;', 'exchangeRate?: number;', 'isActive?: boolean;', 'isQueuedForEmail?: boolean;', "lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; markupRate?: string; markupRatePercent?: string; otherCustomField1?: string; otherCustomField2?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[];", "lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; markupRate?: string; markupRatePercent?: string; otherCustomField1?: string; otherCustomField2?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'otherCustomField?: string;', 'purchaseOrderNumber?: string;', 'refNumber?: string;', 'salesRepresentativeId?: string;', 'salesTaxCodeId?: string;', 'salesTaxItemId?: string;', 'shipmentOrigin?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'termsId?: string;', 'transactionDate?: string;', ], response: "{ id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isActive: boolean; isQueuedForEmail: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_estimate'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.estimates.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, classId?: string, createChangeOrder?: boolean, customerId?: string, customerMessageId?: string, documentTemplateId?: string, dueDate?: string, exchangeRate?: number, isActive?: boolean, isQueuedForEmail?: boolean, lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; markupRate?: string; markupRatePercent?: string; otherCustomField1?: string; otherCustomField2?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[], lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; markupRate?: string; markupRatePercent?: string; otherCustomField1?: string; otherCustomField2?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; unitOfMeasure?: string; }[], memo?: string, otherCustomField?: string, purchaseOrderNumber?: string, refNumber?: string, salesRepresentativeId?: string, salesTaxCodeId?: string, salesTaxItemId?: string, shipmentOrigin?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, termsId?: string, transactionDate?: string): { id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isActive: boolean; isQueuedForEmail: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_estimate'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/estimates/{id}`\n\nUpdates an existing estimate.\n\n**NOTE:** If you include `lines` or `lineGroups`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the estimate to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the estimate object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The estimate's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `classId?: string`\n The estimate's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this estimate's line items unless overridden at the line item level.\n\n- `createChangeOrder?: boolean`\n When `true`, creates a \"change order\" that appears in this estimate's description field in QuickBooks's estimate form, specifying exactly what changed in this update request, the dollar amount of each change, and the net dollar change to this estimate.\n\n- `customerId?: string`\n The customer or customer-job associated with this estimate.\n\n- `customerMessageId?: string`\n The message to display to the customer on the estimate.\n\n- `documentTemplateId?: string`\n The predefined template in QuickBooks that determines the layout and formatting for this estimate when printed or displayed.\n\n- `dueDate?: string`\n The date by which this estimate must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n- `exchangeRate?: number`\n The market exchange rate between this estimate's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `isActive?: boolean`\n Indicates whether this estimate is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `isQueuedForEmail?: boolean`\n Indicates whether this estimate is included in the queue of documents for QuickBooks to email to the customer.\n\n- `lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; markupRate?: string; markupRatePercent?: string; otherCustomField1?: string; otherCustomField2?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The estimate's line item groups, each representing a predefined set of related items.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing line item groups for the estimate with this array. To keep any existing line item groups, you must include them in this array even if they have not changed. **Any line item groups not included will be removed.**\n\n2. To add a new line item group, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any line item groups, omit this field entirely to keep them unchanged.\n\n- `lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; markupRate?: string; markupRatePercent?: string; otherCustomField1?: string; otherCustomField2?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; unitOfMeasure?: string; }[]`\n The estimate's line items, each representing a single product or service quoted.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing line items for the estimate with this array. To keep any existing line items, you must include them in this array even if they have not changed. **Any line items not included will be removed.**\n\n2. To add a new line item, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any line items, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this estimate that appears in reports, but not on the estimate. Use `customerMessage` to add a note to this estimate.\n\n- `otherCustomField?: string`\n A built-in custom field for additional information specific to this estimate. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all estimates for convenience. Developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Unlike `otherCustomField1` and `otherCustomField2`, which are line item fields, this exists at the transaction level. Hidden by default in the QuickBooks UI.\n\n- `purchaseOrderNumber?: string`\n The customer's Purchase Order (PO) number associated with this estimate. This field is often used to cross-reference the estimate with the customer's purchasing system.\n\nMaximum length: 25 characters.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this estimate, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 11 characters.\n\n- `salesRepresentativeId?: string`\n The estimate's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this estimate, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this estimate's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\n- `shipmentOrigin?: string`\n The origin location from where the product associated with this estimate is shipped. This is the point at which ownership and liability for goods transfer from seller to buyer. Internally, QuickBooks uses the term \"FOB\" for this field, which stands for \"freight on board\". This field is informational and has no accounting implications.\n\nMaximum length: 13 characters.\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The estimate's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `termsId?: string`\n The estimate's payment terms, defining when payment is due and any applicable discounts.\n\n- `transactionDate?: string`\n The date of this estimate, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isActive: boolean; isQueuedForEmail: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; inventorySite: object; inventorySiteLocation: object; item: object; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; unitOfMeasure: string; }[]; objectType: 'qbd_estimate_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_estimate'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; subtotal: string; terms: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isActive: boolean`\n - `isQueuedForEmail: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; unitOfMeasure: string; }[]; objectType: 'qbd_estimate_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; markupRate: string; markupRatePercent: string; objectType: 'qbd_estimate_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_estimate'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `subtotal: string`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst estimate = await conductor.qbd.estimates.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(estimate);\n```", perLanguage: { typescript: { method: 'client.qbd.estimates.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst estimate = await conductor.qbd.estimates.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(estimate.id);", }, python: { method: 'qbd.estimates.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nestimate = conductor.qbd.estimates.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(estimate.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/estimates/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "classId": "80000001-1234567890",\n "createChangeOrder": false,\n "customerId": "80000001-1234567890",\n "customerMessageId": "80000001-1234567890",\n "documentTemplateId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "isActive": true,\n "isQueuedForEmail": true,\n "memo": "Proposal for website redesign",\n "otherCustomField": "Special handling required",\n "purchaseOrderNumber": "PO-1234",\n "refNumber": "EST-1234",\n "salesRepresentativeId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxItemId": "80000001-1234567890",\n "shipmentOrigin": "shipmentOrigin",\n "termsId": "80000001-1234567890",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/estimates/{id}', httpMethod: 'delete', summary: 'Delete an estimate', description: 'Permanently deletes an estimate. The deletion will fail if the estimate is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.estimates > (method) delete', qualified: 'client.qbd.estimates.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_estimate'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.estimates.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_estimate'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/estimates/{id}`\n\nPermanently deletes an estimate. The deletion will fail if the estimate is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the estimate to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_estimate'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_estimate'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst estimate = await conductor.qbd.estimates.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(estimate);\n```", perLanguage: { typescript: { method: 'client.qbd.estimates.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst estimate = await conductor.qbd.estimates.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(estimate.id);", }, python: { method: 'qbd.estimates.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nestimate = conductor.qbd.estimates.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(estimate.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/estimates/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/inventory-adjustments', httpMethod: 'post', summary: 'Create an inventory adjustment', description: "Creates an inventory adjustment to correct on-hand quantities or values. QuickBooks requires single-user mode unless you're on Enterprise with Advanced Inventory enabled.", stainlessPath: '(resource) qbd.inventory_adjustments > (method) create', qualified: 'client.qbd.inventoryAdjustments.create', params: [ 'accountId: string;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'classId?: string;', 'customerId?: string;', 'externalId?: string;', 'inventorySiteId?: string;', 'lines?: { itemId: string; adjustLotNumber?: { adjustCount?: number; expirationDate?: string; inventorySiteLocationId?: string; lotNumber?: string; }; adjustQuantity?: { expirationDate?: string; inventorySiteLocationId?: string; lotNumber?: string; newQuantity?: number; quantityDifference?: number; serialNumber?: string; }; adjustSerialNumber?: { addSerialNumber?: string; expirationDate?: string; inventorySiteLocationId?: string; removeSerialNumber?: string; }; adjustValue?: { newQuantity?: number; newValue?: string; quantityDifference?: number; valueDifference?: number; }; }[];', 'memo?: string;', 'refNumber?: string;', ], response: "{ id: string; account: { id: string; fullName: string; }; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; inventorySite: { id: string; fullName: string; }; lines: { id: string; expirationDate: string; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_inventory_adjustment_line'; quantityDifference: number; serialNumber: string; serialNumberAction: 'added' | 'removed'; valueDifference: number; }[]; memo: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.inventoryAdjustments.create(accountId: string, transactionDate: string, Conductor-End-User-Id: string, classId?: string, customerId?: string, externalId?: string, inventorySiteId?: string, lines?: { itemId: string; adjustLotNumber?: { adjustCount?: number; expirationDate?: string; inventorySiteLocationId?: string; lotNumber?: string; }; adjustQuantity?: { expirationDate?: string; inventorySiteLocationId?: string; lotNumber?: string; newQuantity?: number; quantityDifference?: number; serialNumber?: string; }; adjustSerialNumber?: { addSerialNumber?: string; expirationDate?: string; inventorySiteLocationId?: string; removeSerialNumber?: string; }; adjustValue?: { newQuantity?: number; newValue?: string; quantityDifference?: number; valueDifference?: number; }; }[], memo?: string, refNumber?: string): { id: string; account: object; class: object; createdAt: string; customer: object; customFields: object[]; externalId: string; inventorySite: object; lines: object[]; memo: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/inventory-adjustments`\n\nCreates an inventory adjustment to correct on-hand quantities or values. QuickBooks requires single-user mode unless you're on Enterprise with Advanced Inventory enabled.\n\n### Parameters\n\n- `accountId: string`\n The account to which this inventory adjustment is posted for tracking inventory value changes.\n\n- `transactionDate: string`\n The date of this inventory adjustment, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classId?: string`\n The inventory adjustment's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this inventory adjustment's line items unless overridden at the line item level.\n\n- `customerId?: string`\n The customer or customer-job associated with this inventory adjustment.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `inventorySiteId?: string`\n The site location where inventory for the item associated with this inventory adjustment is stored.\n\n- `lines?: { itemId: string; adjustLotNumber?: { adjustCount?: number; expirationDate?: string; inventorySiteLocationId?: string; lotNumber?: string; }; adjustQuantity?: { expirationDate?: string; inventorySiteLocationId?: string; lotNumber?: string; newQuantity?: number; quantityDifference?: number; serialNumber?: string; }; adjustSerialNumber?: { addSerialNumber?: string; expirationDate?: string; inventorySiteLocationId?: string; removeSerialNumber?: string; }; adjustValue?: { newQuantity?: number; newValue?: string; quantityDifference?: number; valueDifference?: number; }; }[]`\n The inventory adjustment's item lines, each representing the adjustment of an inventory item's quantity, value, serial number, or lot number.\n\n- `memo?: string`\n A memo or note for this inventory adjustment.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this inventory adjustment, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; inventorySite: { id: string; fullName: string; }; lines: { id: string; expirationDate: string; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_inventory_adjustment_line'; quantityDifference: number; serialNumber: string; serialNumberAction: 'added' | 'removed'; valueDifference: number; }[]; memo: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customer: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `inventorySite: { id: string; fullName: string; }`\n - `lines: { id: string; expirationDate: string; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_inventory_adjustment_line'; quantityDifference: number; serialNumber: string; serialNumberAction: 'added' | 'removed'; valueDifference: number; }[]`\n - `memo: string`\n - `objectType: 'qbd_inventory_adjustment'`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventoryAdjustment = await conductor.qbd.inventoryAdjustments.create({\n accountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventoryAdjustment);\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryAdjustments.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventoryAdjustment = await conductor.qbd.inventoryAdjustments.create({\n accountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventoryAdjustment.id);", }, python: { method: 'qbd.inventory_adjustments.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_adjustment = conductor.qbd.inventory_adjustments.create(\n account_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_adjustment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-adjustments \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "accountId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "classId": "80000001-1234567890",\n "customerId": "80000001-1234567890",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "inventorySiteId": "80000001-1234567890",\n "memo": "Adjusted quantity due to physical count discrepancy",\n "refNumber": "INVADJ-1234"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/inventory-adjustments', httpMethod: 'get', summary: 'List all inventory adjustments', description: 'Returns a list of inventory adjustments.\n\n**NOTE:** QuickBooks Desktop does not support pagination for inventory adjustments; hence, there is no `cursor` parameter. Users typically have few inventory adjustments.', stainlessPath: '(resource) qbd.inventory_adjustments > (method) list', qualified: 'client.qbd.inventoryAdjustments.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'customerIds?: string[];', 'ids?: string[];', 'includeLineItems?: boolean;', 'itemIds?: string[];', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; account: object; class: object; createdAt: string; customer: object; customFields: object[]; externalId: string; inventorySite: object; lines: object[]; memo: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.inventoryAdjustments.list(Conductor-End-User-Id: string, accountIds?: string[], customerIds?: string[], ids?: string[], includeLineItems?: boolean, itemIds?: string[], limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { data: inventory_adjustment[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/inventory-adjustments`\n\nReturns a list of inventory adjustments.\n\n**NOTE:** QuickBooks Desktop does not support pagination for inventory adjustments; hence, there is no `cursor` parameter. Users typically have few inventory adjustments.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for inventory adjustments associated with these accounts.\n\n- `customerIds?: string[]`\n Filter for inventory adjustments associated with these customers.\n\n- `ids?: string[]`\n Filter for specific inventory adjustments by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `itemIds?: string[]`\n Filter for inventory adjustments containing these inventory items.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for inventory adjustments. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all inventory adjustments without limit, unlike paginated endpoints which default to 150 records. This is acceptable because inventory adjustments typically have low record counts.\n\n- `refNumberContains?: string`\n Filter for inventory adjustments whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for inventory adjustments whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for inventory adjustments whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific inventory adjustments by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for inventory adjustments whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for inventory adjustments whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for inventory adjustments whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for inventory adjustments whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for inventory adjustments updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for inventory adjustments updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; account: object; class: object; createdAt: string; customer: object; customFields: object[]; externalId: string; inventorySite: object; lines: object[]; memo: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; account: { id: string; fullName: string; }; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; inventorySite: { id: string; fullName: string; }; lines: { id: string; expirationDate: string; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_inventory_adjustment_line'; quantityDifference: number; serialNumber: string; serialNumberAction: 'added' | 'removed'; valueDifference: number; }[]; memo: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventoryAdjustments = await conductor.qbd.inventoryAdjustments.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(inventoryAdjustments);\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryAdjustments.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventoryAdjustments = await conductor.qbd.inventoryAdjustments.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventoryAdjustments.data);", }, python: { method: 'qbd.inventory_adjustments.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_adjustments = conductor.qbd.inventory_adjustments.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_adjustments.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-adjustments \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/inventory-adjustments/{id}', httpMethod: 'get', summary: 'Retrieve an inventory adjustment', description: 'Retrieves an inventory adjustment by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific inventory adjustments by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.inventory_adjustments > (method) retrieve', qualified: 'client.qbd.inventoryAdjustments.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; account: { id: string; fullName: string; }; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; inventorySite: { id: string; fullName: string; }; lines: { id: string; expirationDate: string; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_inventory_adjustment_line'; quantityDifference: number; serialNumber: string; serialNumberAction: 'added' | 'removed'; valueDifference: number; }[]; memo: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.inventoryAdjustments.retrieve(id: string, Conductor-End-User-Id: string): { id: string; account: object; class: object; createdAt: string; customer: object; customFields: object[]; externalId: string; inventorySite: object; lines: object[]; memo: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/inventory-adjustments/{id}`\n\nRetrieves an inventory adjustment by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific inventory adjustments by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the inventory adjustment to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; inventorySite: { id: string; fullName: string; }; lines: { id: string; expirationDate: string; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_inventory_adjustment_line'; quantityDifference: number; serialNumber: string; serialNumberAction: 'added' | 'removed'; valueDifference: number; }[]; memo: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customer: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `inventorySite: { id: string; fullName: string; }`\n - `lines: { id: string; expirationDate: string; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_inventory_adjustment_line'; quantityDifference: number; serialNumber: string; serialNumberAction: 'added' | 'removed'; valueDifference: number; }[]`\n - `memo: string`\n - `objectType: 'qbd_inventory_adjustment'`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventoryAdjustment = await conductor.qbd.inventoryAdjustments.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(inventoryAdjustment);\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryAdjustments.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventoryAdjustment = await conductor.qbd.inventoryAdjustments.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventoryAdjustment.id);", }, python: { method: 'qbd.inventory_adjustments.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_adjustment = conductor.qbd.inventory_adjustments.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_adjustment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-adjustments/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/inventory-adjustments/{id}', httpMethod: 'post', summary: 'Update an inventory adjustment', description: 'Updates an existing inventory adjustment.\n\n**NOTE:** If you include `lines`, QuickBooks Desktop replaces that line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.inventory_adjustments > (method) update', qualified: 'client.qbd.inventoryAdjustments.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'accountId?: string;', 'classId?: string;', 'customerId?: string;', 'inventorySiteId?: string;', 'lines?: { id: string; adjustCount?: number; expirationDate?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; quantityDifference?: number; serialNumber?: string; valueDifference?: number; }[];', 'memo?: string;', 'refNumber?: string;', 'transactionDate?: string;', ], response: "{ id: string; account: { id: string; fullName: string; }; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; inventorySite: { id: string; fullName: string; }; lines: { id: string; expirationDate: string; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_inventory_adjustment_line'; quantityDifference: number; serialNumber: string; serialNumberAction: 'added' | 'removed'; valueDifference: number; }[]; memo: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.inventoryAdjustments.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, accountId?: string, classId?: string, customerId?: string, inventorySiteId?: string, lines?: { id: string; adjustCount?: number; expirationDate?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; quantityDifference?: number; serialNumber?: string; valueDifference?: number; }[], memo?: string, refNumber?: string, transactionDate?: string): { id: string; account: object; class: object; createdAt: string; customer: object; customFields: object[]; externalId: string; inventorySite: object; lines: object[]; memo: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/inventory-adjustments/{id}`\n\nUpdates an existing inventory adjustment.\n\n**NOTE:** If you include `lines`, QuickBooks Desktop replaces that line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the inventory adjustment to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the inventory adjustment object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountId?: string`\n The account to which this inventory adjustment is posted for tracking inventory value changes.\n\n- `classId?: string`\n The inventory adjustment's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this inventory adjustment's line items unless overridden at the line item level.\n\n- `customerId?: string`\n The customer or customer-job associated with this inventory adjustment.\n\n- `inventorySiteId?: string`\n The site location where inventory for the item associated with this inventory adjustment is stored.\n\n- `lines?: { id: string; adjustCount?: number; expirationDate?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; quantityDifference?: number; serialNumber?: string; valueDifference?: number; }[]`\n The inventory adjustment's item lines, each representing the adjustment of an inventory item's quantity, value, serial number, or lot number.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item lines for the inventory adjustment with this array. To keep any existing item lines, you must include them in this array even if they have not changed. **Any item lines not included will be removed.**\n\n2. To add a new item line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item lines, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this inventory adjustment.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this inventory adjustment, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 11 characters.\n\n- `transactionDate?: string`\n The date of this inventory adjustment, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; account: { id: string; fullName: string; }; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; inventorySite: { id: string; fullName: string; }; lines: { id: string; expirationDate: string; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_inventory_adjustment_line'; quantityDifference: number; serialNumber: string; serialNumberAction: 'added' | 'removed'; valueDifference: number; }[]; memo: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `account: { id: string; fullName: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customer: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `inventorySite: { id: string; fullName: string; }`\n - `lines: { id: string; expirationDate: string; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_inventory_adjustment_line'; quantityDifference: number; serialNumber: string; serialNumberAction: 'added' | 'removed'; valueDifference: number; }[]`\n - `memo: string`\n - `objectType: 'qbd_inventory_adjustment'`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventoryAdjustment = await conductor.qbd.inventoryAdjustments.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(inventoryAdjustment);\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryAdjustments.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventoryAdjustment = await conductor.qbd.inventoryAdjustments.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventoryAdjustment.id);", }, python: { method: 'qbd.inventory_adjustments.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_adjustment = conductor.qbd.inventory_adjustments.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_adjustment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-adjustments/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "accountId": "80000001-1234567890",\n "classId": "80000001-1234567890",\n "customerId": "80000001-1234567890",\n "inventorySiteId": "80000001-1234567890",\n "memo": "Adjusted quantity due to physical count discrepancy",\n "refNumber": "INVADJ-1234",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/inventory-adjustments/{id}/void', httpMethod: 'post', summary: 'Void an inventory adjustment', description: 'Voids an inventory adjustment by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the inventory adjustment is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.inventory_adjustments > (method) void', qualified: 'client.qbd.inventoryAdjustments.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.inventoryAdjustments.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/inventory-adjustments/{id}/void`\n\nVoids an inventory adjustment by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the inventory adjustment is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the inventory adjustment to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_inventory_adjustment'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_inventory_adjustment'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.inventoryAdjustments.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryAdjustments.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.inventoryAdjustments.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.inventory_adjustments.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.inventory_adjustments.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-adjustments/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/inventory-adjustments/{id}', httpMethod: 'delete', summary: 'Delete an inventory adjustment', description: 'Permanently deletes an inventory adjustment. The deletion will fail if the inventory adjustment is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.inventory_adjustments > (method) delete', qualified: 'client.qbd.inventoryAdjustments.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_inventory_adjustment'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.inventoryAdjustments.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_inventory_adjustment'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/inventory-adjustments/{id}`\n\nPermanently deletes an inventory adjustment. The deletion will fail if the inventory adjustment is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the inventory adjustment to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_inventory_adjustment'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_inventory_adjustment'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventoryAdjustment = await conductor.qbd.inventoryAdjustments.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(inventoryAdjustment);\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryAdjustments.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventoryAdjustment = await conductor.qbd.inventoryAdjustments.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventoryAdjustment.id);", }, python: { method: 'qbd.inventory_adjustments.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_adjustment = conductor.qbd.inventory_adjustments.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_adjustment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-adjustments/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/inventory-assembly-items', httpMethod: 'post', summary: 'Create an inventory assembly item', description: 'Creates an inventory assembly item that bundles existing inventory items.', stainlessPath: '(resource) qbd.inventory_assembly_items > (method) create', qualified: 'client.qbd.inventoryAssemblyItems.create', params: [ 'assetAccountId: string;', 'cogsAccountId: string;', 'incomeAccountId: string;', 'name: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'buildNotificationThreshold?: number;', 'classId?: string;', 'externalId?: string;', 'inventoryDate?: string;', 'isActive?: boolean;', 'lines?: { inventoryItemId?: string; quantity?: number; }[];', 'maximumQuantityOnHand?: number;', 'parentId?: string;', 'preferredVendorId?: string;', 'purchaseCost?: string;', 'purchaseDescription?: string;', 'purchaseTaxCodeId?: string;', 'quantityOnHand?: number;', 'salesDescription?: string;', 'salesPrice?: string;', 'salesTaxCodeId?: string;', 'totalValue?: string;', 'unitOfMeasureSetId?: string;', ], response: "{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; buildNotificationThreshold: number; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; lines: { inventoryItem: { id: string; fullName: string; }; quantity: number; }[]; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_assembly_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.inventoryAssemblyItems.create(assetAccountId: string, cogsAccountId: string, incomeAccountId: string, name: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, buildNotificationThreshold?: number, classId?: string, externalId?: string, inventoryDate?: string, isActive?: boolean, lines?: { inventoryItemId?: string; quantity?: number; }[], maximumQuantityOnHand?: number, parentId?: string, preferredVendorId?: string, purchaseCost?: string, purchaseDescription?: string, purchaseTaxCodeId?: string, quantityOnHand?: number, salesDescription?: string, salesPrice?: string, salesTaxCodeId?: string, totalValue?: string, unitOfMeasureSetId?: string): { id: string; assetAccount: object; averageCost: string; barcode: string; buildNotificationThreshold: number; class: object; cogsAccount: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; incomeAccount: object; isActive: boolean; lines: object[]; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_assembly_item'; parent: object; preferredVendor: object; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: object; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: object; sku: string; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/inventory-assembly-items`\n\nCreates an inventory assembly item that bundles existing inventory items.\n\n### Parameters\n\n- `assetAccountId: string`\n The asset account used to track the current value of this inventory assembly item in inventory.\n\n- `cogsAccountId: string`\n The Cost of Goods Sold (COGS) account for this inventory assembly item, tracking the original direct costs of producing goods sold.\n\n- `incomeAccountId: string`\n The income account used to track revenue from sales of this inventory assembly item.\n\n- `name: string`\n The case-insensitive name of this inventory assembly item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two inventory assembly items could both have the `name` \"Deluxe Kit\", but they could have unique `fullName` values, such as \"Assemblies:Deluxe Kit\" and \"Inventory:Deluxe Kit\".\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The inventory assembly item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `buildNotificationThreshold?: number`\n The inventory assembly item's minimum quantity threshold that triggers a build notification in QuickBooks. When the sum of `quantityOnHand` (current inventory) and `quantityOnOrder` (pending purchase orders) drops below this threshold, QuickBooks will notify users that more units need to be built or assembled. This helps ensure adequate inventory levels for inventory assembly items.\n\n- `classId?: string`\n The inventory assembly item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `inventoryDate?: string`\n The date when this inventory assembly item was converted into an inventory item from some other type of item, in ISO 8601 format (YYYY-MM-DD).\n\n- `isActive?: boolean`\n Indicates whether this inventory assembly item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `lines?: { inventoryItemId?: string; quantity?: number; }[]`\n The inventory assembly item's lines.\n\n- `maximumQuantityOnHand?: number`\n The maximum quantity of this inventory assembly item desired in inventory.\n\n- `parentId?: string`\n The parent inventory assembly item one level above this one in the hierarchy. For example, if this inventory assembly item has a `fullName` of \"Assemblies:Deluxe Kit\", its parent has a `fullName` of \"Assemblies\". If this inventory assembly item is at the top level, this field will be `null`.\n\n- `preferredVendorId?: string`\n The preferred vendor from whom this inventory assembly item is typically purchased.\n\n- `purchaseCost?: string`\n The cost at which this inventory assembly item is purchased from vendors, represented as a decimal string.\n\n- `purchaseDescription?: string`\n The description of this inventory assembly item that appears on purchase forms (e.g., checks, bills, item receipts) when it is ordered or bought from vendors.\n\n- `purchaseTaxCodeId?: string`\n The tax code applied to purchases of this inventory assembly item. Applicable in regions where purchase taxes are used, such as Canada or the UK.\n\n- `quantityOnHand?: number`\n The number of units of this inventory assembly item currently in inventory. `quantityOnHand` multiplied by `averageCost` equals `totalValue` for inventory item lists. To change the `quantityOnHand` for an inventory assembly item, you must use an inventory-adjustment instead of updating the inventory assembly item directly.\n\n- `salesDescription?: string`\n The description of this inventory assembly item that appears on sales forms (e.g., invoices, sales receipts) when sold to customers.\n\n- `salesPrice?: string`\n The price at which this inventory assembly item is sold to customers, represented as a decimal string.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for this inventory assembly item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `totalValue?: string`\n The total value of this inventory assembly item, represented as a decimal string. If `totalValue` is provided, `quantityOnHand` must also be provided and must be greater than zero. If both `quantityOnHand` and `purchaseCost` are provided, then `totalValue` will be set to `quantityOnHand` times `purchaseCost`, regardless of what `totalValue` is explicitly set to.\n\nDecimal string format: exactly 2 decimal places when cents are included and up to 13 digits before the decimal point (for example, \"123.45\").\n\n- `unitOfMeasureSetId?: string`\n The unit-of-measure set associated with this inventory assembly item, which consists of a base unit and related units.\n\n### Returns\n\n- `{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; buildNotificationThreshold: number; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; lines: { inventoryItem: { id: string; fullName: string; }; quantity: number; }[]; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_assembly_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `assetAccount: { id: string; fullName: string; }`\n - `averageCost: string`\n - `barcode: string`\n - `buildNotificationThreshold: number`\n - `class: { id: string; fullName: string; }`\n - `cogsAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `incomeAccount: { id: string; fullName: string; }`\n - `isActive: boolean`\n - `lines: { inventoryItem: { id: string; fullName: string; }; quantity: number; }[]`\n - `maximumQuantityOnHand: number`\n - `name: string`\n - `objectType: 'qbd_inventory_assembly_item'`\n - `parent: { id: string; fullName: string; }`\n - `preferredVendor: { id: string; fullName: string; }`\n - `purchaseCost: string`\n - `purchaseDescription: string`\n - `purchaseTaxCode: { id: string; fullName: string; }`\n - `quantityOnHand: number`\n - `quantityOnPurchaseOrder: number`\n - `quantityOnSalesOrder: number`\n - `revisionNumber: string`\n - `salesDescription: string`\n - `salesPrice: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sku: string`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventoryAssemblyItem = await conductor.qbd.inventoryAssemblyItems.create({\n assetAccountId: '80000001-1234567890',\n cogsAccountId: '80000001-1234567890',\n incomeAccountId: '80000001-1234567890',\n name: 'Deluxe Kit',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventoryAssemblyItem);\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryAssemblyItems.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventoryAssemblyItem = await conductor.qbd.inventoryAssemblyItems.create({\n assetAccountId: '80000001-1234567890',\n cogsAccountId: '80000001-1234567890',\n incomeAccountId: '80000001-1234567890',\n name: 'Deluxe Kit',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventoryAssemblyItem.id);", }, python: { method: 'qbd.inventory_assembly_items.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_assembly_item = conductor.qbd.inventory_assembly_items.create(\n asset_account_id="80000001-1234567890",\n cogs_account_id="80000001-1234567890",\n income_account_id="80000001-1234567890",\n name="Deluxe Kit",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_assembly_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-assembly-items \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "assetAccountId": "80000001-1234567890",\n "cogsAccountId": "80000001-1234567890",\n "incomeAccountId": "80000001-1234567890",\n "name": "Deluxe Kit",\n "buildNotificationThreshold": 10,\n "classId": "80000001-1234567890",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "inventoryDate": "2024-01-01",\n "isActive": true,\n "maximumQuantityOnHand": 200,\n "parentId": "80000001-1234567890",\n "preferredVendorId": "80000001-1234567890",\n "purchaseCost": "15.75",\n "purchaseDescription": "Bulk purchase of steel bolts for inventory",\n "purchaseTaxCodeId": "80000001-1234567890",\n "quantityOnHand": 150,\n "salesDescription": "High-quality steel bolts suitable for construction",\n "salesPrice": "19.99",\n "salesTaxCodeId": "80000001-1234567890",\n "totalValue": "1500.00",\n "unitOfMeasureSetId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/inventory-assembly-items', httpMethod: 'get', summary: 'List all inventory assembly items', description: 'Returns a list of inventory assembly items. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.inventory_assembly_items > (method) list', qualified: 'client.qbd.inventoryAssemblyItems.list', params: [ 'Conductor-End-User-Id: string;', 'classIds?: string[];', 'cursor?: string;', 'fullNames?: string[];', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; buildNotificationThreshold: number; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; lines: { inventoryItem: { id: string; fullName: string; }; quantity: number; }[]; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_assembly_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.inventoryAssemblyItems.list(Conductor-End-User-Id: string, classIds?: string[], cursor?: string, fullNames?: string[], ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { id: string; assetAccount: object; averageCost: string; barcode: string; buildNotificationThreshold: number; class: object; cogsAccount: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; incomeAccount: object; isActive: boolean; lines: object[]; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_assembly_item'; parent: object; preferredVendor: object; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: object; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: object; sku: string; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/inventory-assembly-items`\n\nReturns a list of inventory assembly items. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classIds?: string[]`\n Filter for inventory assembly items of these classes. A class is a way end-users can categorize inventory assembly items in QuickBooks.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `fullNames?: string[]`\n Filter for specific inventory assembly items by their full-name(s), case-insensitive. Like `id`, `fullName` is a unique identifier for an inventory assembly item, formed by by combining the names of its parent objects with its own `name`, separated by colons. For example, if an inventory assembly item is under \"Assemblies\" and has the `name` \"Deluxe Kit\", its `fullName` would be \"Assemblies:Deluxe Kit\".\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `ids?: string[]`\n Filter for specific inventory assembly items by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for inventory assembly items whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for inventory assembly items whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for inventory assembly items whose `name` is alphabetically greater than or equal to this value.\n\n- `nameStartsWith?: string`\n Filter for inventory assembly items whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for inventory assembly items whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for inventory assembly items that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for inventory assembly items updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for inventory assembly items updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; buildNotificationThreshold: number; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; lines: { inventoryItem: { id: string; fullName: string; }; quantity: number; }[]; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_assembly_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `assetAccount: { id: string; fullName: string; }`\n - `averageCost: string`\n - `barcode: string`\n - `buildNotificationThreshold: number`\n - `class: { id: string; fullName: string; }`\n - `cogsAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `incomeAccount: { id: string; fullName: string; }`\n - `isActive: boolean`\n - `lines: { inventoryItem: { id: string; fullName: string; }; quantity: number; }[]`\n - `maximumQuantityOnHand: number`\n - `name: string`\n - `objectType: 'qbd_inventory_assembly_item'`\n - `parent: { id: string; fullName: string; }`\n - `preferredVendor: { id: string; fullName: string; }`\n - `purchaseCost: string`\n - `purchaseDescription: string`\n - `purchaseTaxCode: { id: string; fullName: string; }`\n - `quantityOnHand: number`\n - `quantityOnPurchaseOrder: number`\n - `quantityOnSalesOrder: number`\n - `revisionNumber: string`\n - `salesDescription: string`\n - `salesPrice: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sku: string`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const inventoryAssemblyItem of conductor.qbd.inventoryAssemblyItems.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(inventoryAssemblyItem);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryAssemblyItems.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const inventoryAssemblyItem of conductor.qbd.inventoryAssemblyItems.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(inventoryAssemblyItem.id);\n}", }, python: { method: 'qbd.inventory_assembly_items.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.inventory_assembly_items.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-assembly-items \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/inventory-assembly-items/{id}', httpMethod: 'get', summary: 'Retrieve an inventory assembly item', description: 'Retrieves an inventory assembly item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific inventory assembly items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.inventory_assembly_items > (method) retrieve', qualified: 'client.qbd.inventoryAssemblyItems.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; buildNotificationThreshold: number; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; lines: { inventoryItem: { id: string; fullName: string; }; quantity: number; }[]; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_assembly_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.inventoryAssemblyItems.retrieve(id: string, Conductor-End-User-Id: string): { id: string; assetAccount: object; averageCost: string; barcode: string; buildNotificationThreshold: number; class: object; cogsAccount: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; incomeAccount: object; isActive: boolean; lines: object[]; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_assembly_item'; parent: object; preferredVendor: object; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: object; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: object; sku: string; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/inventory-assembly-items/{id}`\n\nRetrieves an inventory assembly item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific inventory assembly items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the inventory assembly item to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; buildNotificationThreshold: number; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; lines: { inventoryItem: { id: string; fullName: string; }; quantity: number; }[]; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_assembly_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `assetAccount: { id: string; fullName: string; }`\n - `averageCost: string`\n - `barcode: string`\n - `buildNotificationThreshold: number`\n - `class: { id: string; fullName: string; }`\n - `cogsAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `incomeAccount: { id: string; fullName: string; }`\n - `isActive: boolean`\n - `lines: { inventoryItem: { id: string; fullName: string; }; quantity: number; }[]`\n - `maximumQuantityOnHand: number`\n - `name: string`\n - `objectType: 'qbd_inventory_assembly_item'`\n - `parent: { id: string; fullName: string; }`\n - `preferredVendor: { id: string; fullName: string; }`\n - `purchaseCost: string`\n - `purchaseDescription: string`\n - `purchaseTaxCode: { id: string; fullName: string; }`\n - `quantityOnHand: number`\n - `quantityOnPurchaseOrder: number`\n - `quantityOnSalesOrder: number`\n - `revisionNumber: string`\n - `salesDescription: string`\n - `salesPrice: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sku: string`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventoryAssemblyItem = await conductor.qbd.inventoryAssemblyItems.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(inventoryAssemblyItem);\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryAssemblyItems.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventoryAssemblyItem = await conductor.qbd.inventoryAssemblyItems.retrieve(\n '80000001-1234567890',\n { conductorEndUserId: 'end_usr_1234567abcdefg' },\n);\n\nconsole.log(inventoryAssemblyItem.id);", }, python: { method: 'qbd.inventory_assembly_items.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_assembly_item = conductor.qbd.inventory_assembly_items.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_assembly_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-assembly-items/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/inventory-assembly-items/{id}', httpMethod: 'post', summary: 'Update an inventory assembly item', description: 'Updates an inventory assembly item. If you change the income account, set `updateExistingTransactionsIncomeAccount` to true so QuickBooks applies the new account to existing transactions that use the assembly.', stainlessPath: '(resource) qbd.inventory_assembly_items > (method) update', qualified: 'client.qbd.inventoryAssemblyItems.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'assetAccountId?: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'buildNotificationThreshold?: number;', 'classId?: string;', 'clearItemLines?: boolean;', 'cogsAccountId?: string;', 'forceUnitOfMeasureChange?: boolean;', 'incomeAccountId?: string;', 'isActive?: boolean;', 'lines?: { inventoryItemId?: string; quantity?: number; }[];', 'maximumQuantityOnHand?: number;', 'name?: string;', 'parentId?: string;', 'preferredVendorId?: string;', 'purchaseCost?: string;', 'purchaseDescription?: string;', 'purchaseTaxCodeId?: string;', 'salesDescription?: string;', 'salesPrice?: string;', 'salesTaxCodeId?: string;', 'sku?: string;', 'unitOfMeasureSetId?: string;', 'updateExistingTransactionsIncomeAccount?: boolean;', ], response: "{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; buildNotificationThreshold: number; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; lines: { inventoryItem: { id: string; fullName: string; }; quantity: number; }[]; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_assembly_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.inventoryAssemblyItems.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, assetAccountId?: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, buildNotificationThreshold?: number, classId?: string, clearItemLines?: boolean, cogsAccountId?: string, forceUnitOfMeasureChange?: boolean, incomeAccountId?: string, isActive?: boolean, lines?: { inventoryItemId?: string; quantity?: number; }[], maximumQuantityOnHand?: number, name?: string, parentId?: string, preferredVendorId?: string, purchaseCost?: string, purchaseDescription?: string, purchaseTaxCodeId?: string, salesDescription?: string, salesPrice?: string, salesTaxCodeId?: string, sku?: string, unitOfMeasureSetId?: string, updateExistingTransactionsIncomeAccount?: boolean): { id: string; assetAccount: object; averageCost: string; barcode: string; buildNotificationThreshold: number; class: object; cogsAccount: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; incomeAccount: object; isActive: boolean; lines: object[]; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_assembly_item'; parent: object; preferredVendor: object; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: object; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: object; sku: string; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/inventory-assembly-items/{id}`\n\nUpdates an inventory assembly item. If you change the income account, set `updateExistingTransactionsIncomeAccount` to true so QuickBooks applies the new account to existing transactions that use the assembly.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the inventory assembly item to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the inventory assembly item object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `assetAccountId?: string`\n The asset account used to track the current value of this inventory assembly item in inventory.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The inventory assembly item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `buildNotificationThreshold?: number`\n The inventory assembly item's minimum quantity threshold that triggers a build notification in QuickBooks. When the sum of `quantityOnHand` (current inventory) and `quantityOnOrder` (pending purchase orders) drops below this threshold, QuickBooks will notify users that more units need to be built or assembled. This helps ensure adequate inventory levels for inventory assembly items.\n\n- `classId?: string`\n The inventory assembly item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `clearItemLines?: boolean`\n When `true`, removes all existing item lines associated with this inventory assembly item. To modify or add individual item lines, use the field `itemLines` instead.\n\n- `cogsAccountId?: string`\n The Cost of Goods Sold (COGS) account for this inventory assembly item, tracking the original direct costs of producing goods sold.\n\n- `forceUnitOfMeasureChange?: boolean`\n Indicates whether to allow changing the inventory assembly item's unit-of-measure set (using the `unitOfMeasureSetId` field) when the base unit of the new unit-of-measure set does not match that of the currently assigned set. Without setting this field to `true` in this scenario, the request will fail with an error; hence, this field is equivalent to accepting the warning prompt in the QuickBooks UI.\n\nNOTE: Changing the base unit requires you to update the item's quantities-on-hand and cost to reflect the new unit; otherwise, these values will be inaccurate. Alternatively, consider creating a new item with the desired unit-of-measure set and deactivating the old item.\n\n- `incomeAccountId?: string`\n The income account used to track revenue from sales of this inventory assembly item.\n\n- `isActive?: boolean`\n Indicates whether this inventory assembly item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `lines?: { inventoryItemId?: string; quantity?: number; }[]`\n The inventory assembly item's lines.\n\n- `maximumQuantityOnHand?: number`\n The maximum quantity of this inventory assembly item desired in inventory.\n\n- `name?: string`\n The case-insensitive name of this inventory assembly item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two inventory assembly items could both have the `name` \"Deluxe Kit\", but they could have unique `fullName` values, such as \"Assemblies:Deluxe Kit\" and \"Inventory:Deluxe Kit\".\n\nMaximum length: 31 characters.\n\n- `parentId?: string`\n The parent inventory assembly item one level above this one in the hierarchy. For example, if this inventory assembly item has a `fullName` of \"Assemblies:Deluxe Kit\", its parent has a `fullName` of \"Assemblies\". If this inventory assembly item is at the top level, this field will be `null`.\n\n- `preferredVendorId?: string`\n The preferred vendor from whom this inventory assembly item is typically purchased.\n\n- `purchaseCost?: string`\n The cost at which this inventory assembly item is purchased from vendors, represented as a decimal string.\n\n- `purchaseDescription?: string`\n The description of this inventory assembly item that appears on purchase forms (e.g., checks, bills, item receipts) when it is ordered or bought from vendors.\n\n- `purchaseTaxCodeId?: string`\n The tax code applied to purchases of this inventory assembly item. Applicable in regions where purchase taxes are used, such as Canada or the UK.\n\n- `salesDescription?: string`\n The description of this inventory assembly item that appears on sales forms (e.g., invoices, sales receipts) when sold to customers.\n\n- `salesPrice?: string`\n The price at which this inventory assembly item is sold to customers, represented as a decimal string.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for this inventory assembly item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `sku?: string`\n The inventory assembly item's stock keeping unit (SKU), which is sometimes the manufacturer's part number.\n\n- `unitOfMeasureSetId?: string`\n The unit-of-measure set associated with this inventory assembly item, which consists of a base unit and related units.\n\n- `updateExistingTransactionsIncomeAccount?: boolean`\n When `true`, applies the new income account (specified by the `incomeAccountId` field) to all existing transactions that use this inventory assembly item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n\n### Returns\n\n- `{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; buildNotificationThreshold: number; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; lines: { inventoryItem: { id: string; fullName: string; }; quantity: number; }[]; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_assembly_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `assetAccount: { id: string; fullName: string; }`\n - `averageCost: string`\n - `barcode: string`\n - `buildNotificationThreshold: number`\n - `class: { id: string; fullName: string; }`\n - `cogsAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `incomeAccount: { id: string; fullName: string; }`\n - `isActive: boolean`\n - `lines: { inventoryItem: { id: string; fullName: string; }; quantity: number; }[]`\n - `maximumQuantityOnHand: number`\n - `name: string`\n - `objectType: 'qbd_inventory_assembly_item'`\n - `parent: { id: string; fullName: string; }`\n - `preferredVendor: { id: string; fullName: string; }`\n - `purchaseCost: string`\n - `purchaseDescription: string`\n - `purchaseTaxCode: { id: string; fullName: string; }`\n - `quantityOnHand: number`\n - `quantityOnPurchaseOrder: number`\n - `quantityOnSalesOrder: number`\n - `revisionNumber: string`\n - `salesDescription: string`\n - `salesPrice: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sku: string`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventoryAssemblyItem = await conductor.qbd.inventoryAssemblyItems.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(inventoryAssemblyItem);\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryAssemblyItems.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventoryAssemblyItem = await conductor.qbd.inventoryAssemblyItems.update(\n '80000001-1234567890',\n { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' },\n);\n\nconsole.log(inventoryAssemblyItem.id);", }, python: { method: 'qbd.inventory_assembly_items.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_assembly_item = conductor.qbd.inventory_assembly_items.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_assembly_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-assembly-items/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "assetAccountId": "80000001-1234567890",\n "buildNotificationThreshold": 10,\n "classId": "80000001-1234567890",\n "clearItemLines": false,\n "cogsAccountId": "80000001-1234567890",\n "forceUnitOfMeasureChange": false,\n "incomeAccountId": "80000001-1234567890",\n "isActive": true,\n "maximumQuantityOnHand": 200,\n "name": "Deluxe Kit",\n "parentId": "80000001-1234567890",\n "preferredVendorId": "80000001-1234567890",\n "purchaseCost": "15.75",\n "purchaseDescription": "Bulk purchase of steel bolts for inventory",\n "purchaseTaxCodeId": "80000001-1234567890",\n "salesDescription": "High-quality steel bolts suitable for construction",\n "salesPrice": "19.99",\n "salesTaxCodeId": "80000001-1234567890",\n "sku": "MPN-123456",\n "unitOfMeasureSetId": "80000001-1234567890",\n "updateExistingTransactionsIncomeAccount": false\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/inventory-items', httpMethod: 'post', summary: 'Create an inventory item', description: 'Creates a new inventory item.', stainlessPath: '(resource) qbd.inventory_items > (method) create', qualified: 'client.qbd.inventoryItems.create', params: [ 'assetAccountId: string;', 'cogsAccountId: string;', 'incomeAccountId: string;', 'name: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'classId?: string;', 'externalId?: string;', 'inventoryDate?: string;', 'isActive?: boolean;', 'maximumQuantityOnHand?: number;', 'parentId?: string;', 'preferredVendorId?: string;', 'purchaseCost?: string;', 'purchaseDescription?: string;', 'purchaseTaxCodeId?: string;', 'quantityOnHand?: number;', 'reorderPoint?: number;', 'salesDescription?: string;', 'salesPrice?: string;', 'salesTaxCodeId?: string;', 'sku?: string;', 'totalValue?: string;', 'unitOfMeasureSetId?: string;', ], response: "{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; reorderPoint: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.inventoryItems.create(assetAccountId: string, cogsAccountId: string, incomeAccountId: string, name: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, classId?: string, externalId?: string, inventoryDate?: string, isActive?: boolean, maximumQuantityOnHand?: number, parentId?: string, preferredVendorId?: string, purchaseCost?: string, purchaseDescription?: string, purchaseTaxCodeId?: string, quantityOnHand?: number, reorderPoint?: number, salesDescription?: string, salesPrice?: string, salesTaxCodeId?: string, sku?: string, totalValue?: string, unitOfMeasureSetId?: string): { id: string; assetAccount: object; averageCost: string; barcode: string; class: object; cogsAccount: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; incomeAccount: object; isActive: boolean; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_item'; parent: object; preferredVendor: object; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: object; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; reorderPoint: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: object; sku: string; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/inventory-items`\n\nCreates a new inventory item.\n\n### Parameters\n\n- `assetAccountId: string`\n The asset account used to track the current value of this inventory item in inventory.\n\n- `cogsAccountId: string`\n The Cost of Goods Sold (COGS) account for this inventory item, tracking the original direct costs of producing goods sold.\n\n- `incomeAccountId: string`\n The income account used to track revenue from sales of this inventory item.\n\n- `name: string`\n The case-insensitive name of this inventory item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two inventory items could both have the `name` \"Cabinet\", but they could have unique `fullName` values, such as \"Kitchen:Cabinet\" and \"Inventory:Cabinet\".\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The inventory item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `classId?: string`\n The inventory item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `inventoryDate?: string`\n The date when this inventory item was converted into an inventory item from some other type of item, in ISO 8601 format (YYYY-MM-DD).\n\n- `isActive?: boolean`\n Indicates whether this inventory item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `maximumQuantityOnHand?: number`\n The maximum quantity of this inventory item desired in inventory.\n\n- `parentId?: string`\n The parent inventory item one level above this one in the hierarchy. For example, if this inventory item has a `fullName` of \"Kitchen:Cabinet\", its parent has a `fullName` of \"Kitchen\". If this inventory item is at the top level, this field will be `null`.\n\n- `preferredVendorId?: string`\n The preferred vendor from whom this inventory item is typically purchased.\n\n- `purchaseCost?: string`\n The cost at which this inventory item is purchased from vendors, represented as a decimal string.\n\n- `purchaseDescription?: string`\n The description of this inventory item that appears on purchase forms (e.g., checks, bills, item receipts) when it is ordered or bought from vendors.\n\n- `purchaseTaxCodeId?: string`\n The tax code applied to purchases of this inventory item. Applicable in regions where purchase taxes are used, such as Canada or the UK.\n\n- `quantityOnHand?: number`\n The number of units of this inventory item currently in inventory. `quantityOnHand` multiplied by `averageCost` equals `totalValue` for inventory item lists. To change the `quantityOnHand` for an inventory item, you must use an inventory-adjustment instead of updating the inventory item directly.\n\n- `reorderPoint?: number`\n The minimum quantity of this inventory item at which QuickBooks prompts for reordering.\n\n- `salesDescription?: string`\n The description of this inventory item that appears on sales forms (e.g., invoices, sales receipts) when sold to customers.\n\n- `salesPrice?: string`\n The price at which this inventory item is sold to customers, represented as a decimal string.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for this inventory item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `sku?: string`\n The inventory item's stock keeping unit (SKU), which is sometimes the manufacturer's part number.\n\n- `totalValue?: string`\n The total value of this inventory item, represented as a decimal string. If `totalValue` is provided, `quantityOnHand` must also be provided and must be greater than zero. If both `quantityOnHand` and `purchaseCost` are provided, then `totalValue` will be set to `quantityOnHand` times `purchaseCost`, regardless of what `totalValue` is explicitly set to.\n\nDecimal string format: exactly 2 decimal places when cents are included and up to 13 digits before the decimal point (for example, \"123.45\").\n\n- `unitOfMeasureSetId?: string`\n The unit-of-measure set associated with this inventory item, which consists of a base unit and related units.\n\n### Returns\n\n- `{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; reorderPoint: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `assetAccount: { id: string; fullName: string; }`\n - `averageCost: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `cogsAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `incomeAccount: { id: string; fullName: string; }`\n - `isActive: boolean`\n - `maximumQuantityOnHand: number`\n - `name: string`\n - `objectType: 'qbd_inventory_item'`\n - `parent: { id: string; fullName: string; }`\n - `preferredVendor: { id: string; fullName: string; }`\n - `purchaseCost: string`\n - `purchaseDescription: string`\n - `purchaseTaxCode: { id: string; fullName: string; }`\n - `quantityOnHand: number`\n - `quantityOnPurchaseOrder: number`\n - `quantityOnSalesOrder: number`\n - `reorderPoint: number`\n - `revisionNumber: string`\n - `salesDescription: string`\n - `salesPrice: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sku: string`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventoryItem = await conductor.qbd.inventoryItems.create({\n assetAccountId: '80000001-1234567890',\n cogsAccountId: '80000001-1234567890',\n incomeAccountId: '80000001-1234567890',\n name: 'Cabinet',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventoryItem);\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryItems.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventoryItem = await conductor.qbd.inventoryItems.create({\n assetAccountId: '80000001-1234567890',\n cogsAccountId: '80000001-1234567890',\n incomeAccountId: '80000001-1234567890',\n name: 'Cabinet',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventoryItem.id);", }, python: { method: 'qbd.inventory_items.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_item = conductor.qbd.inventory_items.create(\n asset_account_id="80000001-1234567890",\n cogs_account_id="80000001-1234567890",\n income_account_id="80000001-1234567890",\n name="Cabinet",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-items \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "assetAccountId": "80000001-1234567890",\n "cogsAccountId": "80000001-1234567890",\n "incomeAccountId": "80000001-1234567890",\n "name": "Cabinet",\n "classId": "80000001-1234567890",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "inventoryDate": "2024-01-01",\n "isActive": true,\n "maximumQuantityOnHand": 200,\n "parentId": "80000001-1234567890",\n "preferredVendorId": "80000001-1234567890",\n "purchaseCost": "15.75",\n "purchaseDescription": "Bulk purchase of steel bolts for inventory",\n "purchaseTaxCodeId": "80000001-1234567890",\n "quantityOnHand": 150,\n "reorderPoint": 50,\n "salesDescription": "High-quality steel bolts suitable for construction",\n "salesPrice": "19.99",\n "salesTaxCodeId": "80000001-1234567890",\n "sku": "MPN-123456",\n "totalValue": "1500.00",\n "unitOfMeasureSetId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/inventory-items', httpMethod: 'get', summary: 'List all inventory items', description: 'Returns a list of inventory items. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.inventory_items > (method) list', qualified: 'client.qbd.inventoryItems.list', params: [ 'Conductor-End-User-Id: string;', 'classIds?: string[];', 'cursor?: string;', 'fullNames?: string[];', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; reorderPoint: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.inventoryItems.list(Conductor-End-User-Id: string, classIds?: string[], cursor?: string, fullNames?: string[], ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { id: string; assetAccount: object; averageCost: string; barcode: string; class: object; cogsAccount: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; incomeAccount: object; isActive: boolean; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_item'; parent: object; preferredVendor: object; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: object; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; reorderPoint: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: object; sku: string; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/inventory-items`\n\nReturns a list of inventory items. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classIds?: string[]`\n Filter for inventory items of these classes. A class is a way end-users can categorize inventory items in QuickBooks.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `fullNames?: string[]`\n Filter for specific inventory items by their full-name(s), case-insensitive. Like `id`, `fullName` is a unique identifier for an inventory item, formed by by combining the names of its parent objects with its own `name`, separated by colons. For example, if an inventory item is under \"Kitchen\" and has the `name` \"Cabinet\", its `fullName` would be \"Kitchen:Cabinet\".\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `ids?: string[]`\n Filter for specific inventory items by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for inventory items whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for inventory items whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for inventory items whose `name` is alphabetically greater than or equal to this value.\n\n- `nameStartsWith?: string`\n Filter for inventory items whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for inventory items whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for inventory items that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for inventory items updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for inventory items updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; reorderPoint: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `assetAccount: { id: string; fullName: string; }`\n - `averageCost: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `cogsAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `incomeAccount: { id: string; fullName: string; }`\n - `isActive: boolean`\n - `maximumQuantityOnHand: number`\n - `name: string`\n - `objectType: 'qbd_inventory_item'`\n - `parent: { id: string; fullName: string; }`\n - `preferredVendor: { id: string; fullName: string; }`\n - `purchaseCost: string`\n - `purchaseDescription: string`\n - `purchaseTaxCode: { id: string; fullName: string; }`\n - `quantityOnHand: number`\n - `quantityOnPurchaseOrder: number`\n - `quantityOnSalesOrder: number`\n - `reorderPoint: number`\n - `revisionNumber: string`\n - `salesDescription: string`\n - `salesPrice: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sku: string`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const inventoryItem of conductor.qbd.inventoryItems.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(inventoryItem);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryItems.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const inventoryItem of conductor.qbd.inventoryItems.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(inventoryItem.id);\n}", }, python: { method: 'qbd.inventory_items.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.inventory_items.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-items \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/inventory-items/{id}', httpMethod: 'get', summary: 'Retrieve an inventory item', description: 'Retrieves an inventory item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific inventory items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.inventory_items > (method) retrieve', qualified: 'client.qbd.inventoryItems.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; reorderPoint: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.inventoryItems.retrieve(id: string, Conductor-End-User-Id: string): { id: string; assetAccount: object; averageCost: string; barcode: string; class: object; cogsAccount: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; incomeAccount: object; isActive: boolean; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_item'; parent: object; preferredVendor: object; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: object; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; reorderPoint: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: object; sku: string; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/inventory-items/{id}`\n\nRetrieves an inventory item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific inventory items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the inventory item to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; reorderPoint: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `assetAccount: { id: string; fullName: string; }`\n - `averageCost: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `cogsAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `incomeAccount: { id: string; fullName: string; }`\n - `isActive: boolean`\n - `maximumQuantityOnHand: number`\n - `name: string`\n - `objectType: 'qbd_inventory_item'`\n - `parent: { id: string; fullName: string; }`\n - `preferredVendor: { id: string; fullName: string; }`\n - `purchaseCost: string`\n - `purchaseDescription: string`\n - `purchaseTaxCode: { id: string; fullName: string; }`\n - `quantityOnHand: number`\n - `quantityOnPurchaseOrder: number`\n - `quantityOnSalesOrder: number`\n - `reorderPoint: number`\n - `revisionNumber: string`\n - `salesDescription: string`\n - `salesPrice: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sku: string`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventoryItem = await conductor.qbd.inventoryItems.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(inventoryItem);\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryItems.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventoryItem = await conductor.qbd.inventoryItems.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventoryItem.id);", }, python: { method: 'qbd.inventory_items.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_item = conductor.qbd.inventory_items.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-items/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/inventory-items/{id}', httpMethod: 'post', summary: 'Update an inventory item', description: 'Updates an inventory item. If you switch the income account, set `updateExistingTransactionsIncomeAccount` to true so QuickBooks applies the new account to existing transactions that reference the item.', stainlessPath: '(resource) qbd.inventory_items > (method) update', qualified: 'client.qbd.inventoryItems.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'assetAccountId?: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'classId?: string;', 'cogsAccountId?: string;', 'forceUnitOfMeasureChange?: boolean;', 'incomeAccountId?: string;', 'isActive?: boolean;', 'maximumQuantityOnHand?: number;', 'name?: string;', 'parentId?: string;', 'preferredVendorId?: string;', 'purchaseCost?: string;', 'purchaseDescription?: string;', 'purchaseTaxCodeId?: string;', 'reorderPoint?: number;', 'salesDescription?: string;', 'salesPrice?: string;', 'salesTaxCodeId?: string;', 'sku?: string;', 'unitOfMeasureSetId?: string;', 'updateExistingTransactionsCogsAccount?: boolean;', 'updateExistingTransactionsIncomeAccount?: boolean;', ], response: "{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; reorderPoint: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.inventoryItems.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, assetAccountId?: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, classId?: string, cogsAccountId?: string, forceUnitOfMeasureChange?: boolean, incomeAccountId?: string, isActive?: boolean, maximumQuantityOnHand?: number, name?: string, parentId?: string, preferredVendorId?: string, purchaseCost?: string, purchaseDescription?: string, purchaseTaxCodeId?: string, reorderPoint?: number, salesDescription?: string, salesPrice?: string, salesTaxCodeId?: string, sku?: string, unitOfMeasureSetId?: string, updateExistingTransactionsCogsAccount?: boolean, updateExistingTransactionsIncomeAccount?: boolean): { id: string; assetAccount: object; averageCost: string; barcode: string; class: object; cogsAccount: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; incomeAccount: object; isActive: boolean; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_item'; parent: object; preferredVendor: object; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: object; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; reorderPoint: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: object; sku: string; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/inventory-items/{id}`\n\nUpdates an inventory item. If you switch the income account, set `updateExistingTransactionsIncomeAccount` to true so QuickBooks applies the new account to existing transactions that reference the item.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the inventory item to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the inventory item object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `assetAccountId?: string`\n The asset account used to track the current value of this inventory item in inventory.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The inventory item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `classId?: string`\n The inventory item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `cogsAccountId?: string`\n The Cost of Goods Sold (COGS) account for this inventory item, tracking the original direct costs of producing goods sold.\n\n- `forceUnitOfMeasureChange?: boolean`\n Indicates whether to allow changing the inventory item's unit-of-measure set (using the `unitOfMeasureSetId` field) when the base unit of the new unit-of-measure set does not match that of the currently assigned set. Without setting this field to `true` in this scenario, the request will fail with an error; hence, this field is equivalent to accepting the warning prompt in the QuickBooks UI.\n\nNOTE: Changing the base unit requires you to update the item's quantities-on-hand and cost to reflect the new unit; otherwise, these values will be inaccurate. Alternatively, consider creating a new item with the desired unit-of-measure set and deactivating the old item.\n\n- `incomeAccountId?: string`\n The income account used to track revenue from sales of this inventory item.\n\n- `isActive?: boolean`\n Indicates whether this inventory item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `maximumQuantityOnHand?: number`\n The maximum quantity of this inventory item desired in inventory.\n\n- `name?: string`\n The case-insensitive name of this inventory item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two inventory items could both have the `name` \"Cabinet\", but they could have unique `fullName` values, such as \"Kitchen:Cabinet\" and \"Inventory:Cabinet\".\n\nMaximum length: 31 characters.\n\n- `parentId?: string`\n The parent inventory item one level above this one in the hierarchy. For example, if this inventory item has a `fullName` of \"Kitchen:Cabinet\", its parent has a `fullName` of \"Kitchen\". If this inventory item is at the top level, this field will be `null`.\n\n- `preferredVendorId?: string`\n The preferred vendor from whom this inventory item is typically purchased.\n\n- `purchaseCost?: string`\n The cost at which this inventory item is purchased from vendors, represented as a decimal string.\n\n- `purchaseDescription?: string`\n The description of this inventory item that appears on purchase forms (e.g., checks, bills, item receipts) when it is ordered or bought from vendors.\n\n- `purchaseTaxCodeId?: string`\n The tax code applied to purchases of this inventory item. Applicable in regions where purchase taxes are used, such as Canada or the UK.\n\n- `reorderPoint?: number`\n The minimum quantity of this inventory item at which QuickBooks prompts for reordering.\n\n- `salesDescription?: string`\n The description of this inventory item that appears on sales forms (e.g., invoices, sales receipts) when sold to customers.\n\n- `salesPrice?: string`\n The price at which this inventory item is sold to customers, represented as a decimal string.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for this inventory item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `sku?: string`\n The inventory item's stock keeping unit (SKU), which is sometimes the manufacturer's part number.\n\n- `unitOfMeasureSetId?: string`\n The unit-of-measure set associated with this inventory item, which consists of a base unit and related units.\n\n- `updateExistingTransactionsCogsAccount?: boolean`\n When `true`, applies the new COGS account (specified by the `cogsAccountId` field) to all existing transactions that use this inventory item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n\n- `updateExistingTransactionsIncomeAccount?: boolean`\n When `true`, applies the new income account (specified by the `incomeAccountId` field) to all existing transactions that use this inventory item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n\n### Returns\n\n- `{ id: string; assetAccount: { id: string; fullName: string; }; averageCost: string; barcode: string; class: { id: string; fullName: string; }; cogsAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; incomeAccount: { id: string; fullName: string; }; isActive: boolean; maximumQuantityOnHand: number; name: string; objectType: 'qbd_inventory_item'; parent: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; quantityOnHand: number; quantityOnPurchaseOrder: number; quantityOnSalesOrder: number; reorderPoint: number; revisionNumber: string; salesDescription: string; salesPrice: string; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `assetAccount: { id: string; fullName: string; }`\n - `averageCost: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `cogsAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `incomeAccount: { id: string; fullName: string; }`\n - `isActive: boolean`\n - `maximumQuantityOnHand: number`\n - `name: string`\n - `objectType: 'qbd_inventory_item'`\n - `parent: { id: string; fullName: string; }`\n - `preferredVendor: { id: string; fullName: string; }`\n - `purchaseCost: string`\n - `purchaseDescription: string`\n - `purchaseTaxCode: { id: string; fullName: string; }`\n - `quantityOnHand: number`\n - `quantityOnPurchaseOrder: number`\n - `quantityOnSalesOrder: number`\n - `reorderPoint: number`\n - `revisionNumber: string`\n - `salesDescription: string`\n - `salesPrice: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sku: string`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventoryItem = await conductor.qbd.inventoryItems.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(inventoryItem);\n```", perLanguage: { typescript: { method: 'client.qbd.inventoryItems.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventoryItem = await conductor.qbd.inventoryItems.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventoryItem.id);", }, python: { method: 'qbd.inventory_items.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_item = conductor.qbd.inventory_items.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-items/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "assetAccountId": "80000001-1234567890",\n "classId": "80000001-1234567890",\n "cogsAccountId": "80000001-1234567890",\n "forceUnitOfMeasureChange": false,\n "incomeAccountId": "80000001-1234567890",\n "isActive": true,\n "maximumQuantityOnHand": 200,\n "name": "Cabinet",\n "parentId": "80000001-1234567890",\n "preferredVendorId": "80000001-1234567890",\n "purchaseCost": "15.75",\n "purchaseDescription": "Bulk purchase of steel bolts for inventory",\n "purchaseTaxCodeId": "80000001-1234567890",\n "reorderPoint": 50,\n "salesDescription": "High-quality steel bolts suitable for construction",\n "salesPrice": "19.99",\n "salesTaxCodeId": "80000001-1234567890",\n "sku": "MPN-123456",\n "unitOfMeasureSetId": "80000001-1234567890",\n "updateExistingTransactionsCogsAccount": false,\n "updateExistingTransactionsIncomeAccount": false\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/inventory-sites', httpMethod: 'post', summary: 'Create an inventory site', description: 'Creates an inventory site for companies using QuickBooks Enterprise with Advanced Inventory.', stainlessPath: '(resource) qbd.inventory_sites > (method) create', qualified: 'client.qbd.inventorySites.create', params: [ 'name: string;', 'Conductor-End-User-Id: string;', 'address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; postalCode?: string; state?: string; };', 'description?: string;', 'email?: string;', 'isActive?: boolean;', 'parentId?: string;', ], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; postalCode: string; state: string; }; contact: string; createdAt: string; description: string; email: string; fax: string; isActive: boolean; isDefault: boolean; name: string; objectType: 'qbd_inventory_site'; parent: { id: string; fullName: string; }; phone: string; revisionNumber: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.inventorySites.create(name: string, Conductor-End-User-Id: string, address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; postalCode?: string; state?: string; }, description?: string, email?: string, isActive?: boolean, parentId?: string): { id: string; address: object; contact: string; createdAt: string; description: string; email: string; fax: string; isActive: boolean; isDefault: boolean; name: string; objectType: 'qbd_inventory_site'; parent: object; phone: string; revisionNumber: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/inventory-sites`\n\nCreates an inventory site for companies using QuickBooks Enterprise with Advanced Inventory.\n\n### Parameters\n\n- `name: string`\n The case-insensitive unique name of this inventory site, unique across all inventory sites.\n\n**NOTE**: Inventory sites do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; postalCode?: string; state?: string; }`\n The inventory site's address.\n - `city?: string`\n The city, district, suburb, town, or village name of the site address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the site address.\n - `line1?: string`\n The first line of the site address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the site address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the site address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the site address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the site address, if needed.\n\nMaximum length: 41 characters.\n - `postalCode?: string`\n The postal code or ZIP code of the site address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the site address.\n\nMaximum length: 21 characters.\n\n- `description?: string`\n A description of this inventory site.\n\n- `email?: string`\n The inventory site's email address.\n\n- `isActive?: boolean`\n Indicates whether this inventory site is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `parentId?: string`\n The parent inventory site one level above this one in the hierarchy.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; postalCode: string; state: string; }; contact: string; createdAt: string; description: string; email: string; fax: string; isActive: boolean; isDefault: boolean; name: string; objectType: 'qbd_inventory_site'; parent: { id: string; fullName: string; }; phone: string; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; postalCode: string; state: string; }`\n - `contact: string`\n - `createdAt: string`\n - `description: string`\n - `email: string`\n - `fax: string`\n - `isActive: boolean`\n - `isDefault: boolean`\n - `name: string`\n - `objectType: 'qbd_inventory_site'`\n - `parent: { id: string; fullName: string; }`\n - `phone: string`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventorySite = await conductor.qbd.inventorySites.create({ name: 'Stockroom', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(inventorySite);\n```", perLanguage: { typescript: { method: 'client.qbd.inventorySites.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventorySite = await conductor.qbd.inventorySites.create({\n name: 'Stockroom',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventorySite.id);", }, python: { method: 'qbd.inventory_sites.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_site = conductor.qbd.inventory_sites.create(\n name="Stockroom",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_site.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-sites \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Stockroom",\n "description": "Main Stockroom for Electronics",\n "email": "inventory-site@example.com",\n "isActive": true,\n "parentId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/inventory-sites', httpMethod: 'get', summary: 'List all inventory sites', description: 'Returns a list of inventory sites.\n\n**NOTE:** QuickBooks Desktop does not support pagination for inventory sites; hence, there is no `cursor` parameter. Users typically have few inventory sites.', stainlessPath: '(resource) qbd.inventory_sites > (method) list', qualified: 'client.qbd.inventorySites.list', params: [ 'Conductor-End-User-Id: string;', 'ids?: string[];', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; address: object; contact: string; createdAt: string; description: string; email: string; fax: string; isActive: boolean; isDefault: boolean; name: string; objectType: 'qbd_inventory_site'; parent: object; phone: string; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.inventorySites.list(Conductor-End-User-Id: string, ids?: string[], nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: inventory_site[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/inventory-sites`\n\nReturns a list of inventory sites.\n\n**NOTE:** QuickBooks Desktop does not support pagination for inventory sites; hence, there is no `cursor` parameter. Users typically have few inventory sites.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `ids?: string[]`\n Filter for specific inventory sites by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameContains?: string`\n Filter for inventory sites whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for inventory sites whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for inventory sites whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific inventory sites by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for an inventory site.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for inventory sites whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for inventory sites whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for inventory sites that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for inventory sites updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for inventory sites updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; address: object; contact: string; createdAt: string; description: string; email: string; fax: string; isActive: boolean; isDefault: boolean; name: string; objectType: 'qbd_inventory_site'; parent: object; phone: string; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; postalCode: string; state: string; }; contact: string; createdAt: string; description: string; email: string; fax: string; isActive: boolean; isDefault: boolean; name: string; objectType: 'qbd_inventory_site'; parent: { id: string; fullName: string; }; phone: string; revisionNumber: string; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventorySites = await conductor.qbd.inventorySites.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(inventorySites);\n```", perLanguage: { typescript: { method: 'client.qbd.inventorySites.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventorySites = await conductor.qbd.inventorySites.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventorySites.data);", }, python: { method: 'qbd.inventory_sites.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_sites = conductor.qbd.inventory_sites.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_sites.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-sites \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/inventory-sites/{id}', httpMethod: 'get', summary: 'Retrieve an inventory site', description: 'Retrieves an inventory site by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific inventory sites by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.inventory_sites > (method) retrieve', qualified: 'client.qbd.inventorySites.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; postalCode: string; state: string; }; contact: string; createdAt: string; description: string; email: string; fax: string; isActive: boolean; isDefault: boolean; name: string; objectType: 'qbd_inventory_site'; parent: { id: string; fullName: string; }; phone: string; revisionNumber: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.inventorySites.retrieve(id: string, Conductor-End-User-Id: string): { id: string; address: object; contact: string; createdAt: string; description: string; email: string; fax: string; isActive: boolean; isDefault: boolean; name: string; objectType: 'qbd_inventory_site'; parent: object; phone: string; revisionNumber: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/inventory-sites/{id}`\n\nRetrieves an inventory site by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific inventory sites by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the inventory site to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; postalCode: string; state: string; }; contact: string; createdAt: string; description: string; email: string; fax: string; isActive: boolean; isDefault: boolean; name: string; objectType: 'qbd_inventory_site'; parent: { id: string; fullName: string; }; phone: string; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; postalCode: string; state: string; }`\n - `contact: string`\n - `createdAt: string`\n - `description: string`\n - `email: string`\n - `fax: string`\n - `isActive: boolean`\n - `isDefault: boolean`\n - `name: string`\n - `objectType: 'qbd_inventory_site'`\n - `parent: { id: string; fullName: string; }`\n - `phone: string`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventorySite = await conductor.qbd.inventorySites.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(inventorySite);\n```", perLanguage: { typescript: { method: 'client.qbd.inventorySites.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventorySite = await conductor.qbd.inventorySites.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventorySite.id);", }, python: { method: 'qbd.inventory_sites.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_site = conductor.qbd.inventory_sites.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_site.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-sites/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/inventory-sites/{id}', httpMethod: 'post', summary: 'Update an inventory site', description: 'Updates an existing inventory site.', stainlessPath: '(resource) qbd.inventory_sites > (method) update', qualified: 'client.qbd.inventorySites.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; postalCode?: string; state?: string; };', 'contact?: string;', 'description?: string;', 'email?: string;', 'fax?: string;', 'isActive?: boolean;', 'name?: string;', 'parentId?: string;', 'phone?: string;', ], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; postalCode: string; state: string; }; contact: string; createdAt: string; description: string; email: string; fax: string; isActive: boolean; isDefault: boolean; name: string; objectType: 'qbd_inventory_site'; parent: { id: string; fullName: string; }; phone: string; revisionNumber: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.inventorySites.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; postalCode?: string; state?: string; }, contact?: string, description?: string, email?: string, fax?: string, isActive?: boolean, name?: string, parentId?: string, phone?: string): { id: string; address: object; contact: string; createdAt: string; description: string; email: string; fax: string; isActive: boolean; isDefault: boolean; name: string; objectType: 'qbd_inventory_site'; parent: object; phone: string; revisionNumber: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/inventory-sites/{id}`\n\nUpdates an existing inventory site.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the inventory site to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the inventory site object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; postalCode?: string; state?: string; }`\n The inventory site's address.\n - `city?: string`\n The city, district, suburb, town, or village name of the site address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the site address.\n - `line1?: string`\n The first line of the site address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the site address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the site address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the site address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the site address, if needed.\n\nMaximum length: 41 characters.\n - `postalCode?: string`\n The postal code or ZIP code of the site address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the site address.\n\nMaximum length: 21 characters.\n\n- `contact?: string`\n The name of the primary contact person for this inventory site.\n\n- `description?: string`\n A description of this inventory site.\n\n- `email?: string`\n The inventory site's email address.\n\n- `fax?: string`\n The inventory site's fax number.\n\nMaximum length: 21 characters.\n\n- `isActive?: boolean`\n Indicates whether this inventory site is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `name?: string`\n The case-insensitive unique name of this inventory site, unique across all inventory sites.\n\n**NOTE**: Inventory sites do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `parentId?: string`\n The parent inventory site one level above this one in the hierarchy.\n\n- `phone?: string`\n The inventory site's primary telephone number.\n\nMaximum length: 21 characters.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; postalCode: string; state: string; }; contact: string; createdAt: string; description: string; email: string; fax: string; isActive: boolean; isDefault: boolean; name: string; objectType: 'qbd_inventory_site'; parent: { id: string; fullName: string; }; phone: string; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; postalCode: string; state: string; }`\n - `contact: string`\n - `createdAt: string`\n - `description: string`\n - `email: string`\n - `fax: string`\n - `isActive: boolean`\n - `isDefault: boolean`\n - `name: string`\n - `objectType: 'qbd_inventory_site'`\n - `parent: { id: string; fullName: string; }`\n - `phone: string`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst inventorySite = await conductor.qbd.inventorySites.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(inventorySite);\n```", perLanguage: { typescript: { method: 'client.qbd.inventorySites.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst inventorySite = await conductor.qbd.inventorySites.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(inventorySite.id);", }, python: { method: 'qbd.inventory_sites.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninventory_site = conductor.qbd.inventory_sites.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(inventory_site.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/inventory-sites/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "contact": "Jane Smith",\n "description": "Main Stockroom for Electronics",\n "email": "inventory-site@example.com",\n "fax": "+1-555-555-1212",\n "isActive": true,\n "name": "Stockroom",\n "parentId": "80000001-1234567890",\n "phone": "+1-555-123-4567"\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/invoices', httpMethod: 'post', summary: 'Create an invoice', description: 'Creates an invoice to bill a customer when goods or services were delivered before payment. Use a sales receipt instead if the sale was paid in full.', stainlessPath: '(resource) qbd.invoices > (method) create', qualified: 'client.qbd.invoices.create', params: [ 'customerId: string;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[];', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'classId?: string;', 'customerMessageId?: string;', 'documentTemplateId?: string;', 'dueDate?: string;', 'exchangeRate?: number;', 'externalId?: string;', 'isFinanceCharge?: boolean;', 'isPending?: boolean;', 'isQueuedForEmail?: boolean;', 'isQueuedForPrint?: boolean;', 'lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; serviceDate?: string; unitOfMeasure?: string; }[];', "lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[];", 'linkToTransactionIds?: string[];', 'memo?: string;', 'otherCustomField?: string;', 'purchaseOrderNumber?: string;', 'receivablesAccountId?: string;', 'refNumber?: string;', 'salesRepresentativeId?: string;', 'salesTaxCodeId?: string;', 'salesTaxItemId?: string;', 'shipmentOrigin?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'shippingDate?: string;', 'shippingMethodId?: string;', 'termsId?: string;', ], response: "{ id: string; appliedAmount: string; balanceRemaining: string; balanceRemainingInHomeCurrency: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFinanceCharge: boolean; isPaid: boolean; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_invoice'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; suggestedDiscountAmount: string; suggestedDiscountDate: string; terms: object; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.invoices.create(customerId: string, transactionDate: string, Conductor-End-User-Id: string, applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[], billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, classId?: string, customerMessageId?: string, documentTemplateId?: string, dueDate?: string, exchangeRate?: number, externalId?: string, isFinanceCharge?: boolean, isPending?: boolean, isQueuedForEmail?: boolean, isQueuedForPrint?: boolean, lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; serviceDate?: string; unitOfMeasure?: string; }[], lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[], linkToTransactionIds?: string[], memo?: string, otherCustomField?: string, purchaseOrderNumber?: string, receivablesAccountId?: string, refNumber?: string, salesRepresentativeId?: string, salesTaxCodeId?: string, salesTaxItemId?: string, shipmentOrigin?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, shippingDate?: string, shippingMethodId?: string, termsId?: string): { id: string; appliedAmount: string; balanceRemaining: string; balanceRemainingInHomeCurrency: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFinanceCharge: boolean; isPaid: boolean; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_invoice'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; suggestedDiscountAmount: string; suggestedDiscountDate: string; terms: object; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/invoices`\n\nCreates an invoice to bill a customer when goods or services were delivered before payment. Use a sales receipt instead if the sale was paid in full.\n\n### Parameters\n\n- `customerId: string`\n The customer or customer-job associated with this invoice.\n\n- `transactionDate: string`\n The date of this invoice, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]`\n Credits to apply to this invoice, reducing its balance. This creates a link between this invoice and the specified credit transactions.\n\n**IMPORTANT**: By default, QuickBooks will not return any information about the linked transactions in this endpoint's response even when this request is successful. To see the transactions linked via this field, refetch the invoice and check the `linkedTransactions` response field. If fetching a list of invoices, you must also specify the parameter `includeLinkedTransactions=true` to see the `linkedTransactions` response field.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The invoice's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `classId?: string`\n The invoice's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this invoice's line items unless overridden at the line item level.\n\n- `customerMessageId?: string`\n The message to display to the customer on the invoice.\n\n- `documentTemplateId?: string`\n The predefined template in QuickBooks that determines the layout and formatting for this invoice when printed or displayed.\n\n- `dueDate?: string`\n The date by which this invoice must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE**: If `dueDate` is excluded when creating this invoice, QuickBooks might determine the due date according to the terms set for this customer.\n\n- `exchangeRate?: number`\n The market exchange rate between this invoice's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isFinanceCharge?: boolean`\n Whether this invoice includes a finance charge. This field is immutable and can only be set during invoice creation.\n\n- `isPending?: boolean`\n Indicates whether this invoice has not been completed or is in a draft version.\n\n- `isQueuedForEmail?: boolean`\n Indicates whether this invoice is included in the queue of documents for QuickBooks to email to the customer.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this invoice is included in the queue of documents for QuickBooks to print.\n\n- `lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; serviceDate?: string; unitOfMeasure?: string; }[]`\n The invoice's line item groups, each representing a predefined set of related items.\n\n- `lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]`\n The invoice's line items, each representing a single product or service sold.\n\n- `linkToTransactionIds?: string[]`\n IDs of existing transactions that you wish to link to this invoice, such as payments applied, credits used, or associated purchase orders. Note that this links entire transactions, not individual transaction lines. If you want to link individual lines in a transaction, instead use the field `linkToTransactionLine` on this invoice's lines, if available.\n\nTransactions can only be linked when creating this invoice and cannot be unlinked later.\n\nYou can use both `linkToTransactionIds` (on this invoice) and `linkToTransactionLine` (on its transaction lines) as long as they do NOT link to the same transaction (otherwise, QuickBooks will return an error). QuickBooks will also return an error if you attempt to link a transaction that is empty or already closed.\n\n**IMPORTANT**: By default, QuickBooks will not return any information about the linked transactions in this endpoint's response even when this request is successful. To see the transactions linked via this field, refetch the invoice and check the `linkedTransactions` response field. If fetching a list of invoices, you must also specify the parameter `includeLinkedTransactions=true` to see the `linkedTransactions` response field.\n\n- `memo?: string`\n A memo or note for this invoice that appears in reports, but not on the invoice. Use `customerMessage` to add a note to this invoice.\n\n- `otherCustomField?: string`\n A built-in custom field for additional information specific to this invoice. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all invoices for convenience. Developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Unlike `otherCustomField1` and `otherCustomField2`, which are line item fields, this exists at the transaction level. Hidden by default in the QuickBooks UI.\n\n- `purchaseOrderNumber?: string`\n The customer's Purchase Order (PO) number associated with this invoice. This field is often used to cross-reference the invoice with the customer's purchasing system.\n\nMaximum length: 25 characters.\n\n- `receivablesAccountId?: string`\n The Accounts-Receivable (A/R) account to which this invoice is assigned, used to track the amount owed. If omitted, QuickBooks Desktop uses the default A/R account configured in the company file.\n\n**IMPORTANT**: If this invoice is linked to other transactions, this A/R account must match the `receivablesAccount` used in all linked transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this invoice, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n- `salesRepresentativeId?: string`\n The invoice's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this invoice, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this invoice's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\nFor invoices, while using this field to specify a single tax item/group that applies uniformly is recommended, complex tax scenarios may require alternative approaches. In such cases, you can set this field to a 0% tax item (conventionally named \"Tax Calculated On Invoice\") and handle tax calculations through line items instead. When using line items for taxes, note that only individual tax items (not tax groups) can be used, subtotals can help apply a tax to multiple items but only the first tax line after a subtotal is calculated automatically (subsequent tax lines require manual amounts), and the rate column will always display the actual tax amount rather than the rate percentage.\n\n- `shipmentOrigin?: string`\n The origin location from where the product associated with this invoice is shipped. This is the point at which ownership and liability for goods transfer from seller to buyer. Internally, QuickBooks uses the term \"FOB\" for this field, which stands for \"freight on board\". This field is informational and has no accounting implications.\n\nMaximum length: 13 characters.\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The invoice's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `shippingDate?: string`\n The date when the products or services for this invoice were shipped or are expected to be shipped, in ISO 8601 format (YYYY-MM-DD).\n\n- `shippingMethodId?: string`\n The shipping method used for this invoice, such as standard mail or overnight delivery.\n\n- `termsId?: string`\n The invoice's payment terms, defining when payment is due and any applicable discounts.\n\n### Returns\n\n- `{ id: string; appliedAmount: string; balanceRemaining: string; balanceRemainingInHomeCurrency: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isFinanceCharge: boolean; isPaid: boolean; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_invoice_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_invoice'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; suggestedDiscountAmount: string; suggestedDiscountDate: string; terms: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `appliedAmount: string`\n - `balanceRemaining: string`\n - `balanceRemainingInHomeCurrency: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isFinanceCharge: boolean`\n - `isPaid: boolean`\n - `isPending: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_invoice_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_invoice'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `suggestedDiscountAmount: string`\n - `suggestedDiscountDate: string`\n - `terms: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst invoice = await conductor.qbd.invoices.create({\n customerId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(invoice);\n```", perLanguage: { typescript: { method: 'client.qbd.invoices.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst invoice = await conductor.qbd.invoices.create({\n customerId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(invoice.id);", }, python: { method: 'qbd.invoices.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninvoice = conductor.qbd.invoices.create(\n customer_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(invoice.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/invoices \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "customerId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "classId": "80000001-1234567890",\n "customerMessageId": "80000001-1234567890",\n "documentTemplateId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isFinanceCharge": true,\n "isPending": false,\n "isQueuedForEmail": true,\n "isQueuedForPrint": true,\n "memo": "Customer requested rush delivery",\n "otherCustomField": "Special handling required",\n "purchaseOrderNumber": "PO-1234",\n "receivablesAccountId": "80000001-1234567890",\n "refNumber": "INV-1234",\n "salesRepresentativeId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxItemId": "80000001-1234567890",\n "shipmentOrigin": "shipmentOrigin",\n "shippingDate": "2024-10-01",\n "shippingMethodId": "80000001-1234567890",\n "termsId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/invoices', httpMethod: 'get', summary: 'List all invoices', description: 'Returns a list of invoices. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.invoices > (method) list', qualified: 'client.qbd.invoices.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'customerIds?: string[];', 'ids?: string[];', 'includeLineItems?: boolean;', 'includeLinkedTransactions?: boolean;', 'limit?: number;', "paymentStatus?: 'all' | 'paid' | 'not_paid';", 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; appliedAmount: string; balanceRemaining: string; balanceRemainingInHomeCurrency: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFinanceCharge: boolean; isPaid: boolean; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_invoice'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; suggestedDiscountAmount: string; suggestedDiscountDate: string; terms: object; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.invoices.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, customerIds?: string[], ids?: string[], includeLineItems?: boolean, includeLinkedTransactions?: boolean, limit?: number, paymentStatus?: 'all' | 'paid' | 'not_paid', refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; appliedAmount: string; balanceRemaining: string; balanceRemainingInHomeCurrency: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFinanceCharge: boolean; isPaid: boolean; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_invoice'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; suggestedDiscountAmount: string; suggestedDiscountDate: string; terms: object; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/invoices`\n\nReturns a list of invoices. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for invoices associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for invoices in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `customerIds?: string[]`\n Filter for invoices created for these customers.\n\n- `ids?: string[]`\n Filter for specific invoices by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `includeLinkedTransactions?: boolean`\n Whether to include linked transactions in the response. Defaults to `false`. For example, a payment linked to the corresponding invoice.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `paymentStatus?: 'all' | 'paid' | 'not_paid'`\n Filter for invoices that are paid, not paid, or both.\n\n- `refNumberContains?: string`\n Filter for invoices whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for invoices whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for invoices whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific invoices by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for invoices whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for invoices whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for invoices whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for invoices whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for invoices updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for invoices updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; appliedAmount: string; balanceRemaining: string; balanceRemainingInHomeCurrency: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isFinanceCharge: boolean; isPaid: boolean; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_invoice_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_invoice'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; suggestedDiscountAmount: string; suggestedDiscountDate: string; terms: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `appliedAmount: string`\n - `balanceRemaining: string`\n - `balanceRemainingInHomeCurrency: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isFinanceCharge: boolean`\n - `isPaid: boolean`\n - `isPending: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_invoice_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_invoice'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `suggestedDiscountAmount: string`\n - `suggestedDiscountDate: string`\n - `terms: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const invoice of conductor.qbd.invoices.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(invoice);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.invoices.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const invoice of conductor.qbd.invoices.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(invoice.id);\n}", }, python: { method: 'qbd.invoices.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.invoices.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/invoices \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/invoices/{id}', httpMethod: 'get', summary: 'Retrieve an invoice', description: 'Retrieves an invoice by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific invoices by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.', stainlessPath: '(resource) qbd.invoices > (method) retrieve', qualified: 'client.qbd.invoices.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; appliedAmount: string; balanceRemaining: string; balanceRemainingInHomeCurrency: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFinanceCharge: boolean; isPaid: boolean; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_invoice'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; suggestedDiscountAmount: string; suggestedDiscountDate: string; terms: object; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.invoices.retrieve(id: string, Conductor-End-User-Id: string): { id: string; appliedAmount: string; balanceRemaining: string; balanceRemainingInHomeCurrency: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFinanceCharge: boolean; isPaid: boolean; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_invoice'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; suggestedDiscountAmount: string; suggestedDiscountDate: string; terms: object; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/invoices/{id}`\n\nRetrieves an invoice by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific invoices by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the invoice to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; appliedAmount: string; balanceRemaining: string; balanceRemainingInHomeCurrency: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isFinanceCharge: boolean; isPaid: boolean; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_invoice_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_invoice'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; suggestedDiscountAmount: string; suggestedDiscountDate: string; terms: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `appliedAmount: string`\n - `balanceRemaining: string`\n - `balanceRemainingInHomeCurrency: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isFinanceCharge: boolean`\n - `isPaid: boolean`\n - `isPending: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_invoice_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_invoice'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `suggestedDiscountAmount: string`\n - `suggestedDiscountDate: string`\n - `terms: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst invoice = await conductor.qbd.invoices.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(invoice);\n```", perLanguage: { typescript: { method: 'client.qbd.invoices.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst invoice = await conductor.qbd.invoices.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(invoice.id);", }, python: { method: 'qbd.invoices.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninvoice = conductor.qbd.invoices.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(invoice.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/invoices/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/invoices/{id}', httpMethod: 'post', summary: 'Update an invoice', description: 'Updates an existing invoice.\n\n**NOTE:** If you include `lines` or `lineGroups`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.invoices > (method) update', qualified: 'client.qbd.invoices.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[];', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'classId?: string;', 'customerId?: string;', 'customerMessageId?: string;', 'documentTemplateId?: string;', 'dueDate?: string;', 'exchangeRate?: number;', 'isPending?: boolean;', 'isQueuedForEmail?: boolean;', 'isQueuedForPrint?: boolean;', "lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[];", "lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'otherCustomField?: string;', 'purchaseOrderNumber?: string;', 'receivablesAccountId?: string;', 'refNumber?: string;', 'salesRepresentativeId?: string;', 'salesTaxCodeId?: string;', 'salesTaxItemId?: string;', 'shipmentOrigin?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'shippingDate?: string;', 'shippingMethodId?: string;', 'termsId?: string;', 'transactionDate?: string;', ], response: "{ id: string; appliedAmount: string; balanceRemaining: string; balanceRemainingInHomeCurrency: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFinanceCharge: boolean; isPaid: boolean; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_invoice'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; suggestedDiscountAmount: string; suggestedDiscountDate: string; terms: object; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.invoices.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[], billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, classId?: string, customerId?: string, customerMessageId?: string, documentTemplateId?: string, dueDate?: string, exchangeRate?: number, isPending?: boolean, isQueuedForEmail?: boolean, isQueuedForPrint?: boolean, lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[], lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[], memo?: string, otherCustomField?: string, purchaseOrderNumber?: string, receivablesAccountId?: string, refNumber?: string, salesRepresentativeId?: string, salesTaxCodeId?: string, salesTaxItemId?: string, shipmentOrigin?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, shippingDate?: string, shippingMethodId?: string, termsId?: string, transactionDate?: string): { id: string; appliedAmount: string; balanceRemaining: string; balanceRemainingInHomeCurrency: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFinanceCharge: boolean; isPaid: boolean; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_invoice'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; suggestedDiscountAmount: string; suggestedDiscountDate: string; terms: object; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/invoices/{id}`\n\nUpdates an existing invoice.\n\n**NOTE:** If you include `lines` or `lineGroups`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the invoice to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the invoice object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]`\n Credits to apply to this invoice, reducing its balance. This creates a link between this invoice and the specified credit transactions. For credit-only applications with no received payment amount, update the invoice using this field.\n\n**IMPORTANT**: By default, QuickBooks will not return any information about the linked transactions in this endpoint's response even when this request is successful. To see the transactions linked via this field, refetch the invoice and check the `linkedTransactions` response field. If fetching a list of invoices, you must also specify the parameter `includeLinkedTransactions=true` to see the `linkedTransactions` response field.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The invoice's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `classId?: string`\n The invoice's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this invoice's line items unless overridden at the line item level.\n\n- `customerId?: string`\n The customer or customer-job associated with this invoice.\n\n- `customerMessageId?: string`\n The message to display to the customer on the invoice.\n\n- `documentTemplateId?: string`\n The predefined template in QuickBooks that determines the layout and formatting for this invoice when printed or displayed.\n\n- `dueDate?: string`\n The date by which this invoice must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n- `exchangeRate?: number`\n The market exchange rate between this invoice's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `isPending?: boolean`\n Indicates whether this invoice has not been completed or is in a draft version.\n\n- `isQueuedForEmail?: boolean`\n Indicates whether this invoice is included in the queue of documents for QuickBooks to email to the customer.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this invoice is included in the queue of documents for QuickBooks to print.\n\n- `lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The invoice's line item groups, each representing a predefined set of related items.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing line item groups for the invoice with this array. To keep any existing line item groups, you must include them in this array even if they have not changed. **Any line item groups not included will be removed.**\n\n2. To add a new line item group, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any line item groups, omit this field entirely to keep them unchanged.\n\n- `lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]`\n The invoice's line items, each representing a single product or service sold.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing line items for the invoice with this array. To keep any existing line items, you must include them in this array even if they have not changed. **Any line items not included will be removed.**\n\n2. To add a new line item, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any line items, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this invoice that appears in reports, but not on the invoice. Use `customerMessage` to add a note to this invoice.\n\n- `otherCustomField?: string`\n A built-in custom field for additional information specific to this invoice. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all invoices for convenience. Developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Unlike `otherCustomField1` and `otherCustomField2`, which are line item fields, this exists at the transaction level. Hidden by default in the QuickBooks UI.\n\n- `purchaseOrderNumber?: string`\n The customer's Purchase Order (PO) number associated with this invoice. This field is often used to cross-reference the invoice with the customer's purchasing system.\n\nMaximum length: 25 characters.\n\n- `receivablesAccountId?: string`\n The Accounts-Receivable (A/R) account to which this invoice is assigned, used to track the amount owed. If omitted, QuickBooks Desktop uses the default A/R account configured in the company file.\n\n**IMPORTANT**: If this invoice is linked to other transactions, this A/R account must match the `receivablesAccount` used in all linked transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this invoice, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 11 characters.\n\n- `salesRepresentativeId?: string`\n The invoice's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this invoice, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this invoice's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\nFor invoices, while using this field to specify a single tax item/group that applies uniformly is recommended, complex tax scenarios may require alternative approaches. In such cases, you can set this field to a 0% tax item (conventionally named \"Tax Calculated On Invoice\") and handle tax calculations through line items instead. When using line items for taxes, note that only individual tax items (not tax groups) can be used, subtotals can help apply a tax to multiple items but only the first tax line after a subtotal is calculated automatically (subsequent tax lines require manual amounts), and the rate column will always display the actual tax amount rather than the rate percentage.\n\n- `shipmentOrigin?: string`\n The origin location from where the product associated with this invoice is shipped. This is the point at which ownership and liability for goods transfer from seller to buyer. Internally, QuickBooks uses the term \"FOB\" for this field, which stands for \"freight on board\". This field is informational and has no accounting implications.\n\nMaximum length: 13 characters.\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The invoice's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `shippingDate?: string`\n The date when the products or services for this invoice were shipped or are expected to be shipped, in ISO 8601 format (YYYY-MM-DD).\n\n- `shippingMethodId?: string`\n The shipping method used for this invoice, such as standard mail or overnight delivery.\n\n- `termsId?: string`\n The invoice's payment terms, defining when payment is due and any applicable discounts.\n\n- `transactionDate?: string`\n The date of this invoice, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; appliedAmount: string; balanceRemaining: string; balanceRemainingInHomeCurrency: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isFinanceCharge: boolean; isPaid: boolean; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_invoice_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_invoice'; otherCustomField: string; purchaseOrderNumber: string; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; suggestedDiscountAmount: string; suggestedDiscountDate: string; terms: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `appliedAmount: string`\n - `balanceRemaining: string`\n - `balanceRemainingInHomeCurrency: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isFinanceCharge: boolean`\n - `isPaid: boolean`\n - `isPending: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_invoice_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_invoice_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_invoice'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `suggestedDiscountAmount: string`\n - `suggestedDiscountDate: string`\n - `terms: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst invoice = await conductor.qbd.invoices.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(invoice);\n```", perLanguage: { typescript: { method: 'client.qbd.invoices.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst invoice = await conductor.qbd.invoices.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(invoice.id);", }, python: { method: 'qbd.invoices.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninvoice = conductor.qbd.invoices.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(invoice.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/invoices/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "classId": "80000001-1234567890",\n "customerId": "80000001-1234567890",\n "customerMessageId": "80000001-1234567890",\n "documentTemplateId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "isPending": false,\n "isQueuedForEmail": true,\n "isQueuedForPrint": true,\n "memo": "Customer requested rush delivery",\n "otherCustomField": "Special handling required",\n "purchaseOrderNumber": "PO-1234",\n "receivablesAccountId": "80000001-1234567890",\n "refNumber": "INV-1234",\n "salesRepresentativeId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxItemId": "80000001-1234567890",\n "shipmentOrigin": "shipmentOrigin",\n "shippingDate": "2024-10-01",\n "shippingMethodId": "80000001-1234567890",\n "termsId": "80000001-1234567890",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/invoices/{id}/void', httpMethod: 'post', summary: 'Void an invoice', description: 'Voids an invoice by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the invoice is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.invoices > (method) void', qualified: 'client.qbd.invoices.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_invoice'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.invoices.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_invoice'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/invoices/{id}/void`\n\nVoids an invoice by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the invoice is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the invoice to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_invoice'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_invoice'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.invoices.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.invoices.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.invoices.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.invoices.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.invoices.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/invoices/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/invoices/{id}', httpMethod: 'delete', summary: 'Delete an invoice', description: 'Permanently deletes an invoice. The deletion will fail if the invoice is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.invoices > (method) delete', qualified: 'client.qbd.invoices.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_invoice'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.invoices.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_invoice'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/invoices/{id}`\n\nPermanently deletes an invoice. The deletion will fail if the invoice is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the invoice to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_invoice'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_invoice'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst invoice = await conductor.qbd.invoices.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(invoice);\n```", perLanguage: { typescript: { method: 'client.qbd.invoices.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst invoice = await conductor.qbd.invoices.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(invoice.id);", }, python: { method: 'qbd.invoices.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ninvoice = conductor.qbd.invoices.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(invoice.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/invoices/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/item-groups', httpMethod: 'post', summary: 'Create an item group', description: 'Creates a new item group.', stainlessPath: '(resource) qbd.item_groups > (method) create', qualified: 'client.qbd.itemGroups.create', params: [ 'name: string;', 'shouldPrintItemsInGroup: boolean;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'description?: string;', 'externalId?: string;', 'isActive?: boolean;', 'lines?: { itemId?: string; quantity?: number; unitOfMeasure?: string; }[];', 'unitOfMeasureSetId?: string;', ], response: "{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; lines: { item: { id: string; fullName: string; }; quantity: number; unitOfMeasure: string; }[]; name: string; objectType: 'qbd_item_group'; revisionNumber: string; shouldPrintItemsInGroup: boolean; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.itemGroups.create(name: string, shouldPrintItemsInGroup: boolean, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, description?: string, externalId?: string, isActive?: boolean, lines?: { itemId?: string; quantity?: number; unitOfMeasure?: string; }[], unitOfMeasureSetId?: string): { id: string; barcode: string; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; lines: object[]; name: string; objectType: 'qbd_item_group'; revisionNumber: string; shouldPrintItemsInGroup: boolean; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; unitOfMeasureSet: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/item-groups`\n\nCreates a new item group.\n\n### Parameters\n\n- `name: string`\n The case-insensitive unique name of this item group, unique across all item groups.\n\n**NOTE**: Item groups do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `shouldPrintItemsInGroup: boolean`\n Indicates whether the individual items in this item group and their separate amounts appear on printed forms.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The item group's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `description?: string`\n The item group's description that will appear on sales forms that include this item.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isActive?: boolean`\n Indicates whether this item group is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `lines?: { itemId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The item lines in this item group.\n\n- `unitOfMeasureSetId?: string`\n The unit-of-measure set associated with this item group, which consists of a base unit and related units.\n\n### Returns\n\n- `{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; lines: { item: { id: string; fullName: string; }; quantity: number; unitOfMeasure: string; }[]; name: string; objectType: 'qbd_item_group'; revisionNumber: string; shouldPrintItemsInGroup: boolean; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `lines: { item: { id: string; fullName: string; }; quantity: number; unitOfMeasure: string; }[]`\n - `name: string`\n - `objectType: 'qbd_item_group'`\n - `revisionNumber: string`\n - `shouldPrintItemsInGroup: boolean`\n - `specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst itemGroup = await conductor.qbd.itemGroups.create({\n name: 'Office Supplies Bundle',\n shouldPrintItemsInGroup: true,\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(itemGroup);\n```", perLanguage: { typescript: { method: 'client.qbd.itemGroups.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst itemGroup = await conductor.qbd.itemGroups.create({\n name: 'Office Supplies Bundle',\n shouldPrintItemsInGroup: true,\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(itemGroup.id);", }, python: { method: 'qbd.item_groups.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nitem_group = conductor.qbd.item_groups.create(\n name="Office Supplies Bundle",\n should_print_items_in_group=True,\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(item_group.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/item-groups \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Office Supplies Bundle",\n "shouldPrintItemsInGroup": true,\n "description": "Complete office starter kit with essential supplies for new employees.",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isActive": true,\n "unitOfMeasureSetId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/item-groups', httpMethod: 'get', summary: 'List all item groups', description: 'Returns a list of item groups. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.item_groups > (method) list', qualified: 'client.qbd.itemGroups.list', params: [ 'Conductor-End-User-Id: string;', 'cursor?: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; lines: { item: { id: string; fullName: string; }; quantity: number; unitOfMeasure: string; }[]; name: string; objectType: 'qbd_item_group'; revisionNumber: string; shouldPrintItemsInGroup: boolean; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.itemGroups.list(Conductor-End-User-Id: string, cursor?: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { id: string; barcode: string; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; lines: object[]; name: string; objectType: 'qbd_item_group'; revisionNumber: string; shouldPrintItemsInGroup: boolean; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; unitOfMeasureSet: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/item-groups`\n\nReturns a list of item groups. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific item groups by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for item groups whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for item groups whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for item groups whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific item groups by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for an item group.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for item groups whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for item groups whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for item groups that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for item groups updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for item groups updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; lines: { item: { id: string; fullName: string; }; quantity: number; unitOfMeasure: string; }[]; name: string; objectType: 'qbd_item_group'; revisionNumber: string; shouldPrintItemsInGroup: boolean; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `lines: { item: { id: string; fullName: string; }; quantity: number; unitOfMeasure: string; }[]`\n - `name: string`\n - `objectType: 'qbd_item_group'`\n - `revisionNumber: string`\n - `shouldPrintItemsInGroup: boolean`\n - `specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const itemGroup of conductor.qbd.itemGroups.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(itemGroup);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.itemGroups.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const itemGroup of conductor.qbd.itemGroups.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(itemGroup.id);\n}", }, python: { method: 'qbd.item_groups.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.item_groups.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/item-groups \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/item-groups/{id}', httpMethod: 'get', summary: 'Retrieve an item group', description: 'Retrieves an item group by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific item groups by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.item_groups > (method) retrieve', qualified: 'client.qbd.itemGroups.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; lines: { item: { id: string; fullName: string; }; quantity: number; unitOfMeasure: string; }[]; name: string; objectType: 'qbd_item_group'; revisionNumber: string; shouldPrintItemsInGroup: boolean; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.itemGroups.retrieve(id: string, Conductor-End-User-Id: string): { id: string; barcode: string; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; lines: object[]; name: string; objectType: 'qbd_item_group'; revisionNumber: string; shouldPrintItemsInGroup: boolean; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; unitOfMeasureSet: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/item-groups/{id}`\n\nRetrieves an item group by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific item groups by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the item group to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; lines: { item: { id: string; fullName: string; }; quantity: number; unitOfMeasure: string; }[]; name: string; objectType: 'qbd_item_group'; revisionNumber: string; shouldPrintItemsInGroup: boolean; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `lines: { item: { id: string; fullName: string; }; quantity: number; unitOfMeasure: string; }[]`\n - `name: string`\n - `objectType: 'qbd_item_group'`\n - `revisionNumber: string`\n - `shouldPrintItemsInGroup: boolean`\n - `specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst itemGroup = await conductor.qbd.itemGroups.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(itemGroup);\n```", perLanguage: { typescript: { method: 'client.qbd.itemGroups.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst itemGroup = await conductor.qbd.itemGroups.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(itemGroup.id);", }, python: { method: 'qbd.item_groups.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nitem_group = conductor.qbd.item_groups.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(item_group.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/item-groups/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/item-groups/{id}', httpMethod: 'post', summary: 'Update an item group', description: 'Updates an existing item group.', stainlessPath: '(resource) qbd.item_groups > (method) update', qualified: 'client.qbd.itemGroups.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'clearItemLines?: boolean;', 'description?: string;', 'forceUnitOfMeasureChange?: boolean;', 'isActive?: boolean;', 'lines?: { itemId?: string; quantity?: number; unitOfMeasure?: string; }[];', 'name?: string;', 'shouldPrintItemsInGroup?: boolean;', 'unitOfMeasureSetId?: string;', ], response: "{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; lines: { item: { id: string; fullName: string; }; quantity: number; unitOfMeasure: string; }[]; name: string; objectType: 'qbd_item_group'; revisionNumber: string; shouldPrintItemsInGroup: boolean; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.itemGroups.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, clearItemLines?: boolean, description?: string, forceUnitOfMeasureChange?: boolean, isActive?: boolean, lines?: { itemId?: string; quantity?: number; unitOfMeasure?: string; }[], name?: string, shouldPrintItemsInGroup?: boolean, unitOfMeasureSetId?: string): { id: string; barcode: string; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; lines: object[]; name: string; objectType: 'qbd_item_group'; revisionNumber: string; shouldPrintItemsInGroup: boolean; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; unitOfMeasureSet: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/item-groups/{id}`\n\nUpdates an existing item group.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the item group to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the item group object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The item group's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `clearItemLines?: boolean`\n When `true`, removes all existing item lines associated with this item group. To modify or add individual item lines, use the field `itemLines` instead.\n\n- `description?: string`\n The item group's description that will appear on sales forms that include this item.\n\n- `forceUnitOfMeasureChange?: boolean`\n Indicates whether to allow changing the item group's unit-of-measure set (using the `unitOfMeasureSetId` field) when the base unit of the new unit-of-measure set does not match that of the currently assigned set. Without setting this field to `true` in this scenario, the request will fail with an error; hence, this field is equivalent to accepting the warning prompt in the QuickBooks UI.\n\nNOTE: Changing the base unit requires you to update the item's quantities-on-hand and cost to reflect the new unit; otherwise, these values will be inaccurate. Alternatively, consider creating a new item with the desired unit-of-measure set and deactivating the old item.\n\n- `isActive?: boolean`\n Indicates whether this item group is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `lines?: { itemId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The item lines in this item group.\n\n- `name?: string`\n The case-insensitive unique name of this item group, unique across all item groups.\n\n**NOTE**: Item groups do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `shouldPrintItemsInGroup?: boolean`\n Indicates whether the individual items in this item group and their separate amounts appear on printed forms.\n\n- `unitOfMeasureSetId?: string`\n The unit-of-measure set associated with this item group, which consists of a base unit and related units.\n\n### Returns\n\n- `{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; lines: { item: { id: string; fullName: string; }; quantity: number; unitOfMeasure: string; }[]; name: string; objectType: 'qbd_item_group'; revisionNumber: string; shouldPrintItemsInGroup: boolean; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `lines: { item: { id: string; fullName: string; }; quantity: number; unitOfMeasure: string; }[]`\n - `name: string`\n - `objectType: 'qbd_item_group'`\n - `revisionNumber: string`\n - `shouldPrintItemsInGroup: boolean`\n - `specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst itemGroup = await conductor.qbd.itemGroups.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(itemGroup);\n```", perLanguage: { typescript: { method: 'client.qbd.itemGroups.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst itemGroup = await conductor.qbd.itemGroups.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(itemGroup.id);", }, python: { method: 'qbd.item_groups.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nitem_group = conductor.qbd.item_groups.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(item_group.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/item-groups/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "clearItemLines": false,\n "description": "Complete office starter kit with essential supplies for new employees.",\n "forceUnitOfMeasureChange": false,\n "isActive": true,\n "name": "Office Supplies Bundle",\n "shouldPrintItemsInGroup": true,\n "unitOfMeasureSetId": "80000001-1234567890"\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/item-receipts', httpMethod: 'post', summary: 'Create an item receipt', description: "Creates an item receipt to record inventory received from a vendor. You can link it to a purchase order during creation to pull in the order's lines automatically and update quantities, but that link can't be added later with an update.", stainlessPath: '(resource) qbd.item_receipts > (method) create', qualified: 'client.qbd.itemReceipts.create', params: [ 'transactionDate: string;', 'vendorId: string;', 'Conductor-End-User-Id: string;', 'exchangeRate?: number;', "expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[];", 'externalId?: string;', 'itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[];', "itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'linkToTransactionIds?: string[];', 'memo?: string;', 'payablesAccountId?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', ], response: "{ id: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; liabilityAccount: object; linkedTransactions: object[]; memo: string; objectType: 'qbd_item_receipt'; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; }", markdown: "## create\n\n`conductor.qbd.itemReceipts.create(transactionDate: string, vendorId: string, Conductor-End-User-Id: string, exchangeRate?: number, expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[], externalId?: string, itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[], itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], linkToTransactionIds?: string[], memo?: string, payablesAccountId?: string, refNumber?: string, salesTaxCodeId?: string): { id: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; liabilityAccount: object; linkedTransactions: object[]; memo: string; objectType: 'qbd_item_receipt'; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**post** `/quickbooks-desktop/item-receipts`\n\nCreates an item receipt to record inventory received from a vendor. You can link it to a purchase order during creation to pull in the order's lines automatically and update quantities, but that link can't be added later with an update.\n\n### Parameters\n\n- `transactionDate: string`\n The date of this item receipt, in ISO 8601 format (YYYY-MM-DD).\n\n- `vendorId: string`\n The vendor who sent this item receipt for goods or services purchased.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `exchangeRate?: number`\n The market exchange rate between this item receipt's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[]`\n The item receipt's expense lines, each representing one line in this expense.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The item receipt's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.\n\n- `itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The item receipt's item lines, each representing the purchase of a specific item or service.\n\n- `linkToTransactionIds?: string[]`\n IDs of existing purchase orders that you wish to link to this item receipt. Note that this links entire transactions, not individual transaction lines. If you want to link individual lines in a transaction, instead use the field `linkToTransactionLine` on this item receipt's lines, if available.\n\nTransactions can only be linked when creating this item receipt and cannot be unlinked later.\n\nYou can use both `linkToTransactionIds` (on this item receipt) and `linkToTransactionLine` (on its transaction lines) as long as they do NOT link to the same transaction (otherwise, QuickBooks will return an error). QuickBooks will also return an error if you attempt to link a transaction that is empty or already closed.\n\n**IMPORTANT**: By default, QuickBooks will not return any information about the linked transactions in this endpoint's response even when this request is successful. To see the transactions linked via this field, refetch the item receipt and check the `linkedTransactions` response field. If fetching a list of item receipts, you must also specify the parameter `includeLinkedTransactions=true` to see the `linkedTransactions` response field.\n\n- `memo?: string`\n A memo or note for this item receipt.\n\n- `payablesAccountId?: string`\n The Accounts-Payable (A/P) account to which this item receipt is assigned, used for accounts-payable tracking. If omitted, QuickBooks Desktop uses the default A/P account configured in the company file.\n\n**IMPORTANT**: If this item receipt is linked to other transactions, this A/P account must match the `payablesAccount` used in those other transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this item receipt, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 20 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this item receipt, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the vendor. This can be overridden on the item receipt's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n### Returns\n\n- `{ id: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; liabilityAccount: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_item_receipt'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `liabilityAccount: { id: string; fullName: string; }`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_item_receipt'`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst itemReceipt = await conductor.qbd.itemReceipts.create({\n transactionDate: '2024-10-01',\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(itemReceipt);\n```", perLanguage: { typescript: { method: 'client.qbd.itemReceipts.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst itemReceipt = await conductor.qbd.itemReceipts.create({\n transactionDate: '2024-10-01',\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(itemReceipt.id);", }, python: { method: 'qbd.item_receipts.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nitem_receipt = conductor.qbd.item_receipts.create(\n transaction_date=date.fromisoformat("2024-10-01"),\n vendor_id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(item_receipt.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/item-receipts \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "transactionDate": "2024-10-01",\n "vendorId": "80000001-1234567890",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "memo": "Received 100 units of Product X from Vendor Y",\n "payablesAccountId": "80000001-1234567890",\n "refNumber": "RECEIPT-1234",\n "salesTaxCodeId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/item-receipts', httpMethod: 'get', summary: 'List all item receipts', description: 'Returns a list of item receipts. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.item_receipts > (method) list', qualified: 'client.qbd.itemReceipts.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'ids?: string[];', 'includeLineItems?: boolean;', 'includeLinkedTransactions?: boolean;', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', 'vendorIds?: string[];', ], response: "{ id: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; liabilityAccount: object; linkedTransactions: object[]; memo: string; objectType: 'qbd_item_receipt'; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; }", markdown: "## list\n\n`conductor.qbd.itemReceipts.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, ids?: string[], includeLineItems?: boolean, includeLinkedTransactions?: boolean, limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string, vendorIds?: string[]): { id: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; liabilityAccount: object; linkedTransactions: object[]; memo: string; objectType: 'qbd_item_receipt'; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**get** `/quickbooks-desktop/item-receipts`\n\nReturns a list of item receipts. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for item receipts associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for item receipts in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific item receipts by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `includeLinkedTransactions?: boolean`\n Whether to include linked transactions in the response. Defaults to `false`. For example, a payment linked to the corresponding item receipt.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for item receipts whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for item receipts whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for item receipts whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific item receipts by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for item receipts whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for item receipts whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for item receipts whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for item receipts whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for item receipts updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for item receipts updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `vendorIds?: string[]`\n Filter for item receipts received from these vendors.\n\n### Returns\n\n- `{ id: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; liabilityAccount: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_item_receipt'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `liabilityAccount: { id: string; fullName: string; }`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_item_receipt'`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const itemReceipt of conductor.qbd.itemReceipts.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(itemReceipt);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.itemReceipts.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const itemReceipt of conductor.qbd.itemReceipts.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(itemReceipt.id);\n}", }, python: { method: 'qbd.item_receipts.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.item_receipts.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/item-receipts \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/item-receipts/{id}', httpMethod: 'get', summary: 'Retrieve an item receipt', description: 'Retrieves an item receipt by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific item receipts by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.', stainlessPath: '(resource) qbd.item_receipts > (method) retrieve', qualified: 'client.qbd.itemReceipts.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; liabilityAccount: object; linkedTransactions: object[]; memo: string; objectType: 'qbd_item_receipt'; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; }", markdown: "## retrieve\n\n`conductor.qbd.itemReceipts.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; liabilityAccount: object; linkedTransactions: object[]; memo: string; objectType: 'qbd_item_receipt'; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**get** `/quickbooks-desktop/item-receipts/{id}`\n\nRetrieves an item receipt by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific item receipts by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the item receipt to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; liabilityAccount: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_item_receipt'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `liabilityAccount: { id: string; fullName: string; }`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_item_receipt'`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst itemReceipt = await conductor.qbd.itemReceipts.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(itemReceipt);\n```", perLanguage: { typescript: { method: 'client.qbd.itemReceipts.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst itemReceipt = await conductor.qbd.itemReceipts.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(itemReceipt.id);", }, python: { method: 'qbd.item_receipts.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nitem_receipt = conductor.qbd.item_receipts.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(item_receipt.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/item-receipts/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/item-receipts/{id}', httpMethod: 'post', summary: 'Update an item receipt', description: 'Updates an existing item receipt.\n\n**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.item_receipts > (method) update', qualified: 'client.qbd.itemReceipts.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'clearExpenseLines?: boolean;', 'clearItemLines?: boolean;', 'exchangeRate?: number;', "expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[];", "itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[];", "itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'payablesAccountId?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', 'transactionDate?: string;', 'vendorId?: string;', ], response: "{ id: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; liabilityAccount: object; linkedTransactions: object[]; memo: string; objectType: 'qbd_item_receipt'; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; }", markdown: "## update\n\n`conductor.qbd.itemReceipts.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, clearExpenseLines?: boolean, clearItemLines?: boolean, exchangeRate?: number, expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[], itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[], itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], memo?: string, payablesAccountId?: string, refNumber?: string, salesTaxCodeId?: string, transactionDate?: string, vendorId?: string): { id: string; createdAt: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; liabilityAccount: object; linkedTransactions: object[]; memo: string; objectType: 'qbd_item_receipt'; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**post** `/quickbooks-desktop/item-receipts/{id}`\n\nUpdates an existing item receipt.\n\n**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the item receipt to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the item receipt object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `clearExpenseLines?: boolean`\n When `true`, removes all existing expense lines associated with this item receipt. To modify or add individual expense lines, use the field `expenseLines` instead.\n\n- `clearItemLines?: boolean`\n When `true`, removes all existing item lines associated with this item receipt. To modify or add individual item lines, use the field `itemLines` instead.\n\n- `exchangeRate?: number`\n The market exchange rate between this item receipt's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[]`\n The item receipt's expense lines, each representing one line in this expense.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing expense lines for the item receipt with this array. To keep any existing expense lines, you must include them in this array even if they have not changed. **Any expense lines not included will be removed.**\n\n2. To add a new expense line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any expense lines, omit this field entirely to keep them unchanged.\n\n- `itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The item receipt's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item group lines for the item receipt with this array. To keep any existing item group lines, you must include them in this array even if they have not changed. **Any item group lines not included will be removed.**\n\n2. To add a new item group line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item group lines, omit this field entirely to keep them unchanged.\n\n- `itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The item receipt's item lines, each representing the purchase of a specific item or service.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item lines for the item receipt with this array. To keep any existing item lines, you must include them in this array even if they have not changed. **Any item lines not included will be removed.**\n\n2. To add a new item line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item lines, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this item receipt.\n\n- `payablesAccountId?: string`\n The Accounts-Payable (A/P) account to which this item receipt is assigned, used for accounts-payable tracking. If omitted, QuickBooks Desktop uses the default A/P account configured in the company file.\n\n**IMPORTANT**: If this item receipt is linked to other transactions, this A/P account must match the `payablesAccount` used in those other transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this item receipt, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 20 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this item receipt, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the vendor. This can be overridden on the item receipt's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `transactionDate?: string`\n The date of this item receipt, in ISO 8601 format (YYYY-MM-DD).\n\n- `vendorId?: string`\n The vendor who sent this item receipt for goods or services purchased.\n\n### Returns\n\n- `{ id: string; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; liabilityAccount: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_item_receipt'; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `liabilityAccount: { id: string; fullName: string; }`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_item_receipt'`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst itemReceipt = await conductor.qbd.itemReceipts.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(itemReceipt);\n```", perLanguage: { typescript: { method: 'client.qbd.itemReceipts.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst itemReceipt = await conductor.qbd.itemReceipts.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(itemReceipt.id);", }, python: { method: 'qbd.item_receipts.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nitem_receipt = conductor.qbd.item_receipts.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(item_receipt.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/item-receipts/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "clearExpenseLines": false,\n "clearItemLines": false,\n "exchangeRate": 1.2345,\n "memo": "Received 100 units of Product X from Vendor Y",\n "payablesAccountId": "80000001-1234567890",\n "refNumber": "RECEIPT-1234",\n "salesTaxCodeId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "vendorId": "80000001-1234567890"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/item-receipts/{id}/void', httpMethod: 'post', summary: 'Void an item receipt', description: 'Voids an item receipt by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the item receipt is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.item_receipts > (method) void', qualified: 'client.qbd.itemReceipts.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_item_receipt'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.itemReceipts.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_item_receipt'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/item-receipts/{id}/void`\n\nVoids an item receipt by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the item receipt is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the item receipt to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_item_receipt'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_item_receipt'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.itemReceipts.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.itemReceipts.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.itemReceipts.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.item_receipts.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.item_receipts.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/item-receipts/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/item-receipts/{id}', httpMethod: 'delete', summary: 'Delete an item receipt', description: 'Permanently deletes an item receipt. The deletion will fail if the item receipt is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.item_receipts > (method) delete', qualified: 'client.qbd.itemReceipts.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_item_receipt'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.itemReceipts.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_item_receipt'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/item-receipts/{id}`\n\nPermanently deletes an item receipt. The deletion will fail if the item receipt is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the item receipt to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_item_receipt'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_item_receipt'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst itemReceipt = await conductor.qbd.itemReceipts.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(itemReceipt);\n```", perLanguage: { typescript: { method: 'client.qbd.itemReceipts.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst itemReceipt = await conductor.qbd.itemReceipts.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(itemReceipt.id);", }, python: { method: 'qbd.item_receipts.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nitem_receipt = conductor.qbd.item_receipts.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(item_receipt.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/item-receipts/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/item-sites', httpMethod: 'get', summary: 'List all item sites', description: 'Returns a list of item sites. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.item_sites > (method) list', qualified: 'client.qbd.itemSites.list', params: [ 'Conductor-End-User-Id: string;', 'cursor?: string;', 'ids?: string[];', 'itemIds?: string[];', 'itemType?: string;', 'limit?: number;', 'siteIds?: string[];', "status?: 'active' | 'all' | 'inactive';", ], response: "{ id: string; assemblyBuildPoint: number; createdAt: string; inventoryAssemblyItem: { id: string; fullName: string; }; inventoryItem: { id: string; fullName: string; }; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; objectType: 'qbd_item_site'; quantityOnHand: number; quantityOnPendingTransfers: number; quantityOnPurchaseOrders: number; quantityOnSalesOrders: number; quantityRequiredByPendingBuildTransactions: number; quantityToBeBuiltByPendingBuildTransactions: number; reorderLevel: number; revisionNumber: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.itemSites.list(Conductor-End-User-Id: string, cursor?: string, ids?: string[], itemIds?: string[], itemType?: string, limit?: number, siteIds?: string[], status?: 'active' | 'all' | 'inactive'): { id: string; assemblyBuildPoint: number; createdAt: string; inventoryAssemblyItem: object; inventoryItem: object; inventorySite: object; inventorySiteLocation: object; objectType: 'qbd_item_site'; quantityOnHand: number; quantityOnPendingTransfers: number; quantityOnPurchaseOrders: number; quantityOnSalesOrders: number; quantityRequiredByPendingBuildTransactions: number; quantityToBeBuiltByPendingBuildTransactions: number; reorderLevel: number; revisionNumber: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/item-sites`\n\nReturns a list of item sites. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific item sites by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `itemIds?: string[]`\n Filter for item sites for these items.\n\n**NOTE:** QuickBooks Desktop only supports `itemType` or item/site filters for item-sites requests, not both. Do not use `itemType` together with `itemIds` or `siteIds`.\n\n- `itemType?: string`\n Filter for item sites that match this item type.\n\n**NOTE:** QuickBooks Desktop only supports `itemType` or item/site filters for item-sites requests, not both. Do not use `itemType` together with `itemIds` or `siteIds`.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `siteIds?: string[]`\n Filter for item sites at these sites. A site represents a physical location, such as a warehouse or store.\n\n**NOTE:** QuickBooks Desktop only supports `itemType` or item/site filters for item-sites requests, not both. Do not use `itemType` together with `itemIds` or `siteIds`.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for item sites that are active, inactive, or both.\n\n### Returns\n\n- `{ id: string; assemblyBuildPoint: number; createdAt: string; inventoryAssemblyItem: { id: string; fullName: string; }; inventoryItem: { id: string; fullName: string; }; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; objectType: 'qbd_item_site'; quantityOnHand: number; quantityOnPendingTransfers: number; quantityOnPurchaseOrders: number; quantityOnSalesOrders: number; quantityRequiredByPendingBuildTransactions: number; quantityToBeBuiltByPendingBuildTransactions: number; reorderLevel: number; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `assemblyBuildPoint: number`\n - `createdAt: string`\n - `inventoryAssemblyItem: { id: string; fullName: string; }`\n - `inventoryItem: { id: string; fullName: string; }`\n - `inventorySite: { id: string; fullName: string; }`\n - `inventorySiteLocation: { id: string; fullName: string; }`\n - `objectType: 'qbd_item_site'`\n - `quantityOnHand: number`\n - `quantityOnPendingTransfers: number`\n - `quantityOnPurchaseOrders: number`\n - `quantityOnSalesOrders: number`\n - `quantityRequiredByPendingBuildTransactions: number`\n - `quantityToBeBuiltByPendingBuildTransactions: number`\n - `reorderLevel: number`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const itemSite of conductor.qbd.itemSites.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(itemSite);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.itemSites.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const itemSite of conductor.qbd.itemSites.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(itemSite.id);\n}", }, python: { method: 'qbd.item_sites.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.item_sites.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/item-sites \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/item-sites/{id}', httpMethod: 'get', summary: 'Retrieve an item site', description: 'Retrieves an item site by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific item sites by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.item_sites > (method) retrieve', qualified: 'client.qbd.itemSites.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; assemblyBuildPoint: number; createdAt: string; inventoryAssemblyItem: { id: string; fullName: string; }; inventoryItem: { id: string; fullName: string; }; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; objectType: 'qbd_item_site'; quantityOnHand: number; quantityOnPendingTransfers: number; quantityOnPurchaseOrders: number; quantityOnSalesOrders: number; quantityRequiredByPendingBuildTransactions: number; quantityToBeBuiltByPendingBuildTransactions: number; reorderLevel: number; revisionNumber: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.itemSites.retrieve(id: string, Conductor-End-User-Id: string): { id: string; assemblyBuildPoint: number; createdAt: string; inventoryAssemblyItem: object; inventoryItem: object; inventorySite: object; inventorySiteLocation: object; objectType: 'qbd_item_site'; quantityOnHand: number; quantityOnPendingTransfers: number; quantityOnPurchaseOrders: number; quantityOnSalesOrders: number; quantityRequiredByPendingBuildTransactions: number; quantityToBeBuiltByPendingBuildTransactions: number; reorderLevel: number; revisionNumber: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/item-sites/{id}`\n\nRetrieves an item site by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific item sites by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the item site to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; assemblyBuildPoint: number; createdAt: string; inventoryAssemblyItem: { id: string; fullName: string; }; inventoryItem: { id: string; fullName: string; }; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; objectType: 'qbd_item_site'; quantityOnHand: number; quantityOnPendingTransfers: number; quantityOnPurchaseOrders: number; quantityOnSalesOrders: number; quantityRequiredByPendingBuildTransactions: number; quantityToBeBuiltByPendingBuildTransactions: number; reorderLevel: number; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `assemblyBuildPoint: number`\n - `createdAt: string`\n - `inventoryAssemblyItem: { id: string; fullName: string; }`\n - `inventoryItem: { id: string; fullName: string; }`\n - `inventorySite: { id: string; fullName: string; }`\n - `inventorySiteLocation: { id: string; fullName: string; }`\n - `objectType: 'qbd_item_site'`\n - `quantityOnHand: number`\n - `quantityOnPendingTransfers: number`\n - `quantityOnPurchaseOrders: number`\n - `quantityOnSalesOrders: number`\n - `quantityRequiredByPendingBuildTransactions: number`\n - `quantityToBeBuiltByPendingBuildTransactions: number`\n - `reorderLevel: number`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst itemSite = await conductor.qbd.itemSites.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(itemSite);\n```", perLanguage: { typescript: { method: 'client.qbd.itemSites.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst itemSite = await conductor.qbd.itemSites.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(itemSite.id);", }, python: { method: 'qbd.item_sites.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nitem_site = conductor.qbd.item_sites.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(item_site.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/item-sites/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/journal-entries', httpMethod: 'post', summary: 'Create a journal entry', description: 'Creates a journal entry with balanced debit and credit lines. QuickBooks Desktop requires total debits to equal total credits, and any line that posts to Accounts Receivable or Accounts Payable must include the related customer or vendor reference.', stainlessPath: '(resource) qbd.journal_entries > (method) create', qualified: 'client.qbd.journalEntries.create', params: [ 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'areAmountsEnteredInHomeCurrency?: boolean;', "creditLines?: { accountId: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; entityId?: string; memo?: string; salesTaxItemId?: string; }[];", 'currencyId?: string;', "debitLines?: { accountId: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; entityId?: string; memo?: string; salesTaxItemId?: string; }[];", 'exchangeRate?: number;', 'externalId?: string;', 'isAdjustment?: boolean;', 'isHomeCurrencyAdjustment?: boolean;', 'refNumber?: string;', ], response: "{ id: string; areAmountsEnteredInHomeCurrency: boolean; createdAt: string; creditLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_credit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; debitLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_debit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; exchangeRate: number; externalId: string; isAdjustment: boolean; isHomeCurrencyAdjustment: boolean; objectType: 'qbd_journal_entry'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.journalEntries.create(transactionDate: string, Conductor-End-User-Id: string, areAmountsEnteredInHomeCurrency?: boolean, creditLines?: { accountId: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; entityId?: string; memo?: string; salesTaxItemId?: string; }[], currencyId?: string, debitLines?: { accountId: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; entityId?: string; memo?: string; salesTaxItemId?: string; }[], exchangeRate?: number, externalId?: string, isAdjustment?: boolean, isHomeCurrencyAdjustment?: boolean, refNumber?: string): { id: string; areAmountsEnteredInHomeCurrency: boolean; createdAt: string; creditLines: object[]; currency: object; customFields: object[]; debitLines: object[]; exchangeRate: number; externalId: string; isAdjustment: boolean; isHomeCurrencyAdjustment: boolean; objectType: 'qbd_journal_entry'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/journal-entries`\n\nCreates a journal entry with balanced debit and credit lines. QuickBooks Desktop requires total debits to equal total credits, and any line that posts to Accounts Receivable or Accounts Payable must include the related customer or vendor reference.\n\n### Parameters\n\n- `transactionDate: string`\n The date of this journal entry, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `areAmountsEnteredInHomeCurrency?: boolean`\n Indicates whether the amounts in this journal entry were entered in the company's home currency rather than a foreign currency. When `true`, amounts are in the home currency regardless of the `currency` field.\n\n- `creditLines?: { accountId: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; entityId?: string; memo?: string; salesTaxItemId?: string; }[]`\n The journal entry's credit lines.\n\n- `currencyId?: string`\n The journal entry's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.\n\n- `debitLines?: { accountId: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; entityId?: string; memo?: string; salesTaxItemId?: string; }[]`\n The journal entry's debit lines.\n\n- `exchangeRate?: number`\n The market exchange rate between this journal entry's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isAdjustment?: boolean`\n Indicates whether this journal entry is an adjustment entry. When `true`, QuickBooks retains the original entry information to maintain an audit trail of the adjustments.\n\n- `isHomeCurrencyAdjustment?: boolean`\n Indicates whether this journal entry is an adjustment made in the company's home currency for a transaction that was originally recorded in a foreign currency.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this journal entry, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n### Returns\n\n- `{ id: string; areAmountsEnteredInHomeCurrency: boolean; createdAt: string; creditLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_credit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; debitLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_debit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; exchangeRate: number; externalId: string; isAdjustment: boolean; isHomeCurrencyAdjustment: boolean; objectType: 'qbd_journal_entry'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `areAmountsEnteredInHomeCurrency: boolean`\n - `createdAt: string`\n - `creditLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_credit_line'; salesTaxItem: { id: string; fullName: string; }; }[]`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `debitLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_debit_line'; salesTaxItem: { id: string; fullName: string; }; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `isAdjustment: boolean`\n - `isHomeCurrencyAdjustment: boolean`\n - `objectType: 'qbd_journal_entry'`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst journalEntry = await conductor.qbd.journalEntries.create({ transactionDate: '2024-10-01', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(journalEntry);\n```", perLanguage: { typescript: { method: 'client.qbd.journalEntries.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst journalEntry = await conductor.qbd.journalEntries.create({\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(journalEntry.id);", }, python: { method: 'qbd.journal_entries.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\njournal_entry = conductor.qbd.journal_entries.create(\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(journal_entry.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/journal-entries \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "transactionDate": "2024-10-01",\n "areAmountsEnteredInHomeCurrency": false,\n "currencyId": "80000001-1234567890",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isAdjustment": false,\n "isHomeCurrencyAdjustment": false,\n "refNumber": "JE-1234"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/journal-entries', httpMethod: 'get', summary: 'List all journal entries', description: 'Returns a list of journal entries. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.journal_entries > (method) list', qualified: 'client.qbd.journalEntries.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'entityIds?: string[];', 'ids?: string[];', 'includeLineItems?: boolean;', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; areAmountsEnteredInHomeCurrency: boolean; createdAt: string; creditLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_credit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; debitLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_debit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; exchangeRate: number; externalId: string; isAdjustment: boolean; isHomeCurrencyAdjustment: boolean; objectType: 'qbd_journal_entry'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.journalEntries.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, entityIds?: string[], ids?: string[], includeLineItems?: boolean, limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; areAmountsEnteredInHomeCurrency: boolean; createdAt: string; creditLines: object[]; currency: object; customFields: object[]; debitLines: object[]; exchangeRate: number; externalId: string; isAdjustment: boolean; isHomeCurrencyAdjustment: boolean; objectType: 'qbd_journal_entry'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/journal-entries`\n\nReturns a list of journal entries. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for journal entries associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for journal entries in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `entityIds?: string[]`\n Filter for journal entries associated with these entities (customers, vendors, employees, etc.).\n\n- `ids?: string[]`\n Filter for specific journal entries by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for journal entries whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for journal entries whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for journal entries whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific journal entries by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for journal entries whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for journal entries whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for journal entries whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for journal entries whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for journal entries updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for journal entries updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; areAmountsEnteredInHomeCurrency: boolean; createdAt: string; creditLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_credit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; debitLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_debit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; exchangeRate: number; externalId: string; isAdjustment: boolean; isHomeCurrencyAdjustment: boolean; objectType: 'qbd_journal_entry'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `areAmountsEnteredInHomeCurrency: boolean`\n - `createdAt: string`\n - `creditLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_credit_line'; salesTaxItem: { id: string; fullName: string; }; }[]`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `debitLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_debit_line'; salesTaxItem: { id: string; fullName: string; }; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `isAdjustment: boolean`\n - `isHomeCurrencyAdjustment: boolean`\n - `objectType: 'qbd_journal_entry'`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const journalEntry of conductor.qbd.journalEntries.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(journalEntry);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.journalEntries.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const journalEntry of conductor.qbd.journalEntries.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(journalEntry.id);\n}", }, python: { method: 'qbd.journal_entries.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.journal_entries.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/journal-entries \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/journal-entries/{id}', httpMethod: 'get', summary: 'Retrieve a journal entry', description: 'Retrieves a journal entry by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific journal entries by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.journal_entries > (method) retrieve', qualified: 'client.qbd.journalEntries.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; areAmountsEnteredInHomeCurrency: boolean; createdAt: string; creditLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_credit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; debitLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_debit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; exchangeRate: number; externalId: string; isAdjustment: boolean; isHomeCurrencyAdjustment: boolean; objectType: 'qbd_journal_entry'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.journalEntries.retrieve(id: string, Conductor-End-User-Id: string): { id: string; areAmountsEnteredInHomeCurrency: boolean; createdAt: string; creditLines: object[]; currency: object; customFields: object[]; debitLines: object[]; exchangeRate: number; externalId: string; isAdjustment: boolean; isHomeCurrencyAdjustment: boolean; objectType: 'qbd_journal_entry'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/journal-entries/{id}`\n\nRetrieves a journal entry by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific journal entries by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the journal entry to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; areAmountsEnteredInHomeCurrency: boolean; createdAt: string; creditLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_credit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; debitLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_debit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; exchangeRate: number; externalId: string; isAdjustment: boolean; isHomeCurrencyAdjustment: boolean; objectType: 'qbd_journal_entry'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `areAmountsEnteredInHomeCurrency: boolean`\n - `createdAt: string`\n - `creditLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_credit_line'; salesTaxItem: { id: string; fullName: string; }; }[]`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `debitLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_debit_line'; salesTaxItem: { id: string; fullName: string; }; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `isAdjustment: boolean`\n - `isHomeCurrencyAdjustment: boolean`\n - `objectType: 'qbd_journal_entry'`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst journalEntry = await conductor.qbd.journalEntries.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(journalEntry);\n```", perLanguage: { typescript: { method: 'client.qbd.journalEntries.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst journalEntry = await conductor.qbd.journalEntries.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(journalEntry.id);", }, python: { method: 'qbd.journal_entries.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\njournal_entry = conductor.qbd.journal_entries.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(journal_entry.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/journal-entries/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/journal-entries/{id}', httpMethod: 'post', summary: 'Update a journal entry', description: 'Updates an existing journal entry. Keep the debits and credits in balance, and include the related customer or vendor on any A/R or A/P line you submit in the update body.\n\n**NOTE:** If you include `lines`, QuickBooks Desktop replaces that line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.journal_entries > (method) update', qualified: 'client.qbd.journalEntries.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'areAmountsEnteredInHomeCurrency?: boolean;', 'currencyId?: string;', 'exchangeRate?: number;', 'isAdjustment?: boolean;', "lines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; entityId?: string; journalLineType?: 'debit' | 'credit'; memo?: string; salesTaxItemId?: string; }[];", 'refNumber?: string;', 'transactionDate?: string;', ], response: "{ id: string; areAmountsEnteredInHomeCurrency: boolean; createdAt: string; creditLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_credit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; debitLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_debit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; exchangeRate: number; externalId: string; isAdjustment: boolean; isHomeCurrencyAdjustment: boolean; objectType: 'qbd_journal_entry'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.journalEntries.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, areAmountsEnteredInHomeCurrency?: boolean, currencyId?: string, exchangeRate?: number, isAdjustment?: boolean, lines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; entityId?: string; journalLineType?: 'debit' | 'credit'; memo?: string; salesTaxItemId?: string; }[], refNumber?: string, transactionDate?: string): { id: string; areAmountsEnteredInHomeCurrency: boolean; createdAt: string; creditLines: object[]; currency: object; customFields: object[]; debitLines: object[]; exchangeRate: number; externalId: string; isAdjustment: boolean; isHomeCurrencyAdjustment: boolean; objectType: 'qbd_journal_entry'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/journal-entries/{id}`\n\nUpdates an existing journal entry. Keep the debits and credits in balance, and include the related customer or vendor on any A/R or A/P line you submit in the update body.\n\n**NOTE:** If you include `lines`, QuickBooks Desktop replaces that line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the journal entry to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the journal entry object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `areAmountsEnteredInHomeCurrency?: boolean`\n Indicates whether the amounts in this journal entry were entered in the company's home currency rather than a foreign currency. When `true`, amounts are in the home currency regardless of the `currency` field.\n\n- `currencyId?: string`\n The journal entry's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.\n\n- `exchangeRate?: number`\n The market exchange rate between this journal entry's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `isAdjustment?: boolean`\n Indicates whether this journal entry is an adjustment entry. When `true`, QuickBooks retains the original entry information to maintain an audit trail of the adjustments.\n\n- `lines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; entityId?: string; journalLineType?: 'debit' | 'credit'; memo?: string; salesTaxItemId?: string; }[]`\n The journal entry's credit and debit lines.\n\n**IMPORTANT**: When updating journal entries, you must include ALL existing journal lines (both credit and debit) in your update request, even if you only want to modify a single line. QuickBooks will automatically delete any existing lines that are not included in the update request, which is why all lines must be provided in a single array when updating.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this journal entry, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 11 characters.\n\n- `transactionDate?: string`\n The date of this journal entry, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; areAmountsEnteredInHomeCurrency: boolean; createdAt: string; creditLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_credit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; debitLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_debit_line'; salesTaxItem: { id: string; fullName: string; }; }[]; exchangeRate: number; externalId: string; isAdjustment: boolean; isHomeCurrencyAdjustment: boolean; objectType: 'qbd_journal_entry'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `areAmountsEnteredInHomeCurrency: boolean`\n - `createdAt: string`\n - `creditLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_credit_line'; salesTaxItem: { id: string; fullName: string; }; }[]`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `debitLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; memo: string; objectType: 'qbd_journal_debit_line'; salesTaxItem: { id: string; fullName: string; }; }[]`\n - `exchangeRate: number`\n - `externalId: string`\n - `isAdjustment: boolean`\n - `isHomeCurrencyAdjustment: boolean`\n - `objectType: 'qbd_journal_entry'`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst journalEntry = await conductor.qbd.journalEntries.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(journalEntry);\n```", perLanguage: { typescript: { method: 'client.qbd.journalEntries.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst journalEntry = await conductor.qbd.journalEntries.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(journalEntry.id);", }, python: { method: 'qbd.journal_entries.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\njournal_entry = conductor.qbd.journal_entries.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(journal_entry.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/journal-entries/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "areAmountsEnteredInHomeCurrency": false,\n "currencyId": "80000001-1234567890",\n "exchangeRate": 1.2345,\n "isAdjustment": false,\n "refNumber": "JE-1234",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/journal-entries/{id}/void', httpMethod: 'post', summary: 'Void a journal entry', description: 'Voids a journal entry by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the journal entry is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.journal_entries > (method) void', qualified: 'client.qbd.journalEntries.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_journal_entry'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.journalEntries.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_journal_entry'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/journal-entries/{id}/void`\n\nVoids a journal entry by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the journal entry is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the journal entry to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_journal_entry'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_journal_entry'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.journalEntries.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.journalEntries.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.journalEntries.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.journal_entries.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.journal_entries.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/journal-entries/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/journal-entries/{id}', httpMethod: 'delete', summary: 'Delete a journal entry', description: 'Permanently deletes a journal entry. The deletion will fail if the journal entry is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.journal_entries > (method) delete', qualified: 'client.qbd.journalEntries.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_journal_entry'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.journalEntries.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_journal_entry'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/journal-entries/{id}`\n\nPermanently deletes a journal entry. The deletion will fail if the journal entry is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the journal entry to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_journal_entry'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_journal_entry'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst journalEntry = await conductor.qbd.journalEntries.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(journalEntry);\n```", perLanguage: { typescript: { method: 'client.qbd.journalEntries.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst journalEntry = await conductor.qbd.journalEntries.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(journalEntry.id);", }, python: { method: 'qbd.journal_entries.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\njournal_entry = conductor.qbd.journal_entries.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(journal_entry.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/journal-entries/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/non-inventory-items', httpMethod: 'post', summary: 'Create a non-inventory item', description: 'Creates a new non-inventory item.', stainlessPath: '(resource) qbd.non_inventory_items > (method) create', qualified: 'client.qbd.nonInventoryItems.create', params: [ 'name: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'classId?: string;', 'externalId?: string;', 'isActive?: boolean;', 'parentId?: string;', 'salesAndPurchaseDetails?: { expenseAccountId: string; incomeAccountId: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; };', 'salesOrPurchaseDetails?: { postingAccountId: string; description?: string; price?: string; pricePercentage?: string; };', 'salesTaxCodeId?: string;', 'sku?: string;', 'unitOfMeasureSetId?: string;', ], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_non_inventory_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.nonInventoryItems.create(name: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, classId?: string, externalId?: string, isActive?: boolean, parentId?: string, salesAndPurchaseDetails?: { expenseAccountId: string; incomeAccountId: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; }, salesOrPurchaseDetails?: { postingAccountId: string; description?: string; price?: string; pricePercentage?: string; }, salesTaxCodeId?: string, sku?: string, unitOfMeasureSetId?: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_non_inventory_item'; parent: object; revisionNumber: string; salesAndPurchaseDetails: object; salesOrPurchaseDetails: object; salesTaxCode: object; sku: string; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/non-inventory-items`\n\nCreates a new non-inventory item.\n\n### Parameters\n\n- `name: string`\n The case-insensitive name of this non-inventory item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two non-inventory items could both have the `name` \"Printer Ink Cartridge\", but they could have unique `fullName` values, such as \"Office Supplies:Printer Ink Cartridge\" and \"Miscellaneous:Printer Ink Cartridge\".\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The non-inventory item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `classId?: string`\n The non-inventory item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isActive?: boolean`\n Indicates whether this non-inventory item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `parentId?: string`\n The parent non-inventory item one level above this one in the hierarchy. For example, if this non-inventory item has a `fullName` of \"Office Supplies:Printer Ink Cartridge\", its parent has a `fullName` of \"Office Supplies\". If this non-inventory item is at the top level, this field will be `null`.\n\n- `salesAndPurchaseDetails?: { expenseAccountId: string; incomeAccountId: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; }`\n Details for non-inventory items that are both purchased and sold, such as reimbursable expenses or inventory items that are bought from vendors and sold to customers.\n\n**IMPORTANT**: You must specify either `salesAndPurchaseDetails` or `salesOrPurchaseDetails` when creating a non-inventory item, but never both because an item cannot have both configurations.\n - `expenseAccountId: string`\n The expense account used to track costs from purchases of this item.\n - `incomeAccountId: string`\n The income account used to track revenue from sales of this item.\n - `preferredVendorId?: string`\n The preferred vendor from whom this item is typically purchased.\n - `purchaseCost?: string`\n The cost at which this item is purchased from vendors, represented as a decimal string.\n - `purchaseDescription?: string`\n The description of this item that appears on purchase forms (e.g., checks, bills, item receipts) when it is ordered or bought from vendors.\n - `purchaseTaxCodeId?: string`\n The tax code applied to purchases of this item. Applicable in regions where purchase taxes are used, such as Canada or the UK.\n - `salesDescription?: string`\n The description of this item that appears on sales forms (e.g., invoices, sales receipts) when sold to customers.\n - `salesPrice?: string`\n The price at which this item is sold to customers, represented as a decimal string.\n\n- `salesOrPurchaseDetails?: { postingAccountId: string; description?: string; price?: string; pricePercentage?: string; }`\n Details for non-inventory items that are exclusively sold or exclusively purchased, but not both. This typically applies to non-inventory items (like a purchased office supply that isn't resold) or service items (like consulting services that are sold but not purchased).\n\n**IMPORTANT**: You must specify either `salesOrPurchaseDetails` or `salesAndPurchaseDetails` when creating a non-inventory item, but never both because an item cannot have both configurations.\n - `postingAccountId: string`\n The posting account to which transactions involving this item are posted. This could be an income account when selling or an expense account when purchasing.\n - `description?: string`\n A description of this item.\n - `price?: string`\n The price at which this item is purchased or sold, represented as a decimal string.\n - `pricePercentage?: string`\n The price of this item expressed as a percentage, used instead of `price` when the item's cost is calculated as a percentage of another amount. For example, a service item that costs a percentage of another item's price.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for this non-inventory item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `sku?: string`\n The non-inventory item's stock keeping unit (SKU), which is sometimes the manufacturer's part number.\n\n- `unitOfMeasureSetId?: string`\n The unit-of-measure set associated with this non-inventory item, which consists of a base unit and related units.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_non_inventory_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_non_inventory_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }`\n - `salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sku: string`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst nonInventoryItem = await conductor.qbd.nonInventoryItems.create({ name: 'Printer Ink Cartridge', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(nonInventoryItem);\n```", perLanguage: { typescript: { method: 'client.qbd.nonInventoryItems.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst nonInventoryItem = await conductor.qbd.nonInventoryItems.create({\n name: 'Printer Ink Cartridge',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(nonInventoryItem.id);", }, python: { method: 'qbd.non_inventory_items.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nnon_inventory_item = conductor.qbd.non_inventory_items.create(\n name="Printer Ink Cartridge",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(non_inventory_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/non-inventory-items \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Printer Ink Cartridge",\n "classId": "80000001-1234567890",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isActive": true,\n "parentId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "sku": "MPN-123456",\n "unitOfMeasureSetId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/non-inventory-items', httpMethod: 'get', summary: 'List all non-inventory items', description: 'Returns a list of non-inventory items. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.non_inventory_items > (method) list', qualified: 'client.qbd.nonInventoryItems.list', params: [ 'Conductor-End-User-Id: string;', 'classIds?: string[];', 'cursor?: string;', 'fullNames?: string[];', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_non_inventory_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.nonInventoryItems.list(Conductor-End-User-Id: string, classIds?: string[], cursor?: string, fullNames?: string[], ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_non_inventory_item'; parent: object; revisionNumber: string; salesAndPurchaseDetails: object; salesOrPurchaseDetails: object; salesTaxCode: object; sku: string; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/non-inventory-items`\n\nReturns a list of non-inventory items. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classIds?: string[]`\n Filter for non-inventory items of these classes. A class is a way end-users can categorize non-inventory items in QuickBooks.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `fullNames?: string[]`\n Filter for specific non-inventory items by their full-name(s), case-insensitive. Like `id`, `fullName` is a unique identifier for a non-inventory item, formed by by combining the names of its parent objects with its own `name`, separated by colons. For example, if a non-inventory item is under \"Office Supplies\" and has the `name` \"Printer Ink Cartridge\", its `fullName` would be \"Office Supplies:Printer Ink Cartridge\".\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `ids?: string[]`\n Filter for specific non-inventory items by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for non-inventory items whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for non-inventory items whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for non-inventory items whose `name` is alphabetically greater than or equal to this value.\n\n- `nameStartsWith?: string`\n Filter for non-inventory items whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for non-inventory items whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for non-inventory items that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for non-inventory items updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for non-inventory items updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_non_inventory_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_non_inventory_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }`\n - `salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sku: string`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const nonInventoryItem of conductor.qbd.nonInventoryItems.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(nonInventoryItem);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.nonInventoryItems.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const nonInventoryItem of conductor.qbd.nonInventoryItems.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(nonInventoryItem.id);\n}", }, python: { method: 'qbd.non_inventory_items.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.non_inventory_items.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/non-inventory-items \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/non-inventory-items/{id}', httpMethod: 'get', summary: 'Retrieve a non-inventory item', description: 'Retrieves a non-inventory item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific non-inventory items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.non_inventory_items > (method) retrieve', qualified: 'client.qbd.nonInventoryItems.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_non_inventory_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.nonInventoryItems.retrieve(id: string, Conductor-End-User-Id: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_non_inventory_item'; parent: object; revisionNumber: string; salesAndPurchaseDetails: object; salesOrPurchaseDetails: object; salesTaxCode: object; sku: string; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/non-inventory-items/{id}`\n\nRetrieves a non-inventory item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific non-inventory items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the non-inventory item to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_non_inventory_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_non_inventory_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }`\n - `salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sku: string`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst nonInventoryItem = await conductor.qbd.nonInventoryItems.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(nonInventoryItem);\n```", perLanguage: { typescript: { method: 'client.qbd.nonInventoryItems.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst nonInventoryItem = await conductor.qbd.nonInventoryItems.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(nonInventoryItem.id);", }, python: { method: 'qbd.non_inventory_items.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nnon_inventory_item = conductor.qbd.non_inventory_items.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(non_inventory_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/non-inventory-items/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/non-inventory-items/{id}', httpMethod: 'post', summary: 'Update a non-inventory item', description: 'Updates a non-inventory item. You can modify either `salesOrPurchaseDetails` or `salesAndPurchaseDetails`, but the item must keep the same configuration it was created with. When you change `postingAccount`, `incomeAccount`, or `expenseAccount`, include the matching `updateExistingTransactions...` flag so QuickBooks applies the new account to existing transactions and doesn’t reject the update when historical activity is present.', stainlessPath: '(resource) qbd.non_inventory_items > (method) update', qualified: 'client.qbd.nonInventoryItems.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'classId?: string;', 'forceUnitOfMeasureChange?: boolean;', 'isActive?: boolean;', 'name?: string;', 'parentId?: string;', 'salesAndPurchaseDetails?: { expenseAccountId?: string; incomeAccountId?: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; updateExistingTransactionsExpenseAccount?: boolean; updateExistingTransactionsIncomeAccount?: boolean; };', 'salesOrPurchaseDetails?: { description?: string; postingAccountId?: string; price?: string; pricePercentage?: string; updateExistingTransactionsAccount?: boolean; };', 'salesTaxCodeId?: string;', 'sku?: string;', 'unitOfMeasureSetId?: string;', ], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_non_inventory_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.nonInventoryItems.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, classId?: string, forceUnitOfMeasureChange?: boolean, isActive?: boolean, name?: string, parentId?: string, salesAndPurchaseDetails?: { expenseAccountId?: string; incomeAccountId?: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; updateExistingTransactionsExpenseAccount?: boolean; updateExistingTransactionsIncomeAccount?: boolean; }, salesOrPurchaseDetails?: { description?: string; postingAccountId?: string; price?: string; pricePercentage?: string; updateExistingTransactionsAccount?: boolean; }, salesTaxCodeId?: string, sku?: string, unitOfMeasureSetId?: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_non_inventory_item'; parent: object; revisionNumber: string; salesAndPurchaseDetails: object; salesOrPurchaseDetails: object; salesTaxCode: object; sku: string; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/non-inventory-items/{id}`\n\nUpdates a non-inventory item. You can modify either `salesOrPurchaseDetails` or `salesAndPurchaseDetails`, but the item must keep the same configuration it was created with. When you change `postingAccount`, `incomeAccount`, or `expenseAccount`, include the matching `updateExistingTransactions...` flag so QuickBooks applies the new account to existing transactions and doesn’t reject the update when historical activity is present.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the non-inventory item to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the non-inventory item object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The non-inventory item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `classId?: string`\n The non-inventory item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `forceUnitOfMeasureChange?: boolean`\n Indicates whether to allow changing the non-inventory item's unit-of-measure set (using the `unitOfMeasureSetId` field) when the base unit of the new unit-of-measure set does not match that of the currently assigned set. Without setting this field to `true` in this scenario, the request will fail with an error; hence, this field is equivalent to accepting the warning prompt in the QuickBooks UI.\n\nNOTE: Changing the base unit requires you to update the item's quantities-on-hand and cost to reflect the new unit; otherwise, these values will be inaccurate. Alternatively, consider creating a new item with the desired unit-of-measure set and deactivating the old item.\n\n- `isActive?: boolean`\n Indicates whether this non-inventory item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `name?: string`\n The case-insensitive name of this non-inventory item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two non-inventory items could both have the `name` \"Printer Ink Cartridge\", but they could have unique `fullName` values, such as \"Office Supplies:Printer Ink Cartridge\" and \"Miscellaneous:Printer Ink Cartridge\".\n\nMaximum length: 31 characters.\n\n- `parentId?: string`\n The parent non-inventory item one level above this one in the hierarchy. For example, if this non-inventory item has a `fullName` of \"Office Supplies:Printer Ink Cartridge\", its parent has a `fullName` of \"Office Supplies\". If this non-inventory item is at the top level, this field will be `null`.\n\n- `salesAndPurchaseDetails?: { expenseAccountId?: string; incomeAccountId?: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; updateExistingTransactionsExpenseAccount?: boolean; updateExistingTransactionsIncomeAccount?: boolean; }`\n Details for non-inventory items that are both purchased and sold, such as reimbursable expenses or inventory items that are bought from vendors and sold to customers.\n\n**IMPORTANT**: You cannot specify both `salesAndPurchaseDetails` and `salesOrPurchaseDetails` when modifying a non-inventory item because an item cannot have both configurations.\n - `expenseAccountId?: string`\n The expense account used to track costs from purchases of this item.\n - `incomeAccountId?: string`\n The income account used to track revenue from sales of this item.\n - `preferredVendorId?: string`\n The preferred vendor from whom this item is typically purchased.\n - `purchaseCost?: string`\n The cost at which this item is purchased from vendors, represented as a decimal string.\n - `purchaseDescription?: string`\n The description of this item that appears on purchase forms (e.g., checks, bills, item receipts) when it is ordered or bought from vendors.\n - `purchaseTaxCodeId?: string`\n The tax code applied to purchases of this item. Applicable in regions where purchase taxes are used, such as Canada or the UK.\n - `salesDescription?: string`\n The description of this item that appears on sales forms (e.g., invoices, sales receipts) when sold to customers.\n - `salesPrice?: string`\n The price at which this item is sold to customers, represented as a decimal string.\n - `updateExistingTransactionsExpenseAccount?: boolean`\n When `true`, applies the new expense account (specified by the `expenseAccountId` field) to all existing transactions that use this item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n - `updateExistingTransactionsIncomeAccount?: boolean`\n When `true`, applies the new income account (specified by the `incomeAccountId` field) to all existing transactions that use this item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n\n- `salesOrPurchaseDetails?: { description?: string; postingAccountId?: string; price?: string; pricePercentage?: string; updateExistingTransactionsAccount?: boolean; }`\n Details for non-inventory items that are exclusively sold or exclusively purchased, but not both. This typically applies to non-inventory items (like a purchased office supply that isn't resold) or service items (like consulting services that are sold but not purchased).\n\n**IMPORTANT**: You cannot specify both `salesOrPurchaseDetails` and `salesAndPurchaseDetails` when modifying a non-inventory item because an item cannot have both configurations.\n - `description?: string`\n A description of this item.\n - `postingAccountId?: string`\n The posting account to which transactions involving this item are posted. This could be an income account when selling or an expense account when purchasing.\n - `price?: string`\n The price at which this item is purchased or sold, represented as a decimal string.\n - `pricePercentage?: string`\n The price of this item expressed as a percentage, used instead of `price` when the item's cost is calculated as a percentage of another amount. For example, a service item that costs a percentage of another item's price.\n - `updateExistingTransactionsAccount?: boolean`\n When `true`, applies the new account (specified by the `accountId` field) to all existing transactions associated with this item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for this non-inventory item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `sku?: string`\n The non-inventory item's stock keeping unit (SKU), which is sometimes the manufacturer's part number.\n\n- `unitOfMeasureSetId?: string`\n The unit-of-measure set associated with this non-inventory item, which consists of a base unit and related units.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_non_inventory_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sku: string; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_non_inventory_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }`\n - `salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sku: string`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst nonInventoryItem = await conductor.qbd.nonInventoryItems.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(nonInventoryItem);\n```", perLanguage: { typescript: { method: 'client.qbd.nonInventoryItems.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst nonInventoryItem = await conductor.qbd.nonInventoryItems.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(nonInventoryItem.id);", }, python: { method: 'qbd.non_inventory_items.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nnon_inventory_item = conductor.qbd.non_inventory_items.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(non_inventory_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/non-inventory-items/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "classId": "80000001-1234567890",\n "forceUnitOfMeasureChange": false,\n "isActive": true,\n "name": "Printer Ink Cartridge",\n "parentId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "sku": "MPN-123456",\n "unitOfMeasureSetId": "80000001-1234567890"\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/other-charge-items', httpMethod: 'post', summary: 'Create an other charge item', description: 'Creates a new other charge item.', stainlessPath: '(resource) qbd.other_charge_items > (method) create', qualified: 'client.qbd.otherChargeItems.create', params: [ 'name: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'classId?: string;', 'externalId?: string;', 'isActive?: boolean;', 'parentId?: string;', 'salesAndPurchaseDetails?: { expenseAccountId: string; incomeAccountId: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; };', 'salesOrPurchaseDetails?: { postingAccountId: string; description?: string; price?: string; pricePercentage?: string; };', 'salesTaxCodeId?: string;', ], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_other_charge_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; sublevel: number; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.otherChargeItems.create(name: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, classId?: string, externalId?: string, isActive?: boolean, parentId?: string, salesAndPurchaseDetails?: { expenseAccountId: string; incomeAccountId: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; }, salesOrPurchaseDetails?: { postingAccountId: string; description?: string; price?: string; pricePercentage?: string; }, salesTaxCodeId?: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_other_charge_item'; parent: object; revisionNumber: string; salesAndPurchaseDetails: object; salesOrPurchaseDetails: object; salesTaxCode: object; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; sublevel: number; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/other-charge-items`\n\nCreates a new other charge item.\n\n### Parameters\n\n- `name: string`\n The case-insensitive name of this other charge item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two other charge items could both have the `name` \"Overnight Delivery\", but they could have unique `fullName` values, such as \"Shipping Charges:Overnight Delivery\" and \"Misc Fees:Overnight Delivery\".\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The other charge item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `classId?: string`\n The other charge item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isActive?: boolean`\n Indicates whether this other charge item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `parentId?: string`\n The parent other charge item one level above this one in the hierarchy. For example, if this other charge item has a `fullName` of \"Shipping Charges:Overnight Delivery\", its parent has a `fullName` of \"Shipping Charges\". If this other charge item is at the top level, this field will be `null`.\n\n- `salesAndPurchaseDetails?: { expenseAccountId: string; incomeAccountId: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; }`\n Details for other charge items that are both purchased and sold, such as reimbursable expenses or inventory items that are bought from vendors and sold to customers.\n\n**IMPORTANT**: You must specify either `salesAndPurchaseDetails` or `salesOrPurchaseDetails` when creating an other charge item, but never both because an item cannot have both configurations.\n - `expenseAccountId: string`\n The expense account used to track costs from purchases of this item.\n - `incomeAccountId: string`\n The income account used to track revenue from sales of this item.\n - `preferredVendorId?: string`\n The preferred vendor from whom this item is typically purchased.\n - `purchaseCost?: string`\n The cost at which this item is purchased from vendors, represented as a decimal string.\n - `purchaseDescription?: string`\n The description of this item that appears on purchase forms (e.g., checks, bills, item receipts) when it is ordered or bought from vendors.\n - `purchaseTaxCodeId?: string`\n The tax code applied to purchases of this item. Applicable in regions where purchase taxes are used, such as Canada or the UK.\n - `salesDescription?: string`\n The description of this item that appears on sales forms (e.g., invoices, sales receipts) when sold to customers.\n - `salesPrice?: string`\n The price at which this item is sold to customers, represented as a decimal string.\n\n- `salesOrPurchaseDetails?: { postingAccountId: string; description?: string; price?: string; pricePercentage?: string; }`\n Details for other charge items that are exclusively sold or exclusively purchased, but not both. This typically applies to non-inventory items (like a purchased office supply that isn't resold) or service items (like consulting services that are sold but not purchased).\n\n**IMPORTANT**: You must specify either `salesOrPurchaseDetails` or `salesAndPurchaseDetails` when creating an other charge item, but never both because an item cannot have both configurations.\n - `postingAccountId: string`\n The posting account to which transactions involving this item are posted. This could be an income account when selling or an expense account when purchasing.\n - `description?: string`\n A description of this item.\n - `price?: string`\n The price at which this item is purchased or sold, represented as a decimal string.\n - `pricePercentage?: string`\n The price of this item expressed as a percentage, used instead of `price` when the item's cost is calculated as a percentage of another amount. For example, a service item that costs a percentage of another item's price.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for this other charge item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_other_charge_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_other_charge_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }`\n - `salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst otherChargeItem = await conductor.qbd.otherChargeItems.create({ name: 'Overnight Delivery', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(otherChargeItem);\n```", perLanguage: { typescript: { method: 'client.qbd.otherChargeItems.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst otherChargeItem = await conductor.qbd.otherChargeItems.create({\n name: 'Overnight Delivery',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(otherChargeItem.id);", }, python: { method: 'qbd.other_charge_items.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nother_charge_item = conductor.qbd.other_charge_items.create(\n name="Overnight Delivery",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(other_charge_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/other-charge-items \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Overnight Delivery",\n "classId": "80000001-1234567890",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isActive": true,\n "parentId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/other-charge-items', httpMethod: 'get', summary: 'List all other charge items', description: 'Returns a list of other charge items. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.other_charge_items > (method) list', qualified: 'client.qbd.otherChargeItems.list', params: [ 'Conductor-End-User-Id: string;', 'classIds?: string[];', 'cursor?: string;', 'fullNames?: string[];', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_other_charge_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; sublevel: number; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.otherChargeItems.list(Conductor-End-User-Id: string, classIds?: string[], cursor?: string, fullNames?: string[], ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_other_charge_item'; parent: object; revisionNumber: string; salesAndPurchaseDetails: object; salesOrPurchaseDetails: object; salesTaxCode: object; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; sublevel: number; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/other-charge-items`\n\nReturns a list of other charge items. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classIds?: string[]`\n Filter for other charge items of these classes. A class is a way end-users can categorize other charge items in QuickBooks.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `fullNames?: string[]`\n Filter for specific other charge items by their full-name(s), case-insensitive. Like `id`, `fullName` is a unique identifier for an other charge item, formed by by combining the names of its parent objects with its own `name`, separated by colons. For example, if an other charge item is under \"Shipping Charges\" and has the `name` \"Overnight Delivery\", its `fullName` would be \"Shipping Charges:Overnight Delivery\".\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `ids?: string[]`\n Filter for specific other charge items by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for other charge items whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for other charge items whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for other charge items whose `name` is alphabetically greater than or equal to this value.\n\n- `nameStartsWith?: string`\n Filter for other charge items whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for other charge items whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for other charge items that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for other charge items updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for other charge items updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_other_charge_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_other_charge_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }`\n - `salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const otherChargeItem of conductor.qbd.otherChargeItems.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(otherChargeItem);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.otherChargeItems.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const otherChargeItem of conductor.qbd.otherChargeItems.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(otherChargeItem.id);\n}", }, python: { method: 'qbd.other_charge_items.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.other_charge_items.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/other-charge-items \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/other-charge-items/{id}', httpMethod: 'get', summary: 'Retrieve an other charge item', description: 'Retrieves an other charge item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific other charge items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.other_charge_items > (method) retrieve', qualified: 'client.qbd.otherChargeItems.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_other_charge_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; sublevel: number; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.otherChargeItems.retrieve(id: string, Conductor-End-User-Id: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_other_charge_item'; parent: object; revisionNumber: string; salesAndPurchaseDetails: object; salesOrPurchaseDetails: object; salesTaxCode: object; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; sublevel: number; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/other-charge-items/{id}`\n\nRetrieves an other charge item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific other charge items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the other charge item to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_other_charge_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_other_charge_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }`\n - `salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst otherChargeItem = await conductor.qbd.otherChargeItems.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(otherChargeItem);\n```", perLanguage: { typescript: { method: 'client.qbd.otherChargeItems.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst otherChargeItem = await conductor.qbd.otherChargeItems.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(otherChargeItem.id);", }, python: { method: 'qbd.other_charge_items.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nother_charge_item = conductor.qbd.other_charge_items.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(other_charge_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/other-charge-items/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/other-charge-items/{id}', httpMethod: 'post', summary: 'Update an other charge item', description: 'Updates an existing other charge item.', stainlessPath: '(resource) qbd.other_charge_items > (method) update', qualified: 'client.qbd.otherChargeItems.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'classId?: string;', 'isActive?: boolean;', 'name?: string;', 'parentId?: string;', 'salesAndPurchaseDetails?: { expenseAccountId?: string; incomeAccountId?: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; updateExistingTransactionsExpenseAccount?: boolean; updateExistingTransactionsIncomeAccount?: boolean; };', 'salesOrPurchaseDetails?: { description?: string; postingAccountId?: string; price?: string; pricePercentage?: string; updateExistingTransactionsAccount?: boolean; };', 'salesTaxCodeId?: string;', ], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_other_charge_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; sublevel: number; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.otherChargeItems.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, classId?: string, isActive?: boolean, name?: string, parentId?: string, salesAndPurchaseDetails?: { expenseAccountId?: string; incomeAccountId?: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; updateExistingTransactionsExpenseAccount?: boolean; updateExistingTransactionsIncomeAccount?: boolean; }, salesOrPurchaseDetails?: { description?: string; postingAccountId?: string; price?: string; pricePercentage?: string; updateExistingTransactionsAccount?: boolean; }, salesTaxCodeId?: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_other_charge_item'; parent: object; revisionNumber: string; salesAndPurchaseDetails: object; salesOrPurchaseDetails: object; salesTaxCode: object; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; sublevel: number; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/other-charge-items/{id}`\n\nUpdates an existing other charge item.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the other charge item to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the other charge item object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The other charge item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `classId?: string`\n The other charge item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `isActive?: boolean`\n Indicates whether this other charge item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `name?: string`\n The case-insensitive name of this other charge item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two other charge items could both have the `name` \"Overnight Delivery\", but they could have unique `fullName` values, such as \"Shipping Charges:Overnight Delivery\" and \"Misc Fees:Overnight Delivery\".\n\nMaximum length: 31 characters.\n\n- `parentId?: string`\n The parent other charge item one level above this one in the hierarchy. For example, if this other charge item has a `fullName` of \"Shipping Charges:Overnight Delivery\", its parent has a `fullName` of \"Shipping Charges\". If this other charge item is at the top level, this field will be `null`.\n\n- `salesAndPurchaseDetails?: { expenseAccountId?: string; incomeAccountId?: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; updateExistingTransactionsExpenseAccount?: boolean; updateExistingTransactionsIncomeAccount?: boolean; }`\n Details for other charge items that are both purchased and sold, such as reimbursable expenses or inventory items that are bought from vendors and sold to customers.\n\n**IMPORTANT**: You cannot specify both `salesAndPurchaseDetails` and `salesOrPurchaseDetails` when modifying an other charge item because an item cannot have both configurations.\n - `expenseAccountId?: string`\n The expense account used to track costs from purchases of this item.\n - `incomeAccountId?: string`\n The income account used to track revenue from sales of this item.\n - `preferredVendorId?: string`\n The preferred vendor from whom this item is typically purchased.\n - `purchaseCost?: string`\n The cost at which this item is purchased from vendors, represented as a decimal string.\n - `purchaseDescription?: string`\n The description of this item that appears on purchase forms (e.g., checks, bills, item receipts) when it is ordered or bought from vendors.\n - `purchaseTaxCodeId?: string`\n The tax code applied to purchases of this item. Applicable in regions where purchase taxes are used, such as Canada or the UK.\n - `salesDescription?: string`\n The description of this item that appears on sales forms (e.g., invoices, sales receipts) when sold to customers.\n - `salesPrice?: string`\n The price at which this item is sold to customers, represented as a decimal string.\n - `updateExistingTransactionsExpenseAccount?: boolean`\n When `true`, applies the new expense account (specified by the `expenseAccountId` field) to all existing transactions that use this item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n - `updateExistingTransactionsIncomeAccount?: boolean`\n When `true`, applies the new income account (specified by the `incomeAccountId` field) to all existing transactions that use this item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n\n- `salesOrPurchaseDetails?: { description?: string; postingAccountId?: string; price?: string; pricePercentage?: string; updateExistingTransactionsAccount?: boolean; }`\n Details for other charge items that are exclusively sold or exclusively purchased, but not both. This typically applies to non-inventory items (like a purchased office supply that isn't resold) or service items (like consulting services that are sold but not purchased).\n\n**IMPORTANT**: You cannot specify both `salesOrPurchaseDetails` and `salesAndPurchaseDetails` when modifying an other charge item because an item cannot have both configurations.\n - `description?: string`\n A description of this item.\n - `postingAccountId?: string`\n The posting account to which transactions involving this item are posted. This could be an income account when selling or an expense account when purchasing.\n - `price?: string`\n The price at which this item is purchased or sold, represented as a decimal string.\n - `pricePercentage?: string`\n The price of this item expressed as a percentage, used instead of `price` when the item's cost is calculated as a percentage of another amount. For example, a service item that costs a percentage of another item's price.\n - `updateExistingTransactionsAccount?: boolean`\n When `true`, applies the new account (specified by the `accountId` field) to all existing transactions associated with this item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for this other charge item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_other_charge_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; sublevel: number; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_other_charge_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }`\n - `salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'`\n - `sublevel: number`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst otherChargeItem = await conductor.qbd.otherChargeItems.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(otherChargeItem);\n```", perLanguage: { typescript: { method: 'client.qbd.otherChargeItems.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst otherChargeItem = await conductor.qbd.otherChargeItems.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(otherChargeItem.id);", }, python: { method: 'qbd.other_charge_items.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nother_charge_item = conductor.qbd.other_charge_items.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(other_charge_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/other-charge-items/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "classId": "80000001-1234567890",\n "isActive": true,\n "name": "Overnight Delivery",\n "parentId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890"\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/other-names', httpMethod: 'post', summary: 'Create an other-name', description: 'Creates a new other-name.', stainlessPath: '(resource) qbd.other_names > (method) create', qualified: 'client.qbd.otherNames.create', params: [ 'name: string;', 'Conductor-End-User-Id: string;', 'accountNumber?: string;', 'address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'alternateContact?: string;', 'alternatePhone?: string;', 'companyName?: string;', 'contact?: string;', 'email?: string;', 'externalId?: string;', 'fax?: string;', 'firstName?: string;', 'isActive?: boolean;', 'lastName?: string;', 'middleName?: string;', 'note?: string;', 'phone?: string;', 'salutation?: string;', ], response: "{ id: string; accountNumber: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; alternateContact: string; alternatePhone: string; companyName: string; contact: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_other_name'; phone: string; revisionNumber: string; salutation: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.otherNames.create(name: string, Conductor-End-User-Id: string, accountNumber?: string, address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, alternateContact?: string, alternatePhone?: string, companyName?: string, contact?: string, email?: string, externalId?: string, fax?: string, firstName?: string, isActive?: boolean, lastName?: string, middleName?: string, note?: string, phone?: string, salutation?: string): { id: string; accountNumber: string; address: object; alternateContact: string; alternatePhone: string; companyName: string; contact: string; createdAt: string; customFields: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_other_name'; phone: string; revisionNumber: string; salutation: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/other-names`\n\nCreates a new other-name.\n\n### Parameters\n\n- `name: string`\n The case-insensitive unique name of this other-name, unique across all other-names.\n\n**NOTE**: Other-names do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountNumber?: string`\n The other-name's account number, which appears in the QuickBooks chart of accounts, reports, and graphs.\n\nNote that if the \"Use Account Numbers\" preference is turned off in QuickBooks, the account number may not be visible in the user interface, but it can still be set and retrieved through the API.\n\n- `address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The other-name's address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `alternateContact?: string`\n The name of a alternate contact person for this other-name.\n\n- `alternatePhone?: string`\n The other-name's alternate telephone number.\n\nMaximum length: 21 characters.\n\n- `companyName?: string`\n The name of the company associated with this other-name. This name is used on invoices, checks, and other forms.\n\nMaximum length: 41 characters.\n\n- `contact?: string`\n The name of the primary contact person for this other-name.\n\n- `email?: string`\n The other-name's email address.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `fax?: string`\n The other-name's fax number.\n\nMaximum length: 21 characters.\n\n- `firstName?: string`\n The first name of the contact person for this other-name.\n\nMaximum length: 25 characters.\n\n- `isActive?: boolean`\n Indicates whether this other-name is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `lastName?: string`\n The last name of the contact person for this other-name.\n\nMaximum length: 25 characters.\n\n- `middleName?: string`\n The middle name of the contact person for this other-name.\n\nMaximum length: 5 characters.\n\n- `note?: string`\n A note or comment about this other-name.\n\n- `phone?: string`\n The other-name's primary telephone number.\n\nMaximum length: 21 characters.\n\n- `salutation?: string`\n The formal salutation title that precedes the name of the contact person for this other-name, such as \"Mr.\", \"Ms.\", or \"Dr.\".\n\n### Returns\n\n- `{ id: string; accountNumber: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; alternateContact: string; alternatePhone: string; companyName: string; contact: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_other_name'; phone: string; revisionNumber: string; salutation: string; updatedAt: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `alternateContact: string`\n - `alternatePhone: string`\n - `companyName: string`\n - `contact: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `email: string`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `isActive: boolean`\n - `lastName: string`\n - `middleName: string`\n - `name: string`\n - `note: string`\n - `objectType: 'qbd_other_name'`\n - `phone: string`\n - `revisionNumber: string`\n - `salutation: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst otherName = await conductor.qbd.otherNames.create({ name: 'John Doe', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(otherName);\n```", perLanguage: { typescript: { method: 'client.qbd.otherNames.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst otherName = await conductor.qbd.otherNames.create({\n name: 'John Doe',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(otherName.id);", }, python: { method: 'qbd.other_names.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nother_name = conductor.qbd.other_names.create(\n name="John Doe",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(other_name.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/other-names \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "John Doe",\n "accountNumber": "1010",\n "alternateContact": "Bob Johnson",\n "alternatePhone": "+1-555-987-6543",\n "companyName": "Acme Corporation",\n "contact": "Jane Smith",\n "email": "other-name@example.com",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "fax": "+1-555-555-1212",\n "firstName": "John",\n "isActive": true,\n "lastName": "Doe",\n "middleName": "A.",\n "note": "This employee is a key employee.",\n "phone": "+1-555-123-4567",\n "salutation": "Dr."\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/other-names', httpMethod: 'get', summary: 'List all other-names', description: 'Returns a list of other-names.\n\n**NOTE:** QuickBooks Desktop does not support pagination for other-names; hence, there is no `cursor` parameter. Users typically have few other-names.', stainlessPath: '(resource) qbd.other_names > (method) list', qualified: 'client.qbd.otherNames.list', params: [ 'Conductor-End-User-Id: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; accountNumber: string; address: object; alternateContact: string; alternatePhone: string; companyName: string; contact: string; createdAt: string; customFields: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_other_name'; phone: string; revisionNumber: string; salutation: string; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.otherNames.list(Conductor-End-User-Id: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: other_name[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/other-names`\n\nReturns a list of other-names.\n\n**NOTE:** QuickBooks Desktop does not support pagination for other-names; hence, there is no `cursor` parameter. Users typically have few other-names.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `ids?: string[]`\n Filter for specific other-names by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for other-names. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all other-names without limit, unlike paginated endpoints which default to 150 records. This is acceptable because other-names typically have low record counts.\n\n- `nameContains?: string`\n Filter for other-names whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for other-names whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for other-names whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific other-names by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for an other-name.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for other-names whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for other-names whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for other-names that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for other-names updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for other-names updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; accountNumber: string; address: object; alternateContact: string; alternatePhone: string; companyName: string; contact: string; createdAt: string; customFields: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_other_name'; phone: string; revisionNumber: string; salutation: string; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; accountNumber: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; alternateContact: string; alternatePhone: string; companyName: string; contact: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_other_name'; phone: string; revisionNumber: string; salutation: string; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst otherNames = await conductor.qbd.otherNames.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(otherNames);\n```", perLanguage: { typescript: { method: 'client.qbd.otherNames.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst otherNames = await conductor.qbd.otherNames.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(otherNames.data);", }, python: { method: 'qbd.other_names.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nother_names = conductor.qbd.other_names.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(other_names.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/other-names \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/other-names/{id}', httpMethod: 'get', summary: 'Retrieve an other-name', description: 'Retrieves an other-name by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific other-names by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.other_names > (method) retrieve', qualified: 'client.qbd.otherNames.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; accountNumber: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; alternateContact: string; alternatePhone: string; companyName: string; contact: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_other_name'; phone: string; revisionNumber: string; salutation: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.otherNames.retrieve(id: string, Conductor-End-User-Id: string): { id: string; accountNumber: string; address: object; alternateContact: string; alternatePhone: string; companyName: string; contact: string; createdAt: string; customFields: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_other_name'; phone: string; revisionNumber: string; salutation: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/other-names/{id}`\n\nRetrieves an other-name by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific other-names by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the other-name to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; accountNumber: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; alternateContact: string; alternatePhone: string; companyName: string; contact: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_other_name'; phone: string; revisionNumber: string; salutation: string; updatedAt: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `alternateContact: string`\n - `alternatePhone: string`\n - `companyName: string`\n - `contact: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `email: string`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `isActive: boolean`\n - `lastName: string`\n - `middleName: string`\n - `name: string`\n - `note: string`\n - `objectType: 'qbd_other_name'`\n - `phone: string`\n - `revisionNumber: string`\n - `salutation: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst otherName = await conductor.qbd.otherNames.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(otherName);\n```", perLanguage: { typescript: { method: 'client.qbd.otherNames.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst otherName = await conductor.qbd.otherNames.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(otherName.id);", }, python: { method: 'qbd.other_names.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nother_name = conductor.qbd.other_names.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(other_name.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/other-names/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/other-names/{id}', httpMethod: 'post', summary: 'Update an other-name', description: 'Updates an existing other-name.', stainlessPath: '(resource) qbd.other_names > (method) update', qualified: 'client.qbd.otherNames.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'accountNumber?: string;', 'address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'alternateContact?: string;', 'alternatePhone?: string;', 'companyName?: string;', 'contact?: string;', 'email?: string;', 'fax?: string;', 'firstName?: string;', 'isActive?: boolean;', 'lastName?: string;', 'middleName?: string;', 'name?: string;', 'note?: string;', 'phone?: string;', 'salutation?: string;', ], response: "{ id: string; accountNumber: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; alternateContact: string; alternatePhone: string; companyName: string; contact: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_other_name'; phone: string; revisionNumber: string; salutation: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.otherNames.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, accountNumber?: string, address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, alternateContact?: string, alternatePhone?: string, companyName?: string, contact?: string, email?: string, fax?: string, firstName?: string, isActive?: boolean, lastName?: string, middleName?: string, name?: string, note?: string, phone?: string, salutation?: string): { id: string; accountNumber: string; address: object; alternateContact: string; alternatePhone: string; companyName: string; contact: string; createdAt: string; customFields: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_other_name'; phone: string; revisionNumber: string; salutation: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/other-names/{id}`\n\nUpdates an existing other-name.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the other-name to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the other-name object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountNumber?: string`\n The other-name's account number, which appears in the QuickBooks chart of accounts, reports, and graphs.\n\nNote that if the \"Use Account Numbers\" preference is turned off in QuickBooks, the account number may not be visible in the user interface, but it can still be set and retrieved through the API.\n\n- `address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The other-name's address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `alternateContact?: string`\n The name of a alternate contact person for this other-name.\n\n- `alternatePhone?: string`\n The other-name's alternate telephone number.\n\nMaximum length: 21 characters.\n\n- `companyName?: string`\n The name of the company associated with this other-name. This name is used on invoices, checks, and other forms.\n\nMaximum length: 41 characters.\n\n- `contact?: string`\n The name of the primary contact person for this other-name.\n\n- `email?: string`\n The other-name's email address.\n\n- `fax?: string`\n The other-name's fax number.\n\nMaximum length: 21 characters.\n\n- `firstName?: string`\n The first name of the contact person for this other-name.\n\nMaximum length: 25 characters.\n\n- `isActive?: boolean`\n Indicates whether this other-name is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `lastName?: string`\n The last name of the contact person for this other-name.\n\nMaximum length: 25 characters.\n\n- `middleName?: string`\n The middle name of the contact person for this other-name.\n\nMaximum length: 5 characters.\n\n- `name?: string`\n The case-insensitive unique name of this other-name, unique across all other-names.\n\n**NOTE**: Other-names do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `note?: string`\n A note or comment about this other-name.\n\n- `phone?: string`\n The other-name's primary telephone number.\n\nMaximum length: 21 characters.\n\n- `salutation?: string`\n The formal salutation title that precedes the name of the contact person for this other-name, such as \"Mr.\", \"Ms.\", or \"Dr.\".\n\n### Returns\n\n- `{ id: string; accountNumber: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; alternateContact: string; alternatePhone: string; companyName: string; contact: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; lastName: string; middleName: string; name: string; note: string; objectType: 'qbd_other_name'; phone: string; revisionNumber: string; salutation: string; updatedAt: string; }`\n\n - `id: string`\n - `accountNumber: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `alternateContact: string`\n - `alternatePhone: string`\n - `companyName: string`\n - `contact: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `email: string`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `isActive: boolean`\n - `lastName: string`\n - `middleName: string`\n - `name: string`\n - `note: string`\n - `objectType: 'qbd_other_name'`\n - `phone: string`\n - `revisionNumber: string`\n - `salutation: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst otherName = await conductor.qbd.otherNames.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(otherName);\n```", perLanguage: { typescript: { method: 'client.qbd.otherNames.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst otherName = await conductor.qbd.otherNames.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(otherName.id);", }, python: { method: 'qbd.other_names.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nother_name = conductor.qbd.other_names.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(other_name.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/other-names/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "accountNumber": "1010",\n "alternateContact": "Bob Johnson",\n "alternatePhone": "+1-555-987-6543",\n "companyName": "Acme Corporation",\n "contact": "Jane Smith",\n "email": "other-name@example.com",\n "fax": "+1-555-555-1212",\n "firstName": "John",\n "isActive": true,\n "lastName": "Doe",\n "middleName": "A.",\n "name": "John Doe",\n "note": "This employee is a key employee.",\n "phone": "+1-555-123-4567",\n "salutation": "Dr."\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/payment-methods', httpMethod: 'post', summary: 'Create a payment method', description: 'Creates a new payment method.', stainlessPath: '(resource) qbd.payment_methods > (method) create', qualified: 'client.qbd.paymentMethods.create', params: [ 'name: string;', 'paymentMethodType: string;', 'Conductor-End-User-Id: string;', 'isActive?: boolean;', ], response: "{ id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_payment_method'; paymentMethodType: string; revisionNumber: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.paymentMethods.create(name: string, paymentMethodType: string, Conductor-End-User-Id: string, isActive?: boolean): { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_payment_method'; paymentMethodType: string; revisionNumber: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/payment-methods`\n\nCreates a new payment method.\n\n### Parameters\n\n- `name: string`\n The case-insensitive unique name of this payment method, unique across all payment methods.\n\n**NOTE**: Payment methods do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `paymentMethodType: string`\n This payment method's type.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `isActive?: boolean`\n Indicates whether this payment method is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n### Returns\n\n- `{ id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_payment_method'; paymentMethodType: string; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_payment_method'`\n - `paymentMethodType: string`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst paymentMethod = await conductor.qbd.paymentMethods.create({\n name: 'Cash',\n paymentMethodType: 'cash',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(paymentMethod);\n```", perLanguage: { typescript: { method: 'client.qbd.paymentMethods.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst paymentMethod = await conductor.qbd.paymentMethods.create({\n name: 'Cash',\n paymentMethodType: 'cash',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(paymentMethod.id);", }, python: { method: 'qbd.payment_methods.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npayment_method = conductor.qbd.payment_methods.create(\n name="Cash",\n payment_method_type="cash",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(payment_method.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/payment-methods \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Cash",\n "paymentMethodType": "cash",\n "isActive": true\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/payment-methods', httpMethod: 'get', summary: 'List all payment methods', description: 'Returns a list of payment methods.\n\n**NOTE:** QuickBooks Desktop does not support pagination for payment methods; hence, there is no `cursor` parameter. Users typically have few payment methods.', stainlessPath: '(resource) qbd.payment_methods > (method) list', qualified: 'client.qbd.paymentMethods.list', params: [ 'Conductor-End-User-Id: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', 'paymentMethodType?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_payment_method'; paymentMethodType: string; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.paymentMethods.list(Conductor-End-User-Id: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, paymentMethodType?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: payment_method[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/payment-methods`\n\nReturns a list of payment methods.\n\n**NOTE:** QuickBooks Desktop does not support pagination for payment methods; hence, there is no `cursor` parameter. Users typically have few payment methods.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `ids?: string[]`\n Filter for specific payment methods by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for payment methods. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all payment methods without limit, unlike paginated endpoints which default to 150 records. This is acceptable because payment methods typically have low record counts.\n\n- `nameContains?: string`\n Filter for payment methods whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for payment methods whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for payment methods whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific payment methods by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a payment method.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for payment methods whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for payment methods whose `name` is alphabetically less than or equal to this value.\n\n- `paymentMethodType?: string`\n Filter for payment methods of this type.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for payment methods that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for payment methods updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for payment methods updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_payment_method'; paymentMethodType: string; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_payment_method'; paymentMethodType: string; revisionNumber: string; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst paymentMethods = await conductor.qbd.paymentMethods.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(paymentMethods);\n```", perLanguage: { typescript: { method: 'client.qbd.paymentMethods.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst paymentMethods = await conductor.qbd.paymentMethods.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(paymentMethods.data);", }, python: { method: 'qbd.payment_methods.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npayment_methods = conductor.qbd.payment_methods.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(payment_methods.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/payment-methods \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/payment-methods/{id}', httpMethod: 'get', summary: 'Retrieve a payment method', description: 'Retrieves a payment method by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific payment methods by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.payment_methods > (method) retrieve', qualified: 'client.qbd.paymentMethods.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_payment_method'; paymentMethodType: string; revisionNumber: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.paymentMethods.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_payment_method'; paymentMethodType: string; revisionNumber: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/payment-methods/{id}`\n\nRetrieves a payment method by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific payment methods by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the payment method to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_payment_method'; paymentMethodType: string; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_payment_method'`\n - `paymentMethodType: string`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst paymentMethod = await conductor.qbd.paymentMethods.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(paymentMethod);\n```", perLanguage: { typescript: { method: 'client.qbd.paymentMethods.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst paymentMethod = await conductor.qbd.paymentMethods.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(paymentMethod.id);", }, python: { method: 'qbd.payment_methods.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npayment_method = conductor.qbd.payment_methods.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(payment_method.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/payment-methods/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/payments-to-deposit', httpMethod: 'get', summary: 'List all payments to deposit', description: "Lists received customer payments that are currently available to include in a QuickBooks Desktop deposit. Use each result's `paymentTransactionId` and, when present, `paymentTransactionLineId` as the corresponding fields on a deposit line.\n\n**NOTE:** QuickBooks Desktop does not support pagination for payments to deposit; hence, there is no `cursor` parameter. Users typically have few payments to deposit.", stainlessPath: '(resource) qbd.payments_to_deposit > (method) list', qualified: 'client.qbd.paymentsToDeposit.list', params: ['Conductor-End-User-Id: string;'], response: "{ data: { amount: string; amountInHomeCurrency: string; currency: object; customer: object; exchangeRate: number; paymentTransactionId: string; paymentTransactionLineId: string; refNumber: string; transactionDate: string; transactionType: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.paymentsToDeposit.list(Conductor-End-User-Id: string): { data: payment_to_deposit[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/payments-to-deposit`\n\nLists received customer payments that are currently available to include in a QuickBooks Desktop deposit. Use each result's `paymentTransactionId` and, when present, `paymentTransactionLineId` as the corresponding fields on a deposit line.\n\n**NOTE:** QuickBooks Desktop does not support pagination for payments to deposit; hence, there is no `cursor` parameter. Users typically have few payments to deposit.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ data: { amount: string; amountInHomeCurrency: string; currency: object; customer: object; exchangeRate: number; paymentTransactionId: string; paymentTransactionLineId: string; refNumber: string; transactionDate: string; transactionType: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { amount: string; amountInHomeCurrency: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; exchangeRate: number; paymentTransactionId: string; paymentTransactionLineId: string; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst paymentsToDeposits = await conductor.qbd.paymentsToDeposit.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(paymentsToDeposits);\n```", perLanguage: { typescript: { method: 'client.qbd.paymentsToDeposit.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst paymentsToDeposits = await conductor.qbd.paymentsToDeposit.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(paymentsToDeposits.data);", }, python: { method: 'qbd.payments_to_deposit.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npayments_to_deposits = conductor.qbd.payments_to_deposit.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(payments_to_deposits.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/payments-to-deposit \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/payroll-wage-items', httpMethod: 'post', summary: 'Create a payroll wage item', description: 'Creates a new payroll wage item.', stainlessPath: '(resource) qbd.payroll_wage_items > (method) create', qualified: 'client.qbd.payrollWageItems.create', params: [ 'expenseAccountId: string;', 'name: string;', 'wageType: string;', 'Conductor-End-User-Id: string;', 'isActive?: boolean;', 'overtimeMultiplier?: string;', 'rate?: string;', 'ratePercent?: string;', ], response: "{ id: string; createdAt: string; expenseAccount: { id: string; fullName: string; }; isActive: boolean; name: string; objectType: 'qbd_payroll_wage_item'; overtimeMultiplier: string; rate: string; ratePercent: string; revisionNumber: string; updatedAt: string; wageType: string; }", markdown: "## create\n\n`conductor.qbd.payrollWageItems.create(expenseAccountId: string, name: string, wageType: string, Conductor-End-User-Id: string, isActive?: boolean, overtimeMultiplier?: string, rate?: string, ratePercent?: string): { id: string; createdAt: string; expenseAccount: object; isActive: boolean; name: string; objectType: 'qbd_payroll_wage_item'; overtimeMultiplier: string; rate: string; ratePercent: string; revisionNumber: string; updatedAt: string; wageType: string; }`\n\n**post** `/quickbooks-desktop/payroll-wage-items`\n\nCreates a new payroll wage item.\n\n### Parameters\n\n- `expenseAccountId: string`\n The expense account used to track wage expenses paid through this payroll wage item.\n\n- `name: string`\n The case-insensitive unique name of this payroll wage item, unique across all payroll wage items.\n\n**NOTE**: Payroll wage items do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `wageType: string`\n Categorizes how this payroll wage item calculates pay - can be hourly (regular, overtime, sick, or vacation), salary (regular, sick, or vacation), bonus, or commission based.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `isActive?: boolean`\n Indicates whether this payroll wage item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `overtimeMultiplier?: string`\n The overtime pay multiplier for this payroll wage item, represented as a decimal string. For example, `\"1.5\"` represents time-and-a-half pay.\n\n- `rate?: string`\n The default rate for this payroll wage item, represented as a decimal string. Only one of `rate` and `ratePercent` can be set.\n\nDecimal string format: up to 5 decimal places and up to 10 digits before the decimal point (for example, \"123.45\").\n\n- `ratePercent?: string`\n The default rate for this payroll wage item expressed as a percentage. Only one of `rate` and `ratePercent` can be set.\n\n### Returns\n\n- `{ id: string; createdAt: string; expenseAccount: { id: string; fullName: string; }; isActive: boolean; name: string; objectType: 'qbd_payroll_wage_item'; overtimeMultiplier: string; rate: string; ratePercent: string; revisionNumber: string; updatedAt: string; wageType: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `expenseAccount: { id: string; fullName: string; }`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_payroll_wage_item'`\n - `overtimeMultiplier: string`\n - `rate: string`\n - `ratePercent: string`\n - `revisionNumber: string`\n - `updatedAt: string`\n - `wageType: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst payrollWageItem = await conductor.qbd.payrollWageItems.create({\n expenseAccountId: '80000001-1234567890',\n name: 'Regular Pay',\n wageType: 'hourly_regular',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(payrollWageItem);\n```", perLanguage: { typescript: { method: 'client.qbd.payrollWageItems.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst payrollWageItem = await conductor.qbd.payrollWageItems.create({\n expenseAccountId: '80000001-1234567890',\n name: 'Regular Pay',\n wageType: 'hourly_regular',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(payrollWageItem.id);", }, python: { method: 'qbd.payroll_wage_items.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npayroll_wage_item = conductor.qbd.payroll_wage_items.create(\n expense_account_id="80000001-1234567890",\n name="Regular Pay",\n wage_type="hourly_regular",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(payroll_wage_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/payroll-wage-items \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "expenseAccountId": "80000001-1234567890",\n "name": "Regular Pay",\n "wageType": "hourly_regular",\n "isActive": true,\n "overtimeMultiplier": "1.5",\n "rate": "15.00",\n "ratePercent": "10"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/payroll-wage-items', httpMethod: 'get', summary: 'List all payroll wage items', description: 'Returns a list of payroll wage items. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.payroll_wage_items > (method) list', qualified: 'client.qbd.payrollWageItems.list', params: [ 'Conductor-End-User-Id: string;', 'cursor?: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; createdAt: string; expenseAccount: { id: string; fullName: string; }; isActive: boolean; name: string; objectType: 'qbd_payroll_wage_item'; overtimeMultiplier: string; rate: string; ratePercent: string; revisionNumber: string; updatedAt: string; wageType: string; }", markdown: "## list\n\n`conductor.qbd.payrollWageItems.list(Conductor-End-User-Id: string, cursor?: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { id: string; createdAt: string; expenseAccount: object; isActive: boolean; name: string; objectType: 'qbd_payroll_wage_item'; overtimeMultiplier: string; rate: string; ratePercent: string; revisionNumber: string; updatedAt: string; wageType: string; }`\n\n**get** `/quickbooks-desktop/payroll-wage-items`\n\nReturns a list of payroll wage items. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific payroll wage items by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for payroll wage items whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for payroll wage items whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for payroll wage items whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific payroll wage items by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a payroll wage item.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for payroll wage items whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for payroll wage items whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for payroll wage items that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for payroll wage items updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for payroll wage items updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; createdAt: string; expenseAccount: { id: string; fullName: string; }; isActive: boolean; name: string; objectType: 'qbd_payroll_wage_item'; overtimeMultiplier: string; rate: string; ratePercent: string; revisionNumber: string; updatedAt: string; wageType: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `expenseAccount: { id: string; fullName: string; }`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_payroll_wage_item'`\n - `overtimeMultiplier: string`\n - `rate: string`\n - `ratePercent: string`\n - `revisionNumber: string`\n - `updatedAt: string`\n - `wageType: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const payrollWageItem of conductor.qbd.payrollWageItems.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(payrollWageItem);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.payrollWageItems.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const payrollWageItem of conductor.qbd.payrollWageItems.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(payrollWageItem.id);\n}", }, python: { method: 'qbd.payroll_wage_items.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.payroll_wage_items.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/payroll-wage-items \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/payroll-wage-items/{id}', httpMethod: 'get', summary: 'Retrieve a payroll wage item', description: 'Retrieves a payroll wage item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific payroll wage items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.payroll_wage_items > (method) retrieve', qualified: 'client.qbd.payrollWageItems.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; expenseAccount: { id: string; fullName: string; }; isActive: boolean; name: string; objectType: 'qbd_payroll_wage_item'; overtimeMultiplier: string; rate: string; ratePercent: string; revisionNumber: string; updatedAt: string; wageType: string; }", markdown: "## retrieve\n\n`conductor.qbd.payrollWageItems.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; expenseAccount: object; isActive: boolean; name: string; objectType: 'qbd_payroll_wage_item'; overtimeMultiplier: string; rate: string; ratePercent: string; revisionNumber: string; updatedAt: string; wageType: string; }`\n\n**get** `/quickbooks-desktop/payroll-wage-items/{id}`\n\nRetrieves a payroll wage item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific payroll wage items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the payroll wage item to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; expenseAccount: { id: string; fullName: string; }; isActive: boolean; name: string; objectType: 'qbd_payroll_wage_item'; overtimeMultiplier: string; rate: string; ratePercent: string; revisionNumber: string; updatedAt: string; wageType: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `expenseAccount: { id: string; fullName: string; }`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_payroll_wage_item'`\n - `overtimeMultiplier: string`\n - `rate: string`\n - `ratePercent: string`\n - `revisionNumber: string`\n - `updatedAt: string`\n - `wageType: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst payrollWageItem = await conductor.qbd.payrollWageItems.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(payrollWageItem);\n```", perLanguage: { typescript: { method: 'client.qbd.payrollWageItems.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst payrollWageItem = await conductor.qbd.payrollWageItems.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(payrollWageItem.id);", }, python: { method: 'qbd.payroll_wage_items.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npayroll_wage_item = conductor.qbd.payroll_wage_items.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(payroll_wage_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/payroll-wage-items/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/preferences', httpMethod: 'get', summary: 'Retrieve company file preferences', description: 'Returns the preferences that the QuickBooks administrator has set for all users of the connected company file. Note that preferences cannot be modified through the API, only through the QuickBooks Desktop user interface.', stainlessPath: '(resource) qbd.preferences > (method) retrieve', qualified: 'client.qbd.preferences.retrieve', params: ['Conductor-End-User-Id: string;'], response: '{ accounting: object; appAccessRights: object; financeCharges: object; itemsAndInventory: object; jobsAndEstimates: object; multiCurrency: object; multiLocationInventory: object; purchasesAndVendors: object; reports: object; salesAndCustomers: object; salesTax: object; timeTracking: object; }', markdown: "## retrieve\n\n`conductor.qbd.preferences.retrieve(Conductor-End-User-Id: string): { accounting: object; appAccessRights: object; financeCharges: object; itemsAndInventory: object; jobsAndEstimates: object; multiCurrency: object; multiLocationInventory: object; purchasesAndVendors: object; reports: object; salesAndCustomers: object; salesTax: object; timeTracking: object; }`\n\n**get** `/quickbooks-desktop/preferences`\n\nReturns the preferences that the QuickBooks administrator has set for all users of the connected company file. Note that preferences cannot be modified through the API, only through the QuickBooks Desktop user interface.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ accounting: { closingDate: string; defaultTransactionClass: 'accounts' | 'items' | 'names' | 'none'; isAssigningJournalEntryNumbers: boolean; isRequiringAccounts: boolean; isUsingAccountNumbers: boolean; isUsingAuditTrail: boolean; isUsingClassTracking: boolean; }; appAccessRights: { automaticLoginUserName: string; isAutomaticLoginAllowed: boolean; isPersonalDataAccessAllowed: boolean; }; financeCharges: { annualInterestRate: number; calculateChargesFrom: 'due_date' | 'invoice_or_billed_date'; financeChargeAccount: { id: string; fullName: string; }; gracePeriod: number; isAssessingForOverdueCharges: boolean; isMarkedToBePrinted: boolean; minimumFinanceCharge: number; }; itemsAndInventory: { fifoEffectiveDate: string; inventoryTrackingMethod: 'none' | 'serial_number' | 'lot_number'; isBarcodeEnabled: boolean; isBinTrackingEnabled: boolean; isEnhancedInventoryReceivingEnabled: boolean; isFifoEnabled: boolean; isInventoryExpirationDateEnabled: boolean; isTrackingOnBuildAssemblyEnabled: boolean; isTrackingOnInventoryAdjustmentEnabled: boolean; isTrackingOnPurchaseTransactionsEnabled: boolean; isTrackingOnSalesTransactionsEnabled: boolean; }; jobsAndEstimates: { isPrintingItemsWithZeroAmounts: boolean; isUsingEstimates: boolean; isUsingProgressInvoicing: boolean; }; multiCurrency: { homeCurrency: { id: string; fullName: string; }; isMultiCurrencyEnabled: boolean; }; multiLocationInventory: { isMultiLocationInventoryAvailable: boolean; isMultiLocationInventoryEnabled: boolean; }; purchasesAndVendors: { daysBillsAreDue: number; defaultDiscountAccount: { id: string; fullName: string; }; isAutomaticallyUsingDiscounts: boolean; isUsingInventory: boolean; }; reports: { agingReportBasis: 'age_from_due_date' | 'age_from_transaction_date'; summaryReportBasis: 'accrual' | 'cash'; }; salesAndCustomers: { defaultMarkupPercentage: string; defaultShipmentOrigin: string; defaultShippingMethod: { id: string; fullName: string; }; isAutoApplyingPayments: boolean; isTrackingReimbursedExpensesAsIncome: boolean; priceLevels: { isRoundingSalesPriceUp: boolean; isUsingPriceLevels: boolean; }; }; salesTax: { defaultItemSalesTax: { id: string; fullName: string; }; defaultNonTaxableSalesTaxCode: { id: string; fullName: string; }; defaultTaxableSalesTaxCode: { id: string; fullName: string; }; isUsingCustomerTaxCode: boolean; isUsingTaxInclusivePrices: boolean; isUsingVendorTaxCode: boolean; salesTaxReportingFrequency: 'monthly' | 'quarterly' | 'annually'; }; timeTracking: { firstDayOfWeek: 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday'; }; }`\n\n - `accounting: { closingDate: string; defaultTransactionClass: 'accounts' | 'items' | 'names' | 'none'; isAssigningJournalEntryNumbers: boolean; isRequiringAccounts: boolean; isUsingAccountNumbers: boolean; isUsingAuditTrail: boolean; isUsingClassTracking: boolean; }`\n - `appAccessRights: { automaticLoginUserName: string; isAutomaticLoginAllowed: boolean; isPersonalDataAccessAllowed: boolean; }`\n - `financeCharges: { annualInterestRate: number; calculateChargesFrom: 'due_date' | 'invoice_or_billed_date'; financeChargeAccount: { id: string; fullName: string; }; gracePeriod: number; isAssessingForOverdueCharges: boolean; isMarkedToBePrinted: boolean; minimumFinanceCharge: number; }`\n - `itemsAndInventory: { fifoEffectiveDate: string; inventoryTrackingMethod: 'none' | 'serial_number' | 'lot_number'; isBarcodeEnabled: boolean; isBinTrackingEnabled: boolean; isEnhancedInventoryReceivingEnabled: boolean; isFifoEnabled: boolean; isInventoryExpirationDateEnabled: boolean; isTrackingOnBuildAssemblyEnabled: boolean; isTrackingOnInventoryAdjustmentEnabled: boolean; isTrackingOnPurchaseTransactionsEnabled: boolean; isTrackingOnSalesTransactionsEnabled: boolean; }`\n - `jobsAndEstimates: { isPrintingItemsWithZeroAmounts: boolean; isUsingEstimates: boolean; isUsingProgressInvoicing: boolean; }`\n - `multiCurrency: { homeCurrency: { id: string; fullName: string; }; isMultiCurrencyEnabled: boolean; }`\n - `multiLocationInventory: { isMultiLocationInventoryAvailable: boolean; isMultiLocationInventoryEnabled: boolean; }`\n - `purchasesAndVendors: { daysBillsAreDue: number; defaultDiscountAccount: { id: string; fullName: string; }; isAutomaticallyUsingDiscounts: boolean; isUsingInventory: boolean; }`\n - `reports: { agingReportBasis: 'age_from_due_date' | 'age_from_transaction_date'; summaryReportBasis: 'accrual' | 'cash'; }`\n - `salesAndCustomers: { defaultMarkupPercentage: string; defaultShipmentOrigin: string; defaultShippingMethod: { id: string; fullName: string; }; isAutoApplyingPayments: boolean; isTrackingReimbursedExpensesAsIncome: boolean; priceLevels: { isRoundingSalesPriceUp: boolean; isUsingPriceLevels: boolean; }; }`\n - `salesTax: { defaultItemSalesTax: { id: string; fullName: string; }; defaultNonTaxableSalesTaxCode: { id: string; fullName: string; }; defaultTaxableSalesTaxCode: { id: string; fullName: string; }; isUsingCustomerTaxCode: boolean; isUsingTaxInclusivePrices: boolean; isUsingVendorTaxCode: boolean; salesTaxReportingFrequency: 'monthly' | 'quarterly' | 'annually'; }`\n - `timeTracking: { firstDayOfWeek: 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday'; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst preferences = await conductor.qbd.preferences.retrieve({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(preferences);\n```", perLanguage: { typescript: { method: 'client.qbd.preferences.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst preferences = await conductor.qbd.preferences.retrieve({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(preferences.accounting);", }, python: { method: 'qbd.preferences.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npreferences = conductor.qbd.preferences.retrieve(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(preferences.accounting)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/preferences \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/price-levels', httpMethod: 'post', summary: 'Create a price level', description: 'Creates a new price level.', stainlessPath: '(resource) qbd.price_levels > (method) create', qualified: 'client.qbd.priceLevels.create', params: [ 'name: string;', 'Conductor-End-User-Id: string;', 'currencyId?: string;', 'fixedPercentage?: string;', 'isActive?: boolean;', "perItemPriceLevels?: { itemId: string; adjustPercentage?: string; adjustRelativeTo?: 'cost' | 'current_custom_price' | 'standard_price'; customPrice?: string; customPricePercent?: string; }[];", ], response: "{ id: string; createdAt: string; currency: { id: string; fullName: string; }; fixedPercentage: string; isActive: boolean; name: string; objectType: 'qbd_price_level'; perItemPriceLevels: { customPrice: string; customPricePercent: string; item: { id: string; fullName: string; }; }[]; priceLevelType: 'fixed_percentage' | 'per_item'; revisionNumber: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.priceLevels.create(name: string, Conductor-End-User-Id: string, currencyId?: string, fixedPercentage?: string, isActive?: boolean, perItemPriceLevels?: { itemId: string; adjustPercentage?: string; adjustRelativeTo?: 'cost' | 'current_custom_price' | 'standard_price'; customPrice?: string; customPricePercent?: string; }[]): { id: string; createdAt: string; currency: object; fixedPercentage: string; isActive: boolean; name: string; objectType: 'qbd_price_level'; perItemPriceLevels: object[]; priceLevelType: 'fixed_percentage' | 'per_item'; revisionNumber: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/price-levels`\n\nCreates a new price level.\n\n### Parameters\n\n- `name: string`\n The case-insensitive unique name of this price level, unique across all price levels.\n\n**NOTE**: Price levels do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `currencyId?: string`\n The price level's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.\n\n- `fixedPercentage?: string`\n The fixed percentage adjustment applied to all items for this price level (instead of a per-item price level). Once you create the price level, you cannot change this.\n\nWhen this price level is applied to a customer, it automatically adjusts the `rate` and `amount` columns for applicable line items in sales orders and invoices for that customer. This value supports both positive and negative values - a value of \"20\" increases prices by 20%, while \"-10\" decreases prices by 10%.\n\n- `isActive?: boolean`\n Indicates whether this price level is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `perItemPriceLevels?: { itemId: string; adjustPercentage?: string; adjustRelativeTo?: 'cost' | 'current_custom_price' | 'standard_price'; customPrice?: string; customPricePercent?: string; }[]`\n The per-item price level configurations for this price level.\n\n### Returns\n\n- `{ id: string; createdAt: string; currency: { id: string; fullName: string; }; fixedPercentage: string; isActive: boolean; name: string; objectType: 'qbd_price_level'; perItemPriceLevels: { customPrice: string; customPricePercent: string; item: { id: string; fullName: string; }; }[]; priceLevelType: 'fixed_percentage' | 'per_item'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `fixedPercentage: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_price_level'`\n - `perItemPriceLevels: { customPrice: string; customPricePercent: string; item: { id: string; fullName: string; }; }[]`\n - `priceLevelType: 'fixed_percentage' | 'per_item'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst priceLevel = await conductor.qbd.priceLevels.create({ name: 'Wholesale 20% Discount', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(priceLevel);\n```", perLanguage: { typescript: { method: 'client.qbd.priceLevels.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst priceLevel = await conductor.qbd.priceLevels.create({\n name: 'Wholesale 20% Discount',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(priceLevel.id);", }, python: { method: 'qbd.price_levels.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nprice_level = conductor.qbd.price_levels.create(\n name="Wholesale 20% Discount",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(price_level.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/price-levels \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Wholesale 20% Discount",\n "currencyId": "80000001-1234567890",\n "fixedPercentage": "-10.0",\n "isActive": true\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/price-levels', httpMethod: 'get', summary: 'List all price levels', description: 'Returns a list of price levels.\n\n**NOTE:** QuickBooks Desktop does not support pagination for price levels; hence, there is no `cursor` parameter. Users typically have few price levels.', stainlessPath: '(resource) qbd.price_levels > (method) list', qualified: 'client.qbd.priceLevels.list', params: [ 'Conductor-End-User-Id: string;', 'currencyIds?: string[];', 'ids?: string[];', 'itemIds?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; createdAt: string; currency: object; fixedPercentage: string; isActive: boolean; name: string; objectType: 'qbd_price_level'; perItemPriceLevels: object[]; priceLevelType: 'fixed_percentage' | 'per_item'; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.priceLevels.list(Conductor-End-User-Id: string, currencyIds?: string[], ids?: string[], itemIds?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: price_level[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/price-levels`\n\nReturns a list of price levels.\n\n**NOTE:** QuickBooks Desktop does not support pagination for price levels; hence, there is no `cursor` parameter. Users typically have few price levels.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `currencyIds?: string[]`\n Filter for price levels in these currencies.\n\n- `ids?: string[]`\n Filter for specific price levels by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `itemIds?: string[]`\n Filter for price levels containing these items.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for price levels. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all price levels without limit, unlike paginated endpoints which default to 150 records. This is acceptable because price levels typically have low record counts.\n\n- `nameContains?: string`\n Filter for price levels whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for price levels whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for price levels whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific price levels by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a price level.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for price levels whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for price levels whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for price levels that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for price levels updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for price levels updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; currency: object; fixedPercentage: string; isActive: boolean; name: string; objectType: 'qbd_price_level'; perItemPriceLevels: object[]; priceLevelType: 'fixed_percentage' | 'per_item'; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; createdAt: string; currency: { id: string; fullName: string; }; fixedPercentage: string; isActive: boolean; name: string; objectType: 'qbd_price_level'; perItemPriceLevels: { customPrice: string; customPricePercent: string; item: { id: string; fullName: string; }; }[]; priceLevelType: 'fixed_percentage' | 'per_item'; revisionNumber: string; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst priceLevels = await conductor.qbd.priceLevels.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(priceLevels);\n```", perLanguage: { typescript: { method: 'client.qbd.priceLevels.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst priceLevels = await conductor.qbd.priceLevels.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(priceLevels.data);", }, python: { method: 'qbd.price_levels.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nprice_levels = conductor.qbd.price_levels.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(price_levels.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/price-levels \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/price-levels/{id}', httpMethod: 'get', summary: 'Retrieve a price level', description: 'Retrieves a price level by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific price levels by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.price_levels > (method) retrieve', qualified: 'client.qbd.priceLevels.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; currency: { id: string; fullName: string; }; fixedPercentage: string; isActive: boolean; name: string; objectType: 'qbd_price_level'; perItemPriceLevels: { customPrice: string; customPricePercent: string; item: { id: string; fullName: string; }; }[]; priceLevelType: 'fixed_percentage' | 'per_item'; revisionNumber: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.priceLevels.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; currency: object; fixedPercentage: string; isActive: boolean; name: string; objectType: 'qbd_price_level'; perItemPriceLevels: object[]; priceLevelType: 'fixed_percentage' | 'per_item'; revisionNumber: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/price-levels/{id}`\n\nRetrieves a price level by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific price levels by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the price level to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; currency: { id: string; fullName: string; }; fixedPercentage: string; isActive: boolean; name: string; objectType: 'qbd_price_level'; perItemPriceLevels: { customPrice: string; customPricePercent: string; item: { id: string; fullName: string; }; }[]; priceLevelType: 'fixed_percentage' | 'per_item'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `fixedPercentage: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_price_level'`\n - `perItemPriceLevels: { customPrice: string; customPricePercent: string; item: { id: string; fullName: string; }; }[]`\n - `priceLevelType: 'fixed_percentage' | 'per_item'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst priceLevel = await conductor.qbd.priceLevels.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(priceLevel);\n```", perLanguage: { typescript: { method: 'client.qbd.priceLevels.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst priceLevel = await conductor.qbd.priceLevels.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(priceLevel.id);", }, python: { method: 'qbd.price_levels.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nprice_level = conductor.qbd.price_levels.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(price_level.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/price-levels/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/price-levels/{id}', httpMethod: 'post', summary: 'Update a price level', description: 'Updates an existing price level.', stainlessPath: '(resource) qbd.price_levels > (method) update', qualified: 'client.qbd.priceLevels.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'currencyId?: string;', 'fixedPercentage?: string;', 'isActive?: boolean;', 'name?: string;', "perItemPriceLevels?: { itemId: string; adjustPercentage?: string; adjustRelativeTo?: 'cost' | 'current_custom_price' | 'standard_price'; customPrice?: string; customPricePercent?: string; }[];", ], response: "{ id: string; createdAt: string; currency: { id: string; fullName: string; }; fixedPercentage: string; isActive: boolean; name: string; objectType: 'qbd_price_level'; perItemPriceLevels: { customPrice: string; customPricePercent: string; item: { id: string; fullName: string; }; }[]; priceLevelType: 'fixed_percentage' | 'per_item'; revisionNumber: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.priceLevels.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, currencyId?: string, fixedPercentage?: string, isActive?: boolean, name?: string, perItemPriceLevels?: { itemId: string; adjustPercentage?: string; adjustRelativeTo?: 'cost' | 'current_custom_price' | 'standard_price'; customPrice?: string; customPricePercent?: string; }[]): { id: string; createdAt: string; currency: object; fixedPercentage: string; isActive: boolean; name: string; objectType: 'qbd_price_level'; perItemPriceLevels: object[]; priceLevelType: 'fixed_percentage' | 'per_item'; revisionNumber: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/price-levels/{id}`\n\nUpdates an existing price level.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the price level to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the price level object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `currencyId?: string`\n The price level's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.\n\n- `fixedPercentage?: string`\n The fixed percentage adjustment applied to all items for this price level (instead of a per-item price level). Once you create the price level, you cannot change this.\n\nWhen this price level is applied to a customer, it automatically adjusts the `rate` and `amount` columns for applicable line items in sales orders and invoices for that customer. This value supports both positive and negative values - a value of \"20\" increases prices by 20%, while \"-10\" decreases prices by 10%.\n\n- `isActive?: boolean`\n Indicates whether this price level is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `name?: string`\n The case-insensitive unique name of this price level, unique across all price levels.\n\n**NOTE**: Price levels do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `perItemPriceLevels?: { itemId: string; adjustPercentage?: string; adjustRelativeTo?: 'cost' | 'current_custom_price' | 'standard_price'; customPrice?: string; customPricePercent?: string; }[]`\n The per-item price level configurations for this price level.\n\n### Returns\n\n- `{ id: string; createdAt: string; currency: { id: string; fullName: string; }; fixedPercentage: string; isActive: boolean; name: string; objectType: 'qbd_price_level'; perItemPriceLevels: { customPrice: string; customPricePercent: string; item: { id: string; fullName: string; }; }[]; priceLevelType: 'fixed_percentage' | 'per_item'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `fixedPercentage: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_price_level'`\n - `perItemPriceLevels: { customPrice: string; customPricePercent: string; item: { id: string; fullName: string; }; }[]`\n - `priceLevelType: 'fixed_percentage' | 'per_item'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst priceLevel = await conductor.qbd.priceLevels.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(priceLevel);\n```", perLanguage: { typescript: { method: 'client.qbd.priceLevels.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst priceLevel = await conductor.qbd.priceLevels.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(priceLevel.id);", }, python: { method: 'qbd.price_levels.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nprice_level = conductor.qbd.price_levels.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(price_level.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/price-levels/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "currencyId": "80000001-1234567890",\n "fixedPercentage": "-10.0",\n "isActive": true,\n "name": "Wholesale 20% Discount"\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/purchase-orders', httpMethod: 'post', summary: 'Create a purchase order', description: 'Creates a new purchase order.', stainlessPath: '(resource) qbd.purchase_orders > (method) create', qualified: 'client.qbd.purchaseOrders.create', params: [ 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'classId?: string;', 'documentTemplateId?: string;', 'dueDate?: string;', 'exchangeRate?: number;', 'expectedDate?: string;', 'externalId?: string;', 'inventorySiteId?: string;', 'isQueuedForEmail?: boolean;', 'isQueuedForPrint?: boolean;', 'lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteLocationId?: string; quantity?: number; serviceDate?: string; unitOfMeasure?: string; }[];', 'lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteLocationId?: string; itemId?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; payeeId?: string; quantity?: number; rate?: string; salesTaxCodeId?: string; serviceDate?: string; sku?: string; unitOfMeasure?: string; }[];', 'memo?: string;', 'otherCustomField1?: string;', 'otherCustomField2?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', 'shipmentOrigin?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'shippingMethodId?: string;', 'shipToEntityId?: string;', 'termsId?: string;', 'vendorAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'vendorId?: string;', 'vendorMessage?: string;', ], response: "{ id: string; class: object; createdAt: string; currency: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; expectedDate: string; externalId: string; inventorySite: object; isFullyReceived: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_purchase_order'; otherCustomField1: string; otherCustomField2: string; refNumber: string; revisionNumber: string; salesTaxCode: object; shipmentOrigin: string; shippingAddress: object; shippingMethod: object; shipToEntity: object; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; vendorMessage: string; }", markdown: "## create\n\n`conductor.qbd.purchaseOrders.create(transactionDate: string, Conductor-End-User-Id: string, classId?: string, documentTemplateId?: string, dueDate?: string, exchangeRate?: number, expectedDate?: string, externalId?: string, inventorySiteId?: string, isQueuedForEmail?: boolean, isQueuedForPrint?: boolean, lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteLocationId?: string; quantity?: number; serviceDate?: string; unitOfMeasure?: string; }[], lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteLocationId?: string; itemId?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; payeeId?: string; quantity?: number; rate?: string; salesTaxCodeId?: string; serviceDate?: string; sku?: string; unitOfMeasure?: string; }[], memo?: string, otherCustomField1?: string, otherCustomField2?: string, refNumber?: string, salesTaxCodeId?: string, shipmentOrigin?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, shippingMethodId?: string, shipToEntityId?: string, termsId?: string, vendorAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, vendorId?: string, vendorMessage?: string): { id: string; class: object; createdAt: string; currency: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; expectedDate: string; externalId: string; inventorySite: object; isFullyReceived: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_purchase_order'; otherCustomField1: string; otherCustomField2: string; refNumber: string; revisionNumber: string; salesTaxCode: object; shipmentOrigin: string; shippingAddress: object; shippingMethod: object; shipToEntity: object; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; vendorMessage: string; }`\n\n**post** `/quickbooks-desktop/purchase-orders`\n\nCreates a new purchase order.\n\n### Parameters\n\n- `transactionDate: string`\n The date of this purchase order, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classId?: string`\n The purchase order's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this purchase order's line items unless overridden at the line item level.\n\n- `documentTemplateId?: string`\n The predefined template in QuickBooks that determines the layout and formatting for this purchase order when printed or displayed.\n\n- `dueDate?: string`\n The date by which this purchase order must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n- `exchangeRate?: number`\n The market exchange rate between this purchase order's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expectedDate?: string`\n The date on which shipment of this purchase order is expected to be completed, in ISO 8601 format (YYYY-MM-DD).\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `inventorySiteId?: string`\n The site location where inventory for the item associated with this purchase order is stored.\n\n- `isQueuedForEmail?: boolean`\n Indicates whether this purchase order is included in the queue of documents for QuickBooks to email to the customer.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this purchase order is included in the queue of documents for QuickBooks to print.\n\n- `lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteLocationId?: string; quantity?: number; serviceDate?: string; unitOfMeasure?: string; }[]`\n The purchase order's line item groups, each representing a predefined set of related items.\n\n**IMPORTANT**: You must specify `lines`, `lineGroups`, or both when creating a purchase order.\n\n- `lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteLocationId?: string; itemId?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; payeeId?: string; quantity?: number; rate?: string; salesTaxCodeId?: string; serviceDate?: string; sku?: string; unitOfMeasure?: string; }[]`\n The purchase order's line items, each representing a single product or service ordered.\n\n**IMPORTANT**: You must specify `lines`, `lineGroups`, or both when creating a purchase order.\n\n- `memo?: string`\n A memo or note for this purchase order that appears in reports, but not on the purchase order.\n\n- `otherCustomField1?: string`\n A built-in custom field for additional information specific to this purchase order. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all purchase orders for convenience. Developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Hidden by default in the QuickBooks UI.\n\n- `otherCustomField2?: string`\n A second built-in custom field for additional information specific to this purchase order. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all purchase orders for convenience. Like `otherCustomField1`, developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Hidden by default in the QuickBooks UI.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this purchase order, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this purchase order, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the vendor. This can be overridden on the purchase order's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `shipmentOrigin?: string`\n The origin location from where the product associated with this purchase order is shipped. This is the point at which ownership and liability for goods transfer from seller to buyer. Internally, QuickBooks uses the term \"FOB\" for this field, which stands for \"freight on board\". This field is informational and has no accounting implications.\n\nMaximum length: 13 characters.\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The purchase order's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `shippingMethodId?: string`\n The shipping method used for this purchase order, such as standard mail or overnight delivery.\n\n- `shipToEntityId?: string`\n The customer, vendor, employee, or other entity to whom this purchase order is to be shipped.\n\n- `termsId?: string`\n The purchase order's payment terms, defining when payment is due and any applicable discounts.\n\n- `vendorAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The address of the vendor who sent this purchase order.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `vendorId?: string`\n The vendor who sent this purchase order for goods or services purchased.\n\n- `vendorMessage?: string`\n A message to be printed on this purchase order for the vendor to read.\n\n### Returns\n\n- `{ id: string; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; expectedDate: string; externalId: string; inventorySite: { id: string; fullName: string; }; isFullyReceived: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; inventorySiteLocation: object; isBilled: boolean; isManuallyClosed: boolean; item: object; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; payee: object; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: object; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]; objectType: 'qbd_purchase_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySiteLocation: { id: string; fullName: string; }; isBilled: boolean; isManuallyClosed: boolean; item: { id: string; fullName: string; }; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; payee: { id: string; fullName: string; }; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: { id: string; fullName: string; }; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_purchase_order'; otherCustomField1: string; otherCustomField2: string; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingMethod: { id: string; fullName: string; }; shipToEntity: { id: string; fullName: string; }; terms: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; vendorMessage: string; }`\n\n - `id: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `expectedDate: string`\n - `externalId: string`\n - `inventorySite: { id: string; fullName: string; }`\n - `isFullyReceived: boolean`\n - `isManuallyClosed: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySiteLocation: { id: string; fullName: string; }; isBilled: boolean; isManuallyClosed: boolean; item: { id: string; fullName: string; }; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; payee: { id: string; fullName: string; }; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: { id: string; fullName: string; }; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]; objectType: 'qbd_purchase_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySiteLocation: { id: string; fullName: string; }; isBilled: boolean; isManuallyClosed: boolean; item: { id: string; fullName: string; }; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; payee: { id: string; fullName: string; }; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: { id: string; fullName: string; }; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_purchase_order'`\n - `otherCustomField1: string`\n - `otherCustomField2: string`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingMethod: { id: string; fullName: string; }`\n - `shipToEntity: { id: string; fullName: string; }`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n - `vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `vendorMessage: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst purchaseOrder = await conductor.qbd.purchaseOrders.create({ transactionDate: '2024-10-01', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(purchaseOrder);\n```", perLanguage: { typescript: { method: 'client.qbd.purchaseOrders.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst purchaseOrder = await conductor.qbd.purchaseOrders.create({\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(purchaseOrder.id);", }, python: { method: 'qbd.purchase_orders.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npurchase_order = conductor.qbd.purchase_orders.create(\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(purchase_order.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/purchase-orders \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "transactionDate": "2024-10-01",\n "classId": "80000001-1234567890",\n "documentTemplateId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "expectedDate": "2024-01-01",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "inventorySiteId": "80000001-1234567890",\n "isQueuedForEmail": true,\n "isQueuedForPrint": true,\n "memo": "Office supplies for September",\n "otherCustomField1": "Special handling required",\n "otherCustomField2": "Always ship with a spare",\n "refNumber": "PO-1234",\n "salesTaxCodeId": "80000001-1234567890",\n "shipmentOrigin": "shipmentOrigin",\n "shippingMethodId": "80000001-1234567890",\n "shipToEntityId": "80000001-1234567890",\n "termsId": "80000001-1234567890",\n "vendorId": "80000001-1234567890",\n "vendorMessage": "Please include packing slip with shipment"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/purchase-orders', httpMethod: 'get', summary: 'List all purchase orders', description: 'Returns a list of purchase orders. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.purchase_orders > (method) list', qualified: 'client.qbd.purchaseOrders.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'ids?: string[];', 'includeLineItems?: boolean;', 'includeLinkedTransactions?: boolean;', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', 'vendorIds?: string[];', ], response: "{ id: string; class: object; createdAt: string; currency: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; expectedDate: string; externalId: string; inventorySite: object; isFullyReceived: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_purchase_order'; otherCustomField1: string; otherCustomField2: string; refNumber: string; revisionNumber: string; salesTaxCode: object; shipmentOrigin: string; shippingAddress: object; shippingMethod: object; shipToEntity: object; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; vendorMessage: string; }", markdown: "## list\n\n`conductor.qbd.purchaseOrders.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, ids?: string[], includeLineItems?: boolean, includeLinkedTransactions?: boolean, limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string, vendorIds?: string[]): { id: string; class: object; createdAt: string; currency: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; expectedDate: string; externalId: string; inventorySite: object; isFullyReceived: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_purchase_order'; otherCustomField1: string; otherCustomField2: string; refNumber: string; revisionNumber: string; salesTaxCode: object; shipmentOrigin: string; shippingAddress: object; shippingMethod: object; shipToEntity: object; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; vendorMessage: string; }`\n\n**get** `/quickbooks-desktop/purchase-orders`\n\nReturns a list of purchase orders. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for purchase orders associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for purchase orders in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific purchase orders by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `includeLinkedTransactions?: boolean`\n Whether to include linked transactions in the response. Defaults to `false`. For example, a payment linked to the corresponding purchase order.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for purchase orders whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for purchase orders whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for purchase orders whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific purchase orders by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for purchase orders whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for purchase orders whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for purchase orders whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for purchase orders whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for purchase orders updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for purchase orders updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `vendorIds?: string[]`\n Filter for purchase orders sent to these vendors.\n\n### Returns\n\n- `{ id: string; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; expectedDate: string; externalId: string; inventorySite: { id: string; fullName: string; }; isFullyReceived: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; inventorySiteLocation: object; isBilled: boolean; isManuallyClosed: boolean; item: object; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; payee: object; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: object; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]; objectType: 'qbd_purchase_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySiteLocation: { id: string; fullName: string; }; isBilled: boolean; isManuallyClosed: boolean; item: { id: string; fullName: string; }; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; payee: { id: string; fullName: string; }; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: { id: string; fullName: string; }; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_purchase_order'; otherCustomField1: string; otherCustomField2: string; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingMethod: { id: string; fullName: string; }; shipToEntity: { id: string; fullName: string; }; terms: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; vendorMessage: string; }`\n\n - `id: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `expectedDate: string`\n - `externalId: string`\n - `inventorySite: { id: string; fullName: string; }`\n - `isFullyReceived: boolean`\n - `isManuallyClosed: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySiteLocation: { id: string; fullName: string; }; isBilled: boolean; isManuallyClosed: boolean; item: { id: string; fullName: string; }; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; payee: { id: string; fullName: string; }; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: { id: string; fullName: string; }; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]; objectType: 'qbd_purchase_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySiteLocation: { id: string; fullName: string; }; isBilled: boolean; isManuallyClosed: boolean; item: { id: string; fullName: string; }; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; payee: { id: string; fullName: string; }; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: { id: string; fullName: string; }; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_purchase_order'`\n - `otherCustomField1: string`\n - `otherCustomField2: string`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingMethod: { id: string; fullName: string; }`\n - `shipToEntity: { id: string; fullName: string; }`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n - `vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `vendorMessage: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const purchaseOrder of conductor.qbd.purchaseOrders.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(purchaseOrder);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.purchaseOrders.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const purchaseOrder of conductor.qbd.purchaseOrders.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(purchaseOrder.id);\n}", }, python: { method: 'qbd.purchase_orders.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.purchase_orders.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/purchase-orders \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/purchase-orders/{id}', httpMethod: 'get', summary: 'Retrieve a purchase order', description: 'Retrieves a purchase order by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific purchase orders by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.', stainlessPath: '(resource) qbd.purchase_orders > (method) retrieve', qualified: 'client.qbd.purchaseOrders.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; class: object; createdAt: string; currency: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; expectedDate: string; externalId: string; inventorySite: object; isFullyReceived: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_purchase_order'; otherCustomField1: string; otherCustomField2: string; refNumber: string; revisionNumber: string; salesTaxCode: object; shipmentOrigin: string; shippingAddress: object; shippingMethod: object; shipToEntity: object; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; vendorMessage: string; }", markdown: "## retrieve\n\n`conductor.qbd.purchaseOrders.retrieve(id: string, Conductor-End-User-Id: string): { id: string; class: object; createdAt: string; currency: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; expectedDate: string; externalId: string; inventorySite: object; isFullyReceived: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_purchase_order'; otherCustomField1: string; otherCustomField2: string; refNumber: string; revisionNumber: string; salesTaxCode: object; shipmentOrigin: string; shippingAddress: object; shippingMethod: object; shipToEntity: object; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; vendorMessage: string; }`\n\n**get** `/quickbooks-desktop/purchase-orders/{id}`\n\nRetrieves a purchase order by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific purchase orders by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the purchase order to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; expectedDate: string; externalId: string; inventorySite: { id: string; fullName: string; }; isFullyReceived: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; inventorySiteLocation: object; isBilled: boolean; isManuallyClosed: boolean; item: object; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; payee: object; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: object; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]; objectType: 'qbd_purchase_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySiteLocation: { id: string; fullName: string; }; isBilled: boolean; isManuallyClosed: boolean; item: { id: string; fullName: string; }; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; payee: { id: string; fullName: string; }; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: { id: string; fullName: string; }; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_purchase_order'; otherCustomField1: string; otherCustomField2: string; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingMethod: { id: string; fullName: string; }; shipToEntity: { id: string; fullName: string; }; terms: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; vendorMessage: string; }`\n\n - `id: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `expectedDate: string`\n - `externalId: string`\n - `inventorySite: { id: string; fullName: string; }`\n - `isFullyReceived: boolean`\n - `isManuallyClosed: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySiteLocation: { id: string; fullName: string; }; isBilled: boolean; isManuallyClosed: boolean; item: { id: string; fullName: string; }; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; payee: { id: string; fullName: string; }; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: { id: string; fullName: string; }; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]; objectType: 'qbd_purchase_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySiteLocation: { id: string; fullName: string; }; isBilled: boolean; isManuallyClosed: boolean; item: { id: string; fullName: string; }; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; payee: { id: string; fullName: string; }; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: { id: string; fullName: string; }; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_purchase_order'`\n - `otherCustomField1: string`\n - `otherCustomField2: string`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingMethod: { id: string; fullName: string; }`\n - `shipToEntity: { id: string; fullName: string; }`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n - `vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `vendorMessage: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst purchaseOrder = await conductor.qbd.purchaseOrders.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(purchaseOrder);\n```", perLanguage: { typescript: { method: 'client.qbd.purchaseOrders.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst purchaseOrder = await conductor.qbd.purchaseOrders.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(purchaseOrder.id);", }, python: { method: 'qbd.purchase_orders.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npurchase_order = conductor.qbd.purchase_orders.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(purchase_order.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/purchase-orders/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/purchase-orders/{id}', httpMethod: 'post', summary: 'Update a purchase order', description: 'Updates an existing purchase order.\n\n**NOTE:** If you include `lines` or `lineGroups`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.purchase_orders > (method) update', qualified: 'client.qbd.purchaseOrders.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'classId?: string;', 'documentTemplateId?: string;', 'dueDate?: string;', 'exchangeRate?: number;', 'expectedDate?: string;', 'inventorySiteId?: string;', 'isManuallyClosed?: boolean;', 'isQueuedForEmail?: boolean;', 'isQueuedForPrint?: boolean;', 'lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; payeeId?: string; quantity?: number; rate?: string; salesTaxCodeId?: string; serviceDate?: string; sku?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[];', 'lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; payeeId?: string; quantity?: number; rate?: string; salesTaxCodeId?: string; serviceDate?: string; sku?: string; unitOfMeasure?: string; }[];', 'memo?: string;', 'otherCustomField1?: string;', 'otherCustomField2?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', 'shipmentOrigin?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'shippingMethodId?: string;', 'shipToEntityId?: string;', 'termsId?: string;', 'transactionDate?: string;', 'vendorAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'vendorId?: string;', 'vendorMessage?: string;', ], response: "{ id: string; class: object; createdAt: string; currency: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; expectedDate: string; externalId: string; inventorySite: object; isFullyReceived: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_purchase_order'; otherCustomField1: string; otherCustomField2: string; refNumber: string; revisionNumber: string; salesTaxCode: object; shipmentOrigin: string; shippingAddress: object; shippingMethod: object; shipToEntity: object; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; vendorMessage: string; }", markdown: "## update\n\n`conductor.qbd.purchaseOrders.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, classId?: string, documentTemplateId?: string, dueDate?: string, exchangeRate?: number, expectedDate?: string, inventorySiteId?: string, isManuallyClosed?: boolean, isQueuedForEmail?: boolean, isQueuedForPrint?: boolean, lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; payeeId?: string; quantity?: number; rate?: string; salesTaxCodeId?: string; serviceDate?: string; sku?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[], lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; payeeId?: string; quantity?: number; rate?: string; salesTaxCodeId?: string; serviceDate?: string; sku?: string; unitOfMeasure?: string; }[], memo?: string, otherCustomField1?: string, otherCustomField2?: string, refNumber?: string, salesTaxCodeId?: string, shipmentOrigin?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, shippingMethodId?: string, shipToEntityId?: string, termsId?: string, transactionDate?: string, vendorAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, vendorId?: string, vendorMessage?: string): { id: string; class: object; createdAt: string; currency: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; expectedDate: string; externalId: string; inventorySite: object; isFullyReceived: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_purchase_order'; otherCustomField1: string; otherCustomField2: string; refNumber: string; revisionNumber: string; salesTaxCode: object; shipmentOrigin: string; shippingAddress: object; shippingMethod: object; shipToEntity: object; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: object; vendorAddress: object; vendorMessage: string; }`\n\n**post** `/quickbooks-desktop/purchase-orders/{id}`\n\nUpdates an existing purchase order.\n\n**NOTE:** If you include `lines` or `lineGroups`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the purchase order to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the purchase order object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classId?: string`\n The purchase order's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this purchase order's line items unless overridden at the line item level.\n\n- `documentTemplateId?: string`\n The predefined template in QuickBooks that determines the layout and formatting for this purchase order when printed or displayed.\n\n- `dueDate?: string`\n The date by which this purchase order must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n- `exchangeRate?: number`\n The market exchange rate between this purchase order's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expectedDate?: string`\n The date on which shipment of this purchase order is expected to be completed, in ISO 8601 format (YYYY-MM-DD).\n\n- `inventorySiteId?: string`\n The site location where inventory for the item associated with this purchase order is stored.\n\n- `isManuallyClosed?: boolean`\n Indicates whether this purchase order has been manually marked as closed, even if all items have not been received or the sale has not been cancelled. Once the purchase order is marked as closed, all of its line items become closed as well. You cannot change `isManuallyClosed` to `false` after the purchase order has been fully received.\n\n- `isQueuedForEmail?: boolean`\n Indicates whether this purchase order is included in the queue of documents for QuickBooks to email to the customer.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this purchase order is included in the queue of documents for QuickBooks to print.\n\n- `lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; payeeId?: string; quantity?: number; rate?: string; salesTaxCodeId?: string; serviceDate?: string; sku?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The purchase order's line item groups, each representing a predefined set of related items.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing line item groups for the purchase order with this array. To keep any existing line item groups, you must include them in this array even if they have not changed. **Any line item groups not included will be removed.**\n\n2. To add a new line item group, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any line item groups, omit this field entirely to keep them unchanged.\n\n- `lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; payeeId?: string; quantity?: number; rate?: string; salesTaxCodeId?: string; serviceDate?: string; sku?: string; unitOfMeasure?: string; }[]`\n The purchase order's line items, each representing a single product or service ordered.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing line items for the purchase order with this array. To keep any existing line items, you must include them in this array even if they have not changed. **Any line items not included will be removed.**\n\n2. To add a new line item, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any line items, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this purchase order that appears in reports, but not on the purchase order.\n\n- `otherCustomField1?: string`\n A built-in custom field for additional information specific to this purchase order. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all purchase orders for convenience. Developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Hidden by default in the QuickBooks UI.\n\n- `otherCustomField2?: string`\n A second built-in custom field for additional information specific to this purchase order. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all purchase orders for convenience. Like `otherCustomField1`, developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Hidden by default in the QuickBooks UI.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this purchase order, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 11 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this purchase order, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the vendor. This can be overridden on the purchase order's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `shipmentOrigin?: string`\n The origin location from where the product associated with this purchase order is shipped. This is the point at which ownership and liability for goods transfer from seller to buyer. Internally, QuickBooks uses the term \"FOB\" for this field, which stands for \"freight on board\". This field is informational and has no accounting implications.\n\nMaximum length: 13 characters.\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The purchase order's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `shippingMethodId?: string`\n The shipping method used for this purchase order, such as standard mail or overnight delivery.\n\n- `shipToEntityId?: string`\n The customer, vendor, employee, or other entity to whom this purchase order is to be shipped.\n\n- `termsId?: string`\n The purchase order's payment terms, defining when payment is due and any applicable discounts.\n\n- `transactionDate?: string`\n The date of this purchase order, in ISO 8601 format (YYYY-MM-DD).\n\n- `vendorAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The address of the vendor who sent this purchase order.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `vendorId?: string`\n The vendor who sent this purchase order for goods or services purchased.\n\n- `vendorMessage?: string`\n A message to be printed on this purchase order for the vendor to read.\n\n### Returns\n\n- `{ id: string; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; expectedDate: string; externalId: string; inventorySite: { id: string; fullName: string; }; isFullyReceived: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; inventorySiteLocation: object; isBilled: boolean; isManuallyClosed: boolean; item: object; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; payee: object; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: object; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]; objectType: 'qbd_purchase_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySiteLocation: { id: string; fullName: string; }; isBilled: boolean; isManuallyClosed: boolean; item: { id: string; fullName: string; }; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; payee: { id: string; fullName: string; }; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: { id: string; fullName: string; }; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_purchase_order'; otherCustomField1: string; otherCustomField2: string; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingMethod: { id: string; fullName: string; }; shipToEntity: { id: string; fullName: string; }; terms: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; vendorMessage: string; }`\n\n - `id: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `expectedDate: string`\n - `externalId: string`\n - `inventorySite: { id: string; fullName: string; }`\n - `isFullyReceived: boolean`\n - `isManuallyClosed: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySiteLocation: { id: string; fullName: string; }; isBilled: boolean; isManuallyClosed: boolean; item: { id: string; fullName: string; }; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; payee: { id: string; fullName: string; }; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: { id: string; fullName: string; }; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]; objectType: 'qbd_purchase_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; inventorySiteLocation: { id: string; fullName: string; }; isBilled: boolean; isManuallyClosed: boolean; item: { id: string; fullName: string; }; objectType: 'qbd_purchase_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; payee: { id: string; fullName: string; }; quantity: number; rate: string; receivedQuantity: number; salesTaxCode: { id: string; fullName: string; }; serviceDate: string; sku: string; unbilledQuantity: number; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_purchase_order'`\n - `otherCustomField1: string`\n - `otherCustomField2: string`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingMethod: { id: string; fullName: string; }`\n - `shipToEntity: { id: string; fullName: string; }`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n - `vendorAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `vendorMessage: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst purchaseOrder = await conductor.qbd.purchaseOrders.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(purchaseOrder);\n```", perLanguage: { typescript: { method: 'client.qbd.purchaseOrders.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst purchaseOrder = await conductor.qbd.purchaseOrders.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(purchaseOrder.id);", }, python: { method: 'qbd.purchase_orders.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npurchase_order = conductor.qbd.purchase_orders.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(purchase_order.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/purchase-orders/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "classId": "80000001-1234567890",\n "documentTemplateId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "expectedDate": "2024-01-01",\n "inventorySiteId": "80000001-1234567890",\n "isManuallyClosed": true,\n "isQueuedForEmail": true,\n "isQueuedForPrint": true,\n "memo": "Office supplies for September",\n "otherCustomField1": "Special handling required",\n "otherCustomField2": "Always ship with a spare",\n "refNumber": "PO-1234",\n "salesTaxCodeId": "80000001-1234567890",\n "shipmentOrigin": "shipmentOrigin",\n "shippingMethodId": "80000001-1234567890",\n "shipToEntityId": "80000001-1234567890",\n "termsId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "vendorId": "80000001-1234567890",\n "vendorMessage": "Please include packing slip with shipment"\n }\'', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/purchase-orders/{id}', httpMethod: 'delete', summary: 'Delete a purchase order', description: 'Permanently deletes a purchase order. The deletion will fail if the purchase order is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.purchase_orders > (method) delete', qualified: 'client.qbd.purchaseOrders.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_purchase_order'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.purchaseOrders.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_purchase_order'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/purchase-orders/{id}`\n\nPermanently deletes a purchase order. The deletion will fail if the purchase order is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the purchase order to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_purchase_order'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_purchase_order'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst purchaseOrder = await conductor.qbd.purchaseOrders.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(purchaseOrder);\n```", perLanguage: { typescript: { method: 'client.qbd.purchaseOrders.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst purchaseOrder = await conductor.qbd.purchaseOrders.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(purchaseOrder.id);", }, python: { method: 'qbd.purchase_orders.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npurchase_order = conductor.qbd.purchase_orders.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(purchase_order.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/purchase-orders/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/receive-payments', httpMethod: 'post', summary: 'Create a receive-payment', description: 'Records a customer payment and optionally applies it to specific invoices, discounts, or credits. All allocations must target the same accounts receivable account as those invoices, and each one has to include a payment amount, discount, or credit so QuickBooks can close out the balance.', stainlessPath: '(resource) qbd.receive_payments > (method) create', qualified: 'client.qbd.receivePayments.create', params: [ 'customerId: string;', 'totalAmount: string;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'applyToTransactions?: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[];', "creditCardTransaction?: { request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }; };", 'depositToAccountId?: string;', 'exchangeRate?: number;', 'externalId?: string;', 'isAutoApply?: boolean;', 'memo?: string;', 'paymentMethodId?: string;', 'receivablesAccountId?: string;', 'refNumber?: string;', ], response: "{ id: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: object; discountAmount: string; discountClass: object; linkedTransactions: object[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardTransaction: { request: object; response: object; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_receive_payment'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; unusedCredits: string; unusedPayment: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.receivePayments.create(customerId: string, totalAmount: string, transactionDate: string, Conductor-End-User-Id: string, applyToTransactions?: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[], creditCardTransaction?: { request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }; }, depositToAccountId?: string, exchangeRate?: number, externalId?: string, isAutoApply?: boolean, memo?: string, paymentMethodId?: string, receivablesAccountId?: string, refNumber?: string): { id: string; appliedToTransactions: object[]; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customFields: object[]; depositToAccount: object; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_receive_payment'; paymentMethod: object; receivablesAccount: object; refNumber: string; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; unusedCredits: string; unusedPayment: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/receive-payments`\n\nRecords a customer payment and optionally applies it to specific invoices, discounts, or credits. All allocations must target the same accounts receivable account as those invoices, and each one has to include a payment amount, discount, or credit so QuickBooks can close out the balance.\n\n### Parameters\n\n- `customerId: string`\n The customer or customer-job to which the payment for this receive-payment is credited.\n\n- `totalAmount: string`\n The total monetary amount of this receive-payment, represented as a decimal string.\n\n**NOTE**: The sum of the `paymentAmount` amounts in the `applyToTransactions` array cannot exceed the `totalAmount`, or you will receive an error.\n\nDecimal string format: exactly 2 decimal places when cents are included and up to 13 digits before the decimal point (for example, \"123.45\").\n\n- `transactionDate: string`\n The date of this receive-payment, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `applyToTransactions?: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[]`\n The invoices to be paid by this receive-payment. This will create a link between this receive-payment and the specified invoices.\n\n**IMPORTANT**: In each `applyToTransactions` object, you must specify either `paymentAmount`, `applyCredits`, `discountAmount`, or any combination of these; if none of these are specified, you will receive an error for an empty transaction.\n\n**IMPORTANT**: The target invoice must have `isPaid=false`, otherwise, QuickBooks will report this object as \"cannot be found\".\n\n**NOTE**: You must specify either `isAutoApply` or `applyToTransactions` when creating a receive-payment, but never both.\n\n- `creditCardTransaction?: { request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }; }`\n The credit card transaction data for this receive-payment's payment when using QuickBooks Merchant Services (QBMS). If specifying this field, you must also specify the `paymentMethod` field.\n - `request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }`\n The transaction request data originally supplied for this credit card transaction when using QuickBooks Merchant Services (QBMS).\n - `response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }`\n The transaction response data for this credit card transaction when using QuickBooks Merchant Services (QBMS).\n\n- `depositToAccountId?: string`\n The account where the funds for this receive-payment will be or have been deposited. If omitted, QuickBooks Desktop uses the default Undeposited Funds account configured in the company file.\n\n- `exchangeRate?: number`\n The market exchange rate between this receive-payment's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isAutoApply?: boolean`\n When `true`, QuickBooks applies `totalAmount` to any outstanding transaction that exactly matches `totalAmount`. If no exact match is found, this receive-payment is applied to the oldest outstanding transaction for the customer-job. When `false`, QuickBooks records the payment but does not apply it to any specific transaction, causing the amount to appear as a credit on the customer-job's next transaction.\n\n**IMPORTANT**: You must specify either `isAutoApply` or `applyToTransactions` when creating a receive-payment, but never both.\n\n- `memo?: string`\n A memo or note for this receive-payment that will be displayed at the beginning of reports containing details about this receive-payment.\n\n- `paymentMethodId?: string`\n The receive-payment's payment method (e.g., cash, check, credit card).\n\n**NOTE**: If this receive-payment contains credit card transaction data supplied from QuickBooks Merchant Services (QBMS) transaction responses, you must specify a credit card payment method (e.g., \"Visa\", \"MasterCard\", etc.).\n\n- `receivablesAccountId?: string`\n The Accounts-Receivable (A/R) account to which this receive-payment is assigned, used to track the amount owed. If omitted, QuickBooks Desktop uses the default A/R account configured in the company file.\n\n**IMPORTANT**: If this receive-payment is linked to other transactions, this A/R account must match the `receivablesAccount` used in all linked transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this receive-payment, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 20 characters.\n\n### Returns\n\n- `{ id: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_receive_payment'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; unusedCredits: string; unusedPayment: string; updatedAt: string; }`\n\n - `id: string`\n - `appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `createdAt: string`\n - `creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `depositToAccount: { id: string; fullName: string; }`\n - `exchangeRate: number`\n - `externalId: string`\n - `memo: string`\n - `objectType: 'qbd_receive_payment'`\n - `paymentMethod: { id: string; fullName: string; }`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `unusedCredits: string`\n - `unusedPayment: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst receivePayment = await conductor.qbd.receivePayments.create({\n customerId: '80000001-1234567890',\n totalAmount: '1000.00',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(receivePayment);\n```", perLanguage: { typescript: { method: 'client.qbd.receivePayments.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst receivePayment = await conductor.qbd.receivePayments.create({\n customerId: '80000001-1234567890',\n totalAmount: '1000.00',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(receivePayment.id);", }, python: { method: 'qbd.receive_payments.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreceive_payment = conductor.qbd.receive_payments.create(\n customer_id="80000001-1234567890",\n total_amount="1000.00",\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(receive_payment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/receive-payments \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "customerId": "80000001-1234567890",\n "totalAmount": "1000.00",\n "transactionDate": "2024-10-01",\n "depositToAccountId": "80000001-1234567890",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isAutoApply": false,\n "memo": "Payment received at store location - cash",\n "paymentMethodId": "80000001-1234567890",\n "receivablesAccountId": "80000001-1234567890",\n "refNumber": "PAYMENT-1234"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/receive-payments', httpMethod: 'get', summary: 'List all receive-payments', description: 'Returns a list of receive-payments. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.receive_payments > (method) list', qualified: 'client.qbd.receivePayments.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'customerIds?: string[];', 'ids?: string[];', 'includeLineItems?: boolean;', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: object; discountAmount: string; discountClass: object; linkedTransactions: object[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardTransaction: { request: object; response: object; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_receive_payment'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; unusedCredits: string; unusedPayment: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.receivePayments.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, customerIds?: string[], ids?: string[], includeLineItems?: boolean, limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; appliedToTransactions: object[]; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customFields: object[]; depositToAccount: object; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_receive_payment'; paymentMethod: object; receivablesAccount: object; refNumber: string; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; unusedCredits: string; unusedPayment: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/receive-payments`\n\nReturns a list of receive-payments. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for receive-payments associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for receive-payments in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `customerIds?: string[]`\n Filter for receive-payments received from these customers.\n\n- `ids?: string[]`\n Filter for specific receive-payments by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for receive-payments whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for receive-payments whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for receive-payments whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific receive-payments by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for receive-payments whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for receive-payments whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for receive-payments whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for receive-payments whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for receive-payments updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for receive-payments updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_receive_payment'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; unusedCredits: string; unusedPayment: string; updatedAt: string; }`\n\n - `id: string`\n - `appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `createdAt: string`\n - `creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `depositToAccount: { id: string; fullName: string; }`\n - `exchangeRate: number`\n - `externalId: string`\n - `memo: string`\n - `objectType: 'qbd_receive_payment'`\n - `paymentMethod: { id: string; fullName: string; }`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `unusedCredits: string`\n - `unusedPayment: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const receivePayment of conductor.qbd.receivePayments.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(receivePayment);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.receivePayments.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const receivePayment of conductor.qbd.receivePayments.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(receivePayment.id);\n}", }, python: { method: 'qbd.receive_payments.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.receive_payments.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/receive-payments \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/receive-payments/{id}', httpMethod: 'get', summary: 'Retrieve a receive-payment', description: 'Retrieves a receive-payment by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific receive-payments by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.receive_payments > (method) retrieve', qualified: 'client.qbd.receivePayments.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: object; discountAmount: string; discountClass: object; linkedTransactions: object[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardTransaction: { request: object; response: object; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_receive_payment'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; unusedCredits: string; unusedPayment: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.receivePayments.retrieve(id: string, Conductor-End-User-Id: string): { id: string; appliedToTransactions: object[]; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customFields: object[]; depositToAccount: object; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_receive_payment'; paymentMethod: object; receivablesAccount: object; refNumber: string; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; unusedCredits: string; unusedPayment: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/receive-payments/{id}`\n\nRetrieves a receive-payment by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific receive-payments by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the receive-payment to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_receive_payment'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; unusedCredits: string; unusedPayment: string; updatedAt: string; }`\n\n - `id: string`\n - `appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `createdAt: string`\n - `creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `depositToAccount: { id: string; fullName: string; }`\n - `exchangeRate: number`\n - `externalId: string`\n - `memo: string`\n - `objectType: 'qbd_receive_payment'`\n - `paymentMethod: { id: string; fullName: string; }`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `unusedCredits: string`\n - `unusedPayment: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst receivePayment = await conductor.qbd.receivePayments.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(receivePayment);\n```", perLanguage: { typescript: { method: 'client.qbd.receivePayments.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst receivePayment = await conductor.qbd.receivePayments.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(receivePayment.id);", }, python: { method: 'qbd.receive_payments.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreceive_payment = conductor.qbd.receive_payments.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(receive_payment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/receive-payments/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/receive-payments/{id}', httpMethod: 'post', summary: 'Update a receive-payment', description: 'Updates a received payment. When you resubmit applications to invoices, keep them on the same accounts receivable account and include the payment amount, discount, or credit on every allocation you send.', stainlessPath: '(resource) qbd.receive_payments > (method) update', qualified: 'client.qbd.receivePayments.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'applyToTransactions?: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[];', "creditCardTransaction?: { request?: { address?: string; commercialCardCode?: string; expirationMonth?: number; expirationYear?: number; name?: string; number?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; creditCardTransactionId?: string; merchantAccountNumber?: string; paymentGroupingCode?: number; paymentStatus?: 'completed' | 'unknown'; reconBatchId?: string; statusCode?: number; statusMessage?: string; transactionAuthorizationStamp?: number; transactionAuthorizedAt?: string; }; };", 'customerId?: string;', 'depositToAccountId?: string;', 'exchangeRate?: number;', 'memo?: string;', 'paymentMethodId?: string;', 'receivablesAccountId?: string;', 'refNumber?: string;', 'totalAmount?: string;', 'transactionDate?: string;', ], response: "{ id: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: object; discountAmount: string; discountClass: object; linkedTransactions: object[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardTransaction: { request: object; response: object; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_receive_payment'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; unusedCredits: string; unusedPayment: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.receivePayments.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, applyToTransactions?: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[], creditCardTransaction?: { request?: { address?: string; commercialCardCode?: string; expirationMonth?: number; expirationYear?: number; name?: string; number?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; creditCardTransactionId?: string; merchantAccountNumber?: string; paymentGroupingCode?: number; paymentStatus?: 'completed' | 'unknown'; reconBatchId?: string; statusCode?: number; statusMessage?: string; transactionAuthorizationStamp?: number; transactionAuthorizedAt?: string; }; }, customerId?: string, depositToAccountId?: string, exchangeRate?: number, memo?: string, paymentMethodId?: string, receivablesAccountId?: string, refNumber?: string, totalAmount?: string, transactionDate?: string): { id: string; appliedToTransactions: object[]; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customFields: object[]; depositToAccount: object; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_receive_payment'; paymentMethod: object; receivablesAccount: object; refNumber: string; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; unusedCredits: string; unusedPayment: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/receive-payments/{id}`\n\nUpdates a received payment. When you resubmit applications to invoices, keep them on the same accounts receivable account and include the payment amount, discount, or credit on every allocation you send.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the receive-payment to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the receive-payment object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `applyToTransactions?: { transactionId: string; applyCredits?: { appliedAmount: string; creditTransactionId: string; overrideCreditApplication?: boolean; }[]; discountAccountId?: string; discountAmount?: string; discountClassId?: string; paymentAmount?: string; }[]`\n The invoices to be paid by this receive-payment. This will create a link between this receive-payment and the specified invoices.\n\n**IMPORTANT**: In each `applyToTransactions` object, you must specify either `paymentAmount`, `applyCredits`, `discountAmount`, or any combination of these; if none of these are specified, you will receive an error for an empty transaction.\n\n**IMPORTANT**: The target invoice must have `isPaid=false`, otherwise, QuickBooks will report this object as \"cannot be found\".\n\n- `creditCardTransaction?: { request?: { address?: string; commercialCardCode?: string; expirationMonth?: number; expirationYear?: number; name?: string; number?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; creditCardTransactionId?: string; merchantAccountNumber?: string; paymentGroupingCode?: number; paymentStatus?: 'completed' | 'unknown'; reconBatchId?: string; statusCode?: number; statusMessage?: string; transactionAuthorizationStamp?: number; transactionAuthorizedAt?: string; }; }`\n The credit card transaction data for this receive-payment's payment when using QuickBooks Merchant Services (QBMS). If specifying this field, you must also specify the `paymentMethod` field.\n - `request?: { address?: string; commercialCardCode?: string; expirationMonth?: number; expirationYear?: number; name?: string; number?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }`\n The transaction request data originally supplied for this credit card transaction when using QuickBooks Merchant Services (QBMS).\n - `response?: { authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; creditCardTransactionId?: string; merchantAccountNumber?: string; paymentGroupingCode?: number; paymentStatus?: 'completed' | 'unknown'; reconBatchId?: string; statusCode?: number; statusMessage?: string; transactionAuthorizationStamp?: number; transactionAuthorizedAt?: string; }`\n The transaction response data for this credit card transaction when using QuickBooks Merchant Services (QBMS).\n\n- `customerId?: string`\n The customer or customer-job to which the payment for this receive-payment is credited.\n\n- `depositToAccountId?: string`\n The account where the funds for this receive-payment will be or have been deposited.\n\n- `exchangeRate?: number`\n The market exchange rate between this receive-payment's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `memo?: string`\n A memo or note for this receive-payment that will be displayed at the beginning of reports containing details about this receive-payment.\n\n- `paymentMethodId?: string`\n The receive-payment's payment method (e.g., cash, check, credit card).\n\n- `receivablesAccountId?: string`\n The Accounts-Receivable (A/R) account to which this receive-payment is assigned, used to track the amount owed. If omitted, QuickBooks Desktop uses the default A/R account configured in the company file.\n\n**IMPORTANT**: If this receive-payment is linked to other transactions, this A/R account must match the `receivablesAccount` used in all linked transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this receive-payment, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 20 characters.\n\n- `totalAmount?: string`\n The total monetary amount of this receive-payment, represented as a decimal string.\n\n**NOTE**: The sum of the `paymentAmount` amounts in the `applyToTransactions` array cannot exceed the `totalAmount`, or you will receive an error.\n\nDecimal string format: exactly 2 decimal places when cents are included and up to 13 digits before the decimal point (for example, \"123.45\").\n\n- `transactionDate?: string`\n The date of this receive-payment, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]; createdAt: string; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; exchangeRate: number; externalId: string; memo: string; objectType: 'qbd_receive_payment'; paymentMethod: { id: string; fullName: string; }; receivablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; unusedCredits: string; unusedPayment: string; updatedAt: string; }`\n\n - `id: string`\n - `appliedToTransactions: { amount: string; balanceRemaining: string; discountAccount: { id: string; fullName: string; }; discountAmount: string; discountClass: { id: string; fullName: string; }; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; refNumber: string; transactionDate: string; transactionId: string; transactionType: string; }[]`\n - `createdAt: string`\n - `creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `depositToAccount: { id: string; fullName: string; }`\n - `exchangeRate: number`\n - `externalId: string`\n - `memo: string`\n - `objectType: 'qbd_receive_payment'`\n - `paymentMethod: { id: string; fullName: string; }`\n - `receivablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `unusedCredits: string`\n - `unusedPayment: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst receivePayment = await conductor.qbd.receivePayments.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(receivePayment);\n```", perLanguage: { typescript: { method: 'client.qbd.receivePayments.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst receivePayment = await conductor.qbd.receivePayments.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(receivePayment.id);", }, python: { method: 'qbd.receive_payments.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreceive_payment = conductor.qbd.receive_payments.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(receive_payment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/receive-payments/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "customerId": "80000001-1234567890",\n "depositToAccountId": "80000001-1234567890",\n "exchangeRate": 1.2345,\n "memo": "Payment received at store location - cash",\n "paymentMethodId": "80000001-1234567890",\n "receivablesAccountId": "80000001-1234567890",\n "refNumber": "PAYMENT-1234",\n "totalAmount": "1000.00",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/receive-payments/{id}', httpMethod: 'delete', summary: 'Delete a receive-payment', description: 'Permanently deletes a receive-payment. The deletion will fail if the receive-payment is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.receive_payments > (method) delete', qualified: 'client.qbd.receivePayments.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_receive_payment'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.receivePayments.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_receive_payment'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/receive-payments/{id}`\n\nPermanently deletes a receive-payment. The deletion will fail if the receive-payment is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the receive-payment to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_receive_payment'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_receive_payment'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst receivePayment = await conductor.qbd.receivePayments.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(receivePayment);\n```", perLanguage: { typescript: { method: 'client.qbd.receivePayments.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst receivePayment = await conductor.qbd.receivePayments.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(receivePayment.id);", }, python: { method: 'qbd.receive_payments.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreceive_payment = conductor.qbd.receive_payments.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(receive_payment.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/receive-payments/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'aging', endpoint: '/quickbooks-desktop/reports/aging', httpMethod: 'get', summary: 'Retrieve an aging report', description: 'Retrieves an accounts receivable, accounts payable, or collections aging report showing unpaid invoices and bills by aging criteria. This report is useful for analyzing receivables, payables, and collection work across summary or detail aging views.', stainlessPath: '(resource) qbd.reports > (method) aging', qualified: 'client.qbd.reports.aging', params: [ 'reportType: string;', 'Conductor-End-User-Id: string;', 'accountFullNames?: string[];', 'accountIds?: string[];', "accountsToInclude?: 'all' | 'in_use';", 'accountType?: string;', "agingAsOf?: 'report_end_date' | 'today';", 'classFullNames?: string[];', 'classIds?: string[];', "detailLevel?: 'all' | 'all_except_summary' | 'summary_only';", 'entityFullNames?: string[];', 'entityIds?: string[];', "entityType?: 'customer' | 'employee' | 'other_name' | 'vendor';", 'includeColumns?: string[];', 'itemFullNames?: string[];', 'itemIds?: string[];', 'itemType?: string;', "postingStatus?: 'either' | 'non_posting' | 'posting';", 'reportDateFrom?: string;', 'reportDateMacro?: string;', 'reportDateTo?: string;', 'transactionTypes?: string[];', 'updatedAfter?: string;', 'updatedBefore?: string;', 'updatedDateMacro?: string;', ], response: "{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }", markdown: "## aging\n\n`conductor.qbd.reports.aging(reportType: string, Conductor-End-User-Id: string, accountFullNames?: string[], accountIds?: string[], accountsToInclude?: 'all' | 'in_use', accountType?: string, agingAsOf?: 'report_end_date' | 'today', classFullNames?: string[], classIds?: string[], detailLevel?: 'all' | 'all_except_summary' | 'summary_only', entityFullNames?: string[], entityIds?: string[], entityType?: 'customer' | 'employee' | 'other_name' | 'vendor', includeColumns?: string[], itemFullNames?: string[], itemIds?: string[], itemType?: string, postingStatus?: 'either' | 'non_posting' | 'posting', reportDateFrom?: string, reportDateMacro?: string, reportDateTo?: string, transactionTypes?: string[], updatedAfter?: string, updatedBefore?: string, updatedDateMacro?: string): { basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: object[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: object | object | object | object[]; subtitle: string; title: string; }`\n\n**get** `/quickbooks-desktop/reports/aging`\n\nRetrieves an accounts receivable, accounts payable, or collections aging report showing unpaid invoices and bills by aging criteria. This report is useful for analyzing receivables, payables, and collection work across summary or detail aging views.\n\n### Parameters\n\n- `reportType: string`\n The aging report type to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountFullNames?: string[]`\n Filter report rows by account `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more account full names. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountIds?: string[]`\n Filter report rows by QuickBooks-assigned account IDs. Accepts one or more account IDs. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountsToInclude?: 'all' | 'in_use'`\n Whether to include all accounts or only accounts in use.\n\n- `accountType?: string`\n Filter report rows by account type. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `agingAsOf?: 'report_end_date' | 'today'`\n The date through which QuickBooks Desktop calculates aging information.\n\n- `classFullNames?: string[]`\n Filter report rows by class `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more class full names. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `classIds?: string[]`\n Filter report rows by QuickBooks-assigned class IDs. Accepts one or more class IDs. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `detailLevel?: 'all' | 'all_except_summary' | 'summary_only'`\n The report detail level to include. Use `all` for all rows, `all_except_summary` to omit summary rows, or `summary_only` to return only summary rows.\n\n- `entityFullNames?: string[]`\n Filter report rows by entity `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more entity full names. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityIds?: string[]`\n Filter report rows by QuickBooks-assigned entity IDs. Accepts one or more entity IDs. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityType?: 'customer' | 'employee' | 'other_name' | 'vendor'`\n Filter report rows by entity type, such as customer, vendor, employee, or other name. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `includeColumns?: string[]`\n The report columns to include, by column type. Accepts one or more columns.\n\n**IMPORTANT**: When this parameter is present, QuickBooks Desktop omits its default report columns unless you include them here.\n\n- `itemFullNames?: string[]`\n Filter report rows by item `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more item full names. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemIds?: string[]`\n Filter report rows by QuickBooks-assigned item IDs. Accepts one or more item IDs. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemType?: string`\n Filter report rows by item type. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `postingStatus?: 'either' | 'non_posting' | 'posting'`\n Filter report rows that are posting, non-posting, or either. Posting status refers to whether QuickBooks records the transaction in an account register.\n\n- `reportDateFrom?: string`\n Filter report rows dated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `reportDateMacro?: string`\n A QuickBooks Desktop relative date macro for the report period. Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`.\n\n- `reportDateTo?: string`\n Filter report rows dated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `transactionTypes?: string[]`\n Filter report rows by transaction type. Accepts one or more transaction types.\n\n- `updatedAfter?: string`\n Filter report rows updated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedBefore?: string`\n Filter report rows updated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedDateMacro?: string`\n A QuickBooks Desktop relative updated-date macro. Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n### Returns\n\n- `{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }`\n\n - `basis: 'accrual' | 'cash' | 'none'`\n - `category: string`\n - `columnCount: number`\n - `columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]`\n - `columnTitleRowCount: number`\n - `objectType: 'qbd_report'`\n - `reportType: string`\n - `rowCount: number`\n - `rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]`\n - `subtitle: string`\n - `title: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst report = await conductor.qbd.reports.aging({ reportType: 'ap_aging_detail', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(report);\n```", perLanguage: { typescript: { method: 'client.qbd.reports.aging', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst report = await conductor.qbd.reports.aging({\n reportType: 'ap_aging_detail',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report.basis);", }, python: { method: 'qbd.reports.aging', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreport = conductor.qbd.reports.aging(\n report_type="ap_aging_detail",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(report.basis)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/reports/aging \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'budget_summary', endpoint: '/quickbooks-desktop/reports/budget-summary', httpMethod: 'get', summary: 'Retrieve a budget summary report', description: 'Retrieves a QuickBooks Desktop budget summary report for Balance Sheet or Profit and Loss budgets, including budget overview, budget versus actual, and performance views. This report compares budgeted amounts against actual activity for a fiscal year and budget criterion; the target budget must already exist in QuickBooks Desktop.', stainlessPath: '(resource) qbd.reports > (method) budget_summary', qualified: 'client.qbd.reports.budgetSummary', params: [ 'fiscalYear: number;', 'reportType: string;', 'Conductor-End-User-Id: string;', "budgetCriterion?: 'accounts' | 'accounts_and_classes' | 'accounts_and_customers';", 'classFullNames?: string[];', 'classIds?: string[];', 'reportDateFrom?: string;', 'reportDateMacro?: string;', 'reportDateTo?: string;', "summarizeColumnsBy?: 'class' | 'customer' | 'date';", "summarizeRowsBy?: 'account' | 'class' | 'customer';", ], response: "{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }", markdown: "## budget_summary\n\n`conductor.qbd.reports.budgetSummary(fiscalYear: number, reportType: string, Conductor-End-User-Id: string, budgetCriterion?: 'accounts' | 'accounts_and_classes' | 'accounts_and_customers', classFullNames?: string[], classIds?: string[], reportDateFrom?: string, reportDateMacro?: string, reportDateTo?: string, summarizeColumnsBy?: 'class' | 'customer' | 'date', summarizeRowsBy?: 'account' | 'class' | 'customer'): { basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: object[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: object | object | object | object[]; subtitle: string; title: string; }`\n\n**get** `/quickbooks-desktop/reports/budget-summary`\n\nRetrieves a QuickBooks Desktop budget summary report for Balance Sheet or Profit and Loss budgets, including budget overview, budget versus actual, and performance views. This report compares budgeted amounts against actual activity for a fiscal year and budget criterion; the target budget must already exist in QuickBooks Desktop.\n\n### Parameters\n\n- `fiscalYear: number`\n The fiscal year of the QuickBooks budget. QuickBooks Desktop returns the full fiscal year for prior years and year-to-date data for the current fiscal year.\n\n- `reportType: string`\n The budget summary report type to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `budgetCriterion?: 'accounts' | 'accounts_and_classes' | 'accounts_and_customers'`\n What the budget covers, such as accounts, accounts and classes, or accounts and customers.\n\n- `classFullNames?: string[]`\n Filter report rows by class `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more class full names. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `classIds?: string[]`\n Filter report rows by QuickBooks-assigned class IDs. Accepts one or more class IDs. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `reportDateFrom?: string`\n Filter report rows dated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `reportDateMacro?: string`\n A QuickBooks Desktop relative date macro for the report period. Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`.\n\n- `reportDateTo?: string`\n Filter report rows dated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `summarizeColumnsBy?: 'class' | 'customer' | 'date'`\n How QuickBooks Desktop calculates budget report columns and labels column headers.\n\n- `summarizeRowsBy?: 'account' | 'class' | 'customer'`\n How QuickBooks Desktop labels budget report rows.\n\n### Returns\n\n- `{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }`\n\n - `basis: 'accrual' | 'cash' | 'none'`\n - `category: string`\n - `columnCount: number`\n - `columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]`\n - `columnTitleRowCount: number`\n - `objectType: 'qbd_report'`\n - `reportType: string`\n - `rowCount: number`\n - `rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]`\n - `subtitle: string`\n - `title: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst report = await conductor.qbd.reports.budgetSummary({\n fiscalYear: 2026,\n reportType: 'balance_sheet_budget_overview',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report);\n```", perLanguage: { typescript: { method: 'client.qbd.reports.budgetSummary', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst report = await conductor.qbd.reports.budgetSummary({\n fiscalYear: 2026,\n reportType: 'balance_sheet_budget_overview',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report.basis);", }, python: { method: 'qbd.reports.budget_summary', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreport = conductor.qbd.reports.budget_summary(\n fiscal_year=2026,\n report_type="balance_sheet_budget_overview",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(report.basis)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/reports/budget-summary \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'custom_detail', endpoint: '/quickbooks-desktop/reports/custom-detail', httpMethod: 'get', summary: 'Retrieve a custom detail report', description: 'Retrieves a custom transaction detail report built from the row grouping, included columns, date period, and filters you request. This report is useful when no preset detail report exposes the transaction rows or report-only columns you need; QuickBooks Desktop does not choose default columns for this report.', stainlessPath: '(resource) qbd.reports > (method) custom_detail', qualified: 'client.qbd.reports.customDetail', params: [ 'includeColumns: string[];', 'summarizeRowsBy: string;', 'Conductor-End-User-Id: string;', 'accountFullNames?: string[];', 'accountIds?: string[];', "accountsToInclude?: 'all' | 'in_use';", 'accountType?: string;', "basis?: 'accrual' | 'cash' | 'none';", 'classFullNames?: string[];', 'classIds?: string[];', "detailLevel?: 'all' | 'all_except_summary' | 'summary_only';", 'entityFullNames?: string[];', 'entityIds?: string[];', "entityType?: 'customer' | 'employee' | 'other_name' | 'vendor';", 'itemFullNames?: string[];', 'itemIds?: string[];', 'itemType?: string;', "openBalanceAsOf?: 'report_end_date' | 'today';", "postingStatus?: 'either' | 'non_posting' | 'posting';", 'reportDateFrom?: string;', 'reportDateMacro?: string;', 'reportDateTo?: string;', "reportType?: 'custom_transaction_detail';", 'transactionTypes?: string[];', 'updatedAfter?: string;', 'updatedBefore?: string;', 'updatedDateMacro?: string;', ], response: "{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }", markdown: "## custom_detail\n\n`conductor.qbd.reports.customDetail(includeColumns: string[], summarizeRowsBy: string, Conductor-End-User-Id: string, accountFullNames?: string[], accountIds?: string[], accountsToInclude?: 'all' | 'in_use', accountType?: string, basis?: 'accrual' | 'cash' | 'none', classFullNames?: string[], classIds?: string[], detailLevel?: 'all' | 'all_except_summary' | 'summary_only', entityFullNames?: string[], entityIds?: string[], entityType?: 'customer' | 'employee' | 'other_name' | 'vendor', itemFullNames?: string[], itemIds?: string[], itemType?: string, openBalanceAsOf?: 'report_end_date' | 'today', postingStatus?: 'either' | 'non_posting' | 'posting', reportDateFrom?: string, reportDateMacro?: string, reportDateTo?: string, reportType?: 'custom_transaction_detail', transactionTypes?: string[], updatedAfter?: string, updatedBefore?: string, updatedDateMacro?: string): { basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: object[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: object | object | object | object[]; subtitle: string; title: string; }`\n\n**get** `/quickbooks-desktop/reports/custom-detail`\n\nRetrieves a custom transaction detail report built from the row grouping, included columns, date period, and filters you request. This report is useful when no preset detail report exposes the transaction rows or report-only columns you need; QuickBooks Desktop does not choose default columns for this report.\n\n### Parameters\n\n- `includeColumns: string[]`\n The report columns to include, by column type. Accepts one or more columns.\n\n**IMPORTANT**: When this parameter is present, QuickBooks Desktop omits its default report columns unless you include them here.\n\n- `summarizeRowsBy: string`\n How QuickBooks Desktop calculates report data and labels report rows.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountFullNames?: string[]`\n Filter report rows by account `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more account full names. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountIds?: string[]`\n Filter report rows by QuickBooks-assigned account IDs. Accepts one or more account IDs. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountsToInclude?: 'all' | 'in_use'`\n Whether to include all accounts or only accounts in use.\n\n- `accountType?: string`\n Filter report rows by account type. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `basis?: 'accrual' | 'cash' | 'none'`\n The accounting basis to use for the report. Use `cash` to base income and expenses on when money changes hands, `accrual` to base them on invoice and bill dates, or `none` to use the QuickBooks Desktop default for the report.\n\n- `classFullNames?: string[]`\n Filter report rows by class `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more class full names. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `classIds?: string[]`\n Filter report rows by QuickBooks-assigned class IDs. Accepts one or more class IDs. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `detailLevel?: 'all' | 'all_except_summary' | 'summary_only'`\n The report detail level to include. Use `all` for all rows, `all_except_summary` to omit summary rows, or `summary_only` to return only summary rows.\n\n- `entityFullNames?: string[]`\n Filter report rows by entity `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more entity full names. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityIds?: string[]`\n Filter report rows by QuickBooks-assigned entity IDs. Accepts one or more entity IDs. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityType?: 'customer' | 'employee' | 'other_name' | 'vendor'`\n Filter report rows by entity type, such as customer, vendor, employee, or other name. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `itemFullNames?: string[]`\n Filter report rows by item `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more item full names. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemIds?: string[]`\n Filter report rows by QuickBooks-assigned item IDs. Accepts one or more item IDs. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemType?: string`\n Filter report rows by item type. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `openBalanceAsOf?: 'report_end_date' | 'today'`\n The date through which QuickBooks Desktop calculates open balance information.\n\n- `postingStatus?: 'either' | 'non_posting' | 'posting'`\n Filter report rows that are posting, non-posting, or either. Posting status refers to whether QuickBooks records the transaction in an account register.\n\n- `reportDateFrom?: string`\n Filter report rows dated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `reportDateMacro?: string`\n A QuickBooks Desktop relative date macro for the report period. Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`.\n\n- `reportDateTo?: string`\n Filter report rows dated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `reportType?: 'custom_transaction_detail'`\n The custom detail report type to retrieve. This endpoint supports only `custom_transaction_detail`, so this parameter is optional and defaults to `custom_transaction_detail`.\n\n- `transactionTypes?: string[]`\n Filter report rows by transaction type. Accepts one or more transaction types.\n\n- `updatedAfter?: string`\n Filter report rows updated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedBefore?: string`\n Filter report rows updated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedDateMacro?: string`\n A QuickBooks Desktop relative updated-date macro. Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n### Returns\n\n- `{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }`\n\n - `basis: 'accrual' | 'cash' | 'none'`\n - `category: string`\n - `columnCount: number`\n - `columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]`\n - `columnTitleRowCount: number`\n - `objectType: 'qbd_report'`\n - `reportType: string`\n - `rowCount: number`\n - `rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]`\n - `subtitle: string`\n - `title: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst report = await conductor.qbd.reports.customDetail({\n includeColumns: ['date', 'transaction_type', 'amount'],\n summarizeRowsBy: 'account',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report);\n```", perLanguage: { typescript: { method: 'client.qbd.reports.customDetail', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst report = await conductor.qbd.reports.customDetail({\n includeColumns: ['date', 'transaction_type', 'amount'],\n summarizeRowsBy: 'account',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report.basis);", }, python: { method: 'qbd.reports.custom_detail', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreport = conductor.qbd.reports.custom_detail(\n include_columns=["date", "transaction_type", "amount"],\n summarize_rows_by="account",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(report.basis)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/reports/custom-detail \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'custom_summary', endpoint: '/quickbooks-desktop/reports/custom-summary', httpMethod: 'get', summary: 'Retrieve a custom summary report', description: 'Retrieves a custom summary report built from the row and column axes, filters, date period, calendar, and basis options you request. This report is useful when preset summary reports do not match the dimensions you need; QuickBooks Desktop does not assume a default layout.', stainlessPath: '(resource) qbd.reports > (method) custom_summary', qualified: 'client.qbd.reports.customSummary', params: [ 'summarizeColumnsBy: string;', 'summarizeRowsBy: string;', 'Conductor-End-User-Id: string;', 'accountFullNames?: string[];', 'accountIds?: string[];', 'accountType?: string;', "basis?: 'accrual' | 'cash' | 'none';", 'classFullNames?: string[];', 'classIds?: string[];', "columnsToReturn?: 'active_only' | 'non_zero' | 'all';", "detailLevel?: 'all' | 'all_except_summary' | 'summary_only';", 'entityFullNames?: string[];', 'entityIds?: string[];', "entityType?: 'customer' | 'employee' | 'other_name' | 'vendor';", 'includeSubcolumns?: boolean;', 'itemFullNames?: string[];', 'itemIds?: string[];', 'itemType?: string;', "postingStatus?: 'either' | 'non_posting' | 'posting';", "reportCalendar?: 'calendar_year' | 'fiscal_year' | 'tax_year';", 'reportDateFrom?: string;', 'reportDateMacro?: string;', 'reportDateTo?: string;', "reportType?: 'custom_summary';", "rowsToReturn?: 'active_only' | 'non_zero' | 'all';", 'transactionTypes?: string[];', 'updatedAfter?: string;', 'updatedBefore?: string;', 'updatedDateMacro?: string;', ], response: "{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }", markdown: "## custom_summary\n\n`conductor.qbd.reports.customSummary(summarizeColumnsBy: string, summarizeRowsBy: string, Conductor-End-User-Id: string, accountFullNames?: string[], accountIds?: string[], accountType?: string, basis?: 'accrual' | 'cash' | 'none', classFullNames?: string[], classIds?: string[], columnsToReturn?: 'active_only' | 'non_zero' | 'all', detailLevel?: 'all' | 'all_except_summary' | 'summary_only', entityFullNames?: string[], entityIds?: string[], entityType?: 'customer' | 'employee' | 'other_name' | 'vendor', includeSubcolumns?: boolean, itemFullNames?: string[], itemIds?: string[], itemType?: string, postingStatus?: 'either' | 'non_posting' | 'posting', reportCalendar?: 'calendar_year' | 'fiscal_year' | 'tax_year', reportDateFrom?: string, reportDateMacro?: string, reportDateTo?: string, reportType?: 'custom_summary', rowsToReturn?: 'active_only' | 'non_zero' | 'all', transactionTypes?: string[], updatedAfter?: string, updatedBefore?: string, updatedDateMacro?: string): { basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: object[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: object | object | object | object[]; subtitle: string; title: string; }`\n\n**get** `/quickbooks-desktop/reports/custom-summary`\n\nRetrieves a custom summary report built from the row and column axes, filters, date period, calendar, and basis options you request. This report is useful when preset summary reports do not match the dimensions you need; QuickBooks Desktop does not assume a default layout.\n\n### Parameters\n\n- `summarizeColumnsBy: string`\n How QuickBooks Desktop calculates report data and labels report column headers.\n\n- `summarizeRowsBy: string`\n How QuickBooks Desktop calculates report data and labels report rows.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountFullNames?: string[]`\n Filter report rows by account `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more account full names. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountIds?: string[]`\n Filter report rows by QuickBooks-assigned account IDs. Accepts one or more account IDs. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountType?: string`\n Filter report rows by account type. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `basis?: 'accrual' | 'cash' | 'none'`\n The accounting basis to use for the report. Use `cash` to base income and expenses on when money changes hands, `accrual` to base them on invoice and bill dates, or `none` to use the QuickBooks Desktop default for the report.\n\n- `classFullNames?: string[]`\n Filter report rows by class `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more class full names. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `classIds?: string[]`\n Filter report rows by QuickBooks-assigned class IDs. Accepts one or more class IDs. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `columnsToReturn?: 'active_only' | 'non_zero' | 'all'`\n Filters which report columns QuickBooks returns. Use `active_only` for active columns, `non_zero` for columns with non-zero values, or `all` for all columns.\n\n- `detailLevel?: 'all' | 'all_except_summary' | 'summary_only'`\n The report detail level to include. Use `all` for all rows, `all_except_summary` to omit summary rows, or `summary_only` to return only summary rows.\n\n- `entityFullNames?: string[]`\n Filter report rows by entity `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more entity full names. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityIds?: string[]`\n Filter report rows by QuickBooks-assigned entity IDs. Accepts one or more entity IDs. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityType?: 'customer' | 'employee' | 'other_name' | 'vendor'`\n Filter report rows by entity type, such as customer, vendor, employee, or other name. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `includeSubcolumns?: boolean`\n Whether to include subcolumns in the report.\n\n**NOTE**: QuickBooks Desktop may still omit subcolumns that it can easily compute from other returned values.\n\n- `itemFullNames?: string[]`\n Filter report rows by item `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more item full names. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemIds?: string[]`\n Filter report rows by QuickBooks-assigned item IDs. Accepts one or more item IDs. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemType?: string`\n Filter report rows by item type. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `postingStatus?: 'either' | 'non_posting' | 'posting'`\n Filter report rows that are posting, non-posting, or either. Posting status refers to whether QuickBooks records the transaction in an account register.\n\n- `reportCalendar?: 'calendar_year' | 'fiscal_year' | 'tax_year'`\n The type of year to use for the report.\n\n- `reportDateFrom?: string`\n Filter report rows dated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `reportDateMacro?: string`\n A QuickBooks Desktop relative date macro for the report period. Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`.\n\n- `reportDateTo?: string`\n Filter report rows dated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `reportType?: 'custom_summary'`\n The custom summary report type to retrieve. This endpoint supports only `custom_summary`, so this parameter is optional and defaults to `custom_summary`.\n\n- `rowsToReturn?: 'active_only' | 'non_zero' | 'all'`\n Filters which report rows QuickBooks returns. Use `active_only` for active rows, `non_zero` for rows with non-zero values, or `all` for all rows.\n\n- `transactionTypes?: string[]`\n Filter report rows by transaction type. Accepts one or more transaction types.\n\n- `updatedAfter?: string`\n Filter report rows updated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedBefore?: string`\n Filter report rows updated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedDateMacro?: string`\n A QuickBooks Desktop relative updated-date macro. Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n### Returns\n\n- `{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }`\n\n - `basis: 'accrual' | 'cash' | 'none'`\n - `category: string`\n - `columnCount: number`\n - `columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]`\n - `columnTitleRowCount: number`\n - `objectType: 'qbd_report'`\n - `reportType: string`\n - `rowCount: number`\n - `rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]`\n - `subtitle: string`\n - `title: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst report = await conductor.qbd.reports.customSummary({\n summarizeColumnsBy: 'month',\n summarizeRowsBy: 'account',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report);\n```", perLanguage: { typescript: { method: 'client.qbd.reports.customSummary', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst report = await conductor.qbd.reports.customSummary({\n summarizeColumnsBy: 'month',\n summarizeRowsBy: 'account',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report.basis);", }, python: { method: 'qbd.reports.custom_summary', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreport = conductor.qbd.reports.custom_summary(\n summarize_columns_by="month",\n summarize_rows_by="account",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(report.basis)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/reports/custom-summary \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'general_detail', endpoint: '/quickbooks-desktop/reports/general-detail', httpMethod: 'get', summary: 'Retrieve a general detail report', description: 'Retrieves a QuickBooks Desktop general detail report with transaction-level rows, such as General Ledger, Journal, Open Invoices, unpaid bills, sales detail, purchase detail, audit trail, and transaction lists. This report is useful for inspecting the transactions behind balances, receivables, payables, sales, purchases, inventory valuation, and audit activity, including report-only columns that may not be available from standard object queries.', stainlessPath: '(resource) qbd.reports > (method) general_detail', qualified: 'client.qbd.reports.generalDetail', params: [ 'reportType: string;', 'Conductor-End-User-Id: string;', 'accountFullNames?: string[];', 'accountIds?: string[];', "accountsToInclude?: 'all' | 'in_use';", 'accountType?: string;', "basis?: 'accrual' | 'cash' | 'none';", 'classFullNames?: string[];', 'classIds?: string[];', "detailLevel?: 'all' | 'all_except_summary' | 'summary_only';", 'entityFullNames?: string[];', 'entityIds?: string[];', "entityType?: 'customer' | 'employee' | 'other_name' | 'vendor';", 'includeColumns?: string[];', 'itemFullNames?: string[];', 'itemIds?: string[];', 'itemType?: string;', "openBalanceAsOf?: 'report_end_date' | 'today';", "postingStatus?: 'either' | 'non_posting' | 'posting';", 'reportDateFrom?: string;', 'reportDateMacro?: string;', 'reportDateTo?: string;', 'summarizeRowsBy?: string;', 'transactionTypes?: string[];', 'updatedAfter?: string;', 'updatedBefore?: string;', 'updatedDateMacro?: string;', ], response: "{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }", markdown: "## general_detail\n\n`conductor.qbd.reports.generalDetail(reportType: string, Conductor-End-User-Id: string, accountFullNames?: string[], accountIds?: string[], accountsToInclude?: 'all' | 'in_use', accountType?: string, basis?: 'accrual' | 'cash' | 'none', classFullNames?: string[], classIds?: string[], detailLevel?: 'all' | 'all_except_summary' | 'summary_only', entityFullNames?: string[], entityIds?: string[], entityType?: 'customer' | 'employee' | 'other_name' | 'vendor', includeColumns?: string[], itemFullNames?: string[], itemIds?: string[], itemType?: string, openBalanceAsOf?: 'report_end_date' | 'today', postingStatus?: 'either' | 'non_posting' | 'posting', reportDateFrom?: string, reportDateMacro?: string, reportDateTo?: string, summarizeRowsBy?: string, transactionTypes?: string[], updatedAfter?: string, updatedBefore?: string, updatedDateMacro?: string): { basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: object[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: object | object | object | object[]; subtitle: string; title: string; }`\n\n**get** `/quickbooks-desktop/reports/general-detail`\n\nRetrieves a QuickBooks Desktop general detail report with transaction-level rows, such as General Ledger, Journal, Open Invoices, unpaid bills, sales detail, purchase detail, audit trail, and transaction lists. This report is useful for inspecting the transactions behind balances, receivables, payables, sales, purchases, inventory valuation, and audit activity, including report-only columns that may not be available from standard object queries.\n\n### Parameters\n\n- `reportType: string`\n The general detail report type to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountFullNames?: string[]`\n Filter report rows by account `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more account full names. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountIds?: string[]`\n Filter report rows by QuickBooks-assigned account IDs. Accepts one or more account IDs. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountsToInclude?: 'all' | 'in_use'`\n Whether to include all accounts or only accounts in use.\n\n- `accountType?: string`\n Filter report rows by account type. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `basis?: 'accrual' | 'cash' | 'none'`\n The accounting basis to use for the report. Use `cash` to base income and expenses on when money changes hands, `accrual` to base them on invoice and bill dates, or `none` to use the QuickBooks Desktop default for the report.\n\n- `classFullNames?: string[]`\n Filter report rows by class `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more class full names. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `classIds?: string[]`\n Filter report rows by QuickBooks-assigned class IDs. Accepts one or more class IDs. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `detailLevel?: 'all' | 'all_except_summary' | 'summary_only'`\n The report detail level to include. Use `all` for all rows, `all_except_summary` to omit summary rows, or `summary_only` to return only summary rows.\n\n- `entityFullNames?: string[]`\n Filter report rows by entity `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more entity full names. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityIds?: string[]`\n Filter report rows by QuickBooks-assigned entity IDs. Accepts one or more entity IDs. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityType?: 'customer' | 'employee' | 'other_name' | 'vendor'`\n Filter report rows by entity type, such as customer, vendor, employee, or other name. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `includeColumns?: string[]`\n The report columns to include, by column type. Accepts one or more columns.\n\n**IMPORTANT**: When this parameter is present, QuickBooks Desktop omits its default report columns unless you include them here.\n\n- `itemFullNames?: string[]`\n Filter report rows by item `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more item full names. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemIds?: string[]`\n Filter report rows by QuickBooks-assigned item IDs. Accepts one or more item IDs. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemType?: string`\n Filter report rows by item type. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `openBalanceAsOf?: 'report_end_date' | 'today'`\n The date through which QuickBooks Desktop calculates open balance information.\n\n- `postingStatus?: 'either' | 'non_posting' | 'posting'`\n Filter report rows that are posting, non-posting, or either. Posting status refers to whether QuickBooks records the transaction in an account register.\n\n- `reportDateFrom?: string`\n Filter report rows dated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `reportDateMacro?: string`\n A QuickBooks Desktop relative date macro for the report period. Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`.\n\n- `reportDateTo?: string`\n Filter report rows dated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `summarizeRowsBy?: string`\n How QuickBooks Desktop calculates report data and labels report rows.\n\n- `transactionTypes?: string[]`\n Filter report rows by transaction type. Accepts one or more transaction types.\n\n- `updatedAfter?: string`\n Filter report rows updated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedBefore?: string`\n Filter report rows updated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedDateMacro?: string`\n A QuickBooks Desktop relative updated-date macro. Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n### Returns\n\n- `{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }`\n\n - `basis: 'accrual' | 'cash' | 'none'`\n - `category: string`\n - `columnCount: number`\n - `columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]`\n - `columnTitleRowCount: number`\n - `objectType: 'qbd_report'`\n - `reportType: string`\n - `rowCount: number`\n - `rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]`\n - `subtitle: string`\n - `title: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst report = await conductor.qbd.reports.generalDetail({ reportType: '1099_detail', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(report);\n```", perLanguage: { typescript: { method: 'client.qbd.reports.generalDetail', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst report = await conductor.qbd.reports.generalDetail({\n reportType: '1099_detail',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report.basis);", }, python: { method: 'qbd.reports.general_detail', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreport = conductor.qbd.reports.general_detail(\n report_type="1099_detail",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(report.basis)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/reports/general-detail \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'general_summary', endpoint: '/quickbooks-desktop/reports/general-summary', httpMethod: 'get', summary: 'Retrieve a general summary report', description: 'Retrieves a QuickBooks Desktop general summary report, such as a balance sheet, profit and loss, trial balance, sales, purchase, inventory, customer balance, vendor balance, sales tax, or income tax summary. This report is useful for aggregated financial or operational totals with optional date periods, filters, calendar settings, and column summarization.', stainlessPath: '(resource) qbd.reports > (method) general_summary', qualified: 'client.qbd.reports.generalSummary', params: [ 'reportType: string;', 'Conductor-End-User-Id: string;', 'accountFullNames?: string[];', 'accountIds?: string[];', 'accountType?: string;', "basis?: 'accrual' | 'cash' | 'none';", 'classFullNames?: string[];', 'classIds?: string[];', "columnsToReturn?: 'active_only' | 'non_zero' | 'all';", "detailLevel?: 'all' | 'all_except_summary' | 'summary_only';", 'entityFullNames?: string[];', 'entityIds?: string[];', "entityType?: 'customer' | 'employee' | 'other_name' | 'vendor';", 'includeSubcolumns?: boolean;', 'itemFullNames?: string[];', 'itemIds?: string[];', 'itemType?: string;', "postingStatus?: 'either' | 'non_posting' | 'posting';", "reportCalendar?: 'calendar_year' | 'fiscal_year' | 'tax_year';", 'reportDateFrom?: string;', 'reportDateMacro?: string;', 'reportDateTo?: string;', "rowsToReturn?: 'active_only' | 'non_zero' | 'all';", 'summarizeColumnsBy?: string;', 'transactionTypes?: string[];', 'updatedAfter?: string;', 'updatedBefore?: string;', 'updatedDateMacro?: string;', ], response: "{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }", markdown: "## general_summary\n\n`conductor.qbd.reports.generalSummary(reportType: string, Conductor-End-User-Id: string, accountFullNames?: string[], accountIds?: string[], accountType?: string, basis?: 'accrual' | 'cash' | 'none', classFullNames?: string[], classIds?: string[], columnsToReturn?: 'active_only' | 'non_zero' | 'all', detailLevel?: 'all' | 'all_except_summary' | 'summary_only', entityFullNames?: string[], entityIds?: string[], entityType?: 'customer' | 'employee' | 'other_name' | 'vendor', includeSubcolumns?: boolean, itemFullNames?: string[], itemIds?: string[], itemType?: string, postingStatus?: 'either' | 'non_posting' | 'posting', reportCalendar?: 'calendar_year' | 'fiscal_year' | 'tax_year', reportDateFrom?: string, reportDateMacro?: string, reportDateTo?: string, rowsToReturn?: 'active_only' | 'non_zero' | 'all', summarizeColumnsBy?: string, transactionTypes?: string[], updatedAfter?: string, updatedBefore?: string, updatedDateMacro?: string): { basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: object[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: object | object | object | object[]; subtitle: string; title: string; }`\n\n**get** `/quickbooks-desktop/reports/general-summary`\n\nRetrieves a QuickBooks Desktop general summary report, such as a balance sheet, profit and loss, trial balance, sales, purchase, inventory, customer balance, vendor balance, sales tax, or income tax summary. This report is useful for aggregated financial or operational totals with optional date periods, filters, calendar settings, and column summarization.\n\n### Parameters\n\n- `reportType: string`\n The general summary report type to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountFullNames?: string[]`\n Filter report rows by account `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more account full names. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountIds?: string[]`\n Filter report rows by QuickBooks-assigned account IDs. Accepts one or more account IDs. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountType?: string`\n Filter report rows by account type. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `basis?: 'accrual' | 'cash' | 'none'`\n The accounting basis to use for the report. Use `cash` to base income and expenses on when money changes hands, `accrual` to base them on invoice and bill dates, or `none` to use the QuickBooks Desktop default for the report.\n\n- `classFullNames?: string[]`\n Filter report rows by class `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more class full names. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `classIds?: string[]`\n Filter report rows by QuickBooks-assigned class IDs. Accepts one or more class IDs. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `columnsToReturn?: 'active_only' | 'non_zero' | 'all'`\n Filters which report columns QuickBooks returns. Use `active_only` for active columns, `non_zero` for columns with non-zero values, or `all` for all columns.\n\n- `detailLevel?: 'all' | 'all_except_summary' | 'summary_only'`\n The report detail level to include. Use `all` for all rows, `all_except_summary` to omit summary rows, or `summary_only` to return only summary rows.\n\n- `entityFullNames?: string[]`\n Filter report rows by entity `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more entity full names. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityIds?: string[]`\n Filter report rows by QuickBooks-assigned entity IDs. Accepts one or more entity IDs. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityType?: 'customer' | 'employee' | 'other_name' | 'vendor'`\n Filter report rows by entity type, such as customer, vendor, employee, or other name. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `includeSubcolumns?: boolean`\n Whether to include subcolumns in the report.\n\n**NOTE**: QuickBooks Desktop may still omit subcolumns that it can easily compute from other returned values.\n\n- `itemFullNames?: string[]`\n Filter report rows by item `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more item full names. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemIds?: string[]`\n Filter report rows by QuickBooks-assigned item IDs. Accepts one or more item IDs. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemType?: string`\n Filter report rows by item type. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `postingStatus?: 'either' | 'non_posting' | 'posting'`\n Filter report rows that are posting, non-posting, or either. Posting status refers to whether QuickBooks records the transaction in an account register.\n\n- `reportCalendar?: 'calendar_year' | 'fiscal_year' | 'tax_year'`\n The type of year to use for the report.\n\n- `reportDateFrom?: string`\n Filter report rows dated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `reportDateMacro?: string`\n A QuickBooks Desktop relative date macro for the report period. Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`.\n\n- `reportDateTo?: string`\n Filter report rows dated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `rowsToReturn?: 'active_only' | 'non_zero' | 'all'`\n Filters which report rows QuickBooks returns. Use `active_only` for active rows, `non_zero` for rows with non-zero values, or `all` for all rows.\n\n- `summarizeColumnsBy?: string`\n How QuickBooks Desktop calculates report data and labels report column headers.\n\n- `transactionTypes?: string[]`\n Filter report rows by transaction type. Accepts one or more transaction types.\n\n- `updatedAfter?: string`\n Filter report rows updated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedBefore?: string`\n Filter report rows updated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedDateMacro?: string`\n A QuickBooks Desktop relative updated-date macro. Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n### Returns\n\n- `{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }`\n\n - `basis: 'accrual' | 'cash' | 'none'`\n - `category: string`\n - `columnCount: number`\n - `columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]`\n - `columnTitleRowCount: number`\n - `objectType: 'qbd_report'`\n - `reportType: string`\n - `rowCount: number`\n - `rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]`\n - `subtitle: string`\n - `title: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst report = await conductor.qbd.reports.generalSummary({ reportType: 'balance_sheet_by_class', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(report);\n```", perLanguage: { typescript: { method: 'client.qbd.reports.generalSummary', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst report = await conductor.qbd.reports.generalSummary({\n reportType: 'balance_sheet_by_class',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report.basis);", }, python: { method: 'qbd.reports.general_summary', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreport = conductor.qbd.reports.general_summary(\n report_type="balance_sheet_by_class",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(report.basis)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/reports/general-summary \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'job', endpoint: '/quickbooks-desktop/reports/job', httpMethod: 'get', summary: 'Retrieve a job report', description: 'Retrieves a QuickBooks Desktop job report for estimates versus actuals, item profitability, or job profitability. This report is useful for project costing, margin analysis, and estimate tracking by customer or job; job profitability detail and estimates-versus-actuals detail report types require a customer or job filter.', stainlessPath: '(resource) qbd.reports > (method) job', qualified: 'client.qbd.reports.job', params: [ 'reportType: string;', 'Conductor-End-User-Id: string;', 'accountFullNames?: string[];', 'accountIds?: string[];', 'accountType?: string;', 'classFullNames?: string[];', 'classIds?: string[];', "detailLevel?: 'all' | 'all_except_summary' | 'summary_only';", 'entityFullNames?: string[];', 'entityIds?: string[];', "entityType?: 'customer' | 'employee' | 'other_name' | 'vendor';", 'includeSubcolumns?: boolean;', 'itemFullNames?: string[];', 'itemIds?: string[];', 'itemType?: string;', "postingStatus?: 'either' | 'non_posting' | 'posting';", 'reportDateFrom?: string;', 'reportDateMacro?: string;', 'reportDateTo?: string;', 'summarizeColumnsBy?: string;', 'transactionTypes?: string[];', 'updatedAfter?: string;', 'updatedBefore?: string;', 'updatedDateMacro?: string;', ], response: "{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }", markdown: "## job\n\n`conductor.qbd.reports.job(reportType: string, Conductor-End-User-Id: string, accountFullNames?: string[], accountIds?: string[], accountType?: string, classFullNames?: string[], classIds?: string[], detailLevel?: 'all' | 'all_except_summary' | 'summary_only', entityFullNames?: string[], entityIds?: string[], entityType?: 'customer' | 'employee' | 'other_name' | 'vendor', includeSubcolumns?: boolean, itemFullNames?: string[], itemIds?: string[], itemType?: string, postingStatus?: 'either' | 'non_posting' | 'posting', reportDateFrom?: string, reportDateMacro?: string, reportDateTo?: string, summarizeColumnsBy?: string, transactionTypes?: string[], updatedAfter?: string, updatedBefore?: string, updatedDateMacro?: string): { basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: object[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: object | object | object | object[]; subtitle: string; title: string; }`\n\n**get** `/quickbooks-desktop/reports/job`\n\nRetrieves a QuickBooks Desktop job report for estimates versus actuals, item profitability, or job profitability. This report is useful for project costing, margin analysis, and estimate tracking by customer or job; job profitability detail and estimates-versus-actuals detail report types require a customer or job filter.\n\n### Parameters\n\n- `reportType: string`\n The job report type to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountFullNames?: string[]`\n Filter report rows by account `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more account full names. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountIds?: string[]`\n Filter report rows by QuickBooks-assigned account IDs. Accepts one or more account IDs. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountType?: string`\n Filter report rows by account type. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `classFullNames?: string[]`\n Filter report rows by class `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more class full names. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `classIds?: string[]`\n Filter report rows by QuickBooks-assigned class IDs. Accepts one or more class IDs. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `detailLevel?: 'all' | 'all_except_summary' | 'summary_only'`\n The report detail level to include. Use `all` for all rows, `all_except_summary` to omit summary rows, or `summary_only` to return only summary rows.\n\n- `entityFullNames?: string[]`\n Filter report rows by entity `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more entity full names. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityIds?: string[]`\n Filter report rows by QuickBooks-assigned entity IDs. Accepts one or more entity IDs. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityType?: 'customer' | 'employee' | 'other_name' | 'vendor'`\n Filter report rows by entity type, such as customer, vendor, employee, or other name. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `includeSubcolumns?: boolean`\n Whether to include subcolumns in the report.\n\n**NOTE**: QuickBooks Desktop may still omit subcolumns that it can easily compute from other returned values.\n\n- `itemFullNames?: string[]`\n Filter report rows by item `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more item full names. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemIds?: string[]`\n Filter report rows by QuickBooks-assigned item IDs. Accepts one or more item IDs. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemType?: string`\n Filter report rows by item type. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `postingStatus?: 'either' | 'non_posting' | 'posting'`\n Filter report rows that are posting, non-posting, or either. Posting status refers to whether QuickBooks records the transaction in an account register.\n\n- `reportDateFrom?: string`\n Filter report rows dated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `reportDateMacro?: string`\n A QuickBooks Desktop relative date macro for the report period. Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`.\n\n- `reportDateTo?: string`\n Filter report rows dated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `summarizeColumnsBy?: string`\n How QuickBooks Desktop calculates report data and labels report column headers.\n\n- `transactionTypes?: string[]`\n Filter report rows by transaction type. Accepts one or more transaction types.\n\n- `updatedAfter?: string`\n Filter report rows updated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedBefore?: string`\n Filter report rows updated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedDateMacro?: string`\n A QuickBooks Desktop relative updated-date macro. Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n### Returns\n\n- `{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }`\n\n - `basis: 'accrual' | 'cash' | 'none'`\n - `category: string`\n - `columnCount: number`\n - `columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]`\n - `columnTitleRowCount: number`\n - `objectType: 'qbd_report'`\n - `reportType: string`\n - `rowCount: number`\n - `rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]`\n - `subtitle: string`\n - `title: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst report = await conductor.qbd.reports.job({ reportType: 'item_estimates_vs_actuals', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(report);\n```", perLanguage: { typescript: { method: 'client.qbd.reports.job', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst report = await conductor.qbd.reports.job({\n reportType: 'item_estimates_vs_actuals',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report.basis);", }, python: { method: 'qbd.reports.job', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreport = conductor.qbd.reports.job(\n report_type="item_estimates_vs_actuals",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(report.basis)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/reports/job \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'payroll_detail', endpoint: '/quickbooks-desktop/reports/payroll-detail', httpMethod: 'get', summary: 'Retrieve a payroll detail report', description: 'Retrieves a QuickBooks Desktop payroll detail report, including employee state tax detail, payroll item detail, payroll review detail, payroll transaction detail, and payroll transactions by payee. This report is useful for auditing paycheck line items, payroll item usage, tax calculations, and payee-level payroll activity.', stainlessPath: '(resource) qbd.reports > (method) payroll_detail', qualified: 'client.qbd.reports.payrollDetail', params: [ 'reportType: string;', 'Conductor-End-User-Id: string;', 'accountFullNames?: string[];', 'accountIds?: string[];', "accountsToInclude?: 'all' | 'in_use';", 'accountType?: string;', 'classFullNames?: string[];', 'classIds?: string[];', "detailLevel?: 'all' | 'all_except_summary' | 'summary_only';", 'entityFullNames?: string[];', 'entityIds?: string[];', "entityType?: 'customer' | 'employee' | 'other_name' | 'vendor';", 'includeColumns?: string[];', 'itemFullNames?: string[];', 'itemIds?: string[];', 'itemType?: string;', "openBalanceAsOf?: 'report_end_date' | 'today';", "postingStatus?: 'either' | 'non_posting' | 'posting';", 'reportDateFrom?: string;', 'reportDateMacro?: string;', 'reportDateTo?: string;', 'summarizeRowsBy?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', 'updatedDateMacro?: string;', ], response: "{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }", markdown: "## payroll_detail\n\n`conductor.qbd.reports.payrollDetail(reportType: string, Conductor-End-User-Id: string, accountFullNames?: string[], accountIds?: string[], accountsToInclude?: 'all' | 'in_use', accountType?: string, classFullNames?: string[], classIds?: string[], detailLevel?: 'all' | 'all_except_summary' | 'summary_only', entityFullNames?: string[], entityIds?: string[], entityType?: 'customer' | 'employee' | 'other_name' | 'vendor', includeColumns?: string[], itemFullNames?: string[], itemIds?: string[], itemType?: string, openBalanceAsOf?: 'report_end_date' | 'today', postingStatus?: 'either' | 'non_posting' | 'posting', reportDateFrom?: string, reportDateMacro?: string, reportDateTo?: string, summarizeRowsBy?: string, updatedAfter?: string, updatedBefore?: string, updatedDateMacro?: string): { basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: object[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: object | object | object | object[]; subtitle: string; title: string; }`\n\n**get** `/quickbooks-desktop/reports/payroll-detail`\n\nRetrieves a QuickBooks Desktop payroll detail report, including employee state tax detail, payroll item detail, payroll review detail, payroll transaction detail, and payroll transactions by payee. This report is useful for auditing paycheck line items, payroll item usage, tax calculations, and payee-level payroll activity.\n\n### Parameters\n\n- `reportType: string`\n The payroll detail report type to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountFullNames?: string[]`\n Filter report rows by account `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more account full names. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountIds?: string[]`\n Filter report rows by QuickBooks-assigned account IDs. Accepts one or more account IDs. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountsToInclude?: 'all' | 'in_use'`\n Whether to include all accounts or only accounts in use.\n\n- `accountType?: string`\n Filter report rows by account type. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `classFullNames?: string[]`\n Filter report rows by class `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more class full names. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `classIds?: string[]`\n Filter report rows by QuickBooks-assigned class IDs. Accepts one or more class IDs. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `detailLevel?: 'all' | 'all_except_summary' | 'summary_only'`\n The report detail level to include. Use `all` for all rows, `all_except_summary` to omit summary rows, or `summary_only` to return only summary rows.\n\n- `entityFullNames?: string[]`\n Filter report rows by entity `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more entity full names. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityIds?: string[]`\n Filter report rows by QuickBooks-assigned entity IDs. Accepts one or more entity IDs. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityType?: 'customer' | 'employee' | 'other_name' | 'vendor'`\n Filter report rows by entity type, such as customer, vendor, employee, or other name. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `includeColumns?: string[]`\n The report columns to include, by column type. Accepts one or more columns.\n\n**IMPORTANT**: When this parameter is present, QuickBooks Desktop omits its default report columns unless you include them here.\n\n- `itemFullNames?: string[]`\n Filter report rows by item `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more item full names. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemIds?: string[]`\n Filter report rows by QuickBooks-assigned item IDs. Accepts one or more item IDs. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemType?: string`\n Filter report rows by item type. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `openBalanceAsOf?: 'report_end_date' | 'today'`\n The date through which QuickBooks Desktop calculates open balance information.\n\n- `postingStatus?: 'either' | 'non_posting' | 'posting'`\n Filter report rows that are posting, non-posting, or either. Posting status refers to whether QuickBooks records the transaction in an account register.\n\n- `reportDateFrom?: string`\n Filter report rows dated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `reportDateMacro?: string`\n A QuickBooks Desktop relative date macro for the report period. Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`.\n\n- `reportDateTo?: string`\n Filter report rows dated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `summarizeRowsBy?: string`\n How QuickBooks Desktop calculates report data and labels report rows.\n\n- `updatedAfter?: string`\n Filter report rows updated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedBefore?: string`\n Filter report rows updated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedDateMacro?: string`\n A QuickBooks Desktop relative updated-date macro. Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n### Returns\n\n- `{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }`\n\n - `basis: 'accrual' | 'cash' | 'none'`\n - `category: string`\n - `columnCount: number`\n - `columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]`\n - `columnTitleRowCount: number`\n - `objectType: 'qbd_report'`\n - `reportType: string`\n - `rowCount: number`\n - `rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]`\n - `subtitle: string`\n - `title: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst report = await conductor.qbd.reports.payrollDetail({ reportType: 'employee_state_taxes_detail', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(report);\n```", perLanguage: { typescript: { method: 'client.qbd.reports.payrollDetail', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst report = await conductor.qbd.reports.payrollDetail({\n reportType: 'employee_state_taxes_detail',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report.basis);", }, python: { method: 'qbd.reports.payroll_detail', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreport = conductor.qbd.reports.payroll_detail(\n report_type="employee_state_taxes_detail",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(report.basis)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/reports/payroll-detail \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'payroll_summary', endpoint: '/quickbooks-desktop/reports/payroll-summary', httpMethod: 'get', summary: 'Retrieve a payroll summary report', description: 'Retrieves a QuickBooks Desktop payroll summary report, including payroll totals by employee, employee earnings by payroll item, and payroll liability balances. This report is useful for wage, tax, deduction, addition, employer contribution, and unpaid payroll liability reporting.', stainlessPath: '(resource) qbd.reports > (method) payroll_summary', qualified: 'client.qbd.reports.payrollSummary', params: [ "reportType: 'employee_earnings_summary' | 'payroll_liability_balances' | 'payroll_summary';", 'Conductor-End-User-Id: string;', 'accountFullNames?: string[];', 'accountIds?: string[];', 'accountType?: string;', 'classFullNames?: string[];', 'classIds?: string[];', "columnsToReturn?: 'active_only' | 'non_zero' | 'all';", "detailLevel?: 'all' | 'all_except_summary' | 'summary_only';", 'entityFullNames?: string[];', 'entityIds?: string[];', "entityType?: 'customer' | 'employee' | 'other_name' | 'vendor';", 'includeSubcolumns?: boolean;', 'itemFullNames?: string[];', 'itemIds?: string[];', 'itemType?: string;', "postingStatus?: 'either' | 'non_posting' | 'posting';", "reportCalendar?: 'calendar_year' | 'fiscal_year' | 'tax_year';", 'reportDateFrom?: string;', 'reportDateMacro?: string;', 'reportDateTo?: string;', "rowsToReturn?: 'active_only' | 'non_zero' | 'all';", 'summarizeColumnsBy?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', 'updatedDateMacro?: string;', ], response: "{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }", markdown: "## payroll_summary\n\n`conductor.qbd.reports.payrollSummary(reportType: 'employee_earnings_summary' | 'payroll_liability_balances' | 'payroll_summary', Conductor-End-User-Id: string, accountFullNames?: string[], accountIds?: string[], accountType?: string, classFullNames?: string[], classIds?: string[], columnsToReturn?: 'active_only' | 'non_zero' | 'all', detailLevel?: 'all' | 'all_except_summary' | 'summary_only', entityFullNames?: string[], entityIds?: string[], entityType?: 'customer' | 'employee' | 'other_name' | 'vendor', includeSubcolumns?: boolean, itemFullNames?: string[], itemIds?: string[], itemType?: string, postingStatus?: 'either' | 'non_posting' | 'posting', reportCalendar?: 'calendar_year' | 'fiscal_year' | 'tax_year', reportDateFrom?: string, reportDateMacro?: string, reportDateTo?: string, rowsToReturn?: 'active_only' | 'non_zero' | 'all', summarizeColumnsBy?: string, updatedAfter?: string, updatedBefore?: string, updatedDateMacro?: string): { basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: object[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: object | object | object | object[]; subtitle: string; title: string; }`\n\n**get** `/quickbooks-desktop/reports/payroll-summary`\n\nRetrieves a QuickBooks Desktop payroll summary report, including payroll totals by employee, employee earnings by payroll item, and payroll liability balances. This report is useful for wage, tax, deduction, addition, employer contribution, and unpaid payroll liability reporting.\n\n### Parameters\n\n- `reportType: 'employee_earnings_summary' | 'payroll_liability_balances' | 'payroll_summary'`\n The payroll summary report type to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountFullNames?: string[]`\n Filter report rows by account `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more account full names. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountIds?: string[]`\n Filter report rows by QuickBooks-assigned account IDs. Accepts one or more account IDs. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `accountType?: string`\n Filter report rows by account type. Choose only one account filter per request: `accountType`, `accountIds`, or `accountFullNames`.\n\n- `classFullNames?: string[]`\n Filter report rows by class `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more class full names. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `classIds?: string[]`\n Filter report rows by QuickBooks-assigned class IDs. Accepts one or more class IDs. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `columnsToReturn?: 'active_only' | 'non_zero' | 'all'`\n Filters which report columns QuickBooks returns. Use `active_only` for active columns, `non_zero` for columns with non-zero values, or `all` for all columns.\n\n- `detailLevel?: 'all' | 'all_except_summary' | 'summary_only'`\n The report detail level to include. Use `all` for all rows, `all_except_summary` to omit summary rows, or `summary_only` to return only summary rows.\n\n- `entityFullNames?: string[]`\n Filter report rows by entity `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more entity full names. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityIds?: string[]`\n Filter report rows by QuickBooks-assigned entity IDs. Accepts one or more entity IDs. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityType?: 'customer' | 'employee' | 'other_name' | 'vendor'`\n Filter report rows by entity type, such as customer, vendor, employee, or other name. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `includeSubcolumns?: boolean`\n Whether to include subcolumns in the report.\n\n**NOTE**: QuickBooks Desktop may still omit subcolumns that it can easily compute from other returned values.\n\n- `itemFullNames?: string[]`\n Filter report rows by item `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more item full names. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemIds?: string[]`\n Filter report rows by QuickBooks-assigned item IDs. Accepts one or more item IDs. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemType?: string`\n Filter report rows by item type. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `postingStatus?: 'either' | 'non_posting' | 'posting'`\n Filter report rows that are posting, non-posting, or either. Posting status refers to whether QuickBooks records the transaction in an account register.\n\n- `reportCalendar?: 'calendar_year' | 'fiscal_year' | 'tax_year'`\n The type of year to use for the report.\n\n- `reportDateFrom?: string`\n Filter report rows dated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `reportDateMacro?: string`\n A QuickBooks Desktop relative date macro for the report period. Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`.\n\n- `reportDateTo?: string`\n Filter report rows dated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `rowsToReturn?: 'active_only' | 'non_zero' | 'all'`\n Filters which report rows QuickBooks returns. Use `active_only` for active rows, `non_zero` for rows with non-zero values, or `all` for all rows.\n\n- `summarizeColumnsBy?: string`\n How QuickBooks Desktop calculates report data and labels report column headers.\n\n- `updatedAfter?: string`\n Filter report rows updated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedBefore?: string`\n Filter report rows updated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n- `updatedDateMacro?: string`\n A QuickBooks Desktop relative updated-date macro. Choose either `updatedDateMacro` or `updatedAfter`/`updatedBefore`.\n\n### Returns\n\n- `{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }`\n\n - `basis: 'accrual' | 'cash' | 'none'`\n - `category: string`\n - `columnCount: number`\n - `columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]`\n - `columnTitleRowCount: number`\n - `objectType: 'qbd_report'`\n - `reportType: string`\n - `rowCount: number`\n - `rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]`\n - `subtitle: string`\n - `title: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst report = await conductor.qbd.reports.payrollSummary({ reportType: 'employee_earnings_summary', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(report);\n```", perLanguage: { typescript: { method: 'client.qbd.reports.payrollSummary', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst report = await conductor.qbd.reports.payrollSummary({\n reportType: 'employee_earnings_summary',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report.basis);", }, python: { method: 'qbd.reports.payroll_summary', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreport = conductor.qbd.reports.payroll_summary(\n report_type="employee_earnings_summary",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(report.basis)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/reports/payroll-summary \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'time', endpoint: '/quickbooks-desktop/reports/time', httpMethod: 'get', summary: 'Retrieve a time report', description: 'Retrieves a QuickBooks Desktop time report by item, job, or name, with summary or detail rows depending on the selected report type. This report is useful for analyzing tracked time for billing, costing, staffing, or project review.', stainlessPath: '(resource) qbd.reports > (method) time', qualified: 'client.qbd.reports.time', params: [ "reportType: 'time_by_item' | 'time_by_job_detail' | 'time_by_job_summary' | 'time_by_name';", 'Conductor-End-User-Id: string;', 'classFullNames?: string[];', 'classIds?: string[];', "columnsToReturn?: 'active_only' | 'non_zero' | 'all';", 'entityFullNames?: string[];', 'entityIds?: string[];', "entityType?: 'customer' | 'employee' | 'other_name' | 'vendor';", 'includeSubcolumns?: boolean;', 'itemFullNames?: string[];', 'itemIds?: string[];', 'itemType?: string;', "reportCalendar?: 'calendar_year' | 'fiscal_year' | 'tax_year';", 'reportDateFrom?: string;', 'reportDateMacro?: string;', 'reportDateTo?: string;', "rowsToReturn?: 'active_only' | 'non_zero' | 'all';", 'summarizeColumnsBy?: string;', ], response: "{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }", markdown: "## time\n\n`conductor.qbd.reports.time(reportType: 'time_by_item' | 'time_by_job_detail' | 'time_by_job_summary' | 'time_by_name', Conductor-End-User-Id: string, classFullNames?: string[], classIds?: string[], columnsToReturn?: 'active_only' | 'non_zero' | 'all', entityFullNames?: string[], entityIds?: string[], entityType?: 'customer' | 'employee' | 'other_name' | 'vendor', includeSubcolumns?: boolean, itemFullNames?: string[], itemIds?: string[], itemType?: string, reportCalendar?: 'calendar_year' | 'fiscal_year' | 'tax_year', reportDateFrom?: string, reportDateMacro?: string, reportDateTo?: string, rowsToReturn?: 'active_only' | 'non_zero' | 'all', summarizeColumnsBy?: string): { basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: object[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: object | object | object | object[]; subtitle: string; title: string; }`\n\n**get** `/quickbooks-desktop/reports/time`\n\nRetrieves a QuickBooks Desktop time report by item, job, or name, with summary or detail rows depending on the selected report type. This report is useful for analyzing tracked time for billing, costing, staffing, or project review.\n\n### Parameters\n\n- `reportType: 'time_by_item' | 'time_by_job_detail' | 'time_by_job_summary' | 'time_by_name'`\n The time report type to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classFullNames?: string[]`\n Filter report rows by class `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more class full names. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `classIds?: string[]`\n Filter report rows by QuickBooks-assigned class IDs. Accepts one or more class IDs. Choose only one class filter per request: `classIds` or `classFullNames`.\n\n- `columnsToReturn?: 'active_only' | 'non_zero' | 'all'`\n Filters which report columns QuickBooks returns. Use `active_only` for active columns, `non_zero` for columns with non-zero values, or `all` for all columns.\n\n- `entityFullNames?: string[]`\n Filter report rows by entity `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more entity full names. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityIds?: string[]`\n Filter report rows by QuickBooks-assigned entity IDs. Accepts one or more entity IDs. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `entityType?: 'customer' | 'employee' | 'other_name' | 'vendor'`\n Filter report rows by entity type, such as customer, vendor, employee, or other name. Choose only one entity filter per request: `entityType`, `entityIds`, or `entityFullNames`.\n\n- `includeSubcolumns?: boolean`\n Whether to include subcolumns in the report.\n\n**NOTE**: QuickBooks Desktop may still omit subcolumns that it can easily compute from other returned values.\n\n- `itemFullNames?: string[]`\n Filter report rows by item `fullName` values, case-insensitive. A `fullName` is a fully qualified QuickBooks name formed by joining parent object names with the object's `name` using colons. Accepts one or more item full names. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemIds?: string[]`\n Filter report rows by QuickBooks-assigned item IDs. Accepts one or more item IDs. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `itemType?: string`\n Filter report rows by item type. Choose only one item filter per request: `itemType`, `itemIds`, or `itemFullNames`.\n\n- `reportCalendar?: 'calendar_year' | 'fiscal_year' | 'tax_year'`\n The type of year to use for the report.\n\n- `reportDateFrom?: string`\n Filter report rows dated on or after this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `reportDateMacro?: string`\n A QuickBooks Desktop relative date macro for the report period. Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`.\n\n- `reportDateTo?: string`\n Filter report rows dated on or before this date, in ISO 8601 format (YYYY-MM-DD). Choose either `reportDateMacro` or `reportDateFrom`/`reportDateTo`. If you omit `reportDateFrom`, `reportDateTo`, and `reportDateMacro`, QuickBooks Desktop uses the current fiscal year to date.\n\n- `rowsToReturn?: 'active_only' | 'non_zero' | 'all'`\n Filters which report rows QuickBooks returns. Use `active_only` for active rows, `non_zero` for rows with non-zero values, or `all` for all rows.\n\n- `summarizeColumnsBy?: string`\n How QuickBooks Desktop calculates report data and labels report column headers.\n\n### Returns\n\n- `{ basis: 'accrual' | 'cash' | 'none'; category: string; columnCount: number; columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]; columnTitleRowCount: number; objectType: 'qbd_report'; reportType: string; rowCount: number; rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]; subtitle: string; title: string; }`\n\n - `basis: 'accrual' | 'cash' | 'none'`\n - `category: string`\n - `columnCount: number`\n - `columns: { columnId: string; columnType: string; dataType: string; titles: { rowNumber: number; value: string; }[]; }[]`\n - `columnTitleRowCount: number`\n - `objectType: 'qbd_report'`\n - `reportType: string`\n - `rowCount: number`\n - `rows: { kind: 'text'; rowNumber: number; text: string; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'data'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'subtotal'; rowDescriptor: { type: string; value: string; }; rowNumber: number; } | { cells: { columnId: string; dataType: string; value: string; }[]; kind: 'total'; rowDescriptor: { type: string; value: string; }; rowNumber: number; }[]`\n - `subtitle: string`\n - `title: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst report = await conductor.qbd.reports.time({ reportType: 'time_by_item', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(report);\n```", perLanguage: { typescript: { method: 'client.qbd.reports.time', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst report = await conductor.qbd.reports.time({\n reportType: 'time_by_item',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(report.basis);", }, python: { method: 'qbd.reports.time', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nreport = conductor.qbd.reports.time(\n report_type="time_by_item",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(report.basis)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/reports/time \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/sales-orders', httpMethod: 'post', summary: 'Create a sales order', description: 'Creates a new sales order.', stainlessPath: '(resource) qbd.sales_orders > (method) create', qualified: 'client.qbd.salesOrders.create', params: [ 'customerId: string;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'classId?: string;', 'customerMessageId?: string;', 'documentTemplateId?: string;', 'dueDate?: string;', 'exchangeRate?: number;', 'externalId?: string;', 'isManuallyClosed?: boolean;', 'isQueuedForEmail?: boolean;', 'isQueuedForPrint?: boolean;', 'lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[];', "lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'otherCustomField?: string;', 'purchaseOrderNumber?: string;', 'refNumber?: string;', "salesChannelName?: 'blank' | 'ecommerce';", 'salesRepresentativeId?: string;', 'salesStoreName?: string;', 'salesStoreType?: string;', 'salesTaxCodeId?: string;', 'salesTaxItemId?: string;', 'shipmentOrigin?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'shippingDate?: string;', 'shippingMethodId?: string;', 'termsId?: string;', ], response: "{ id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFullyInvoiced: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_sales_order'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesChannelName: 'blank' | 'ecommerce'; salesRepresentative: object; salesStoreName: string; salesStoreType: string; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.salesOrders.create(customerId: string, transactionDate: string, Conductor-End-User-Id: string, billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, classId?: string, customerMessageId?: string, documentTemplateId?: string, dueDate?: string, exchangeRate?: number, externalId?: string, isManuallyClosed?: boolean, isQueuedForEmail?: boolean, isQueuedForPrint?: boolean, lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[], lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], memo?: string, otherCustomField?: string, purchaseOrderNumber?: string, refNumber?: string, salesChannelName?: 'blank' | 'ecommerce', salesRepresentativeId?: string, salesStoreName?: string, salesStoreType?: string, salesTaxCodeId?: string, salesTaxItemId?: string, shipmentOrigin?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, shippingDate?: string, shippingMethodId?: string, termsId?: string): { id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFullyInvoiced: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_sales_order'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesChannelName: 'blank' | 'ecommerce'; salesRepresentative: object; salesStoreName: string; salesStoreType: string; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/sales-orders`\n\nCreates a new sales order.\n\n### Parameters\n\n- `customerId: string`\n The customer or customer-job associated with this sales order.\n\n- `transactionDate: string`\n The date of this sales order, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The sales order's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `classId?: string`\n The sales order's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this sales order's line items unless overridden at the line item level.\n\n- `customerMessageId?: string`\n The message to display to the customer on the sales order.\n\n- `documentTemplateId?: string`\n The predefined template in QuickBooks that determines the layout and formatting for this sales order when printed or displayed.\n\n- `dueDate?: string`\n The date by which this sales order must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n- `exchangeRate?: number`\n The market exchange rate between this sales order's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isManuallyClosed?: boolean`\n Indicates whether this sales order has been manually marked as closed, even if it has not been invoiced.\n\n- `isQueuedForEmail?: boolean`\n Indicates whether this sales order is included in the queue of documents for QuickBooks to email to the customer.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this sales order is included in the queue of documents for QuickBooks to print.\n\n- `lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The sales order's line item groups, each representing a predefined set of related items.\n\n**IMPORTANT**: You must specify `lines`, `lineGroups`, or both when creating a sales order.\n\n- `lines?: { amount?: string; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The sales order's line items, each representing a single product or service ordered.\n\n**IMPORTANT**: You must specify `lines`, `lineGroups`, or both when creating a sales order.\n\n- `memo?: string`\n A memo or note for this sales order.\n\n- `otherCustomField?: string`\n A built-in custom field for additional information specific to this sales order. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all sales orders for convenience. Developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Unlike `otherCustomField1` and `otherCustomField2`, which are line item fields, this exists at the transaction level. Hidden by default in the QuickBooks UI.\n\n- `purchaseOrderNumber?: string`\n The customer's Purchase Order (PO) number associated with this sales order. This field is often used to cross-reference the sales order with the customer's purchasing system.\n\nMaximum length: 25 characters.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this sales order, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n- `salesChannelName?: 'blank' | 'ecommerce'`\n The type of the sales channel for this sales order.\n\n- `salesRepresentativeId?: string`\n The sales order's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.\n\n- `salesStoreName?: string`\n The name of the sales store for this sales order.\n\n- `salesStoreType?: string`\n The type of the sales store for this sales order.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this sales order, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this sales order's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\n- `shipmentOrigin?: string`\n The origin location from where the product associated with this sales order is shipped. This is the point at which ownership and liability for goods transfer from seller to buyer. Internally, QuickBooks uses the term \"FOB\" for this field, which stands for \"freight on board\". This field is informational and has no accounting implications.\n\nMaximum length: 13 characters.\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The sales order's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `shippingDate?: string`\n The date when the products or services for this sales order were shipped or are expected to be shipped, in ISO 8601 format (YYYY-MM-DD).\n\n- `shippingMethodId?: string`\n The shipping method used for this sales order, such as standard mail or overnight delivery.\n\n- `termsId?: string`\n The sales order's payment terms, defining when payment is due and any applicable discounts.\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isFullyInvoiced: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; isManuallyClosed: boolean; item: object; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isManuallyClosed: boolean; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_sales_order'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesChannelName: 'blank' | 'ecommerce'; salesRepresentative: { id: string; fullName: string; }; salesStoreName: string; salesStoreType: string; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; terms: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isFullyInvoiced: boolean`\n - `isManuallyClosed: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isManuallyClosed: boolean; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isManuallyClosed: boolean; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_sales_order'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesChannelName: 'blank' | 'ecommerce'`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesStoreName: string`\n - `salesStoreType: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesOrder = await conductor.qbd.salesOrders.create({\n customerId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesOrder);\n```", perLanguage: { typescript: { method: 'client.qbd.salesOrders.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesOrder = await conductor.qbd.salesOrders.create({\n customerId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesOrder.id);", }, python: { method: 'qbd.sales_orders.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_order = conductor.qbd.sales_orders.create(\n customer_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_order.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-orders \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "customerId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "classId": "80000001-1234567890",\n "customerMessageId": "80000001-1234567890",\n "documentTemplateId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isManuallyClosed": true,\n "isQueuedForEmail": true,\n "isQueuedForPrint": true,\n "memo": "Customer requested rush delivery",\n "otherCustomField": "Special handling required",\n "purchaseOrderNumber": "PO-1234",\n "refNumber": "SO-1234",\n "salesChannelName": "ecommerce",\n "salesRepresentativeId": "80000001-1234567890",\n "salesStoreName": "Store 1",\n "salesStoreType": "Retail",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxItemId": "80000001-1234567890",\n "shipmentOrigin": "shipmentOrigin",\n "shippingDate": "2024-10-01",\n "shippingMethodId": "80000001-1234567890",\n "termsId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/sales-orders', httpMethod: 'get', summary: 'List all sales orders', description: 'Returns a list of sales orders. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.sales_orders > (method) list', qualified: 'client.qbd.salesOrders.list', params: [ 'Conductor-End-User-Id: string;', 'currencyIds?: string[];', 'cursor?: string;', 'customerIds?: string[];', 'ids?: string[];', 'includeLineItems?: boolean;', 'includeLinkedTransactions?: boolean;', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFullyInvoiced: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_sales_order'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesChannelName: 'blank' | 'ecommerce'; salesRepresentative: object; salesStoreName: string; salesStoreType: string; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.salesOrders.list(Conductor-End-User-Id: string, currencyIds?: string[], cursor?: string, customerIds?: string[], ids?: string[], includeLineItems?: boolean, includeLinkedTransactions?: boolean, limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFullyInvoiced: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_sales_order'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesChannelName: 'blank' | 'ecommerce'; salesRepresentative: object; salesStoreName: string; salesStoreType: string; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/sales-orders`\n\nReturns a list of sales orders. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `currencyIds?: string[]`\n Filter for sales orders in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `customerIds?: string[]`\n Filter for sales orders created for these customers.\n\n- `ids?: string[]`\n Filter for specific sales orders by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `includeLinkedTransactions?: boolean`\n Whether to include linked transactions in the response. Defaults to `false`. For example, a payment linked to the corresponding sales order.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for sales orders whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for sales orders whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for sales orders whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific sales orders by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for sales orders whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for sales orders whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for sales orders whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for sales orders whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for sales orders updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for sales orders updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isFullyInvoiced: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; isManuallyClosed: boolean; item: object; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isManuallyClosed: boolean; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_sales_order'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesChannelName: 'blank' | 'ecommerce'; salesRepresentative: { id: string; fullName: string; }; salesStoreName: string; salesStoreType: string; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; terms: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isFullyInvoiced: boolean`\n - `isManuallyClosed: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isManuallyClosed: boolean; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isManuallyClosed: boolean; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_sales_order'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesChannelName: 'blank' | 'ecommerce'`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesStoreName: string`\n - `salesStoreType: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const salesOrder of conductor.qbd.salesOrders.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(salesOrder);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.salesOrders.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const salesOrder of conductor.qbd.salesOrders.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(salesOrder.id);\n}", }, python: { method: 'qbd.sales_orders.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.sales_orders.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-orders \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/sales-orders/{id}', httpMethod: 'get', summary: 'Retrieve a sales order', description: 'Retrieves a sales order by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales orders by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.', stainlessPath: '(resource) qbd.sales_orders > (method) retrieve', qualified: 'client.qbd.salesOrders.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFullyInvoiced: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_sales_order'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesChannelName: 'blank' | 'ecommerce'; salesRepresentative: object; salesStoreName: string; salesStoreType: string; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.salesOrders.retrieve(id: string, Conductor-End-User-Id: string): { id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFullyInvoiced: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_sales_order'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesChannelName: 'blank' | 'ecommerce'; salesRepresentative: object; salesStoreName: string; salesStoreType: string; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/sales-orders/{id}`\n\nRetrieves a sales order by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales orders by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales order to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isFullyInvoiced: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; isManuallyClosed: boolean; item: object; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isManuallyClosed: boolean; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_sales_order'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesChannelName: 'blank' | 'ecommerce'; salesRepresentative: { id: string; fullName: string; }; salesStoreName: string; salesStoreType: string; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; terms: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isFullyInvoiced: boolean`\n - `isManuallyClosed: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isManuallyClosed: boolean; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isManuallyClosed: boolean; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_sales_order'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesChannelName: 'blank' | 'ecommerce'`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesStoreName: string`\n - `salesStoreType: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesOrder = await conductor.qbd.salesOrders.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesOrder);\n```", perLanguage: { typescript: { method: 'client.qbd.salesOrders.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesOrder = await conductor.qbd.salesOrders.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesOrder.id);", }, python: { method: 'qbd.sales_orders.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_order = conductor.qbd.sales_orders.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_order.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-orders/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/sales-orders/{id}', httpMethod: 'post', summary: 'Update a sales order', description: 'Updates an existing sales order.\n\n**NOTE:** If you include `lines` or `lineGroups`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.sales_orders > (method) update', qualified: 'client.qbd.salesOrders.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'classId?: string;', 'customerId?: string;', 'customerMessageId?: string;', 'documentTemplateId?: string;', 'dueDate?: string;', 'exchangeRate?: number;', 'isManuallyClosed?: boolean;', 'isQueuedForEmail?: boolean;', 'isQueuedForPrint?: boolean;', "lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[];", "lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'otherCustomField?: string;', 'purchaseOrderNumber?: string;', 'refNumber?: string;', "salesChannelName?: 'blank' | 'ecommerce';", 'salesRepresentativeId?: string;', 'salesStoreName?: string;', 'salesStoreType?: string;', 'salesTaxCodeId?: string;', 'salesTaxItemId?: string;', 'shipmentOrigin?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'shippingDate?: string;', 'shippingMethodId?: string;', 'termsId?: string;', 'transactionDate?: string;', ], response: "{ id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFullyInvoiced: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_sales_order'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesChannelName: 'blank' | 'ecommerce'; salesRepresentative: object; salesStoreName: string; salesStoreType: string; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.salesOrders.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, classId?: string, customerId?: string, customerMessageId?: string, documentTemplateId?: string, dueDate?: string, exchangeRate?: number, isManuallyClosed?: boolean, isQueuedForEmail?: boolean, isQueuedForPrint?: boolean, lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[], lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], memo?: string, otherCustomField?: string, purchaseOrderNumber?: string, refNumber?: string, salesChannelName?: 'blank' | 'ecommerce', salesRepresentativeId?: string, salesStoreName?: string, salesStoreType?: string, salesTaxCodeId?: string, salesTaxItemId?: string, shipmentOrigin?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, shippingDate?: string, shippingMethodId?: string, termsId?: string, transactionDate?: string): { id: string; billingAddress: object; class: object; createdAt: string; currency: object; customer: object; customerMessage: object; customFields: object[]; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isFullyInvoiced: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_sales_order'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesChannelName: 'blank' | 'ecommerce'; salesRepresentative: object; salesStoreName: string; salesStoreType: string; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; terms: object; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/sales-orders/{id}`\n\nUpdates an existing sales order.\n\n**NOTE:** If you include `lines` or `lineGroups`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales order to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the sales order object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The sales order's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `classId?: string`\n The sales order's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this sales order's line items unless overridden at the line item level.\n\n- `customerId?: string`\n The customer or customer-job associated with this sales order.\n\n- `customerMessageId?: string`\n The message to display to the customer on the sales order.\n\n- `documentTemplateId?: string`\n The predefined template in QuickBooks that determines the layout and formatting for this sales order when printed or displayed.\n\n- `dueDate?: string`\n The date by which this sales order must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n- `exchangeRate?: number`\n The market exchange rate between this sales order's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `isManuallyClosed?: boolean`\n Indicates whether this sales order has been manually marked as closed, even if it has not been invoiced.\n\n- `isQueuedForEmail?: boolean`\n Indicates whether this sales order is included in the queue of documents for QuickBooks to email to the customer.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this sales order is included in the queue of documents for QuickBooks to print.\n\n- `lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The sales order's line item groups, each representing a predefined set of related items.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing line item groups for the sales order with this array. To keep any existing line item groups, you must include them in this array even if they have not changed. **Any line item groups not included will be removed.**\n\n2. To add a new line item group, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any line item groups, omit this field entirely to keep them unchanged.\n\n- `lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; isManuallyClosed?: boolean; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The sales order's line items, each representing a single product or service ordered.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing line items for the sales order with this array. To keep any existing line items, you must include them in this array even if they have not changed. **Any line items not included will be removed.**\n\n2. To add a new line item, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any line items, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this sales order.\n\n- `otherCustomField?: string`\n A built-in custom field for additional information specific to this sales order. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all sales orders for convenience. Developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Unlike `otherCustomField1` and `otherCustomField2`, which are line item fields, this exists at the transaction level. Hidden by default in the QuickBooks UI.\n\n- `purchaseOrderNumber?: string`\n The customer's Purchase Order (PO) number associated with this sales order. This field is often used to cross-reference the sales order with the customer's purchasing system.\n\nMaximum length: 25 characters.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this sales order, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 11 characters.\n\n- `salesChannelName?: 'blank' | 'ecommerce'`\n The type of the sales channel for this sales order.\n\n- `salesRepresentativeId?: string`\n The sales order's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.\n\n- `salesStoreName?: string`\n The name of the sales store for this sales order.\n\n- `salesStoreType?: string`\n The type of the sales store for this sales order.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this sales order, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this sales order's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\n- `shipmentOrigin?: string`\n The origin location from where the product associated with this sales order is shipped. This is the point at which ownership and liability for goods transfer from seller to buyer. Internally, QuickBooks uses the term \"FOB\" for this field, which stands for \"freight on board\". This field is informational and has no accounting implications.\n\nMaximum length: 13 characters.\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The sales order's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `shippingDate?: string`\n The date when the products or services for this sales order were shipped or are expected to be shipped, in ISO 8601 format (YYYY-MM-DD).\n\n- `shippingMethodId?: string`\n The shipping method used for this sales order, such as standard mail or overnight delivery.\n\n- `termsId?: string`\n The sales order's payment terms, defining when payment is due and any applicable discounts.\n\n- `transactionDate?: string`\n The date of this sales order, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; class: { id: string; fullName: string; }; createdAt: string; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isFullyInvoiced: boolean; isManuallyClosed: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; isManuallyClosed: boolean; item: object; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isManuallyClosed: boolean; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_sales_order'; otherCustomField: string; purchaseOrderNumber: string; refNumber: string; revisionNumber: string; salesChannelName: 'blank' | 'ecommerce'; salesRepresentative: { id: string; fullName: string; }; salesStoreName: string; salesStoreType: string; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; terms: { id: string; fullName: string; }; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isFullyInvoiced: boolean`\n - `isManuallyClosed: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isManuallyClosed: boolean; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_order_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; isManuallyClosed: boolean; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_order_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; quantityInvoiced: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_sales_order'`\n - `otherCustomField: string`\n - `purchaseOrderNumber: string`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesChannelName: 'blank' | 'ecommerce'`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesStoreName: string`\n - `salesStoreType: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `terms: { id: string; fullName: string; }`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesOrder = await conductor.qbd.salesOrders.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesOrder);\n```", perLanguage: { typescript: { method: 'client.qbd.salesOrders.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesOrder = await conductor.qbd.salesOrders.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesOrder.id);", }, python: { method: 'qbd.sales_orders.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_order = conductor.qbd.sales_orders.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_order.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-orders/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "classId": "80000001-1234567890",\n "customerId": "80000001-1234567890",\n "customerMessageId": "80000001-1234567890",\n "documentTemplateId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "isManuallyClosed": true,\n "isQueuedForEmail": true,\n "isQueuedForPrint": true,\n "memo": "Customer requested rush delivery",\n "otherCustomField": "Special handling required",\n "purchaseOrderNumber": "PO-1234",\n "refNumber": "SO-1234",\n "salesChannelName": "ecommerce",\n "salesRepresentativeId": "80000001-1234567890",\n "salesStoreName": "Store 1",\n "salesStoreType": "Retail",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxItemId": "80000001-1234567890",\n "shipmentOrigin": "shipmentOrigin",\n "shippingDate": "2024-10-01",\n "shippingMethodId": "80000001-1234567890",\n "termsId": "80000001-1234567890",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/sales-orders/{id}', httpMethod: 'delete', summary: 'Delete a sales order', description: 'Permanently deletes a sales order. The deletion will fail if the sales order is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.sales_orders > (method) delete', qualified: 'client.qbd.salesOrders.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_sales_order'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.salesOrders.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_sales_order'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/sales-orders/{id}`\n\nPermanently deletes a sales order. The deletion will fail if the sales order is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales order to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_sales_order'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_sales_order'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesOrder = await conductor.qbd.salesOrders.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesOrder);\n```", perLanguage: { typescript: { method: 'client.qbd.salesOrders.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesOrder = await conductor.qbd.salesOrders.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesOrder.id);", }, python: { method: 'qbd.sales_orders.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_order = conductor.qbd.sales_orders.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_order.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-orders/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/sales-receipts', httpMethod: 'post', summary: 'Create a sales receipt', description: 'Creates a sales receipt for a sale paid in full. If you include credit card transaction details, QuickBooks requires the payment method to reference a credit card type and automatically deposits the funds to Undeposited Funds rather than a specific bank account.', stainlessPath: '(resource) qbd.sales_receipts > (method) create', qualified: 'client.qbd.salesReceipts.create', params: [ 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'checkNumber?: string;', 'classId?: string;', "creditCardTransaction?: { request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }; };", 'customerId?: string;', 'customerMessageId?: string;', 'depositToAccountId?: string;', 'documentTemplateId?: string;', 'dueDate?: string;', 'exchangeRate?: number;', 'externalId?: string;', 'isPending?: boolean;', 'isQueuedForEmail?: boolean;', 'isQueuedForPrint?: boolean;', 'lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; serviceDate?: string; unitOfMeasure?: string; }[];', "lines?: { amount?: string; classId?: string; creditCardTransaction?: { request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }; }; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'otherCustomField?: string;', 'paymentMethodId?: string;', 'refNumber?: string;', 'salesRepresentativeId?: string;', 'salesTaxCodeId?: string;', 'salesTaxItemId?: string;', 'shipmentOrigin?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'shippingDate?: string;', 'shippingMethodId?: string;', ], response: "{ id: string; billingAddress: object; checkNumber: string; class: object; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customerMessage: object; customFields: object[]; depositToAccount: object; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; memo: string; objectType: 'qbd_sales_receipt'; otherCustomField: string; paymentMethod: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.salesReceipts.create(transactionDate: string, Conductor-End-User-Id: string, billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, checkNumber?: string, classId?: string, creditCardTransaction?: { request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }; }, customerId?: string, customerMessageId?: string, depositToAccountId?: string, documentTemplateId?: string, dueDate?: string, exchangeRate?: number, externalId?: string, isPending?: boolean, isQueuedForEmail?: boolean, isQueuedForPrint?: boolean, lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; serviceDate?: string; unitOfMeasure?: string; }[], lines?: { amount?: string; classId?: string; creditCardTransaction?: { request?: object; response?: object; }; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[], memo?: string, otherCustomField?: string, paymentMethodId?: string, refNumber?: string, salesRepresentativeId?: string, salesTaxCodeId?: string, salesTaxItemId?: string, shipmentOrigin?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, shippingDate?: string, shippingMethodId?: string): { id: string; billingAddress: object; checkNumber: string; class: object; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customerMessage: object; customFields: object[]; depositToAccount: object; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; memo: string; objectType: 'qbd_sales_receipt'; otherCustomField: string; paymentMethod: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/sales-receipts`\n\nCreates a sales receipt for a sale paid in full. If you include credit card transaction details, QuickBooks requires the payment method to reference a credit card type and automatically deposits the funds to Undeposited Funds rather than a specific bank account.\n\n### Parameters\n\n- `transactionDate: string`\n The date of this sales receipt, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The sales receipt's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `checkNumber?: string`\n The check number of a check received for this sales receipt.\n\n- `classId?: string`\n The sales receipt's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this sales receipt's line items unless overridden at the line item level.\n\n- `creditCardTransaction?: { request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }; }`\n The credit card transaction data for this sales receipt's payment when using QuickBooks Merchant Services (QBMS). If specifying this field, you must also specify the `paymentMethod` field.\n - `request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }`\n The transaction request data originally supplied for this credit card transaction when using QuickBooks Merchant Services (QBMS).\n - `response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }`\n The transaction response data for this credit card transaction when using QuickBooks Merchant Services (QBMS).\n\n- `customerId?: string`\n The customer or customer-job to which the payment for this sales receipt is credited.\n\n- `customerMessageId?: string`\n The message to display to the customer on the sales receipt.\n\n- `depositToAccountId?: string`\n The account where the funds for this sales receipt will be or have been deposited.\n\n- `documentTemplateId?: string`\n The predefined template in QuickBooks that determines the layout and formatting for this sales receipt when printed or displayed.\n\n- `dueDate?: string`\n The date by which this sales receipt must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE**: For sales receipts, this field is often `null` because sales receipts are generally used for point-of-sale payments, where full payment is received at the time of purchase.\n\n- `exchangeRate?: number`\n The market exchange rate between this sales receipt's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isPending?: boolean`\n Indicates whether this sales receipt has not been completed.\n\n- `isQueuedForEmail?: boolean`\n Indicates whether this sales receipt is included in the queue of documents for QuickBooks to email to the customer.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this sales receipt is included in the queue of documents for QuickBooks to print.\n\n- `lineGroups?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; serviceDate?: string; unitOfMeasure?: string; }[]`\n The sales receipt's line item groups, each representing a predefined set of related items.\n\n**IMPORTANT**: You must specify `lines`, `lineGroups`, or both when creating a sales receipt.\n\n- `lines?: { amount?: string; classId?: string; creditCardTransaction?: { request?: { expirationMonth: number; expirationYear: number; name: string; number: string; address?: string; commercialCardCode?: string; postalCode?: string; transactionMode?: 'card_not_present' | 'card_present'; transactionType?: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response?: { creditCardTransactionId: string; merchantAccountNumber: string; paymentStatus: 'completed' | 'unknown'; statusCode: number; statusMessage: string; transactionAuthorizedAt: string; authorizationCode?: string; avsStreetStatus?: 'fail' | 'not_available' | 'pass'; avsZipStatus?: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch?: 'fail' | 'not_available' | 'pass'; clientTransactionId?: string; paymentGroupingCode?: number; reconBatchId?: string; transactionAuthorizationStamp?: number; }; }; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]`\n The sales receipt's line items, each representing a single product or service sold.\n\n**IMPORTANT**: You must specify `lines`, `lineGroups`, or both when creating a sales receipt.\n\n- `memo?: string`\n A memo or note for this sales receipt that appears in reports, but not on the sales receipt.\n\n- `otherCustomField?: string`\n A built-in custom field for additional information specific to this sales receipt. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all sales receipts for convenience. Developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Unlike `otherCustomField1` and `otherCustomField2`, which are line item fields, this exists at the transaction level. Hidden by default in the QuickBooks UI.\n\n- `paymentMethodId?: string`\n The sales receipt's payment method (e.g., cash, check, credit card).\n\n**NOTE**: If this sales receipt contains credit card transaction data supplied from QuickBooks Merchant Services (QBMS) transaction responses, you must specify a credit card payment method (e.g., \"Visa\", \"MasterCard\", etc.).\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this sales receipt, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 11 characters.\n\n- `salesRepresentativeId?: string`\n The sales receipt's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this sales receipt, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this sales receipt's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\nFor sales receipts, while using this field to specify a single tax item/group that applies uniformly is recommended, complex tax scenarios may require alternative approaches. In such cases, you can set this field to a 0% tax item (conventionally named \"Tax Calculated On Invoice\") and handle tax calculations through line items instead. When using line items for taxes, note that only individual tax items (not tax groups) can be used, subtotals can help apply a tax to multiple items but only the first tax line after a subtotal is calculated automatically (subsequent tax lines require manual amounts), and the rate column will always display the actual tax amount rather than the rate percentage.\n\n- `shipmentOrigin?: string`\n The origin location from where the product associated with this sales receipt is shipped. This is the point at which ownership and liability for goods transfer from seller to buyer. Internally, QuickBooks uses the term \"FOB\" for this field, which stands for \"freight on board\". This field is informational and has no accounting implications.\n\nMaximum length: 13 characters.\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The sales receipt's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `shippingDate?: string`\n The date when the products or services for this sales receipt were shipped or are expected to be shipped, in ISO 8601 format (YYYY-MM-DD).\n\n- `shippingMethodId?: string`\n The shipping method used for this sales receipt, such as standard mail or overnight delivery.\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; checkNumber: string; class: { id: string; fullName: string; }; createdAt: string; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; creditCardTransaction: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_receipt_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; creditCardTransaction: { request: object; response: object; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; memo: string; objectType: 'qbd_sales_receipt'; otherCustomField: string; paymentMethod: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `checkNumber: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `depositToAccount: { id: string; fullName: string; }`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isPending: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_receipt_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_sales_receipt'`\n - `otherCustomField: string`\n - `paymentMethod: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesReceipt = await conductor.qbd.salesReceipts.create({ transactionDate: '2024-10-01', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesReceipt);\n```", perLanguage: { typescript: { method: 'client.qbd.salesReceipts.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesReceipt = await conductor.qbd.salesReceipts.create({\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesReceipt.id);", }, python: { method: 'qbd.sales_receipts.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_receipt = conductor.qbd.sales_receipts.create(\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_receipt.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-receipts \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "transactionDate": "2024-10-01",\n "checkNumber": "1234567890",\n "classId": "80000001-1234567890",\n "customerId": "80000001-1234567890",\n "customerMessageId": "80000001-1234567890",\n "depositToAccountId": "80000001-1234567890",\n "documentTemplateId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isPending": false,\n "isQueuedForEmail": true,\n "isQueuedForPrint": true,\n "memo": "Payment received at store location - cash",\n "otherCustomField": "Special handling required",\n "paymentMethodId": "80000001-1234567890",\n "refNumber": "refNumber",\n "salesRepresentativeId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxItemId": "80000001-1234567890",\n "shipmentOrigin": "shipmentOrigin",\n "shippingDate": "2024-10-01",\n "shippingMethodId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/sales-receipts', httpMethod: 'get', summary: 'List all sales receipts', description: 'Returns a list of sales receipts. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.sales_receipts > (method) list', qualified: 'client.qbd.salesReceipts.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'customerIds?: string[];', 'ids?: string[];', 'includeLineItems?: boolean;', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; billingAddress: object; checkNumber: string; class: object; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customerMessage: object; customFields: object[]; depositToAccount: object; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; memo: string; objectType: 'qbd_sales_receipt'; otherCustomField: string; paymentMethod: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.salesReceipts.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, customerIds?: string[], ids?: string[], includeLineItems?: boolean, limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; billingAddress: object; checkNumber: string; class: object; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customerMessage: object; customFields: object[]; depositToAccount: object; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; memo: string; objectType: 'qbd_sales_receipt'; otherCustomField: string; paymentMethod: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/sales-receipts`\n\nReturns a list of sales receipts. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for sales receipts associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for sales receipts in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `customerIds?: string[]`\n Filter for sales receipts created for these customers.\n\n- `ids?: string[]`\n Filter for specific sales receipts by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for sales receipts whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for sales receipts whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for sales receipts whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific sales receipts by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for sales receipts whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for sales receipts whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for sales receipts whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for sales receipts whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for sales receipts updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for sales receipts updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; checkNumber: string; class: { id: string; fullName: string; }; createdAt: string; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; creditCardTransaction: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_receipt_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; creditCardTransaction: { request: object; response: object; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; memo: string; objectType: 'qbd_sales_receipt'; otherCustomField: string; paymentMethod: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `checkNumber: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `depositToAccount: { id: string; fullName: string; }`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isPending: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_receipt_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_sales_receipt'`\n - `otherCustomField: string`\n - `paymentMethod: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const salesReceipt of conductor.qbd.salesReceipts.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(salesReceipt);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.salesReceipts.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const salesReceipt of conductor.qbd.salesReceipts.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(salesReceipt.id);\n}", }, python: { method: 'qbd.sales_receipts.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.sales_receipts.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-receipts \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/sales-receipts/{id}', httpMethod: 'get', summary: 'Retrieve a sales receipt', description: 'Retrieves a sales receipt by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales receipts by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.sales_receipts > (method) retrieve', qualified: 'client.qbd.salesReceipts.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; billingAddress: object; checkNumber: string; class: object; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customerMessage: object; customFields: object[]; depositToAccount: object; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; memo: string; objectType: 'qbd_sales_receipt'; otherCustomField: string; paymentMethod: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.salesReceipts.retrieve(id: string, Conductor-End-User-Id: string): { id: string; billingAddress: object; checkNumber: string; class: object; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customerMessage: object; customFields: object[]; depositToAccount: object; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; memo: string; objectType: 'qbd_sales_receipt'; otherCustomField: string; paymentMethod: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/sales-receipts/{id}`\n\nRetrieves a sales receipt by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales receipts by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales receipt to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; checkNumber: string; class: { id: string; fullName: string; }; createdAt: string; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; creditCardTransaction: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_receipt_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; creditCardTransaction: { request: object; response: object; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; memo: string; objectType: 'qbd_sales_receipt'; otherCustomField: string; paymentMethod: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `checkNumber: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `depositToAccount: { id: string; fullName: string; }`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isPending: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_receipt_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_sales_receipt'`\n - `otherCustomField: string`\n - `paymentMethod: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesReceipt = await conductor.qbd.salesReceipts.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesReceipt);\n```", perLanguage: { typescript: { method: 'client.qbd.salesReceipts.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesReceipt = await conductor.qbd.salesReceipts.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesReceipt.id);", }, python: { method: 'qbd.sales_receipts.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_receipt = conductor.qbd.sales_receipts.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_receipt.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-receipts/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/sales-receipts/{id}', httpMethod: 'post', summary: 'Update a sales receipt', description: 'Updates an existing sales receipt. Credit card payments still have to use a credit-card payment method and remain deposited to Undeposited Funds, so don’t switch the deposit account in those scenarios.\n\n**NOTE:** If you include `lines` or `lineGroups`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.sales_receipts > (method) update', qualified: 'client.qbd.salesReceipts.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'checkNumber?: string;', 'classId?: string;', 'customerId?: string;', 'customerMessageId?: string;', 'depositToAccountId?: string;', 'documentTemplateId?: string;', 'dueDate?: string;', 'exchangeRate?: number;', 'isPending?: boolean;', 'isQueuedForEmail?: boolean;', 'isQueuedForPrint?: boolean;', "lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[];", "lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'otherCustomField?: string;', 'paymentMethodId?: string;', 'refNumber?: string;', 'salesRepresentativeId?: string;', 'salesTaxCodeId?: string;', 'salesTaxItemId?: string;', 'shipmentOrigin?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'shippingDate?: string;', 'shippingMethodId?: string;', 'transactionDate?: string;', ], response: "{ id: string; billingAddress: object; checkNumber: string; class: object; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customerMessage: object; customFields: object[]; depositToAccount: object; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; memo: string; objectType: 'qbd_sales_receipt'; otherCustomField: string; paymentMethod: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.salesReceipts.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, checkNumber?: string, classId?: string, customerId?: string, customerMessageId?: string, depositToAccountId?: string, documentTemplateId?: string, dueDate?: string, exchangeRate?: number, isPending?: boolean, isQueuedForEmail?: boolean, isQueuedForPrint?: boolean, lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[], lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[], memo?: string, otherCustomField?: string, paymentMethodId?: string, refNumber?: string, salesRepresentativeId?: string, salesTaxCodeId?: string, salesTaxItemId?: string, shipmentOrigin?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, shippingDate?: string, shippingMethodId?: string, transactionDate?: string): { id: string; billingAddress: object; checkNumber: string; class: object; createdAt: string; creditCardTransaction: object; currency: object; customer: object; customerMessage: object; customFields: object[]; depositToAccount: object; documentTemplate: object; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: object[]; lines: object[]; memo: string; objectType: 'qbd_sales_receipt'; otherCustomField: string; paymentMethod: object; refNumber: string; revisionNumber: string; salesRepresentative: object; salesTaxCode: object; salesTaxItem: object; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: object; shippingDate: string; shippingMethod: object; subtotal: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/sales-receipts/{id}`\n\nUpdates an existing sales receipt. Credit card payments still have to use a credit-card payment method and remain deposited to Undeposited Funds, so don’t switch the deposit account in those scenarios.\n\n**NOTE:** If you include `lines` or `lineGroups`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales receipt to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the sales receipt object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The sales receipt's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `checkNumber?: string`\n The check number of a check received for this sales receipt.\n\n- `classId?: string`\n The sales receipt's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default. A class defined here is automatically used in this sales receipt's line items unless overridden at the line item level.\n\n- `customerId?: string`\n The customer or customer-job to which the payment for this sales receipt is credited.\n\n- `customerMessageId?: string`\n The message to display to the customer on the sales receipt.\n\n- `depositToAccountId?: string`\n The account where the funds for this sales receipt will be or have been deposited.\n\n- `documentTemplateId?: string`\n The predefined template in QuickBooks that determines the layout and formatting for this sales receipt when printed or displayed.\n\n- `dueDate?: string`\n The date by which this sales receipt must be paid, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE**: For sales receipts, this field is often `null` because sales receipts are generally used for point-of-sale payments, where full payment is received at the time of purchase.\n\n- `exchangeRate?: number`\n The market exchange rate between this sales receipt's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `isPending?: boolean`\n Indicates whether this sales receipt has not been completed.\n\n- `isQueuedForEmail?: boolean`\n Indicates whether this sales receipt is included in the queue of documents for QuickBooks to email to the customer.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this sales receipt is included in the queue of documents for QuickBooks to print.\n\n- `lineGroups?: { id: string; itemGroupId?: string; lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The sales receipt's line item groups, each representing a predefined set of related items.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing line item groups for the sales receipt with this array. To keep any existing line item groups, you must include them in this array even if they have not changed. **Any line item groups not included will be removed.**\n\n2. To add a new line item group, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any line item groups, omit this field entirely to keep them unchanged.\n\n- `lines?: { id: string; amount?: string; classId?: string; description?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; otherCustomField1?: string; otherCustomField2?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; priceLevelId?: string; priceRuleConflictStrategy?: 'base_price' | 'zero'; quantity?: number; rate?: string; ratePercent?: string; salesTaxCodeId?: string; serialNumber?: string; serviceDate?: string; unitOfMeasure?: string; }[]`\n The sales receipt's line items, each representing a single product or service sold.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing line items for the sales receipt with this array. To keep any existing line items, you must include them in this array even if they have not changed. **Any line items not included will be removed.**\n\n2. To add a new line item, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any line items, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this sales receipt that appears in reports, but not on the sales receipt.\n\n- `otherCustomField?: string`\n A built-in custom field for additional information specific to this sales receipt. Unlike the user-defined fields in the `customFields` array, this is a standard QuickBooks field that exists for all sales receipts for convenience. Developers often use this field for tracking information that doesn't fit into other standard QuickBooks fields. Unlike `otherCustomField1` and `otherCustomField2`, which are line item fields, this exists at the transaction level. Hidden by default in the QuickBooks UI.\n\n- `paymentMethodId?: string`\n The sales receipt's payment method (e.g., cash, check, credit card).\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this sales receipt, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 11 characters.\n\n- `salesRepresentativeId?: string`\n The sales receipt's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this sales receipt, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this sales receipt's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\nFor sales receipts, while using this field to specify a single tax item/group that applies uniformly is recommended, complex tax scenarios may require alternative approaches. In such cases, you can set this field to a 0% tax item (conventionally named \"Tax Calculated On Invoice\") and handle tax calculations through line items instead. When using line items for taxes, note that only individual tax items (not tax groups) can be used, subtotals can help apply a tax to multiple items but only the first tax line after a subtotal is calculated automatically (subsequent tax lines require manual amounts), and the rate column will always display the actual tax amount rather than the rate percentage.\n\n- `shipmentOrigin?: string`\n The origin location from where the product associated with this sales receipt is shipped. This is the point at which ownership and liability for goods transfer from seller to buyer. Internally, QuickBooks uses the term \"FOB\" for this field, which stands for \"freight on board\". This field is informational and has no accounting implications.\n\nMaximum length: 13 characters.\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The sales receipt's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `shippingDate?: string`\n The date when the products or services for this sales receipt were shipped or are expected to be shipped, in ISO 8601 format (YYYY-MM-DD).\n\n- `shippingMethodId?: string`\n The shipping method used for this sales receipt, such as standard mail or overnight delivery.\n\n- `transactionDate?: string`\n The date of this sales receipt, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; checkNumber: string; class: { id: string; fullName: string; }; createdAt: string; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; currency: { id: string; fullName: string; }; customer: { id: string; fullName: string; }; customerMessage: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; depositToAccount: { id: string; fullName: string; }; documentTemplate: { id: string; fullName: string; }; dueDate: string; exchangeRate: number; externalId: string; isPending: boolean; isQueuedForEmail: boolean; isQueuedForPrint: boolean; lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: object; creditCardTransaction: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: object; quantity: number; rate: string; ratePercent: string; salesTaxCode: object; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_receipt_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]; lines: { id: string; amount: string; class: { id: string; fullName: string; }; creditCardTransaction: { request: object; response: object; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; memo: string; objectType: 'qbd_sales_receipt'; otherCustomField: string; paymentMethod: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxItem: { id: string; fullName: string; }; salesTaxPercentage: string; salesTaxTotal: string; shipmentOrigin: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; shippingDate: string; shippingMethod: { id: string; fullName: string; }; subtotal: string; totalAmount: string; totalAmountInHomeCurrency: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `checkNumber: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }`\n - `currency: { id: string; fullName: string; }`\n - `customer: { id: string; fullName: string; }`\n - `customerMessage: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `depositToAccount: { id: string; fullName: string; }`\n - `documentTemplate: { id: string; fullName: string; }`\n - `dueDate: string`\n - `exchangeRate: number`\n - `externalId: string`\n - `isPending: boolean`\n - `isQueuedForEmail: boolean`\n - `isQueuedForPrint: boolean`\n - `lineGroups: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; lines: { id: string; amount: string; class: { id: string; fullName: string; }; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]; objectType: 'qbd_sales_receipt_line_group'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; serviceDate: string; shouldPrintItemsInGroup: boolean; totalAmount: string; unitOfMeasure: string; }[]`\n - `lines: { id: string; amount: string; class: { id: string; fullName: string; }; creditCardTransaction: { request: { address: string; commercialCardCode: string; expirationMonth: number; expirationYear: number; name: string; number: string; postalCode: string; transactionMode: 'card_not_present' | 'card_present'; transactionType: 'authorization' | 'capture' | 'charge' | 'refund' | 'voice_authorization'; }; response: { authorizationCode: string; avsStreetStatus: 'fail' | 'not_available' | 'pass'; avsZipStatus: 'fail' | 'not_available' | 'pass'; cardSecurityCodeMatch: 'fail' | 'not_available' | 'pass'; clientTransactionId: string; creditCardTransactionId: string; merchantAccountNumber: string; paymentGroupingCode: number; paymentStatus: 'completed' | 'unknown'; reconBatchId: string; statusCode: number; statusMessage: string; transactionAuthorizationStamp: number; transactionAuthorizedAt: string; }; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_sales_receipt_line'; otherCustomField1: string; otherCustomField2: string; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; rate: string; ratePercent: string; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; serviceDate: string; unitOfMeasure: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_sales_receipt'`\n - `otherCustomField: string`\n - `paymentMethod: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesRepresentative: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `salesTaxPercentage: string`\n - `salesTaxTotal: string`\n - `shipmentOrigin: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `shippingDate: string`\n - `shippingMethod: { id: string; fullName: string; }`\n - `subtotal: string`\n - `totalAmount: string`\n - `totalAmountInHomeCurrency: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesReceipt = await conductor.qbd.salesReceipts.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesReceipt);\n```", perLanguage: { typescript: { method: 'client.qbd.salesReceipts.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesReceipt = await conductor.qbd.salesReceipts.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesReceipt.id);", }, python: { method: 'qbd.sales_receipts.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_receipt = conductor.qbd.sales_receipts.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_receipt.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-receipts/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "checkNumber": "1234567890",\n "classId": "80000001-1234567890",\n "customerId": "80000001-1234567890",\n "customerMessageId": "80000001-1234567890",\n "depositToAccountId": "80000001-1234567890",\n "documentTemplateId": "80000001-1234567890",\n "dueDate": "2024-10-31",\n "exchangeRate": 1.2345,\n "isPending": false,\n "isQueuedForEmail": true,\n "isQueuedForPrint": true,\n "memo": "Payment received at store location - cash",\n "otherCustomField": "Special handling required",\n "paymentMethodId": "80000001-1234567890",\n "refNumber": "refNumber",\n "salesRepresentativeId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxItemId": "80000001-1234567890",\n "shipmentOrigin": "shipmentOrigin",\n "shippingDate": "2024-10-01",\n "shippingMethodId": "80000001-1234567890",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/sales-receipts/{id}/void', httpMethod: 'post', summary: 'Void a sales receipt', description: 'Voids a sales receipt by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the sales receipt is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.sales_receipts > (method) void', qualified: 'client.qbd.salesReceipts.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_sales_receipt'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.salesReceipts.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_sales_receipt'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/sales-receipts/{id}/void`\n\nVoids a sales receipt by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the sales receipt is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales receipt to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_sales_receipt'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_sales_receipt'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.salesReceipts.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.salesReceipts.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.salesReceipts.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.sales_receipts.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.sales_receipts.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-receipts/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/sales-receipts/{id}', httpMethod: 'delete', summary: 'Delete a sales receipt', description: 'Permanently deletes a sales receipt. The deletion will fail if the sales receipt is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.sales_receipts > (method) delete', qualified: 'client.qbd.salesReceipts.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_sales_receipt'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.salesReceipts.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_sales_receipt'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/sales-receipts/{id}`\n\nPermanently deletes a sales receipt. The deletion will fail if the sales receipt is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales receipt to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_sales_receipt'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_sales_receipt'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesReceipt = await conductor.qbd.salesReceipts.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesReceipt);\n```", perLanguage: { typescript: { method: 'client.qbd.salesReceipts.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesReceipt = await conductor.qbd.salesReceipts.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesReceipt.id);", }, python: { method: 'qbd.sales_receipts.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_receipt = conductor.qbd.sales_receipts.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_receipt.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-receipts/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/sales-representatives', httpMethod: 'post', summary: 'Create a sales representative', description: 'Creates a sales representative that references an existing employee, vendor, or other-name record so it can be assigned on sales forms.', stainlessPath: '(resource) qbd.sales_representatives > (method) create', qualified: 'client.qbd.salesRepresentatives.create', params: [ 'entityId: string;', 'initial: string;', 'Conductor-End-User-Id: string;', 'isActive?: boolean;', ], response: "{ id: string; createdAt: string; entity: { id: string; fullName: string; }; initial: string; isActive: boolean; objectType: 'qbd_sales_representative'; revisionNumber: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.salesRepresentatives.create(entityId: string, initial: string, Conductor-End-User-Id: string, isActive?: boolean): { id: string; createdAt: string; entity: object; initial: string; isActive: boolean; objectType: 'qbd_sales_representative'; revisionNumber: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/sales-representatives`\n\nCreates a sales representative that references an existing employee, vendor, or other-name record so it can be assigned on sales forms.\n\n### Parameters\n\n- `entityId: string`\n The sales representative's corresponding person entity in QuickBooks, stored as either an employee, vendor, or other-name entry.\n\n- `initial: string`\n The initials of this sales representative's name.\n\nMaximum length: 5 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `isActive?: boolean`\n Indicates whether this sales representative is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n### Returns\n\n- `{ id: string; createdAt: string; entity: { id: string; fullName: string; }; initial: string; isActive: boolean; objectType: 'qbd_sales_representative'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `entity: { id: string; fullName: string; }`\n - `initial: string`\n - `isActive: boolean`\n - `objectType: 'qbd_sales_representative'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesRepresentative = await conductor.qbd.salesRepresentatives.create({\n entityId: '80000001-1234567890',\n initial: 'JD',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesRepresentative);\n```", perLanguage: { typescript: { method: 'client.qbd.salesRepresentatives.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesRepresentative = await conductor.qbd.salesRepresentatives.create({\n entityId: '80000001-1234567890',\n initial: 'JD',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesRepresentative.id);", }, python: { method: 'qbd.sales_representatives.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_representative = conductor.qbd.sales_representatives.create(\n entity_id="80000001-1234567890",\n initial="JD",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_representative.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-representatives \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "entityId": "80000001-1234567890",\n "initial": "JD",\n "isActive": true\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/sales-representatives', httpMethod: 'get', summary: 'List all sales representatives', description: 'Returns a list of sales representatives.\n\n**NOTE:** QuickBooks Desktop does not support pagination for sales representatives; hence, there is no `cursor` parameter. Users typically have few sales representatives.', stainlessPath: '(resource) qbd.sales_representatives > (method) list', qualified: 'client.qbd.salesRepresentatives.list', params: [ 'Conductor-End-User-Id: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; createdAt: string; entity: object; initial: string; isActive: boolean; objectType: 'qbd_sales_representative'; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.salesRepresentatives.list(Conductor-End-User-Id: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: sales_representative[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/sales-representatives`\n\nReturns a list of sales representatives.\n\n**NOTE:** QuickBooks Desktop does not support pagination for sales representatives; hence, there is no `cursor` parameter. Users typically have few sales representatives.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `ids?: string[]`\n Filter for specific sales representatives by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for sales representatives. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all sales representatives without limit, unlike paginated endpoints which default to 150 records. This is acceptable because sales representatives typically have low record counts.\n\n- `nameContains?: string`\n Filter for sales representatives whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for sales representatives whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for sales representatives whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific sales representatives by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a sales representative.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for sales representatives whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for sales representatives whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for sales representatives that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for sales representatives updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for sales representatives updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; entity: object; initial: string; isActive: boolean; objectType: 'qbd_sales_representative'; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; createdAt: string; entity: { id: string; fullName: string; }; initial: string; isActive: boolean; objectType: 'qbd_sales_representative'; revisionNumber: string; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesRepresentatives = await conductor.qbd.salesRepresentatives.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesRepresentatives);\n```", perLanguage: { typescript: { method: 'client.qbd.salesRepresentatives.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesRepresentatives = await conductor.qbd.salesRepresentatives.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesRepresentatives.data);", }, python: { method: 'qbd.sales_representatives.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_representatives = conductor.qbd.sales_representatives.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_representatives.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-representatives \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/sales-representatives/{id}', httpMethod: 'get', summary: 'Retrieve a sales representative', description: 'Retrieves a sales representative by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales representatives by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.sales_representatives > (method) retrieve', qualified: 'client.qbd.salesRepresentatives.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; entity: { id: string; fullName: string; }; initial: string; isActive: boolean; objectType: 'qbd_sales_representative'; revisionNumber: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.salesRepresentatives.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; entity: object; initial: string; isActive: boolean; objectType: 'qbd_sales_representative'; revisionNumber: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/sales-representatives/{id}`\n\nRetrieves a sales representative by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales representatives by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales representative to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; entity: { id: string; fullName: string; }; initial: string; isActive: boolean; objectType: 'qbd_sales_representative'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `entity: { id: string; fullName: string; }`\n - `initial: string`\n - `isActive: boolean`\n - `objectType: 'qbd_sales_representative'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesRepresentative = await conductor.qbd.salesRepresentatives.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesRepresentative);\n```", perLanguage: { typescript: { method: 'client.qbd.salesRepresentatives.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesRepresentative = await conductor.qbd.salesRepresentatives.retrieve(\n '80000001-1234567890',\n { conductorEndUserId: 'end_usr_1234567abcdefg' },\n);\n\nconsole.log(salesRepresentative.id);", }, python: { method: 'qbd.sales_representatives.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_representative = conductor.qbd.sales_representatives.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_representative.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-representatives/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/sales-representatives/{id}', httpMethod: 'post', summary: 'Update a sales representative', description: 'Updates an existing sales representative.', stainlessPath: '(resource) qbd.sales_representatives > (method) update', qualified: 'client.qbd.salesRepresentatives.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'entityId?: string;', 'initial?: string;', 'isActive?: boolean;', ], response: "{ id: string; createdAt: string; entity: { id: string; fullName: string; }; initial: string; isActive: boolean; objectType: 'qbd_sales_representative'; revisionNumber: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.salesRepresentatives.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, entityId?: string, initial?: string, isActive?: boolean): { id: string; createdAt: string; entity: object; initial: string; isActive: boolean; objectType: 'qbd_sales_representative'; revisionNumber: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/sales-representatives/{id}`\n\nUpdates an existing sales representative.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales representative to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the sales representative object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `entityId?: string`\n The sales representative's corresponding person entity in QuickBooks, stored as either an employee, vendor, or other-name entry.\n\n- `initial?: string`\n The initials of this sales representative's name.\n\nMaximum length: 5 characters.\n\n- `isActive?: boolean`\n Indicates whether this sales representative is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n### Returns\n\n- `{ id: string; createdAt: string; entity: { id: string; fullName: string; }; initial: string; isActive: boolean; objectType: 'qbd_sales_representative'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `entity: { id: string; fullName: string; }`\n - `initial: string`\n - `isActive: boolean`\n - `objectType: 'qbd_sales_representative'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesRepresentative = await conductor.qbd.salesRepresentatives.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesRepresentative);\n```", perLanguage: { typescript: { method: 'client.qbd.salesRepresentatives.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesRepresentative = await conductor.qbd.salesRepresentatives.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesRepresentative.id);", }, python: { method: 'qbd.sales_representatives.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_representative = conductor.qbd.sales_representatives.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_representative.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-representatives/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "entityId": "80000001-1234567890",\n "initial": "JD",\n "isActive": true\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/sales-tax-codes', httpMethod: 'post', summary: 'Create a sales-tax code', description: 'Creates a new sales-tax code.', stainlessPath: '(resource) qbd.sales_tax_codes > (method) create', qualified: 'client.qbd.salesTaxCodes.create', params: [ 'isTaxable: boolean;', 'name: string;', 'Conductor-End-User-Id: string;', 'description?: string;', 'isActive?: boolean;', 'salesTaxItemId?: string;', ], response: "{ id: string; createdAt: string; description: string; isActive: boolean; isTaxable: boolean; name: string; objectType: 'qbd_sales_tax_code'; revisionNumber: string; salesTaxItem: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.salesTaxCodes.create(isTaxable: boolean, name: string, Conductor-End-User-Id: string, description?: string, isActive?: boolean, salesTaxItemId?: string): { id: string; createdAt: string; description: string; isActive: boolean; isTaxable: boolean; name: string; objectType: 'qbd_sales_tax_code'; revisionNumber: string; salesTaxItem: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/sales-tax-codes`\n\nCreates a new sales-tax code.\n\n### Parameters\n\n- `isTaxable: boolean`\n Indicates whether this sales-tax code is tracking taxable sales. This field cannot be modified once the sales-tax code has been used in a transaction.\n\n- `name: string`\n The case-insensitive unique name of this sales-tax code, unique across all sales-tax codes. This short name will appear on sales forms to identify the tax status of an item.\n\n**NOTE**: Sales-tax codes do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 3 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `description?: string`\n A description of this sales-tax code.\n\n- `isActive?: boolean`\n Indicates whether this sales-tax code is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this sales-tax code's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\n### Returns\n\n- `{ id: string; createdAt: string; description: string; isActive: boolean; isTaxable: boolean; name: string; objectType: 'qbd_sales_tax_code'; revisionNumber: string; salesTaxItem: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `description: string`\n - `isActive: boolean`\n - `isTaxable: boolean`\n - `name: string`\n - `objectType: 'qbd_sales_tax_code'`\n - `revisionNumber: string`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxCode = await conductor.qbd.salesTaxCodes.create({\n isTaxable: true,\n name: 'Tax',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxCode);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxCodes.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxCode = await conductor.qbd.salesTaxCodes.create({\n isTaxable: true,\n name: 'Tax',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxCode.id);", }, python: { method: 'qbd.sales_tax_codes.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_code = conductor.qbd.sales_tax_codes.create(\n is_taxable=True,\n name="Tax",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_code.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-codes \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "isTaxable": true,\n "name": "Tax",\n "description": "Standard tax rate for California",\n "isActive": true,\n "salesTaxItemId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/sales-tax-codes', httpMethod: 'get', summary: 'List all sales-tax codes', description: 'Returns a list of sales-tax codes.\n\n**NOTE:** QuickBooks Desktop does not support pagination for sales-tax codes; hence, there is no `cursor` parameter. Users typically have few sales-tax codes.', stainlessPath: '(resource) qbd.sales_tax_codes > (method) list', qualified: 'client.qbd.salesTaxCodes.list', params: [ 'Conductor-End-User-Id: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; createdAt: string; description: string; isActive: boolean; isTaxable: boolean; name: string; objectType: 'qbd_sales_tax_code'; revisionNumber: string; salesTaxItem: object; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.salesTaxCodes.list(Conductor-End-User-Id: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: sales_tax_code[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/sales-tax-codes`\n\nReturns a list of sales-tax codes.\n\n**NOTE:** QuickBooks Desktop does not support pagination for sales-tax codes; hence, there is no `cursor` parameter. Users typically have few sales-tax codes.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `ids?: string[]`\n Filter for specific sales-tax codes by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for sales-tax codes. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all sales-tax codes without limit, unlike paginated endpoints which default to 150 records. This is acceptable because sales-tax codes typically have low record counts.\n\n- `nameContains?: string`\n Filter for sales-tax codes whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for sales-tax codes whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for sales-tax codes whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific sales-tax codes by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a sales-tax code.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for sales-tax codes whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for sales-tax codes whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for sales-tax codes that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for sales-tax codes updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for sales-tax codes updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; description: string; isActive: boolean; isTaxable: boolean; name: string; objectType: 'qbd_sales_tax_code'; revisionNumber: string; salesTaxItem: object; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; createdAt: string; description: string; isActive: boolean; isTaxable: boolean; name: string; objectType: 'qbd_sales_tax_code'; revisionNumber: string; salesTaxItem: { id: string; fullName: string; }; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxCodes = await conductor.qbd.salesTaxCodes.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesTaxCodes);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxCodes.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxCodes = await conductor.qbd.salesTaxCodes.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxCodes.data);", }, python: { method: 'qbd.sales_tax_codes.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_codes = conductor.qbd.sales_tax_codes.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_codes.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-codes \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/sales-tax-codes/{id}', httpMethod: 'get', summary: 'Retrieve a sales-tax code', description: 'Retrieves a sales-tax code by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales-tax codes by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.sales_tax_codes > (method) retrieve', qualified: 'client.qbd.salesTaxCodes.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; description: string; isActive: boolean; isTaxable: boolean; name: string; objectType: 'qbd_sales_tax_code'; revisionNumber: string; salesTaxItem: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.salesTaxCodes.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; description: string; isActive: boolean; isTaxable: boolean; name: string; objectType: 'qbd_sales_tax_code'; revisionNumber: string; salesTaxItem: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/sales-tax-codes/{id}`\n\nRetrieves a sales-tax code by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales-tax codes by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales-tax code to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; description: string; isActive: boolean; isTaxable: boolean; name: string; objectType: 'qbd_sales_tax_code'; revisionNumber: string; salesTaxItem: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `description: string`\n - `isActive: boolean`\n - `isTaxable: boolean`\n - `name: string`\n - `objectType: 'qbd_sales_tax_code'`\n - `revisionNumber: string`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxCode = await conductor.qbd.salesTaxCodes.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesTaxCode);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxCodes.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxCode = await conductor.qbd.salesTaxCodes.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxCode.id);", }, python: { method: 'qbd.sales_tax_codes.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_code = conductor.qbd.sales_tax_codes.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_code.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-codes/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/sales-tax-codes/{id}', httpMethod: 'post', summary: 'Update a sales-tax code', description: 'Updates a sales-tax code’s name, activity status, or linked tax items. Once a code has been used you can’t flip it between taxable and non-taxable, and the built-in TAX/NON codes keep their original taxable setting, so plan new codes if you need a different tax status.', stainlessPath: '(resource) qbd.sales_tax_codes > (method) update', qualified: 'client.qbd.salesTaxCodes.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'description?: string;', 'isActive?: boolean;', 'isTaxable?: boolean;', 'name?: string;', 'salesTaxItemId?: string;', ], response: "{ id: string; createdAt: string; description: string; isActive: boolean; isTaxable: boolean; name: string; objectType: 'qbd_sales_tax_code'; revisionNumber: string; salesTaxItem: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.salesTaxCodes.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, description?: string, isActive?: boolean, isTaxable?: boolean, name?: string, salesTaxItemId?: string): { id: string; createdAt: string; description: string; isActive: boolean; isTaxable: boolean; name: string; objectType: 'qbd_sales_tax_code'; revisionNumber: string; salesTaxItem: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/sales-tax-codes/{id}`\n\nUpdates a sales-tax code’s name, activity status, or linked tax items. Once a code has been used you can’t flip it between taxable and non-taxable, and the built-in TAX/NON codes keep their original taxable setting, so plan new codes if you need a different tax status.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales-tax code to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the sales-tax code object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `description?: string`\n A description of this sales-tax code.\n\n- `isActive?: boolean`\n Indicates whether this sales-tax code is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `isTaxable?: boolean`\n Indicates whether this sales-tax code is tracking taxable sales. This field cannot be modified once the sales-tax code has been used in a transaction.\n\n- `name?: string`\n The case-insensitive unique name of this sales-tax code, unique across all sales-tax codes. This short name will appear on sales forms to identify the tax status of an item.\n\n**NOTE**: Sales-tax codes do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 3 characters.\n\n- `salesTaxItemId?: string`\n The sales-tax item used to calculate the actual tax amount for this sales-tax code's transactions by applying a specific tax rate collected for a single tax agency. Unlike `salesTaxCode`, which only indicates general taxability, this field drives the actual tax calculation and reporting.\n\n### Returns\n\n- `{ id: string; createdAt: string; description: string; isActive: boolean; isTaxable: boolean; name: string; objectType: 'qbd_sales_tax_code'; revisionNumber: string; salesTaxItem: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `description: string`\n - `isActive: boolean`\n - `isTaxable: boolean`\n - `name: string`\n - `objectType: 'qbd_sales_tax_code'`\n - `revisionNumber: string`\n - `salesTaxItem: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxCode = await conductor.qbd.salesTaxCodes.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesTaxCode);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxCodes.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxCode = await conductor.qbd.salesTaxCodes.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxCode.id);", }, python: { method: 'qbd.sales_tax_codes.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_code = conductor.qbd.sales_tax_codes.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_code.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-codes/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "description": "Standard tax rate for California",\n "isActive": true,\n "isTaxable": true,\n "name": "Tax",\n "salesTaxItemId": "80000001-1234567890"\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/sales-tax-group-items', httpMethod: 'post', summary: 'Create a sales-tax group item', description: 'Creates a new sales-tax group item.', stainlessPath: '(resource) qbd.sales_tax_group_items > (method) create', qualified: 'client.qbd.salesTaxGroupItems.create', params: [ 'name: string;', 'salesTaxItemIds: string[];', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'description?: string;', 'externalId?: string;', 'isActive?: boolean;', ], response: "{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_group_item'; revisionNumber: string; salesTaxItems: { id: string; fullName: string; }[]; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.salesTaxGroupItems.create(name: string, salesTaxItemIds: string[], Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, description?: string, externalId?: string, isActive?: boolean): { id: string; barcode: string; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_group_item'; revisionNumber: string; salesTaxItems: object[]; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/sales-tax-group-items`\n\nCreates a new sales-tax group item.\n\n### Parameters\n\n- `name: string`\n The case-insensitive unique name of this sales-tax group item, unique across all sales-tax group items.\n\n**NOTE**: Sales-tax group items do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `salesTaxItemIds: string[]`\n The sales-tax items that make up this sales-tax group item. QuickBooks Desktop applies these sales-tax items together as one tax selection while tracking each sales tax separately.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The sales-tax group item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `description?: string`\n The sales-tax group item's description that will appear on sales forms that include this item.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isActive?: boolean`\n Indicates whether this sales-tax group item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n### Returns\n\n- `{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_group_item'; revisionNumber: string; salesTaxItems: { id: string; fullName: string; }[]; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_sales_tax_group_item'`\n - `revisionNumber: string`\n - `salesTaxItems: { id: string; fullName: string; }[]`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxGroupItem = await conductor.qbd.salesTaxGroupItems.create({\n name: 'Standard Tax Group',\n salesTaxItemIds: ['80000001-1234567890'],\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxGroupItem);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxGroupItems.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxGroupItem = await conductor.qbd.salesTaxGroupItems.create({\n name: 'Standard Tax Group',\n salesTaxItemIds: ['80000001-1234567890'],\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxGroupItem.id);", }, python: { method: 'qbd.sales_tax_group_items.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_group_item = conductor.qbd.sales_tax_group_items.create(\n name="Standard Tax Group",\n sales_tax_item_ids=["80000001-1234567890"],\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_group_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-group-items \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Standard Tax Group",\n "salesTaxItemIds": [\n "80000001-1234567890"\n ],\n "description": "Combined city, county, and state sales tax",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isActive": true\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/sales-tax-group-items', httpMethod: 'get', summary: 'List all sales-tax group items', description: 'Returns a list of sales-tax group items. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.sales_tax_group_items > (method) list', qualified: 'client.qbd.salesTaxGroupItems.list', params: [ 'Conductor-End-User-Id: string;', 'cursor?: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_group_item'; revisionNumber: string; salesTaxItems: { id: string; fullName: string; }[]; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.salesTaxGroupItems.list(Conductor-End-User-Id: string, cursor?: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { id: string; barcode: string; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_group_item'; revisionNumber: string; salesTaxItems: object[]; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/sales-tax-group-items`\n\nReturns a list of sales-tax group items. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific sales-tax group items by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for sales-tax group items whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for sales-tax group items whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for sales-tax group items whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific sales-tax group items by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a sales-tax group item.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for sales-tax group items whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for sales-tax group items whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for sales-tax group items that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for sales-tax group items updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for sales-tax group items updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_group_item'; revisionNumber: string; salesTaxItems: { id: string; fullName: string; }[]; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_sales_tax_group_item'`\n - `revisionNumber: string`\n - `salesTaxItems: { id: string; fullName: string; }[]`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const salesTaxGroupItem of conductor.qbd.salesTaxGroupItems.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(salesTaxGroupItem);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxGroupItems.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const salesTaxGroupItem of conductor.qbd.salesTaxGroupItems.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(salesTaxGroupItem.id);\n}", }, python: { method: 'qbd.sales_tax_group_items.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.sales_tax_group_items.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-group-items \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/sales-tax-group-items/{id}', httpMethod: 'get', summary: 'Retrieve a sales-tax group item', description: 'Retrieves a sales-tax group item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales-tax group items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.sales_tax_group_items > (method) retrieve', qualified: 'client.qbd.salesTaxGroupItems.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_group_item'; revisionNumber: string; salesTaxItems: { id: string; fullName: string; }[]; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.salesTaxGroupItems.retrieve(id: string, Conductor-End-User-Id: string): { id: string; barcode: string; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_group_item'; revisionNumber: string; salesTaxItems: object[]; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/sales-tax-group-items/{id}`\n\nRetrieves a sales-tax group item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales-tax group items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales-tax group item to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_group_item'; revisionNumber: string; salesTaxItems: { id: string; fullName: string; }[]; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_sales_tax_group_item'`\n - `revisionNumber: string`\n - `salesTaxItems: { id: string; fullName: string; }[]`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxGroupItem = await conductor.qbd.salesTaxGroupItems.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesTaxGroupItem);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxGroupItems.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxGroupItem = await conductor.qbd.salesTaxGroupItems.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxGroupItem.id);", }, python: { method: 'qbd.sales_tax_group_items.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_group_item = conductor.qbd.sales_tax_group_items.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_group_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-group-items/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/sales-tax-group-items/{id}', httpMethod: 'post', summary: 'Update a sales-tax group item', description: 'Updates an existing sales-tax group item.', stainlessPath: '(resource) qbd.sales_tax_group_items > (method) update', qualified: 'client.qbd.salesTaxGroupItems.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'description?: string;', 'isActive?: boolean;', 'name?: string;', 'salesTaxItemIds?: string[];', ], response: "{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_group_item'; revisionNumber: string; salesTaxItems: { id: string; fullName: string; }[]; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.salesTaxGroupItems.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, description?: string, isActive?: boolean, name?: string, salesTaxItemIds?: string[]): { id: string; barcode: string; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_group_item'; revisionNumber: string; salesTaxItems: object[]; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/sales-tax-group-items/{id}`\n\nUpdates an existing sales-tax group item.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales-tax group item to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the sales-tax group item object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The sales-tax group item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `description?: string`\n The sales-tax group item's description that will appear on sales forms that include this item.\n\n- `isActive?: boolean`\n Indicates whether this sales-tax group item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `name?: string`\n The case-insensitive unique name of this sales-tax group item, unique across all sales-tax group items.\n\n**NOTE**: Sales-tax group items do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `salesTaxItemIds?: string[]`\n The sales-tax items that make up this sales-tax group item. QuickBooks Desktop applies these sales-tax items together as one tax selection while tracking each sales tax separately.\n\n### Returns\n\n- `{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_group_item'; revisionNumber: string; salesTaxItems: { id: string; fullName: string; }[]; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_sales_tax_group_item'`\n - `revisionNumber: string`\n - `salesTaxItems: { id: string; fullName: string; }[]`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxGroupItem = await conductor.qbd.salesTaxGroupItems.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesTaxGroupItem);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxGroupItems.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxGroupItem = await conductor.qbd.salesTaxGroupItems.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxGroupItem.id);", }, python: { method: 'qbd.sales_tax_group_items.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_group_item = conductor.qbd.sales_tax_group_items.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_group_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-group-items/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "description": "Combined city, county, and state sales tax",\n "isActive": true,\n "name": "Standard Tax Group",\n "salesTaxItemIds": [\n "80000001-1234567890"\n ]\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/sales-tax-items', httpMethod: 'post', summary: 'Create a sales-tax item', description: 'Creates a new sales-tax item.', stainlessPath: '(resource) qbd.sales_tax_items > (method) create', qualified: 'client.qbd.salesTaxItems.create', params: [ 'name: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'classId?: string;', 'description?: string;', 'externalId?: string;', 'isActive?: boolean;', 'salesTaxReturnLineId?: string;', 'taxRate?: string;', 'taxVendorId?: string;', ], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_item'; revisionNumber: string; salesTaxReturnLine: { id: string; fullName: string; }; taxRate: string; taxVendor: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.salesTaxItems.create(name: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, classId?: string, description?: string, externalId?: string, isActive?: boolean, salesTaxReturnLineId?: string, taxRate?: string, taxVendorId?: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_item'; revisionNumber: string; salesTaxReturnLine: object; taxRate: string; taxVendor: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/sales-tax-items`\n\nCreates a new sales-tax item.\n\n### Parameters\n\n- `name: string`\n The case-insensitive unique name of this sales-tax item, unique across all sales-tax items.\n\n**NOTE**: Sales-tax items do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The sales-tax item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `classId?: string`\n The sales-tax item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `description?: string`\n The sales-tax item's description that will appear on sales forms that include this item.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isActive?: boolean`\n Indicates whether this sales-tax item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `salesTaxReturnLineId?: string`\n The specific line on the sales tax return form where the tax collected using this sales-tax item should be reported.\n\n- `taxRate?: string`\n The tax rate defined by this sales-tax item, represented as a decimal string. For example, \"7.5\" represents a 7.5% tax rate. This rate determines the amount of sales tax applied when this item is used in transactions. If a non-zero `taxRate` is specified, then the `taxVendor` field is required.\n\n- `taxVendorId?: string`\n The tax agency (vendor) to whom collected sales taxes are owed for this sales-tax item. This field refers to a vendor in QuickBooks that represents the tax authority. If a non-zero `taxRate` is specified, then `taxVendor` is required.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_item'; revisionNumber: string; salesTaxReturnLine: { id: string; fullName: string; }; taxRate: string; taxVendor: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_sales_tax_item'`\n - `revisionNumber: string`\n - `salesTaxReturnLine: { id: string; fullName: string; }`\n - `taxRate: string`\n - `taxVendor: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxItem = await conductor.qbd.salesTaxItems.create({ name: 'Standard Tax', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesTaxItem);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxItems.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxItem = await conductor.qbd.salesTaxItems.create({\n name: 'Standard Tax',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxItem.id);", }, python: { method: 'qbd.sales_tax_items.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_item = conductor.qbd.sales_tax_items.create(\n name="Standard Tax",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-items \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Standard Tax",\n "classId": "80000001-1234567890",\n "description": "Standard rate sales tax for California",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isActive": true,\n "salesTaxReturnLineId": "80000001-1234567890",\n "taxRate": "7.5",\n "taxVendorId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/sales-tax-items', httpMethod: 'get', summary: 'List all sales-tax items', description: 'Returns a list of sales-tax items. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.sales_tax_items > (method) list', qualified: 'client.qbd.salesTaxItems.list', params: [ 'Conductor-End-User-Id: string;', 'classIds?: string[];', 'cursor?: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_item'; revisionNumber: string; salesTaxReturnLine: { id: string; fullName: string; }; taxRate: string; taxVendor: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.salesTaxItems.list(Conductor-End-User-Id: string, classIds?: string[], cursor?: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_item'; revisionNumber: string; salesTaxReturnLine: object; taxRate: string; taxVendor: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/sales-tax-items`\n\nReturns a list of sales-tax items. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classIds?: string[]`\n Filter for sales-tax items of these classes. A class is a way end-users can categorize sales-tax items in QuickBooks.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific sales-tax items by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for sales-tax items whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for sales-tax items whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for sales-tax items whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific sales-tax items by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a sales-tax item.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for sales-tax items whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for sales-tax items whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for sales-tax items that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for sales-tax items updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for sales-tax items updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_item'; revisionNumber: string; salesTaxReturnLine: { id: string; fullName: string; }; taxRate: string; taxVendor: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_sales_tax_item'`\n - `revisionNumber: string`\n - `salesTaxReturnLine: { id: string; fullName: string; }`\n - `taxRate: string`\n - `taxVendor: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const salesTaxItem of conductor.qbd.salesTaxItems.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(salesTaxItem);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxItems.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const salesTaxItem of conductor.qbd.salesTaxItems.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(salesTaxItem.id);\n}", }, python: { method: 'qbd.sales_tax_items.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.sales_tax_items.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-items \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/sales-tax-items/{id}', httpMethod: 'get', summary: 'Retrieve a sales-tax item', description: 'Retrieves a sales-tax item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales-tax items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.sales_tax_items > (method) retrieve', qualified: 'client.qbd.salesTaxItems.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_item'; revisionNumber: string; salesTaxReturnLine: { id: string; fullName: string; }; taxRate: string; taxVendor: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.salesTaxItems.retrieve(id: string, Conductor-End-User-Id: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_item'; revisionNumber: string; salesTaxReturnLine: object; taxRate: string; taxVendor: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/sales-tax-items/{id}`\n\nRetrieves a sales-tax item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales-tax items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales-tax item to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_item'; revisionNumber: string; salesTaxReturnLine: { id: string; fullName: string; }; taxRate: string; taxVendor: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_sales_tax_item'`\n - `revisionNumber: string`\n - `salesTaxReturnLine: { id: string; fullName: string; }`\n - `taxRate: string`\n - `taxVendor: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxItem = await conductor.qbd.salesTaxItems.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesTaxItem);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxItems.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxItem = await conductor.qbd.salesTaxItems.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxItem.id);", }, python: { method: 'qbd.sales_tax_items.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_item = conductor.qbd.sales_tax_items.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-items/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/sales-tax-items/{id}', httpMethod: 'post', summary: 'Update a sales-tax item', description: 'Updates an existing sales-tax item.', stainlessPath: '(resource) qbd.sales_tax_items > (method) update', qualified: 'client.qbd.salesTaxItems.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'classId?: string;', 'description?: string;', 'isActive?: boolean;', 'name?: string;', 'salesTaxReturnLineId?: string;', 'taxRate?: string;', 'taxVendorId?: string;', ], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_item'; revisionNumber: string; salesTaxReturnLine: { id: string; fullName: string; }; taxRate: string; taxVendor: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.salesTaxItems.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, classId?: string, description?: string, isActive?: boolean, name?: string, salesTaxReturnLineId?: string, taxRate?: string, taxVendorId?: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_item'; revisionNumber: string; salesTaxReturnLine: object; taxRate: string; taxVendor: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/sales-tax-items/{id}`\n\nUpdates an existing sales-tax item.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales-tax item to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the sales-tax item object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The sales-tax item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `classId?: string`\n The sales-tax item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `description?: string`\n The sales-tax item's description that will appear on sales forms that include this item.\n\n- `isActive?: boolean`\n Indicates whether this sales-tax item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `name?: string`\n The case-insensitive unique name of this sales-tax item, unique across all sales-tax items.\n\n**NOTE**: Sales-tax items do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `salesTaxReturnLineId?: string`\n The specific line on the sales tax return form where the tax collected using this sales-tax item should be reported.\n\n- `taxRate?: string`\n The tax rate defined by this sales-tax item, represented as a decimal string. For example, \"7.5\" represents a 7.5% tax rate. This rate determines the amount of sales tax applied when this item is used in transactions. If a non-zero `taxRate` is specified, then the `taxVendor` field is required.\n\n- `taxVendorId?: string`\n The tax agency (vendor) to whom collected sales taxes are owed for this sales-tax item. This field refers to a vendor in QuickBooks that represents the tax authority. If a non-zero `taxRate` is specified, then `taxVendor` is required.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_sales_tax_item'; revisionNumber: string; salesTaxReturnLine: { id: string; fullName: string; }; taxRate: string; taxVendor: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_sales_tax_item'`\n - `revisionNumber: string`\n - `salesTaxReturnLine: { id: string; fullName: string; }`\n - `taxRate: string`\n - `taxVendor: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxItem = await conductor.qbd.salesTaxItems.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesTaxItem);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxItems.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxItem = await conductor.qbd.salesTaxItems.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxItem.id);", }, python: { method: 'qbd.sales_tax_items.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_item = conductor.qbd.sales_tax_items.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-items/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "classId": "80000001-1234567890",\n "description": "Standard rate sales tax for California",\n "isActive": true,\n "name": "Standard Tax",\n "salesTaxReturnLineId": "80000001-1234567890",\n "taxRate": "7.5",\n "taxVendorId": "80000001-1234567890"\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/sales-tax-payment-checks', httpMethod: 'post', summary: 'Create a sales-tax payment check', description: 'Creates a new sales-tax payment check.', stainlessPath: '(resource) qbd.sales_tax_payment_checks > (method) create', qualified: 'client.qbd.salesTaxPaymentChecks.create', params: [ 'bankAccountId: string;', 'lines: { amount: string; salesTaxItemId?: string; }[];', 'transactionDate: string;', 'vendorId: string;', 'Conductor-End-User-Id: string;', 'address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'externalId?: string;', 'isQueuedForPrint?: boolean;', 'memo?: string;', 'refNumber?: string;', ], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; bankAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; isQueuedForPrint: boolean; lines: { id: string; amount: string; objectType: 'qbd_sales_tax_payment_check_line'; salesTaxItem: { id: string; fullName: string; }; taxAmount: string; }[]; memo: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }", markdown: "## create\n\n`conductor.qbd.salesTaxPaymentChecks.create(bankAccountId: string, lines: { amount: string; salesTaxItemId?: string; }[], transactionDate: string, vendorId: string, Conductor-End-User-Id: string, address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, externalId?: string, isQueuedForPrint?: boolean, memo?: string, refNumber?: string): { id: string; address: object; amount: string; bankAccount: object; createdAt: string; customFields: object[]; externalId: string; isQueuedForPrint: boolean; lines: object[]; memo: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**post** `/quickbooks-desktop/sales-tax-payment-checks`\n\nCreates a new sales-tax payment check.\n\n### Parameters\n\n- `bankAccountId: string`\n The bank account from which the funds are being drawn for this sales-tax payment check; e.g., Checking or Savings. This sales-tax payment check will decrease the balance of this account.\n\n- `lines: { amount: string; salesTaxItemId?: string; }[]`\n The payment lines in this sales-tax payment check, each recording an amount paid toward a sales-tax item.\n\n- `transactionDate: string`\n The date of this sales-tax payment check, in ISO 8601 format (YYYY-MM-DD).\n\n- `vendorId: string`\n The sales-tax agency, represented as a QuickBooks vendor, receiving this sales-tax payment check. This must match the tax vendor associated with the sales-tax items in the payment lines.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The address that is printed on the sales-tax payment check.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this sales-tax payment check is included in the queue of documents for QuickBooks to print.\n\n- `memo?: string`\n A memo or note for this sales-tax payment check.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this sales-tax payment check, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\n**IMPORTANT**: For checks, this field is the check number.\n\nMaximum length: 11 characters.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; bankAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; isQueuedForPrint: boolean; lines: { id: string; amount: string; objectType: 'qbd_sales_tax_payment_check_line'; salesTaxItem: { id: string; fullName: string; }; taxAmount: string; }[]; memo: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `amount: string`\n - `bankAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `isQueuedForPrint: boolean`\n - `lines: { id: string; amount: string; objectType: 'qbd_sales_tax_payment_check_line'; salesTaxItem: { id: string; fullName: string; }; taxAmount: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_sales_tax_payment_check'`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxPaymentCheck = await conductor.qbd.salesTaxPaymentChecks.create({\n bankAccountId: '80000001-1234567890',\n lines: [{ amount: '1000.00' }],\n transactionDate: '2024-10-01',\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxPaymentCheck);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxPaymentChecks.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxPaymentCheck = await conductor.qbd.salesTaxPaymentChecks.create({\n bankAccountId: '80000001-1234567890',\n lines: [{ amount: '1000.00' }],\n transactionDate: '2024-10-01',\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxPaymentCheck.id);", }, python: { method: 'qbd.sales_tax_payment_checks.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_payment_check = conductor.qbd.sales_tax_payment_checks.create(\n bank_account_id="80000001-1234567890",\n lines=[{\n "amount": "1000.00"\n }],\n transaction_date=date.fromisoformat("2024-10-01"),\n vendor_id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_payment_check.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-payment-checks \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "bankAccountId": "80000001-1234567890",\n "lines": [\n {\n "amount": "1000.00"\n }\n ],\n "transactionDate": "2024-10-01",\n "vendorId": "80000001-1234567890",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isQueuedForPrint": true,\n "memo": "Sales tax payment for Q3 2024",\n "refNumber": "TAXPMT-1234"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/sales-tax-payment-checks', httpMethod: 'get', summary: 'List all sales-tax payment checks', description: 'Returns a list of sales-tax payment checks. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.sales_tax_payment_checks > (method) list', qualified: 'client.qbd.salesTaxPaymentChecks.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'cursor?: string;', 'ids?: string[];', 'includeLineItems?: boolean;', 'itemIds?: string[];', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', 'vendorIds?: string[];', ], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; bankAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; isQueuedForPrint: boolean; lines: { id: string; amount: string; objectType: 'qbd_sales_tax_payment_check_line'; salesTaxItem: { id: string; fullName: string; }; taxAmount: string; }[]; memo: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }", markdown: "## list\n\n`conductor.qbd.salesTaxPaymentChecks.list(Conductor-End-User-Id: string, accountIds?: string[], cursor?: string, ids?: string[], includeLineItems?: boolean, itemIds?: string[], limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string, vendorIds?: string[]): { id: string; address: object; amount: string; bankAccount: object; createdAt: string; customFields: object[]; externalId: string; isQueuedForPrint: boolean; lines: object[]; memo: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**get** `/quickbooks-desktop/sales-tax-payment-checks`\n\nReturns a list of sales-tax payment checks. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for sales-tax payment checks associated with these accounts.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific sales-tax payment checks by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `itemIds?: string[]`\n Filter for sales-tax payment checks containing these items.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for sales-tax payment checks whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for sales-tax payment checks whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for sales-tax payment checks whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific sales-tax payment checks by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for sales-tax payment checks whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for sales-tax payment checks whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for sales-tax payment checks whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for sales-tax payment checks whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for sales-tax payment checks updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for sales-tax payment checks updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `vendorIds?: string[]`\n Filter for sales-tax payment checks paid to these vendors. These are the sales-tax agencies, represented as QuickBooks vendors, paid by these checks.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; bankAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; isQueuedForPrint: boolean; lines: { id: string; amount: string; objectType: 'qbd_sales_tax_payment_check_line'; salesTaxItem: { id: string; fullName: string; }; taxAmount: string; }[]; memo: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `amount: string`\n - `bankAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `isQueuedForPrint: boolean`\n - `lines: { id: string; amount: string; objectType: 'qbd_sales_tax_payment_check_line'; salesTaxItem: { id: string; fullName: string; }; taxAmount: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_sales_tax_payment_check'`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const salesTaxPaymentCheck of conductor.qbd.salesTaxPaymentChecks.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(salesTaxPaymentCheck);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxPaymentChecks.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const salesTaxPaymentCheck of conductor.qbd.salesTaxPaymentChecks.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(salesTaxPaymentCheck.id);\n}", }, python: { method: 'qbd.sales_tax_payment_checks.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.sales_tax_payment_checks.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-payment-checks \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/sales-tax-payment-checks/{id}', httpMethod: 'get', summary: 'Retrieve a sales-tax payment check', description: 'Retrieves a sales-tax payment check by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales-tax payment checks by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.sales_tax_payment_checks > (method) retrieve', qualified: 'client.qbd.salesTaxPaymentChecks.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; bankAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; isQueuedForPrint: boolean; lines: { id: string; amount: string; objectType: 'qbd_sales_tax_payment_check_line'; salesTaxItem: { id: string; fullName: string; }; taxAmount: string; }[]; memo: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }", markdown: "## retrieve\n\n`conductor.qbd.salesTaxPaymentChecks.retrieve(id: string, Conductor-End-User-Id: string): { id: string; address: object; amount: string; bankAccount: object; createdAt: string; customFields: object[]; externalId: string; isQueuedForPrint: boolean; lines: object[]; memo: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**get** `/quickbooks-desktop/sales-tax-payment-checks/{id}`\n\nRetrieves a sales-tax payment check by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific sales-tax payment checks by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales-tax payment check to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; bankAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; isQueuedForPrint: boolean; lines: { id: string; amount: string; objectType: 'qbd_sales_tax_payment_check_line'; salesTaxItem: { id: string; fullName: string; }; taxAmount: string; }[]; memo: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `amount: string`\n - `bankAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `isQueuedForPrint: boolean`\n - `lines: { id: string; amount: string; objectType: 'qbd_sales_tax_payment_check_line'; salesTaxItem: { id: string; fullName: string; }; taxAmount: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_sales_tax_payment_check'`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxPaymentCheck = await conductor.qbd.salesTaxPaymentChecks.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesTaxPaymentCheck);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxPaymentChecks.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxPaymentCheck = await conductor.qbd.salesTaxPaymentChecks.retrieve(\n '123ABC-1234567890',\n { conductorEndUserId: 'end_usr_1234567abcdefg' },\n);\n\nconsole.log(salesTaxPaymentCheck.id);", }, python: { method: 'qbd.sales_tax_payment_checks.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_payment_check = conductor.qbd.sales_tax_payment_checks.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_payment_check.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-payment-checks/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/sales-tax-payment-checks/{id}', httpMethod: 'post', summary: 'Update a sales-tax payment check', description: 'Updates an existing sales-tax payment check.', stainlessPath: '(resource) qbd.sales_tax_payment_checks > (method) update', qualified: 'client.qbd.salesTaxPaymentChecks.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'bankAccountId?: string;', 'isQueuedForPrint?: boolean;', 'memo?: string;', 'refNumber?: string;', 'transactionDate?: string;', ], response: "{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; bankAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; isQueuedForPrint: boolean; lines: { id: string; amount: string; objectType: 'qbd_sales_tax_payment_check_line'; salesTaxItem: { id: string; fullName: string; }; taxAmount: string; }[]; memo: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }", markdown: "## update\n\n`conductor.qbd.salesTaxPaymentChecks.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, bankAccountId?: string, isQueuedForPrint?: boolean, memo?: string, refNumber?: string, transactionDate?: string): { id: string; address: object; amount: string; bankAccount: object; createdAt: string; customFields: object[]; externalId: string; isQueuedForPrint: boolean; lines: object[]; memo: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**post** `/quickbooks-desktop/sales-tax-payment-checks/{id}`\n\nUpdates an existing sales-tax payment check.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales-tax payment check to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the sales-tax payment check object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `address?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The address that is printed on the sales-tax payment check.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `bankAccountId?: string`\n The bank account from which the funds are being drawn for this sales-tax payment check; e.g., Checking or Savings. This sales-tax payment check will decrease the balance of this account.\n\n- `isQueuedForPrint?: boolean`\n Indicates whether this sales-tax payment check is included in the queue of documents for QuickBooks to print.\n\n- `memo?: string`\n A memo or note for this sales-tax payment check.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this sales-tax payment check, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: For checks, this field is the check number.\n\nMaximum length: 11 characters.\n\n- `transactionDate?: string`\n The date of this sales-tax payment check, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; amount: string; bankAccount: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; isQueuedForPrint: boolean; lines: { id: string; amount: string; objectType: 'qbd_sales_tax_payment_check_line'; salesTaxItem: { id: string; fullName: string; }; taxAmount: string; }[]; memo: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; revisionNumber: string; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `address: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `amount: string`\n - `bankAccount: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `isQueuedForPrint: boolean`\n - `lines: { id: string; amount: string; objectType: 'qbd_sales_tax_payment_check_line'; salesTaxItem: { id: string; fullName: string; }; taxAmount: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_sales_tax_payment_check'`\n - `refNumber: string`\n - `revisionNumber: string`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxPaymentCheck = await conductor.qbd.salesTaxPaymentChecks.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesTaxPaymentCheck);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxPaymentChecks.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxPaymentCheck = await conductor.qbd.salesTaxPaymentChecks.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxPaymentCheck.id);", }, python: { method: 'qbd.sales_tax_payment_checks.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_payment_check = conductor.qbd.sales_tax_payment_checks.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_payment_check.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-payment-checks/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "bankAccountId": "80000001-1234567890",\n "isQueuedForPrint": true,\n "memo": "Sales tax payment for Q3 2024",\n "refNumber": "TAXPMT-1234",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/sales-tax-payment-checks/{id}/void', httpMethod: 'post', summary: 'Void a sales-tax payment check', description: 'Voids a sales-tax payment check by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the sales-tax payment check is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.sales_tax_payment_checks > (method) void', qualified: 'client.qbd.salesTaxPaymentChecks.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.salesTaxPaymentChecks.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/sales-tax-payment-checks/{id}/void`\n\nVoids a sales-tax payment check by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the sales-tax payment check is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales-tax payment check to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_sales_tax_payment_check'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.salesTaxPaymentChecks.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxPaymentChecks.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.salesTaxPaymentChecks.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.sales_tax_payment_checks.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.sales_tax_payment_checks.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-payment-checks/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/sales-tax-payment-checks/{id}', httpMethod: 'delete', summary: 'Delete a sales-tax payment check', description: 'Permanently deletes a sales-tax payment check. The deletion will fail if the sales-tax payment check is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.sales_tax_payment_checks > (method) delete', qualified: 'client.qbd.salesTaxPaymentChecks.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.salesTaxPaymentChecks.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/sales-tax-payment-checks/{id}`\n\nPermanently deletes a sales-tax payment check. The deletion will fail if the sales-tax payment check is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the sales-tax payment check to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_sales_tax_payment_check'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_sales_tax_payment_check'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst salesTaxPaymentCheck = await conductor.qbd.salesTaxPaymentChecks.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(salesTaxPaymentCheck);\n```", perLanguage: { typescript: { method: 'client.qbd.salesTaxPaymentChecks.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst salesTaxPaymentCheck = await conductor.qbd.salesTaxPaymentChecks.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(salesTaxPaymentCheck.id);", }, python: { method: 'qbd.sales_tax_payment_checks.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsales_tax_payment_check = conductor.qbd.sales_tax_payment_checks.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(sales_tax_payment_check.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/sales-tax-payment-checks/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/service-items', httpMethod: 'post', summary: 'Create a service item', description: 'Creates a new service item.', stainlessPath: '(resource) qbd.service_items > (method) create', qualified: 'client.qbd.serviceItems.create', params: [ 'name: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'classId?: string;', 'externalId?: string;', 'isActive?: boolean;', 'parentId?: string;', 'salesAndPurchaseDetails?: { expenseAccountId: string; incomeAccountId: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; };', 'salesOrPurchaseDetails?: { postingAccountId: string; description?: string; price?: string; pricePercentage?: string; };', 'salesTaxCodeId?: string;', 'unitOfMeasureSetId?: string;', ], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_service_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.serviceItems.create(name: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, classId?: string, externalId?: string, isActive?: boolean, parentId?: string, salesAndPurchaseDetails?: { expenseAccountId: string; incomeAccountId: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; }, salesOrPurchaseDetails?: { postingAccountId: string; description?: string; price?: string; pricePercentage?: string; }, salesTaxCodeId?: string, unitOfMeasureSetId?: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_service_item'; parent: object; revisionNumber: string; salesAndPurchaseDetails: object; salesOrPurchaseDetails: object; salesTaxCode: object; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/service-items`\n\nCreates a new service item.\n\n### Parameters\n\n- `name: string`\n The case-insensitive name of this service item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two service items could both have the `name` \"Web-Design\", but they could have unique `fullName` values, such as \"Consulting:Web-Design\" and \"Contracting:Web-Design\".\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The service item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `classId?: string`\n The service item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isActive?: boolean`\n Indicates whether this service item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `parentId?: string`\n The parent service item one level above this one in the hierarchy. For example, if this service item has a `fullName` of \"Consulting:Web-Design\", its parent has a `fullName` of \"Consulting\". If this service item is at the top level, this field will be `null`.\n\n- `salesAndPurchaseDetails?: { expenseAccountId: string; incomeAccountId: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; }`\n Details for service items that are both purchased and sold, such as reimbursable expenses or inventory items that are bought from vendors and sold to customers.\n\n**IMPORTANT**: You must specify either `salesAndPurchaseDetails` or `salesOrPurchaseDetails` when creating a service item, but never both because an item cannot have both configurations.\n - `expenseAccountId: string`\n The expense account used to track costs from purchases of this item.\n - `incomeAccountId: string`\n The income account used to track revenue from sales of this item.\n - `preferredVendorId?: string`\n The preferred vendor from whom this item is typically purchased.\n - `purchaseCost?: string`\n The cost at which this item is purchased from vendors, represented as a decimal string.\n - `purchaseDescription?: string`\n The description of this item that appears on purchase forms (e.g., checks, bills, item receipts) when it is ordered or bought from vendors.\n - `purchaseTaxCodeId?: string`\n The tax code applied to purchases of this item. Applicable in regions where purchase taxes are used, such as Canada or the UK.\n - `salesDescription?: string`\n The description of this item that appears on sales forms (e.g., invoices, sales receipts) when sold to customers.\n - `salesPrice?: string`\n The price at which this item is sold to customers, represented as a decimal string.\n\n- `salesOrPurchaseDetails?: { postingAccountId: string; description?: string; price?: string; pricePercentage?: string; }`\n Details for service items that are exclusively sold or exclusively purchased, but not both. This typically applies to non-inventory items (like a purchased office supply that isn't resold) or service items (like consulting services that are sold but not purchased).\n\n**IMPORTANT**: You must specify either `salesOrPurchaseDetails` or `salesAndPurchaseDetails` when creating a service item, but never both because an item cannot have both configurations.\n - `postingAccountId: string`\n The posting account to which transactions involving this item are posted. This could be an income account when selling or an expense account when purchasing.\n - `description?: string`\n A description of this item.\n - `price?: string`\n The price at which this item is purchased or sold, represented as a decimal string.\n - `pricePercentage?: string`\n The price of this item expressed as a percentage, used instead of `price` when the item's cost is calculated as a percentage of another amount. For example, a service item that costs a percentage of another item's price.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for this service item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `unitOfMeasureSetId?: string`\n The unit-of-measure set associated with this service item, which consists of a base unit and related units.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_service_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_service_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }`\n - `salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst serviceItem = await conductor.qbd.serviceItems.create({ name: 'Web-Design', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(serviceItem);\n```", perLanguage: { typescript: { method: 'client.qbd.serviceItems.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst serviceItem = await conductor.qbd.serviceItems.create({\n name: 'Web-Design',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(serviceItem.id);", }, python: { method: 'qbd.service_items.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nservice_item = conductor.qbd.service_items.create(\n name="Web-Design",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(service_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/service-items \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Web-Design",\n "classId": "80000001-1234567890",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isActive": true,\n "parentId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "unitOfMeasureSetId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/service-items', httpMethod: 'get', summary: 'List all service items', description: 'Returns a list of service items. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.service_items > (method) list', qualified: 'client.qbd.serviceItems.list', params: [ 'Conductor-End-User-Id: string;', 'classIds?: string[];', 'cursor?: string;', 'fullNames?: string[];', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_service_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.serviceItems.list(Conductor-End-User-Id: string, classIds?: string[], cursor?: string, fullNames?: string[], ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_service_item'; parent: object; revisionNumber: string; salesAndPurchaseDetails: object; salesOrPurchaseDetails: object; salesTaxCode: object; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/service-items`\n\nReturns a list of service items. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classIds?: string[]`\n Filter for service items of these classes. A class is a way end-users can categorize service items in QuickBooks.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `fullNames?: string[]`\n Filter for specific service items by their full-name(s), case-insensitive. Like `id`, `fullName` is a unique identifier for a service item, formed by by combining the names of its parent objects with its own `name`, separated by colons. For example, if a service item is under \"Consulting\" and has the `name` \"Web-Design\", its `fullName` would be \"Consulting:Web-Design\".\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `ids?: string[]`\n Filter for specific service items by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for service items whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for service items whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for service items whose `name` is alphabetically greater than or equal to this value.\n\n- `nameStartsWith?: string`\n Filter for service items whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for service items whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for service items that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for service items updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for service items updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_service_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_service_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }`\n - `salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const serviceItem of conductor.qbd.serviceItems.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(serviceItem);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.serviceItems.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const serviceItem of conductor.qbd.serviceItems.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(serviceItem.id);\n}", }, python: { method: 'qbd.service_items.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.service_items.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/service-items \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/service-items/{id}', httpMethod: 'get', summary: 'Retrieve a service item', description: 'Retrieves a service item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific service items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.service_items > (method) retrieve', qualified: 'client.qbd.serviceItems.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_service_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.serviceItems.retrieve(id: string, Conductor-End-User-Id: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_service_item'; parent: object; revisionNumber: string; salesAndPurchaseDetails: object; salesOrPurchaseDetails: object; salesTaxCode: object; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/service-items/{id}`\n\nRetrieves a service item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific service items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the service item to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_service_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_service_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }`\n - `salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst serviceItem = await conductor.qbd.serviceItems.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(serviceItem);\n```", perLanguage: { typescript: { method: 'client.qbd.serviceItems.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst serviceItem = await conductor.qbd.serviceItems.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(serviceItem.id);", }, python: { method: 'qbd.service_items.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nservice_item = conductor.qbd.service_items.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(service_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/service-items/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/service-items/{id}', httpMethod: 'post', summary: 'Update a service item', description: 'Updates a service item’s details, including its accounts and unit-of-measure set. QuickBooks won’t let you convert a sell-only service into a buy-and-sell service (or the reverse); create a separate item instead. If you’re switching the unit of measure, set `forceUnitOfMeasureChange` so QuickBooks replaces it on existing forms.', stainlessPath: '(resource) qbd.service_items > (method) update', qualified: 'client.qbd.serviceItems.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'classId?: string;', 'forceUnitOfMeasureChange?: boolean;', 'isActive?: boolean;', 'name?: string;', 'parentId?: string;', 'salesAndPurchaseDetails?: { expenseAccountId?: string; incomeAccountId?: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; updateExistingTransactionsExpenseAccount?: boolean; updateExistingTransactionsIncomeAccount?: boolean; };', 'salesOrPurchaseDetails?: { description?: string; postingAccountId?: string; price?: string; pricePercentage?: string; updateExistingTransactionsAccount?: boolean; };', 'salesTaxCodeId?: string;', 'unitOfMeasureSetId?: string;', ], response: "{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_service_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.serviceItems.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, classId?: string, forceUnitOfMeasureChange?: boolean, isActive?: boolean, name?: string, parentId?: string, salesAndPurchaseDetails?: { expenseAccountId?: string; incomeAccountId?: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; updateExistingTransactionsExpenseAccount?: boolean; updateExistingTransactionsIncomeAccount?: boolean; }, salesOrPurchaseDetails?: { description?: string; postingAccountId?: string; price?: string; pricePercentage?: string; updateExistingTransactionsAccount?: boolean; }, salesTaxCodeId?: string, unitOfMeasureSetId?: string): { id: string; barcode: string; class: object; createdAt: string; customFields: object[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_service_item'; parent: object; revisionNumber: string; salesAndPurchaseDetails: object; salesOrPurchaseDetails: object; salesTaxCode: object; sublevel: number; unitOfMeasureSet: object; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/service-items/{id}`\n\nUpdates a service item’s details, including its accounts and unit-of-measure set. QuickBooks won’t let you convert a sell-only service into a buy-and-sell service (or the reverse); create a separate item instead. If you’re switching the unit of measure, set `forceUnitOfMeasureChange` so QuickBooks replaces it on existing forms.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the service item to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the service item object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The service item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `classId?: string`\n The service item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `forceUnitOfMeasureChange?: boolean`\n Indicates whether to allow changing the service item's unit-of-measure set (using the `unitOfMeasureSetId` field) when the base unit of the new unit-of-measure set does not match that of the currently assigned set. Without setting this field to `true` in this scenario, the request will fail with an error; hence, this field is equivalent to accepting the warning prompt in the QuickBooks UI.\n\nNOTE: Changing the base unit requires you to update the item's quantities-on-hand and cost to reflect the new unit; otherwise, these values will be inaccurate. Alternatively, consider creating a new item with the desired unit-of-measure set and deactivating the old item.\n\n- `isActive?: boolean`\n Indicates whether this service item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `name?: string`\n The case-insensitive name of this service item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two service items could both have the `name` \"Web-Design\", but they could have unique `fullName` values, such as \"Consulting:Web-Design\" and \"Contracting:Web-Design\".\n\nMaximum length: 31 characters.\n\n- `parentId?: string`\n The parent service item one level above this one in the hierarchy. For example, if this service item has a `fullName` of \"Consulting:Web-Design\", its parent has a `fullName` of \"Consulting\". If this service item is at the top level, this field will be `null`.\n\n- `salesAndPurchaseDetails?: { expenseAccountId?: string; incomeAccountId?: string; preferredVendorId?: string; purchaseCost?: string; purchaseDescription?: string; purchaseTaxCodeId?: string; salesDescription?: string; salesPrice?: string; updateExistingTransactionsExpenseAccount?: boolean; updateExistingTransactionsIncomeAccount?: boolean; }`\n Details for service items that are both purchased and sold, such as reimbursable expenses or inventory items that are bought from vendors and sold to customers.\n\n**IMPORTANT**: You cannot specify both `salesAndPurchaseDetails` and `salesOrPurchaseDetails` when modifying a service item because an item cannot have both configurations.\n - `expenseAccountId?: string`\n The expense account used to track costs from purchases of this item.\n - `incomeAccountId?: string`\n The income account used to track revenue from sales of this item.\n - `preferredVendorId?: string`\n The preferred vendor from whom this item is typically purchased.\n - `purchaseCost?: string`\n The cost at which this item is purchased from vendors, represented as a decimal string.\n - `purchaseDescription?: string`\n The description of this item that appears on purchase forms (e.g., checks, bills, item receipts) when it is ordered or bought from vendors.\n - `purchaseTaxCodeId?: string`\n The tax code applied to purchases of this item. Applicable in regions where purchase taxes are used, such as Canada or the UK.\n - `salesDescription?: string`\n The description of this item that appears on sales forms (e.g., invoices, sales receipts) when sold to customers.\n - `salesPrice?: string`\n The price at which this item is sold to customers, represented as a decimal string.\n - `updateExistingTransactionsExpenseAccount?: boolean`\n When `true`, applies the new expense account (specified by the `expenseAccountId` field) to all existing transactions that use this item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n - `updateExistingTransactionsIncomeAccount?: boolean`\n When `true`, applies the new income account (specified by the `incomeAccountId` field) to all existing transactions that use this item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n\n- `salesOrPurchaseDetails?: { description?: string; postingAccountId?: string; price?: string; pricePercentage?: string; updateExistingTransactionsAccount?: boolean; }`\n Details for service items that are exclusively sold or exclusively purchased, but not both. This typically applies to non-inventory items (like a purchased office supply that isn't resold) or service items (like consulting services that are sold but not purchased).\n\n**IMPORTANT**: You cannot specify both `salesOrPurchaseDetails` and `salesAndPurchaseDetails` when modifying a service item because an item cannot have both configurations.\n - `description?: string`\n A description of this item.\n - `postingAccountId?: string`\n The posting account to which transactions involving this item are posted. This could be an income account when selling or an expense account when purchasing.\n - `price?: string`\n The price at which this item is purchased or sold, represented as a decimal string.\n - `pricePercentage?: string`\n The price of this item expressed as a percentage, used instead of `price` when the item's cost is calculated as a percentage of another amount. For example, a service item that costs a percentage of another item's price.\n - `updateExistingTransactionsAccount?: boolean`\n When `true`, applies the new account (specified by the `accountId` field) to all existing transactions associated with this item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for this service item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `unitOfMeasureSetId?: string`\n The unit-of-measure set associated with this service item, which consists of a base unit and related units.\n\n### Returns\n\n- `{ id: string; barcode: string; class: { id: string; fullName: string; }; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; externalId: string; fullName: string; isActive: boolean; name: string; objectType: 'qbd_service_item'; parent: { id: string; fullName: string; }; revisionNumber: string; salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }; salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }; salesTaxCode: { id: string; fullName: string; }; sublevel: number; unitOfMeasureSet: { id: string; fullName: string; }; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `externalId: string`\n - `fullName: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_service_item'`\n - `parent: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `salesAndPurchaseDetails: { expenseAccount: { id: string; fullName: string; }; incomeAccount: { id: string; fullName: string; }; preferredVendor: { id: string; fullName: string; }; purchaseCost: string; purchaseDescription: string; purchaseTaxCode: { id: string; fullName: string; }; salesDescription: string; salesPrice: string; }`\n - `salesOrPurchaseDetails: { description: string; postingAccount: { id: string; fullName: string; }; price: string; pricePercentage: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `sublevel: number`\n - `unitOfMeasureSet: { id: string; fullName: string; }`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst serviceItem = await conductor.qbd.serviceItems.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(serviceItem);\n```", perLanguage: { typescript: { method: 'client.qbd.serviceItems.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst serviceItem = await conductor.qbd.serviceItems.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(serviceItem.id);", }, python: { method: 'qbd.service_items.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nservice_item = conductor.qbd.service_items.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(service_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/service-items/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "classId": "80000001-1234567890",\n "forceUnitOfMeasureChange": false,\n "isActive": true,\n "name": "Web-Design",\n "parentId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "unitOfMeasureSetId": "80000001-1234567890"\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/shipping-methods', httpMethod: 'post', summary: 'Create a shipping method', description: 'Creates a new shipping method.', stainlessPath: '(resource) qbd.shipping_methods > (method) create', qualified: 'client.qbd.shippingMethods.create', params: ['name: string;', 'Conductor-End-User-Id: string;', 'isActive?: boolean;'], response: "{ id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_shipping_method'; revisionNumber: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.shippingMethods.create(name: string, Conductor-End-User-Id: string, isActive?: boolean): { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_shipping_method'; revisionNumber: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/shipping-methods`\n\nCreates a new shipping method.\n\n### Parameters\n\n- `name: string`\n The case-insensitive unique name of this shipping method, unique across all shipping methods.\n\n**NOTE**: Shipping methods do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 15 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `isActive?: boolean`\n Indicates whether this shipping method is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n### Returns\n\n- `{ id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_shipping_method'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_shipping_method'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst shippingMethod = await conductor.qbd.shippingMethods.create({ name: 'FedEx Ground', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(shippingMethod);\n```", perLanguage: { typescript: { method: 'client.qbd.shippingMethods.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst shippingMethod = await conductor.qbd.shippingMethods.create({\n name: 'FedEx Ground',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(shippingMethod.id);", }, python: { method: 'qbd.shipping_methods.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nshipping_method = conductor.qbd.shipping_methods.create(\n name="FedEx Ground",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(shipping_method.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/shipping-methods \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "FedEx Ground",\n "isActive": true\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/shipping-methods', httpMethod: 'get', summary: 'List all shipping methods', description: 'Returns a list of shipping methods.\n\n**NOTE:** QuickBooks Desktop does not support pagination for shipping methods; hence, there is no `cursor` parameter. Users typically have few shipping methods.', stainlessPath: '(resource) qbd.shipping_methods > (method) list', qualified: 'client.qbd.shippingMethods.list', params: [ 'Conductor-End-User-Id: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_shipping_method'; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.shippingMethods.list(Conductor-End-User-Id: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: shipping_method[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/shipping-methods`\n\nReturns a list of shipping methods.\n\n**NOTE:** QuickBooks Desktop does not support pagination for shipping methods; hence, there is no `cursor` parameter. Users typically have few shipping methods.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `ids?: string[]`\n Filter for specific shipping methods by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for shipping methods. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all shipping methods without limit, unlike paginated endpoints which default to 150 records. This is acceptable because shipping methods typically have low record counts.\n\n- `nameContains?: string`\n Filter for shipping methods whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for shipping methods whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for shipping methods whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific shipping methods by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a shipping method.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for shipping methods whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for shipping methods whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for shipping methods that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for shipping methods updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for shipping methods updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_shipping_method'; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_shipping_method'; revisionNumber: string; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst shippingMethods = await conductor.qbd.shippingMethods.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(shippingMethods);\n```", perLanguage: { typescript: { method: 'client.qbd.shippingMethods.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst shippingMethods = await conductor.qbd.shippingMethods.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(shippingMethods.data);", }, python: { method: 'qbd.shipping_methods.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nshipping_methods = conductor.qbd.shipping_methods.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(shipping_methods.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/shipping-methods \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/shipping-methods/{id}', httpMethod: 'get', summary: 'Retrieve a shipping method', description: 'Retrieves a shipping method by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific shipping methods by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.shipping_methods > (method) retrieve', qualified: 'client.qbd.shippingMethods.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_shipping_method'; revisionNumber: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.shippingMethods.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_shipping_method'; revisionNumber: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/shipping-methods/{id}`\n\nRetrieves a shipping method by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific shipping methods by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the shipping method to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_shipping_method'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_shipping_method'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst shippingMethod = await conductor.qbd.shippingMethods.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(shippingMethod);\n```", perLanguage: { typescript: { method: 'client.qbd.shippingMethods.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst shippingMethod = await conductor.qbd.shippingMethods.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(shippingMethod.id);", }, python: { method: 'qbd.shipping_methods.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nshipping_method = conductor.qbd.shipping_methods.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(shipping_method.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/shipping-methods/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/standard-terms', httpMethod: 'post', summary: 'Create a standard term', description: 'Creates a new standard term.', stainlessPath: '(resource) qbd.standard_terms > (method) create', qualified: 'client.qbd.standardTerms.create', params: [ 'name: string;', 'Conductor-End-User-Id: string;', 'discountDays?: number;', 'discountPercentage?: string;', 'dueDays?: number;', 'isActive?: boolean;', ], response: "{ id: string; createdAt: string; discountDays: number; discountPercentage: string; dueDays: number; isActive: boolean; name: string; objectType: 'qbd_standard_term'; revisionNumber: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.standardTerms.create(name: string, Conductor-End-User-Id: string, discountDays?: number, discountPercentage?: string, dueDays?: number, isActive?: boolean): { id: string; createdAt: string; discountDays: number; discountPercentage: string; dueDays: number; isActive: boolean; name: string; objectType: 'qbd_standard_term'; revisionNumber: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/standard-terms`\n\nCreates a new standard term.\n\n### Parameters\n\n- `name: string`\n The case-insensitive unique name of this standard term, unique across all standard terms.\n\n**NOTE**: Standard terms do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `discountDays?: number`\n The number of days within which payment must be received to qualify for the discount specified by `discountPercentage`.\n\n- `discountPercentage?: string`\n The discount percentage applied to the payment if received within the number of days specified by `discountDays`. The value is between 0 and 100.\n\n- `dueDays?: number`\n The number of days until payment is due.\n\n- `isActive?: boolean`\n Indicates whether this standard term is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n### Returns\n\n- `{ id: string; createdAt: string; discountDays: number; discountPercentage: string; dueDays: number; isActive: boolean; name: string; objectType: 'qbd_standard_term'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `discountDays: number`\n - `discountPercentage: string`\n - `dueDays: number`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_standard_term'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst standardTerm = await conductor.qbd.standardTerms.create({ name: 'Net 30', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(standardTerm);\n```", perLanguage: { typescript: { method: 'client.qbd.standardTerms.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst standardTerm = await conductor.qbd.standardTerms.create({\n name: 'Net 30',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(standardTerm.id);", }, python: { method: 'qbd.standard_terms.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nstandard_term = conductor.qbd.standard_terms.create(\n name="Net 30",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(standard_term.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/standard-terms \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Net 30",\n "discountDays": 10,\n "discountPercentage": "10",\n "dueDays": 30,\n "isActive": true\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/standard-terms', httpMethod: 'get', summary: 'List all standard terms', description: 'Returns a list of standard terms.\n\n**NOTE:** QuickBooks Desktop does not support pagination for standard terms; hence, there is no `cursor` parameter. Users typically have few standard terms.', stainlessPath: '(resource) qbd.standard_terms > (method) list', qualified: 'client.qbd.standardTerms.list', params: [ 'Conductor-End-User-Id: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; createdAt: string; discountDays: number; discountPercentage: string; dueDays: number; isActive: boolean; name: string; objectType: 'qbd_standard_term'; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.standardTerms.list(Conductor-End-User-Id: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: standard_term[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/standard-terms`\n\nReturns a list of standard terms.\n\n**NOTE:** QuickBooks Desktop does not support pagination for standard terms; hence, there is no `cursor` parameter. Users typically have few standard terms.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `ids?: string[]`\n Filter for specific standard terms by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for standard terms. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all standard terms without limit, unlike paginated endpoints which default to 150 records. This is acceptable because standard terms typically have low record counts.\n\n- `nameContains?: string`\n Filter for standard terms whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for standard terms whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for standard terms whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific standard terms by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a standard term.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for standard terms whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for standard terms whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for standard terms that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for standard terms updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for standard terms updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; discountDays: number; discountPercentage: string; dueDays: number; isActive: boolean; name: string; objectType: 'qbd_standard_term'; revisionNumber: string; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; createdAt: string; discountDays: number; discountPercentage: string; dueDays: number; isActive: boolean; name: string; objectType: 'qbd_standard_term'; revisionNumber: string; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst standardTerms = await conductor.qbd.standardTerms.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(standardTerms);\n```", perLanguage: { typescript: { method: 'client.qbd.standardTerms.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst standardTerms = await conductor.qbd.standardTerms.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(standardTerms.data);", }, python: { method: 'qbd.standard_terms.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nstandard_terms = conductor.qbd.standard_terms.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(standard_terms.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/standard-terms \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/standard-terms/{id}', httpMethod: 'get', summary: 'Retrieve a standard term', description: 'Retrieves a standard term by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific standard terms by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.standard_terms > (method) retrieve', qualified: 'client.qbd.standardTerms.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; discountDays: number; discountPercentage: string; dueDays: number; isActive: boolean; name: string; objectType: 'qbd_standard_term'; revisionNumber: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.standardTerms.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; discountDays: number; discountPercentage: string; dueDays: number; isActive: boolean; name: string; objectType: 'qbd_standard_term'; revisionNumber: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/standard-terms/{id}`\n\nRetrieves a standard term by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific standard terms by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the standard term to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; discountDays: number; discountPercentage: string; dueDays: number; isActive: boolean; name: string; objectType: 'qbd_standard_term'; revisionNumber: string; updatedAt: string; }`\n\n - `id: string`\n - `createdAt: string`\n - `discountDays: number`\n - `discountPercentage: string`\n - `dueDays: number`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_standard_term'`\n - `revisionNumber: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst standardTerm = await conductor.qbd.standardTerms.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(standardTerm);\n```", perLanguage: { typescript: { method: 'client.qbd.standardTerms.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst standardTerm = await conductor.qbd.standardTerms.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(standardTerm.id);", }, python: { method: 'qbd.standard_terms.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nstandard_term = conductor.qbd.standard_terms.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(standard_term.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/standard-terms/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/subtotal-items', httpMethod: 'post', summary: 'Create a subtotal item', description: 'Creates a new subtotal item.', stainlessPath: '(resource) qbd.subtotal_items > (method) create', qualified: 'client.qbd.subtotalItems.create', params: [ 'name: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'description?: string;', 'externalId?: string;', 'isActive?: boolean;', ], response: "{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_subtotal_item'; revisionNumber: string; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.subtotalItems.create(name: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, description?: string, externalId?: string, isActive?: boolean): { id: string; barcode: string; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_subtotal_item'; revisionNumber: string; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/subtotal-items`\n\nCreates a new subtotal item.\n\n### Parameters\n\n- `name: string`\n The case-insensitive unique name of this subtotal item, unique across all subtotal items.\n\n**NOTE**: Subtotal items do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The subtotal item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `description?: string`\n The subtotal item's description that will appear on sales forms that include this item.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `isActive?: boolean`\n Indicates whether this subtotal item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n### Returns\n\n- `{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_subtotal_item'; revisionNumber: string; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_subtotal_item'`\n - `revisionNumber: string`\n - `specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst subtotalItem = await conductor.qbd.subtotalItems.create({ name: 'Labor subtotal', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(subtotalItem);\n```", perLanguage: { typescript: { method: 'client.qbd.subtotalItems.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst subtotalItem = await conductor.qbd.subtotalItems.create({\n name: 'Labor subtotal',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(subtotalItem.id);", }, python: { method: 'qbd.subtotal_items.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsubtotal_item = conductor.qbd.subtotal_items.create(\n name="Labor subtotal",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(subtotal_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/subtotal-items \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Labor subtotal",\n "description": "Subtotal for all labor costs on this project",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "isActive": true\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/subtotal-items', httpMethod: 'get', summary: 'List all subtotal items', description: 'Returns a list of subtotal items. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.subtotal_items > (method) list', qualified: 'client.qbd.subtotalItems.list', params: [ 'Conductor-End-User-Id: string;', 'cursor?: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_subtotal_item'; revisionNumber: string; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.subtotalItems.list(Conductor-End-User-Id: string, cursor?: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { id: string; barcode: string; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_subtotal_item'; revisionNumber: string; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/subtotal-items`\n\nReturns a list of subtotal items. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific subtotal items by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for subtotal items whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for subtotal items whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for subtotal items whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific subtotal items by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a subtotal item.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for subtotal items whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for subtotal items whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for subtotal items that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for subtotal items updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for subtotal items updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_subtotal_item'; revisionNumber: string; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_subtotal_item'`\n - `revisionNumber: string`\n - `specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const subtotalItem of conductor.qbd.subtotalItems.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(subtotalItem);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.subtotalItems.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const subtotalItem of conductor.qbd.subtotalItems.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(subtotalItem.id);\n}", }, python: { method: 'qbd.subtotal_items.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.subtotal_items.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/subtotal-items \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/subtotal-items/{id}', httpMethod: 'get', summary: 'Retrieve a subtotal item', description: 'Retrieves a subtotal item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific subtotal items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.subtotal_items > (method) retrieve', qualified: 'client.qbd.subtotalItems.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_subtotal_item'; revisionNumber: string; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.subtotalItems.retrieve(id: string, Conductor-End-User-Id: string): { id: string; barcode: string; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_subtotal_item'; revisionNumber: string; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/subtotal-items/{id}`\n\nRetrieves a subtotal item by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific subtotal items by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the subtotal item to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_subtotal_item'; revisionNumber: string; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_subtotal_item'`\n - `revisionNumber: string`\n - `specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst subtotalItem = await conductor.qbd.subtotalItems.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(subtotalItem);\n```", perLanguage: { typescript: { method: 'client.qbd.subtotalItems.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst subtotalItem = await conductor.qbd.subtotalItems.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(subtotalItem.id);", }, python: { method: 'qbd.subtotal_items.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsubtotal_item = conductor.qbd.subtotal_items.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(subtotal_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/subtotal-items/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/subtotal-items/{id}', httpMethod: 'post', summary: 'Update a subtotal item', description: 'Updates an existing subtotal item.', stainlessPath: '(resource) qbd.subtotal_items > (method) update', qualified: 'client.qbd.subtotalItems.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; };', 'description?: string;', 'isActive?: boolean;', 'name?: string;', ], response: "{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_subtotal_item'; revisionNumber: string; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.subtotalItems.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }, description?: string, isActive?: boolean, name?: string): { id: string; barcode: string; createdAt: string; customFields: object[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_subtotal_item'; revisionNumber: string; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/subtotal-items/{id}`\n\nUpdates an existing subtotal item.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the subtotal item to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the subtotal item object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `barcode?: { allowOverride?: boolean; assignEvenIfUsed?: boolean; value?: string; }`\n The subtotal item's barcode.\n - `allowOverride?: boolean`\n Indicates whether to allow the barcode to be overridden.\n - `assignEvenIfUsed?: boolean`\n Indicates whether to assign the barcode even if it is already used.\n - `value?: string`\n The item's barcode value.\n\n- `description?: string`\n The subtotal item's description that will appear on sales forms that include this item.\n\n- `isActive?: boolean`\n Indicates whether this subtotal item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `name?: string`\n The case-insensitive unique name of this subtotal item, unique across all subtotal items.\n\n**NOTE**: Subtotal items do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n### Returns\n\n- `{ id: string; barcode: string; createdAt: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; externalId: string; isActive: boolean; name: string; objectType: 'qbd_subtotal_item'; revisionNumber: string; specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'; updatedAt: string; }`\n\n - `id: string`\n - `barcode: string`\n - `createdAt: string`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `description: string`\n - `externalId: string`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_subtotal_item'`\n - `revisionNumber: string`\n - `specialItemType: 'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal'`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst subtotalItem = await conductor.qbd.subtotalItems.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(subtotalItem);\n```", perLanguage: { typescript: { method: 'client.qbd.subtotalItems.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst subtotalItem = await conductor.qbd.subtotalItems.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(subtotalItem.id);", }, python: { method: 'qbd.subtotal_items.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nsubtotal_item = conductor.qbd.subtotal_items.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(subtotal_item.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/subtotal-items/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "description": "Subtotal for all labor costs on this project",\n "isActive": true,\n "name": "Labor subtotal"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/templates', httpMethod: 'get', summary: 'List all templates', description: 'Returns a list of templates. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.templates > (method) list', qualified: 'client.qbd.templates.list', params: ['Conductor-End-User-Id: string;'], response: "{ data: { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_template'; revisionNumber: string; templateType: string; updatedAt: string; }[]; hasMore: boolean; nextCursor: string; objectType: 'list'; remainingCount: number; url: string; }", markdown: "## list\n\n`conductor.qbd.templates.list(Conductor-End-User-Id: string): { data: template[]; hasMore: boolean; nextCursor: string; objectType: 'list'; remainingCount: number; url: string; }`\n\n**get** `/quickbooks-desktop/templates`\n\nReturns a list of templates. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_template'; revisionNumber: string; templateType: string; updatedAt: string; }[]; hasMore: boolean; nextCursor: string; objectType: 'list'; remainingCount: number; url: string; }`\n\n - `data: { id: string; createdAt: string; isActive: boolean; name: string; objectType: 'qbd_template'; revisionNumber: string; templateType: string; updatedAt: string; }[]`\n - `hasMore: boolean`\n - `nextCursor: string`\n - `objectType: 'list'`\n - `remainingCount: number`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst templates = await conductor.qbd.templates.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(templates);\n```", perLanguage: { typescript: { method: 'client.qbd.templates.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst templates = await conductor.qbd.templates.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(templates.data);", }, python: { method: 'qbd.templates.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ntemplates = conductor.qbd.templates.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(templates.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/templates \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/time-tracking-activities', httpMethod: 'post', summary: 'Create a time tracking activity', description: 'Creates a new time tracking activity.', stainlessPath: '(resource) qbd.time_tracking_activities > (method) create', qualified: 'client.qbd.timeTrackingActivities.create', params: [ 'duration: string;', 'entityId: string;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', "billingStatus?: 'billable' | 'has_been_billed' | 'not_billable';", 'classId?: string;', 'customerId?: string;', 'externalId?: string;', 'note?: string;', 'payrollWageItemId?: string;', 'serviceItemId?: string;', ], response: "{ id: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; duration: string; entity: { id: string; fullName: string; }; externalId: string; isBilled: boolean; note: string; objectType: 'qbd_time_tracking_activity'; payrollWageItem: { id: string; fullName: string; }; revisionNumber: string; serviceItem: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.timeTrackingActivities.create(duration: string, entityId: string, transactionDate: string, Conductor-End-User-Id: string, billingStatus?: 'billable' | 'has_been_billed' | 'not_billable', classId?: string, customerId?: string, externalId?: string, note?: string, payrollWageItemId?: string, serviceItemId?: string): { id: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; createdAt: string; customer: object; duration: string; entity: object; externalId: string; isBilled: boolean; note: string; objectType: 'qbd_time_tracking_activity'; payrollWageItem: object; revisionNumber: string; serviceItem: object; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/time-tracking-activities`\n\nCreates a new time tracking activity.\n\n### Parameters\n\n- `duration: string`\n The time spent performing the service during this time tracking activity, in ISO 8601 format for time intervals (PTnHnMnS). For example, 1 hour and 30 minutes is represented as PT1H30M.\n\n**NOTE**: Although seconds can be specified when creating a time tracking activity, they are not returned in responses since QuickBooks Desktop's UI does not display seconds.\n\n**IMPORTANT**: This field is required for updating time tracking activities, even if the field is not being modified, because of a bug in QuickBooks itself.\n\nMust use QuickBooks Desktop's ISO 8601 time interval format (for example, \"PT1H30M\" represents 1 hour and 30 minutes).\n\n- `entityId: string`\n The employee, vendor, or person on QuickBooks's \"Other Names\" list whose time is being tracked in this time tracking activity. This cannot refer to a customer - use the `customer` field to associate a customer or customer-job with this time tracking activity.\n\n- `transactionDate: string`\n The date of this time tracking activity, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'`\n The billing status of this time tracking activity.\n\n**IMPORTANT**: When this field is set to \"billable\" for time tracking activities, both `customer` and `serviceItem` are required so that an invoice can be created.\n\n- `classId?: string`\n The time tracking activity's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `customerId?: string`\n The customer or customer-job to which this time tracking activity could be billed. If `billingStatus` is set to \"billable\", this field is required.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `note?: string`\n A note or comment about this time tracking activity.\n\n- `payrollWageItemId?: string`\n The payroll wage item (e.g., Regular Pay, Overtime Pay) to use for this time tracking activity. This field can only be used for time tracking if: (1) the person specified in `entity` is an employee in QuickBooks, and (2) the \"Use time data to create paychecks\" preference is enabled in their payroll settings.\n\n- `serviceItemId?: string`\n The type of service performed during this time tracking activity, referring to billable or purchasable services such as specialized labor, consulting hours, and professional fees.\n\n**NOTE**: This field is not required if no `customer` is specified. However, if `billingStatus` is set to \"billable\", both this field and `customer` are required.\n\n### Returns\n\n- `{ id: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; duration: string; entity: { id: string; fullName: string; }; externalId: string; isBilled: boolean; note: string; objectType: 'qbd_time_tracking_activity'; payrollWageItem: { id: string; fullName: string; }; revisionNumber: string; serviceItem: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingStatus: 'billable' | 'has_been_billed' | 'not_billable'`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customer: { id: string; fullName: string; }`\n - `duration: string`\n - `entity: { id: string; fullName: string; }`\n - `externalId: string`\n - `isBilled: boolean`\n - `note: string`\n - `objectType: 'qbd_time_tracking_activity'`\n - `payrollWageItem: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `serviceItem: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst timeTrackingActivity = await conductor.qbd.timeTrackingActivities.create({\n duration: 'PT1H30M',\n entityId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(timeTrackingActivity);\n```", perLanguage: { typescript: { method: 'client.qbd.timeTrackingActivities.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst timeTrackingActivity = await conductor.qbd.timeTrackingActivities.create({\n duration: 'PT1H30M',\n entityId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(timeTrackingActivity.id);", }, python: { method: 'qbd.time_tracking_activities.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ntime_tracking_activity = conductor.qbd.time_tracking_activities.create(\n duration="PT1H30M",\n entity_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(time_tracking_activity.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/time-tracking-activities \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "duration": "PT1H30M",\n "entityId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "billingStatus": "billable",\n "classId": "80000001-1234567890",\n "customerId": "80000001-1234567890",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "note": "Project planning meeting with client.",\n "payrollWageItemId": "80000001-1234567890",\n "serviceItemId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/time-tracking-activities', httpMethod: 'get', summary: 'List all time tracking activities', description: 'Returns a list of time tracking activities. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.time_tracking_activities > (method) list', qualified: 'client.qbd.timeTrackingActivities.list', params: [ 'Conductor-End-User-Id: string;', 'cursor?: string;', 'entityIds?: string[];', 'ids?: string[];', 'limit?: number;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; duration: string; entity: { id: string; fullName: string; }; externalId: string; isBilled: boolean; note: string; objectType: 'qbd_time_tracking_activity'; payrollWageItem: { id: string; fullName: string; }; revisionNumber: string; serviceItem: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.timeTrackingActivities.list(Conductor-End-User-Id: string, cursor?: string, entityIds?: string[], ids?: string[], limit?: number, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; createdAt: string; customer: object; duration: string; entity: object; externalId: string; isBilled: boolean; note: string; objectType: 'qbd_time_tracking_activity'; payrollWageItem: object; revisionNumber: string; serviceItem: object; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/time-tracking-activities`\n\nReturns a list of time tracking activities. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `entityIds?: string[]`\n Filter for time tracking activities tracking the time of these employees, vendors, or persons on QuickBooks's \"Other Names\" list.\n\n- `ids?: string[]`\n Filter for specific time tracking activities by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `transactionDateFrom?: string`\n Filter for time tracking activities whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for time tracking activities whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for time tracking activities updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for time tracking activities updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; duration: string; entity: { id: string; fullName: string; }; externalId: string; isBilled: boolean; note: string; objectType: 'qbd_time_tracking_activity'; payrollWageItem: { id: string; fullName: string; }; revisionNumber: string; serviceItem: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingStatus: 'billable' | 'has_been_billed' | 'not_billable'`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customer: { id: string; fullName: string; }`\n - `duration: string`\n - `entity: { id: string; fullName: string; }`\n - `externalId: string`\n - `isBilled: boolean`\n - `note: string`\n - `objectType: 'qbd_time_tracking_activity'`\n - `payrollWageItem: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `serviceItem: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const timeTrackingActivity of conductor.qbd.timeTrackingActivities.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(timeTrackingActivity);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.timeTrackingActivities.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const timeTrackingActivity of conductor.qbd.timeTrackingActivities.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(timeTrackingActivity.id);\n}", }, python: { method: 'qbd.time_tracking_activities.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.time_tracking_activities.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/time-tracking-activities \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/time-tracking-activities/{id}', httpMethod: 'get', summary: 'Retrieve a time tracking activity', description: 'Retrieves a time tracking activity by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific time tracking activities by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.time_tracking_activities > (method) retrieve', qualified: 'client.qbd.timeTrackingActivities.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; duration: string; entity: { id: string; fullName: string; }; externalId: string; isBilled: boolean; note: string; objectType: 'qbd_time_tracking_activity'; payrollWageItem: { id: string; fullName: string; }; revisionNumber: string; serviceItem: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.timeTrackingActivities.retrieve(id: string, Conductor-End-User-Id: string): { id: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; createdAt: string; customer: object; duration: string; entity: object; externalId: string; isBilled: boolean; note: string; objectType: 'qbd_time_tracking_activity'; payrollWageItem: object; revisionNumber: string; serviceItem: object; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/time-tracking-activities/{id}`\n\nRetrieves a time tracking activity by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific time tracking activities by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the time tracking activity to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; duration: string; entity: { id: string; fullName: string; }; externalId: string; isBilled: boolean; note: string; objectType: 'qbd_time_tracking_activity'; payrollWageItem: { id: string; fullName: string; }; revisionNumber: string; serviceItem: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingStatus: 'billable' | 'has_been_billed' | 'not_billable'`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customer: { id: string; fullName: string; }`\n - `duration: string`\n - `entity: { id: string; fullName: string; }`\n - `externalId: string`\n - `isBilled: boolean`\n - `note: string`\n - `objectType: 'qbd_time_tracking_activity'`\n - `payrollWageItem: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `serviceItem: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst timeTrackingActivity = await conductor.qbd.timeTrackingActivities.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(timeTrackingActivity);\n```", perLanguage: { typescript: { method: 'client.qbd.timeTrackingActivities.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst timeTrackingActivity = await conductor.qbd.timeTrackingActivities.retrieve(\n '123ABC-1234567890',\n { conductorEndUserId: 'end_usr_1234567abcdefg' },\n);\n\nconsole.log(timeTrackingActivity.id);", }, python: { method: 'qbd.time_tracking_activities.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ntime_tracking_activity = conductor.qbd.time_tracking_activities.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(time_tracking_activity.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/time-tracking-activities/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/time-tracking-activities/{id}', httpMethod: 'post', summary: 'Update a time tracking activity', description: 'Updates an existing time tracking activity.', stainlessPath: '(resource) qbd.time_tracking_activities > (method) update', qualified: 'client.qbd.timeTrackingActivities.update', params: [ 'id: string;', 'duration: string;', 'entityId: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', "billingStatus?: 'billable' | 'has_been_billed' | 'not_billable';", 'classId?: string;', 'customerId?: string;', 'note?: string;', 'payrollWageItemId?: string;', 'serviceItemId?: string;', 'transactionDate?: string;', ], response: "{ id: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; duration: string; entity: { id: string; fullName: string; }; externalId: string; isBilled: boolean; note: string; objectType: 'qbd_time_tracking_activity'; payrollWageItem: { id: string; fullName: string; }; revisionNumber: string; serviceItem: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.timeTrackingActivities.update(id: string, duration: string, entityId: string, revisionNumber: string, Conductor-End-User-Id: string, billingStatus?: 'billable' | 'has_been_billed' | 'not_billable', classId?: string, customerId?: string, note?: string, payrollWageItemId?: string, serviceItemId?: string, transactionDate?: string): { id: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; createdAt: string; customer: object; duration: string; entity: object; externalId: string; isBilled: boolean; note: string; objectType: 'qbd_time_tracking_activity'; payrollWageItem: object; revisionNumber: string; serviceItem: object; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/time-tracking-activities/{id}`\n\nUpdates an existing time tracking activity.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the time tracking activity to update.\n\n- `duration: string`\n The time spent performing the service during this time tracking activity, in ISO 8601 format for time intervals (PTnHnMnS). For example, 1 hour and 30 minutes is represented as PT1H30M.\n\n**NOTE**: Although seconds can be specified when creating a time tracking activity, they are not returned in responses since QuickBooks Desktop's UI does not display seconds.\n\n**IMPORTANT**: This field is required for updating time tracking activities, even if the field is not being modified, because of a bug in QuickBooks itself.\n\nMust use QuickBooks Desktop's ISO 8601 time interval format (for example, \"PT1H30M\" represents 1 hour and 30 minutes).\n\n- `entityId: string`\n The employee, vendor, or person on QuickBooks's \"Other Names\" list whose time is being tracked in this time tracking activity. This cannot refer to a customer - use the `customer` field to associate a customer or customer-job with this time tracking activity.\n\n**IMPORTANT**: This field is required for updating time tracking activities, even if the field is not being modified, because of a bug in QuickBooks itself.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the time tracking activity object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'`\n The billing status of this time tracking activity.\n\n**IMPORTANT**: When this field is set to \"billable\" for time tracking activities, both `customer` and `serviceItem` are required so that an invoice can be created.\n\n- `classId?: string`\n The time tracking activity's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `customerId?: string`\n The customer or customer-job to which this time tracking activity could be billed. If `billingStatus` is set to \"billable\", this field is required.\n\n- `note?: string`\n A note or comment about this time tracking activity.\n\n- `payrollWageItemId?: string`\n The payroll wage item (e.g., Regular Pay, Overtime Pay) to use for this time tracking activity. This field can only be used for time tracking if: (1) the person specified in `entity` is an employee in QuickBooks, and (2) the \"Use time data to create paychecks\" preference is enabled in their payroll settings.\n\n- `serviceItemId?: string`\n The type of service performed during this time tracking activity, referring to billable or purchasable services such as specialized labor, consulting hours, and professional fees.\n\n**NOTE**: This field is not required if no `customer` is specified. However, if `billingStatus` is set to \"billable\", both this field and `customer` are required.\n\n- `transactionDate?: string`\n The date of this time tracking activity, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; createdAt: string; customer: { id: string; fullName: string; }; duration: string; entity: { id: string; fullName: string; }; externalId: string; isBilled: boolean; note: string; objectType: 'qbd_time_tracking_activity'; payrollWageItem: { id: string; fullName: string; }; revisionNumber: string; serviceItem: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `billingStatus: 'billable' | 'has_been_billed' | 'not_billable'`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `customer: { id: string; fullName: string; }`\n - `duration: string`\n - `entity: { id: string; fullName: string; }`\n - `externalId: string`\n - `isBilled: boolean`\n - `note: string`\n - `objectType: 'qbd_time_tracking_activity'`\n - `payrollWageItem: { id: string; fullName: string; }`\n - `revisionNumber: string`\n - `serviceItem: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst timeTrackingActivity = await conductor.qbd.timeTrackingActivities.update('123ABC-1234567890', {\n duration: 'PT1H30M',\n entityId: '80000001-1234567890',\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(timeTrackingActivity);\n```", perLanguage: { typescript: { method: 'client.qbd.timeTrackingActivities.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst timeTrackingActivity = await conductor.qbd.timeTrackingActivities.update(\n '123ABC-1234567890',\n {\n duration: 'PT1H30M',\n entityId: '80000001-1234567890',\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n },\n);\n\nconsole.log(timeTrackingActivity.id);", }, python: { method: 'qbd.time_tracking_activities.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ntime_tracking_activity = conductor.qbd.time_tracking_activities.update(\n id="123ABC-1234567890",\n duration="PT1H30M",\n entity_id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(time_tracking_activity.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/time-tracking-activities/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "duration": "PT1H30M",\n "entityId": "80000001-1234567890",\n "revisionNumber": "1721172183",\n "billingStatus": "billable",\n "classId": "80000001-1234567890",\n "customerId": "80000001-1234567890",\n "note": "Project planning meeting with client.",\n "payrollWageItemId": "80000001-1234567890",\n "serviceItemId": "80000001-1234567890",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/time-tracking-activities/{id}', httpMethod: 'delete', summary: 'Delete a time tracking activity', description: 'Permanently deletes a time tracking activity. The deletion will fail if the time tracking activity is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.time_tracking_activities > (method) delete', qualified: 'client.qbd.timeTrackingActivities.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_time_tracking_activity'; }", markdown: "## delete\n\n`conductor.qbd.timeTrackingActivities.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_time_tracking_activity'; }`\n\n**delete** `/quickbooks-desktop/time-tracking-activities/{id}`\n\nPermanently deletes a time tracking activity. The deletion will fail if the time tracking activity is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the time tracking activity to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_time_tracking_activity'; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_time_tracking_activity'`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst timeTrackingActivity = await conductor.qbd.timeTrackingActivities.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(timeTrackingActivity);\n```", perLanguage: { typescript: { method: 'client.qbd.timeTrackingActivities.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst timeTrackingActivity = await conductor.qbd.timeTrackingActivities.delete(\n '123ABC-1234567890',\n { conductorEndUserId: 'end_usr_1234567abcdefg' },\n);\n\nconsole.log(timeTrackingActivity.id);", }, python: { method: 'qbd.time_tracking_activities.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ntime_tracking_activity = conductor.qbd.time_tracking_activities.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(time_tracking_activity.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/time-tracking-activities/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/transactions', httpMethod: 'get', summary: 'List all transactions', description: 'Searches across all transaction types. Unlike transaction-specific queries, this endpoint only returns fields common to all transaction types, such as ID, type, dates, account, and reference numbers. For more details specific to that transaction type, make a subsequent call to the relevant transaction-specific endpoint (such as invoices, bills, etc.). NOTE: This endpoint does not support time tracking activities. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.transactions > (method) list', qualified: 'client.qbd.transactions.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'classIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', "detailLevel?: 'all' | 'transaction_lines_only' | 'transactions_without_lines';", 'entityIds?: string[];', 'ids?: string[];', 'itemIds?: string[];', 'limit?: number;', "paymentStatus?: 'closed' | 'either' | 'open';", "postingStatus?: 'either' | 'non_posting' | 'posting';", 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'transactionTypes?: string[];', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: '{ account: { id: string; fullName: string; }; amount: string; amountInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; exchangeRate: number; memo: string; refNumber: string; transactionDate: string; transactionId: string; transactionLineId: string; transactionType: string; updatedAt: string; }', markdown: "## list\n\n`conductor.qbd.transactions.list(Conductor-End-User-Id: string, accountIds?: string[], classIds?: string[], currencyIds?: string[], cursor?: string, detailLevel?: 'all' | 'transaction_lines_only' | 'transactions_without_lines', entityIds?: string[], ids?: string[], itemIds?: string[], limit?: number, paymentStatus?: 'closed' | 'either' | 'open', postingStatus?: 'either' | 'non_posting' | 'posting', refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, transactionTypes?: string[], updatedAfter?: string, updatedBefore?: string): { account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; entity: object; exchangeRate: number; memo: string; refNumber: string; transactionDate: string; transactionId: string; transactionLineId: string; transactionType: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/transactions`\n\nSearches across all transaction types. Unlike transaction-specific queries, this endpoint only returns fields common to all transaction types, such as ID, type, dates, account, and reference numbers. For more details specific to that transaction type, make a subsequent call to the relevant transaction-specific endpoint (such as invoices, bills, etc.). NOTE: This endpoint does not support time tracking activities. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for transactions associated with these accounts.\n\n**NOTE**: To filter on transaction lines, you must specify the `transactionDetailLevel` parameter as `all` or `transaction_lines_only`.\n\n- `classIds?: string[]`\n Filter for transactions of these classes. A class is a way end-users can categorize transactions in QuickBooks.\n\n**NOTE**: To filter on transaction lines, you must specify the `transactionDetailLevel` parameter as `all` or `transaction_lines_only`.\n\n- `currencyIds?: string[]`\n Filter for transactions in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `detailLevel?: 'all' | 'transaction_lines_only' | 'transactions_without_lines'`\n Specify whether to return all matching transaction and transaction-line objects (`all`), only transaction objects (`transactions_without_lines`, the default), or only transaction-line objects (`transaction_lines_only`.\n\n- `entityIds?: string[]`\n Filter for transactions associated with these entities (customers, vendors, employees, etc.).\n\n**NOTE**: To filter on transaction lines, you must specify the `transactionDetailLevel` parameter as `all` or `transaction_lines_only`.\n\n- `ids?: string[]`\n Filter for specific transactions by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n**NOTE**: You cannot supply the ID of a time tracking activity to this request. If you do, you get an error stating that no such record could be found, even though the transaction is in QuickBooks. This limitation is enforced by QuickBooks.\n\n- `itemIds?: string[]`\n Filter for transactions associated with these items.\n\n**NOTE**: To filter on transaction lines, you must specify the `transactionDetailLevel` parameter as `all` or `transaction_lines_only`.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `paymentStatus?: 'closed' | 'either' | 'open'`\n Filter for transactions that are open, closed, or either. Open transactions have a remaining balance, such as credits not fully applied or invoices not fully paid.\n\n- `postingStatus?: 'either' | 'non_posting' | 'posting'`\n Filter for transactions that are posting, non-posting, or either. Posting status refers to whether QuickBooks records the transaction in an account register.\n\n- `refNumberContains?: string`\n Filter for transactions whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for transactions whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for transactions whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific transactions by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for transactions whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for transactions whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for transactions whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for transactions whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `transactionTypes?: string[]`\n Filter for transactions by their transaction type(s).\n\n**NOTE**: Filtering for time tracking activities is not supported by QuickBooks for this endpoint.\n\n- `updatedAfter?: string`\n Filter for transactions updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for transactions updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ account: { id: string; fullName: string; }; amount: string; amountInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; exchangeRate: number; memo: string; refNumber: string; transactionDate: string; transactionId: string; transactionLineId: string; transactionType: string; updatedAt: string; }`\n\n - `account: { id: string; fullName: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `entity: { id: string; fullName: string; }`\n - `exchangeRate: number`\n - `memo: string`\n - `refNumber: string`\n - `transactionDate: string`\n - `transactionId: string`\n - `transactionLineId: string`\n - `transactionType: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const transaction of conductor.qbd.transactions.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(transaction);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.transactions.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const transaction of conductor.qbd.transactions.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(transaction.account);\n}", }, python: { method: 'qbd.transactions.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.transactions.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.account)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/transactions \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/transactions/{id}', httpMethod: 'get', summary: 'Retrieve a transaction', description: 'Retrieves a transaction by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific transactions by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.transactions > (method) retrieve', qualified: 'client.qbd.transactions.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: '{ account: { id: string; fullName: string; }; amount: string; amountInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; exchangeRate: number; memo: string; refNumber: string; transactionDate: string; transactionId: string; transactionLineId: string; transactionType: string; updatedAt: string; }', markdown: "## retrieve\n\n`conductor.qbd.transactions.retrieve(id: string, Conductor-End-User-Id: string): { account: object; amount: string; amountInHomeCurrency: string; createdAt: string; currency: object; entity: object; exchangeRate: number; memo: string; refNumber: string; transactionDate: string; transactionId: string; transactionLineId: string; transactionType: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/transactions/{id}`\n\nRetrieves a transaction by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific transactions by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the transaction to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ account: { id: string; fullName: string; }; amount: string; amountInHomeCurrency: string; createdAt: string; currency: { id: string; fullName: string; }; entity: { id: string; fullName: string; }; exchangeRate: number; memo: string; refNumber: string; transactionDate: string; transactionId: string; transactionLineId: string; transactionType: string; updatedAt: string; }`\n\n - `account: { id: string; fullName: string; }`\n - `amount: string`\n - `amountInHomeCurrency: string`\n - `createdAt: string`\n - `currency: { id: string; fullName: string; }`\n - `entity: { id: string; fullName: string; }`\n - `exchangeRate: number`\n - `memo: string`\n - `refNumber: string`\n - `transactionDate: string`\n - `transactionId: string`\n - `transactionLineId: string`\n - `transactionType: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst transaction = await conductor.qbd.transactions.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(transaction);\n```", perLanguage: { typescript: { method: 'client.qbd.transactions.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst transaction = await conductor.qbd.transactions.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(transaction.account);", }, python: { method: 'qbd.transactions.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ntransaction = conductor.qbd.transactions.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(transaction.account)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/transactions/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/transfers', httpMethod: 'post', summary: 'Create a transfer', description: 'Creates a new transfer.', stainlessPath: '(resource) qbd.transfers > (method) create', qualified: 'client.qbd.transfers.create', params: [ 'amount: string;', 'sourceAccountId: string;', 'targetAccountId: string;', 'transactionDate: string;', 'Conductor-End-User-Id: string;', 'classId?: string;', 'memo?: string;', ], response: "{ id: string; amount: string; class: { id: string; fullName: string; }; createdAt: string; memo: string; objectType: 'qbd_transfer'; revisionNumber: string; sourceAccount: { id: string; fullName: string; }; sourceAccountBalance: string; targetAccount: { id: string; fullName: string; }; targetAccountBalance: string; transactionDate: string; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.transfers.create(amount: string, sourceAccountId: string, targetAccountId: string, transactionDate: string, Conductor-End-User-Id: string, classId?: string, memo?: string): { id: string; amount: string; class: object; createdAt: string; memo: string; objectType: 'qbd_transfer'; revisionNumber: string; sourceAccount: object; sourceAccountBalance: string; targetAccount: object; targetAccountBalance: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/transfers`\n\nCreates a new transfer.\n\n### Parameters\n\n- `amount: string`\n The monetary amount of this transfer, represented as a decimal string.\n\nDecimal string format: exactly 2 decimal places when cents are included and up to 13 digits before the decimal point (for example, \"123.45\").\n\n- `sourceAccountId: string`\n The account from which money will be transferred.\n\n- `targetAccountId: string`\n The account to which money will be transferred.\n\n- `transactionDate: string`\n The date of this transfer, in ISO 8601 format (YYYY-MM-DD).\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classId?: string`\n The transfer's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `memo?: string`\n A memo or note for this transfer.\n\n### Returns\n\n- `{ id: string; amount: string; class: { id: string; fullName: string; }; createdAt: string; memo: string; objectType: 'qbd_transfer'; revisionNumber: string; sourceAccount: { id: string; fullName: string; }; sourceAccountBalance: string; targetAccount: { id: string; fullName: string; }; targetAccountBalance: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `amount: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `memo: string`\n - `objectType: 'qbd_transfer'`\n - `revisionNumber: string`\n - `sourceAccount: { id: string; fullName: string; }`\n - `sourceAccountBalance: string`\n - `targetAccount: { id: string; fullName: string; }`\n - `targetAccountBalance: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst transfer = await conductor.qbd.transfers.create({\n amount: '1000.00',\n sourceAccountId: '80000001-1234567890',\n targetAccountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(transfer);\n```", perLanguage: { typescript: { method: 'client.qbd.transfers.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst transfer = await conductor.qbd.transfers.create({\n amount: '1000.00',\n sourceAccountId: '80000001-1234567890',\n targetAccountId: '80000001-1234567890',\n transactionDate: '2024-10-01',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(transfer.id);", }, python: { method: 'qbd.transfers.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ntransfer = conductor.qbd.transfers.create(\n amount="1000.00",\n source_account_id="80000001-1234567890",\n target_account_id="80000001-1234567890",\n transaction_date=date.fromisoformat("2024-10-01"),\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(transfer.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/transfers \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "amount": "1000.00",\n "sourceAccountId": "80000001-1234567890",\n "targetAccountId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "classId": "80000001-1234567890",\n "memo": "Monthly transfer to savings"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/transfers', httpMethod: 'get', summary: 'List all transfers', description: 'Returns a list of transfers. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.transfers > (method) list', qualified: 'client.qbd.transfers.list', params: [ 'Conductor-End-User-Id: string;', 'cursor?: string;', 'ids?: string[];', 'limit?: number;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; amount: string; class: { id: string; fullName: string; }; createdAt: string; memo: string; objectType: 'qbd_transfer'; revisionNumber: string; sourceAccount: { id: string; fullName: string; }; sourceAccountBalance: string; targetAccount: { id: string; fullName: string; }; targetAccountBalance: string; transactionDate: string; updatedAt: string; }", markdown: "## list\n\n`conductor.qbd.transfers.list(Conductor-End-User-Id: string, cursor?: string, ids?: string[], limit?: number, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; amount: string; class: object; createdAt: string; memo: string; objectType: 'qbd_transfer'; revisionNumber: string; sourceAccount: object; sourceAccountBalance: string; targetAccount: object; targetAccountBalance: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/transfers`\n\nReturns a list of transfers. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific transfers by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `transactionDateFrom?: string`\n Filter for transfers whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for transfers whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for transfers updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for transfers updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; amount: string; class: { id: string; fullName: string; }; createdAt: string; memo: string; objectType: 'qbd_transfer'; revisionNumber: string; sourceAccount: { id: string; fullName: string; }; sourceAccountBalance: string; targetAccount: { id: string; fullName: string; }; targetAccountBalance: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `amount: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `memo: string`\n - `objectType: 'qbd_transfer'`\n - `revisionNumber: string`\n - `sourceAccount: { id: string; fullName: string; }`\n - `sourceAccountBalance: string`\n - `targetAccount: { id: string; fullName: string; }`\n - `targetAccountBalance: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const transfer of conductor.qbd.transfers.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(transfer);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.transfers.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const transfer of conductor.qbd.transfers.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(transfer.id);\n}", }, python: { method: 'qbd.transfers.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.transfers.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/transfers \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/transfers/{id}', httpMethod: 'get', summary: 'Retrieve a transfer', description: 'Retrieves a transfer by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific transfers by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.transfers > (method) retrieve', qualified: 'client.qbd.transfers.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; amount: string; class: { id: string; fullName: string; }; createdAt: string; memo: string; objectType: 'qbd_transfer'; revisionNumber: string; sourceAccount: { id: string; fullName: string; }; sourceAccountBalance: string; targetAccount: { id: string; fullName: string; }; targetAccountBalance: string; transactionDate: string; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.transfers.retrieve(id: string, Conductor-End-User-Id: string): { id: string; amount: string; class: object; createdAt: string; memo: string; objectType: 'qbd_transfer'; revisionNumber: string; sourceAccount: object; sourceAccountBalance: string; targetAccount: object; targetAccountBalance: string; transactionDate: string; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/transfers/{id}`\n\nRetrieves a transfer by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific transfers by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the transfer to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; amount: string; class: { id: string; fullName: string; }; createdAt: string; memo: string; objectType: 'qbd_transfer'; revisionNumber: string; sourceAccount: { id: string; fullName: string; }; sourceAccountBalance: string; targetAccount: { id: string; fullName: string; }; targetAccountBalance: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `amount: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `memo: string`\n - `objectType: 'qbd_transfer'`\n - `revisionNumber: string`\n - `sourceAccount: { id: string; fullName: string; }`\n - `sourceAccountBalance: string`\n - `targetAccount: { id: string; fullName: string; }`\n - `targetAccountBalance: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst transfer = await conductor.qbd.transfers.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(transfer);\n```", perLanguage: { typescript: { method: 'client.qbd.transfers.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst transfer = await conductor.qbd.transfers.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(transfer.id);", }, python: { method: 'qbd.transfers.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ntransfer = conductor.qbd.transfers.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(transfer.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/transfers/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/transfers/{id}', httpMethod: 'post', summary: 'Update a transfer', description: 'Updates an existing transfer.', stainlessPath: '(resource) qbd.transfers > (method) update', qualified: 'client.qbd.transfers.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'amount?: string;', 'classId?: string;', 'memo?: string;', 'sourceAccountId?: string;', 'targetAccountId?: string;', 'transactionDate?: string;', ], response: "{ id: string; amount: string; class: { id: string; fullName: string; }; createdAt: string; memo: string; objectType: 'qbd_transfer'; revisionNumber: string; sourceAccount: { id: string; fullName: string; }; sourceAccountBalance: string; targetAccount: { id: string; fullName: string; }; targetAccountBalance: string; transactionDate: string; updatedAt: string; }", markdown: "## update\n\n`conductor.qbd.transfers.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, amount?: string, classId?: string, memo?: string, sourceAccountId?: string, targetAccountId?: string, transactionDate?: string): { id: string; amount: string; class: object; createdAt: string; memo: string; objectType: 'qbd_transfer'; revisionNumber: string; sourceAccount: object; sourceAccountBalance: string; targetAccount: object; targetAccountBalance: string; transactionDate: string; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/transfers/{id}`\n\nUpdates an existing transfer.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the transfer to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the transfer object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `amount?: string`\n The monetary amount of this transfer, represented as a decimal string.\n\nDecimal string format: exactly 2 decimal places when cents are included and up to 13 digits before the decimal point (for example, \"123.45\").\n\n- `classId?: string`\n The transfer's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `memo?: string`\n A memo or note for this transfer.\n\n- `sourceAccountId?: string`\n The account from which money will be transferred.\n\n- `targetAccountId?: string`\n The account to which money will be transferred.\n\n- `transactionDate?: string`\n The date of this transfer, in ISO 8601 format (YYYY-MM-DD).\n\n### Returns\n\n- `{ id: string; amount: string; class: { id: string; fullName: string; }; createdAt: string; memo: string; objectType: 'qbd_transfer'; revisionNumber: string; sourceAccount: { id: string; fullName: string; }; sourceAccountBalance: string; targetAccount: { id: string; fullName: string; }; targetAccountBalance: string; transactionDate: string; updatedAt: string; }`\n\n - `id: string`\n - `amount: string`\n - `class: { id: string; fullName: string; }`\n - `createdAt: string`\n - `memo: string`\n - `objectType: 'qbd_transfer'`\n - `revisionNumber: string`\n - `sourceAccount: { id: string; fullName: string; }`\n - `sourceAccountBalance: string`\n - `targetAccount: { id: string; fullName: string; }`\n - `targetAccountBalance: string`\n - `transactionDate: string`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst transfer = await conductor.qbd.transfers.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(transfer);\n```", perLanguage: { typescript: { method: 'client.qbd.transfers.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst transfer = await conductor.qbd.transfers.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(transfer.id);", }, python: { method: 'qbd.transfers.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\ntransfer = conductor.qbd.transfers.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(transfer.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/transfers/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "amount": "1000.00",\n "classId": "80000001-1234567890",\n "memo": "Monthly transfer to savings",\n "sourceAccountId": "80000001-1234567890",\n "targetAccountId": "80000001-1234567890",\n "transactionDate": "2024-10-01"\n }\'', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/unit-of-measure-sets', httpMethod: 'post', summary: 'Create an unit-of-measure set', description: 'Creates a new unit-of-measure set.\n\nNOTE: The QuickBooks company file must have unit-of-measure enabled (either a single unit per item or multiple units per item). To support both configurations, prefix all UOM set names with "By the" (for example, "By the Barrel"); otherwise, the set may not appear in the QuickBooks UI when the company file is configured for a single unit per item.', stainlessPath: '(resource) qbd.unit_of_measure_sets > (method) create', qualified: 'client.qbd.unitOfMeasureSets.create', params: [ 'baseUnit: { abbreviation: string; name: string; };', 'name: string;', "unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight';", 'Conductor-End-User-Id: string;', "defaultUnits?: { unit: string; unitUsedFor: 'purchase' | 'sales' | 'shipping'; }[];", 'isActive?: boolean;', 'relatedUnits?: { abbreviation: string; conversionRatio: string; name: string; }[];', ], response: "{ id: string; baseUnit: { abbreviation: string; name: string; }; createdAt: string; defaultUnits: { unit: string; unitUsedFor: 'purchase' | 'sales' | 'shipping'; }[]; isActive: boolean; name: string; objectType: 'qbd_unit_of_measure_set'; relatedUnits: { abbreviation: string; conversionRatio: string; name: string; }[]; revisionNumber: string; unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight'; updatedAt: string; }", markdown: "## create\n\n`conductor.qbd.unitOfMeasureSets.create(baseUnit: { abbreviation: string; name: string; }, name: string, unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight', Conductor-End-User-Id: string, defaultUnits?: { unit: string; unitUsedFor: 'purchase' | 'sales' | 'shipping'; }[], isActive?: boolean, relatedUnits?: { abbreviation: string; conversionRatio: string; name: string; }[]): { id: string; baseUnit: object; createdAt: string; defaultUnits: object[]; isActive: boolean; name: string; objectType: 'qbd_unit_of_measure_set'; relatedUnits: object[]; revisionNumber: string; unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight'; updatedAt: string; }`\n\n**post** `/quickbooks-desktop/unit-of-measure-sets`\n\nCreates a new unit-of-measure set.\n\nNOTE: The QuickBooks company file must have unit-of-measure enabled (either a single unit per item or multiple units per item). To support both configurations, prefix all UOM set names with \"By the\" (for example, \"By the Barrel\"); otherwise, the set may not appear in the QuickBooks UI when the company file is configured for a single unit per item.\n\n### Parameters\n\n- `baseUnit: { abbreviation: string; name: string; }`\n The unit-of-measure set's base unit used to track and price item quantities. If the company file is enabled for a single unit of measure per item, the base unit is the only unit available on transaction line items. If enabled for multiple units per item, the base unit is the default unless overridden by the set's default units.\n - `abbreviation: string`\n The base unit's short identifier shown in the QuickBooks U/M field on transaction line items.\n\nMaximum length: 31 characters.\n - `name: string`\n The case-insensitive unique name of this base unit, unique across all base units.\n\n**NOTE**: Base units do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `name: string`\n The case-insensitive unique name of this unit-of-measure set, unique across all unit-of-measure sets. To ensure this set appears in the QuickBooks UI for companies configured with a single unit per item, prefix the name with \"By the\" (e.g., \"By the Barrel\").\n\n**NOTE**: Unit-of-measure sets do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 31 characters.\n\n- `unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight'`\n The unit-of-measure set's type. Use \"other\" for a custom type defined in QuickBooks.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `defaultUnits?: { unit: string; unitUsedFor: 'purchase' | 'sales' | 'shipping'; }[]`\n The unit-of-measure set's default units to appear in the U/M field on transaction line items. You can specify separate defaults for purchases, sales, and shipping.\n\n- `isActive?: boolean`\n Indicates whether this unit-of-measure set is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `relatedUnits?: { abbreviation: string; conversionRatio: string; name: string; }[]`\n The unit-of-measure set's related units, each specifying how many base units they represent (conversion ratio).\n\n### Returns\n\n- `{ id: string; baseUnit: { abbreviation: string; name: string; }; createdAt: string; defaultUnits: { unit: string; unitUsedFor: 'purchase' | 'sales' | 'shipping'; }[]; isActive: boolean; name: string; objectType: 'qbd_unit_of_measure_set'; relatedUnits: { abbreviation: string; conversionRatio: string; name: string; }[]; revisionNumber: string; unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight'; updatedAt: string; }`\n\n - `id: string`\n - `baseUnit: { abbreviation: string; name: string; }`\n - `createdAt: string`\n - `defaultUnits: { unit: string; unitUsedFor: 'purchase' | 'sales' | 'shipping'; }[]`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_unit_of_measure_set'`\n - `relatedUnits: { abbreviation: string; conversionRatio: string; name: string; }[]`\n - `revisionNumber: string`\n - `unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight'`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst unitOfMeasureSet = await conductor.qbd.unitOfMeasureSets.create({\n baseUnit: { abbreviation: 'ea', name: 'Each' },\n name: 'Weight Units',\n unitOfMeasureType: 'count',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(unitOfMeasureSet);\n```", perLanguage: { typescript: { method: 'client.qbd.unitOfMeasureSets.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst unitOfMeasureSet = await conductor.qbd.unitOfMeasureSets.create({\n baseUnit: { abbreviation: 'ea', name: 'Each' },\n name: 'Weight Units',\n unitOfMeasureType: 'count',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(unitOfMeasureSet.id);", }, python: { method: 'qbd.unit_of_measure_sets.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nunit_of_measure_set = conductor.qbd.unit_of_measure_sets.create(\n base_unit={\n "abbreviation": "ea",\n "name": "Each",\n },\n name="Weight Units",\n unit_of_measure_type="count",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(unit_of_measure_set.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/unit-of-measure-sets \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "baseUnit": {\n "abbreviation": "ea",\n "name": "Each"\n },\n "name": "Weight Units",\n "unitOfMeasureType": "count",\n "isActive": true\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/unit-of-measure-sets', httpMethod: 'get', summary: 'List all unit-of-measure sets', description: 'Lists all unit-of-measure sets. NOTE: QuickBooks Desktop does not support pagination for unit-of-measure sets; hence, there is no cursor parameter. Users typically have few unit-of-measure sets.\n\nNOTE: The QuickBooks company file must have unit-of-measure enabled (either a single unit per item or multiple units per item).\n\n**NOTE:** QuickBooks Desktop does not support pagination for unit-of-measure sets; hence, there is no `cursor` parameter. Users typically have few unit-of-measure sets.', stainlessPath: '(resource) qbd.unit_of_measure_sets > (method) list', qualified: 'client.qbd.unitOfMeasureSets.list', params: [ 'Conductor-End-User-Id: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ data: { id: string; baseUnit: object; createdAt: string; defaultUnits: object[]; isActive: boolean; name: string; objectType: 'qbd_unit_of_measure_set'; relatedUnits: object[]; revisionNumber: string; unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight'; updatedAt: string; }[]; objectType: 'list'; url: string; }", markdown: "## list\n\n`conductor.qbd.unitOfMeasureSets.list(Conductor-End-User-Id: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', updatedAfter?: string, updatedBefore?: string): { data: unit_of_measure_set[]; objectType: 'list'; url: string; }`\n\n**get** `/quickbooks-desktop/unit-of-measure-sets`\n\nLists all unit-of-measure sets. NOTE: QuickBooks Desktop does not support pagination for unit-of-measure sets; hence, there is no cursor parameter. Users typically have few unit-of-measure sets.\n\nNOTE: The QuickBooks company file must have unit-of-measure enabled (either a single unit per item or multiple units per item).\n\n**NOTE:** QuickBooks Desktop does not support pagination for unit-of-measure sets; hence, there is no `cursor` parameter. Users typically have few unit-of-measure sets.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `ids?: string[]`\n Filter for specific unit-of-measure sets by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return.\n\n**IMPORTANT**: QuickBooks Desktop does not support cursor-based pagination for unit-of-measure sets. This parameter will limit the response size, but you cannot fetch subsequent results using a cursor. For pagination, use the name-range parameters instead (e.g., `nameFrom=A&nameTo=B`).\n\nWhen this parameter is omitted, the endpoint returns all unit-of-measure sets without limit, unlike paginated endpoints which default to 150 records. This is acceptable because unit-of-measure sets typically have low record counts.\n\n- `nameContains?: string`\n Filter for unit-of-measure sets whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for unit-of-measure sets whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for unit-of-measure sets whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific unit-of-measure sets by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for an unit-of-measure set.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for unit-of-measure sets whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for unit-of-measure sets whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for unit-of-measure sets that are active, inactive, or both.\n\n- `updatedAfter?: string`\n Filter for unit-of-measure sets updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for unit-of-measure sets updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ data: { id: string; baseUnit: object; createdAt: string; defaultUnits: object[]; isActive: boolean; name: string; objectType: 'qbd_unit_of_measure_set'; relatedUnits: object[]; revisionNumber: string; unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight'; updatedAt: string; }[]; objectType: 'list'; url: string; }`\n\n - `data: { id: string; baseUnit: { abbreviation: string; name: string; }; createdAt: string; defaultUnits: { unit: string; unitUsedFor: 'purchase' | 'sales' | 'shipping'; }[]; isActive: boolean; name: string; objectType: 'qbd_unit_of_measure_set'; relatedUnits: { abbreviation: string; conversionRatio: string; name: string; }[]; revisionNumber: string; unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight'; updatedAt: string; }[]`\n - `objectType: 'list'`\n - `url: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst unitOfMeasureSets = await conductor.qbd.unitOfMeasureSets.list({ conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(unitOfMeasureSets);\n```", perLanguage: { typescript: { method: 'client.qbd.unitOfMeasureSets.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst unitOfMeasureSets = await conductor.qbd.unitOfMeasureSets.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(unitOfMeasureSets.data);", }, python: { method: 'qbd.unit_of_measure_sets.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nunit_of_measure_sets = conductor.qbd.unit_of_measure_sets.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(unit_of_measure_sets.data)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/unit-of-measure-sets \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/unit-of-measure-sets/{id}', httpMethod: 'get', summary: 'Retrieve an unit-of-measure set', description: 'Retrieves an unit-of-measure set by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific unit-of-measure sets by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.unit_of_measure_sets > (method) retrieve', qualified: 'client.qbd.unitOfMeasureSets.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; baseUnit: { abbreviation: string; name: string; }; createdAt: string; defaultUnits: { unit: string; unitUsedFor: 'purchase' | 'sales' | 'shipping'; }[]; isActive: boolean; name: string; objectType: 'qbd_unit_of_measure_set'; relatedUnits: { abbreviation: string; conversionRatio: string; name: string; }[]; revisionNumber: string; unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight'; updatedAt: string; }", markdown: "## retrieve\n\n`conductor.qbd.unitOfMeasureSets.retrieve(id: string, Conductor-End-User-Id: string): { id: string; baseUnit: object; createdAt: string; defaultUnits: object[]; isActive: boolean; name: string; objectType: 'qbd_unit_of_measure_set'; relatedUnits: object[]; revisionNumber: string; unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight'; updatedAt: string; }`\n\n**get** `/quickbooks-desktop/unit-of-measure-sets/{id}`\n\nRetrieves an unit-of-measure set by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific unit-of-measure sets by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the unit-of-measure set to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; baseUnit: { abbreviation: string; name: string; }; createdAt: string; defaultUnits: { unit: string; unitUsedFor: 'purchase' | 'sales' | 'shipping'; }[]; isActive: boolean; name: string; objectType: 'qbd_unit_of_measure_set'; relatedUnits: { abbreviation: string; conversionRatio: string; name: string; }[]; revisionNumber: string; unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight'; updatedAt: string; }`\n\n - `id: string`\n - `baseUnit: { abbreviation: string; name: string; }`\n - `createdAt: string`\n - `defaultUnits: { unit: string; unitUsedFor: 'purchase' | 'sales' | 'shipping'; }[]`\n - `isActive: boolean`\n - `name: string`\n - `objectType: 'qbd_unit_of_measure_set'`\n - `relatedUnits: { abbreviation: string; conversionRatio: string; name: string; }[]`\n - `revisionNumber: string`\n - `unitOfMeasureType: 'area' | 'count' | 'length' | 'other' | 'time' | 'volume' | 'weight'`\n - `updatedAt: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst unitOfMeasureSet = await conductor.qbd.unitOfMeasureSets.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(unitOfMeasureSet);\n```", perLanguage: { typescript: { method: 'client.qbd.unitOfMeasureSets.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst unitOfMeasureSet = await conductor.qbd.unitOfMeasureSets.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(unitOfMeasureSet.id);", }, python: { method: 'qbd.unit_of_measure_sets.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nunit_of_measure_set = conductor.qbd.unit_of_measure_sets.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(unit_of_measure_set.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/unit-of-measure-sets/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/vendor-credits', httpMethod: 'post', summary: 'Create a vendor credit', description: 'Creates a vendor credit to capture returns, rebates, or other amounts a vendor owes so you can apply the credit when recording future bill payments.', stainlessPath: '(resource) qbd.vendor_credits > (method) create', qualified: 'client.qbd.vendorCredits.create', params: [ 'transactionDate: string;', 'vendorId: string;', 'Conductor-End-User-Id: string;', 'exchangeRate?: number;', "expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[];", 'externalId?: string;', 'itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[];', "itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'payablesAccountId?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', ], response: "{ id: string; createdAt: string; creditAmount: string; creditAmountInHomeCurrency: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_vendor_credit'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; vendor: object; }", markdown: "## create\n\n`conductor.qbd.vendorCredits.create(transactionDate: string, vendorId: string, Conductor-End-User-Id: string, exchangeRate?: number, expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[], externalId?: string, itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[], itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], memo?: string, payablesAccountId?: string, refNumber?: string, salesTaxCodeId?: string): { id: string; createdAt: string; creditAmount: string; creditAmountInHomeCurrency: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_vendor_credit'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**post** `/quickbooks-desktop/vendor-credits`\n\nCreates a vendor credit to capture returns, rebates, or other amounts a vendor owes so you can apply the credit when recording future bill payments.\n\n### Parameters\n\n- `transactionDate: string`\n The date of this vendor credit, in ISO 8601 format (YYYY-MM-DD).\n\n- `vendorId: string`\n The vendor who sent this vendor credit for goods or services purchased.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `exchangeRate?: number`\n The market exchange rate between this vendor credit's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expenseLines?: { accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[]`\n The vendor credit's expense lines, each representing one line in this expense.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `itemGroupLines?: { itemGroupId: string; customFields?: { name: string; ownerId: string; value: string; }[]; inventorySiteId?: string; inventorySiteLocationId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The vendor credit's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.\n\n- `itemLines?: { amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; customFields?: { name: string; ownerId: string; value: string; }[]; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; linkToTransactionLine?: { transactionId: string; transactionLineId: string; }; lotNumber?: string; overrideItemAccountId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The vendor credit's item lines, each representing the purchase of a specific item or service.\n\n- `memo?: string`\n A memo or note for this vendor credit.\n\n- `payablesAccountId?: string`\n The Accounts-Payable (A/P) account to which this vendor credit is assigned, used for accounts-payable tracking. If omitted, QuickBooks Desktop uses the default A/P account configured in the company file.\n\n**IMPORTANT**: If this vendor credit is linked to other transactions, this A/P account must match the `payablesAccount` used in those other transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this vendor credit, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. When left blank in this create request, this field will be left blank in QuickBooks (i.e., it does *not* auto-increment).\n\nMaximum length: 20 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this vendor credit, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the vendor. This can be overridden on the vendor credit's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n### Returns\n\n- `{ id: string; createdAt: string; creditAmount: string; creditAmountInHomeCurrency: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_vendor_credit'; openAmount: string; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `createdAt: string`\n - `creditAmount: string`\n - `creditAmountInHomeCurrency: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_vendor_credit'`\n - `openAmount: string`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst vendorCredit = await conductor.qbd.vendorCredits.create({\n transactionDate: '2024-10-01',\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(vendorCredit);\n```", perLanguage: { typescript: { method: 'client.qbd.vendorCredits.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst vendorCredit = await conductor.qbd.vendorCredits.create({\n transactionDate: '2024-10-01',\n vendorId: '80000001-1234567890',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(vendorCredit.id);", }, python: { method: 'qbd.vendor_credits.create', example: 'import os\nfrom datetime import date\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nvendor_credit = conductor.qbd.vendor_credits.create(\n transaction_date=date.fromisoformat("2024-10-01"),\n vendor_id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(vendor_credit.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/vendor-credits \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "transactionDate": "2024-10-01",\n "vendorId": "80000001-1234567890",\n "exchangeRate": 1.2345,\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "memo": "Credit for returned merchandise - Invoice INV-1234",\n "payablesAccountId": "80000001-1234567890",\n "refNumber": "VCREDIT-1234",\n "salesTaxCodeId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/vendor-credits', httpMethod: 'get', summary: 'List all vendor credits', description: 'Returns a list of vendor credits. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.vendor_credits > (method) list', qualified: 'client.qbd.vendorCredits.list', params: [ 'Conductor-End-User-Id: string;', 'accountIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'ids?: string[];', 'includeLineItems?: boolean;', 'includeLinkedTransactions?: boolean;', 'limit?: number;', 'refNumberContains?: string;', 'refNumberEndsWith?: string;', 'refNumberFrom?: string;', 'refNumbers?: string[];', 'refNumberStartsWith?: string;', 'refNumberTo?: string;', 'transactionDateFrom?: string;', 'transactionDateTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', 'vendorIds?: string[];', ], response: "{ id: string; createdAt: string; creditAmount: string; creditAmountInHomeCurrency: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_vendor_credit'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; vendor: object; }", markdown: "## list\n\n`conductor.qbd.vendorCredits.list(Conductor-End-User-Id: string, accountIds?: string[], currencyIds?: string[], cursor?: string, ids?: string[], includeLineItems?: boolean, includeLinkedTransactions?: boolean, limit?: number, refNumberContains?: string, refNumberEndsWith?: string, refNumberFrom?: string, refNumbers?: string[], refNumberStartsWith?: string, refNumberTo?: string, transactionDateFrom?: string, transactionDateTo?: string, updatedAfter?: string, updatedBefore?: string, vendorIds?: string[]): { id: string; createdAt: string; creditAmount: string; creditAmountInHomeCurrency: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_vendor_credit'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**get** `/quickbooks-desktop/vendor-credits`\n\nReturns a list of vendor credits. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountIds?: string[]`\n Filter for vendor credits associated with these accounts.\n\n- `currencyIds?: string[]`\n Filter for vendor credits in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific vendor credits by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `includeLineItems?: boolean`\n Whether to include line items in the response. Defaults to `true`.\n\n- `includeLinkedTransactions?: boolean`\n Whether to include linked transactions in the response. Defaults to `false`. For example, a payment linked to the corresponding vendor credit.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `refNumberContains?: string`\n Filter for vendor credits whose `refNumber` contains this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberStartsWith` or `refNumberEndsWith`.\n\n- `refNumberEndsWith?: string`\n Filter for vendor credits whose `refNumber` ends with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberStartsWith`.\n\n- `refNumberFrom?: string`\n Filter for vendor credits whose `refNumber` is greater than or equal to this value. If omitted, the range will begin with the first number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `refNumbers?: string[]`\n Filter for specific vendor credits by their ref-number(s), case-sensitive. In QuickBooks, ref-numbers are not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `refNumberStartsWith?: string`\n Filter for vendor credits whose `refNumber` starts with this substring.\n\n**NOTE**: If you use this parameter, you cannot also use `refNumberContains` or `refNumberEndsWith`.\n\n- `refNumberTo?: string`\n Filter for vendor credits whose `refNumber` is less than or equal to this value. If omitted, the range will end with the last number of the list. Uses a numerical comparison for values that contain only digits; otherwise, uses a lexicographical comparison.\n\n- `transactionDateFrom?: string`\n Filter for vendor credits whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n\n- `transactionDateTo?: string`\n Filter for vendor credits whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n\n- `updatedAfter?: string`\n Filter for vendor credits updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for vendor credits updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `vendorIds?: string[]`\n Filter for vendor credits received from these vendors. These are the vendors who owe the QuickBooks user money.\n\n### Returns\n\n- `{ id: string; createdAt: string; creditAmount: string; creditAmountInHomeCurrency: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_vendor_credit'; openAmount: string; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `createdAt: string`\n - `creditAmount: string`\n - `creditAmountInHomeCurrency: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_vendor_credit'`\n - `openAmount: string`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const vendorCredit of conductor.qbd.vendorCredits.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(vendorCredit);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.vendorCredits.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const vendorCredit of conductor.qbd.vendorCredits.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(vendorCredit.id);\n}", }, python: { method: 'qbd.vendor_credits.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.vendor_credits.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/vendor-credits \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/vendor-credits/{id}', httpMethod: 'get', summary: 'Retrieve a vendor credit', description: 'Retrieves a vendor credit by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific vendor credits by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.', stainlessPath: '(resource) qbd.vendor_credits > (method) retrieve', qualified: 'client.qbd.vendorCredits.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; creditAmount: string; creditAmountInHomeCurrency: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_vendor_credit'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; vendor: object; }", markdown: "## retrieve\n\n`conductor.qbd.vendorCredits.retrieve(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; creditAmount: string; creditAmountInHomeCurrency: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_vendor_credit'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**get** `/quickbooks-desktop/vendor-credits/{id}`\n\nRetrieves a vendor credit by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific vendor credits by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\nNOTE: The response automatically includes any linked transactions.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the vendor credit to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; creditAmount: string; creditAmountInHomeCurrency: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_vendor_credit'; openAmount: string; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `createdAt: string`\n - `creditAmount: string`\n - `creditAmountInHomeCurrency: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_vendor_credit'`\n - `openAmount: string`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst vendorCredit = await conductor.qbd.vendorCredits.retrieve('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(vendorCredit);\n```", perLanguage: { typescript: { method: 'client.qbd.vendorCredits.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst vendorCredit = await conductor.qbd.vendorCredits.retrieve('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(vendorCredit.id);", }, python: { method: 'qbd.vendor_credits.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nvendor_credit = conductor.qbd.vendor_credits.retrieve(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(vendor_credit.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/vendor-credits/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/vendor-credits/{id}', httpMethod: 'post', summary: 'Update a vendor credit', description: 'Updates a vendor credit before you apply it to bills, letting you adjust the amounts, memo, or line allocations that make up the credit.\n\n**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.', stainlessPath: '(resource) qbd.vendor_credits > (method) update', qualified: 'client.qbd.vendorCredits.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'clearExpenseLines?: boolean;', 'clearItemLines?: boolean;', 'exchangeRate?: number;', "expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[];", "itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[];", "itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[];", 'memo?: string;', 'payablesAccountId?: string;', 'refNumber?: string;', 'salesTaxCodeId?: string;', 'transactionDate?: string;', 'vendorId?: string;', ], response: "{ id: string; createdAt: string; creditAmount: string; creditAmountInHomeCurrency: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_vendor_credit'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; vendor: object; }", markdown: "## update\n\n`conductor.qbd.vendorCredits.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, clearExpenseLines?: boolean, clearItemLines?: boolean, exchangeRate?: number, expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[], itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[], itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[], memo?: string, payablesAccountId?: string, refNumber?: string, salesTaxCodeId?: string, transactionDate?: string, vendorId?: string): { id: string; createdAt: string; creditAmount: string; creditAmountInHomeCurrency: string; currency: object; customFields: object[]; exchangeRate: number; expenseLines: object[]; externalId: string; itemGroupLines: object[]; itemLines: object[]; linkedTransactions: object[]; memo: string; objectType: 'qbd_vendor_credit'; openAmount: string; payablesAccount: object; refNumber: string; revisionNumber: string; salesTaxCode: object; transactionDate: string; updatedAt: string; vendor: object; }`\n\n**post** `/quickbooks-desktop/vendor-credits/{id}`\n\nUpdates a vendor credit before you apply it to bills, letting you adjust the amounts, memo, or line allocations that make up the credit.\n\n**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: \"-1\"` for new lines.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the vendor credit to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the vendor credit object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `clearExpenseLines?: boolean`\n When `true`, removes all existing expense lines associated with this vendor credit. To modify or add individual expense lines, use the field `expenseLines` instead.\n\n- `clearItemLines?: boolean`\n When `true`, removes all existing item lines associated with this vendor credit. To modify or add individual item lines, use the field `itemLines` instead.\n\n- `exchangeRate?: number`\n The market exchange rate between this vendor credit's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).\n\n- `expenseLines?: { id: string; accountId?: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; memo?: string; payeeId?: string; salesRepresentativeId?: string; salesTaxCodeId?: string; }[]`\n The vendor credit's expense lines, each representing one line in this expense.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing expense lines for the vendor credit with this array. To keep any existing expense lines, you must include them in this array even if they have not changed. **Any expense lines not included will be removed.**\n\n2. To add a new expense line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any expense lines, omit this field entirely to keep them unchanged.\n\n- `itemGroupLines?: { id: string; itemGroupId?: string; itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]; overrideUnitOfMeasureSetId?: string; quantity?: number; unitOfMeasure?: string; }[]`\n The vendor credit's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item group lines for the vendor credit with this array. To keep any existing item group lines, you must include them in this array even if they have not changed. **Any item group lines not included will be removed.**\n\n2. To add a new item group line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item group lines, omit this field entirely to keep them unchanged.\n\n- `itemLines?: { id: string; amount?: string; billingStatus?: 'billable' | 'has_been_billed' | 'not_billable'; classId?: string; cost?: string; customerId?: string; description?: string; expirationDate?: string; inventorySiteId?: string; inventorySiteLocationId?: string; itemId?: string; lotNumber?: string; overrideItemAccountId?: string; overrideUnitOfMeasureSetId?: string; quantity?: number; salesRepresentativeId?: string; salesTaxCodeId?: string; serialNumber?: string; unitOfMeasure?: string; }[]`\n The vendor credit's item lines, each representing the purchase of a specific item or service.\n\n**IMPORTANT**:\n\n1. Including this array in your update request will **REPLACE** all existing item lines for the vendor credit with this array. To keep any existing item lines, you must include them in this array even if they have not changed. **Any item lines not included will be removed.**\n\n2. To add a new item line, include it here with the `id` field set to `-1`.\n\n3. If you do not wish to modify any item lines, omit this field entirely to keep them unchanged.\n\n- `memo?: string`\n A memo or note for this vendor credit.\n\n- `payablesAccountId?: string`\n The Accounts-Payable (A/P) account to which this vendor credit is assigned, used for accounts-payable tracking. If omitted, QuickBooks Desktop uses the default A/P account configured in the company file.\n\n**IMPORTANT**: If this vendor credit is linked to other transactions, this A/P account must match the `payablesAccount` used in those other transactions.\n\n- `refNumber?: string`\n The case-sensitive user-defined reference number for this vendor credit, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.\n\nMaximum length: 20 characters.\n\n- `salesTaxCodeId?: string`\n The sales-tax code for this vendor credit, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the vendor. This can be overridden on the vendor credit's individual lines.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `transactionDate?: string`\n The date of this vendor credit, in ISO 8601 format (YYYY-MM-DD).\n\n- `vendorId?: string`\n The vendor who sent this vendor credit for goods or services purchased.\n\n### Returns\n\n- `{ id: string; createdAt: string; creditAmount: string; creditAmountInHomeCurrency: string; currency: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; exchangeRate: number; expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]; externalId: string; itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: object; cost: string; customer: object; customFields: object[]; description: string; expirationDate: string; inventorySite: object; inventorySiteLocation: object; item: object; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: object; quantity: number; salesRepresentative: object; salesTaxCode: object; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]; memo: string; objectType: 'qbd_vendor_credit'; openAmount: string; payablesAccount: { id: string; fullName: string; }; refNumber: string; revisionNumber: string; salesTaxCode: { id: string; fullName: string; }; transactionDate: string; updatedAt: string; vendor: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `createdAt: string`\n - `creditAmount: string`\n - `creditAmountInHomeCurrency: string`\n - `currency: { id: string; fullName: string; }`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `exchangeRate: number`\n - `expenseLines: { id: string; account: { id: string; fullName: string; }; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; memo: string; objectType: 'qbd_expense_line'; payee: { id: string; fullName: string; }; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; }[]`\n - `externalId: string`\n - `itemGroupLines: { id: string; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; itemGroup: { id: string; fullName: string; }; itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]; objectType: 'qbd_item_group_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; totalAmount: string; unitOfMeasure: string; }[]`\n - `itemLines: { id: string; amount: string; billingStatus: 'billable' | 'has_been_billed' | 'not_billable'; class: { id: string; fullName: string; }; cost: string; customer: { id: string; fullName: string; }; customFields: { name: string; ownerId: string; type: string; value: string; }[]; description: string; expirationDate: string; inventorySite: { id: string; fullName: string; }; inventorySiteLocation: { id: string; fullName: string; }; item: { id: string; fullName: string; }; lotNumber: string; objectType: 'qbd_item_line'; overrideUnitOfMeasureSet: { id: string; fullName: string; }; quantity: number; salesRepresentative: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; serialNumber: string; unitOfMeasure: string; }[]`\n - `linkedTransactions: { id: string; amount: string; linkType: 'amount' | 'quantity'; objectType: 'qbd_linked_transaction'; refNumber: string; transactionDate: string; transactionType: string; }[]`\n - `memo: string`\n - `objectType: 'qbd_vendor_credit'`\n - `openAmount: string`\n - `payablesAccount: { id: string; fullName: string; }`\n - `refNumber: string`\n - `revisionNumber: string`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `transactionDate: string`\n - `updatedAt: string`\n - `vendor: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst vendorCredit = await conductor.qbd.vendorCredits.update('123ABC-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(vendorCredit);\n```", perLanguage: { typescript: { method: 'client.qbd.vendorCredits.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst vendorCredit = await conductor.qbd.vendorCredits.update('123ABC-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(vendorCredit.id);", }, python: { method: 'qbd.vendor_credits.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nvendor_credit = conductor.qbd.vendor_credits.update(\n id="123ABC-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(vendor_credit.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/vendor-credits/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "clearExpenseLines": false,\n "clearItemLines": false,\n "exchangeRate": 1.2345,\n "memo": "Credit for returned merchandise - Invoice INV-1234",\n "payablesAccountId": "80000001-1234567890",\n "refNumber": "VCREDIT-1234",\n "salesTaxCodeId": "80000001-1234567890",\n "transactionDate": "2024-10-01",\n "vendorId": "80000001-1234567890"\n }\'', }, }, }, { name: 'void', endpoint: '/quickbooks-desktop/vendor-credits/{id}/void', httpMethod: 'post', summary: 'Void a vendor credit', description: 'Voids a vendor credit by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the vendor credit is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.vendor_credits > (method) void', qualified: 'client.qbd.vendorCredits.void', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; createdAt: string; objectType: 'qbd_vendor_credit'; refNumber: string; updatedAt: string; voided: boolean; }", markdown: "## void\n\n`conductor.qbd.vendorCredits.void(id: string, Conductor-End-User-Id: string): { id: string; createdAt: string; objectType: 'qbd_vendor_credit'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n**post** `/quickbooks-desktop/vendor-credits/{id}/void`\n\nVoids a vendor credit by setting its amount to zero while keeping a record of it in QuickBooks. The void will fail if the vendor credit is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the vendor credit to void.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; createdAt: string; objectType: 'qbd_vendor_credit'; refNumber: string; updatedAt: string; voided: boolean; }`\n\n - `id: string`\n - `createdAt: string`\n - `objectType: 'qbd_vendor_credit'`\n - `refNumber: string`\n - `updatedAt: string`\n - `voided: boolean`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst response = await conductor.qbd.vendorCredits.void('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(response);\n```", perLanguage: { typescript: { method: 'client.qbd.vendorCredits.void', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst response = await conductor.qbd.vendorCredits.void('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(response.id);", }, python: { method: 'qbd.vendor_credits.void', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nresponse = conductor.qbd.vendor_credits.void(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(response.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/vendor-credits/$ID/void \\\n -X POST \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'delete', endpoint: '/quickbooks-desktop/vendor-credits/{id}', httpMethod: 'delete', summary: 'Delete a vendor credit', description: 'Permanently deletes a vendor credit. The deletion will fail if the vendor credit is currently in use or has any linked transactions that are in use.', stainlessPath: '(resource) qbd.vendor_credits > (method) delete', qualified: 'client.qbd.vendorCredits.delete', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; deleted: boolean; objectType: 'qbd_vendor_credit'; refNumber: string; }", markdown: "## delete\n\n`conductor.qbd.vendorCredits.delete(id: string, Conductor-End-User-Id: string): { id: string; deleted: boolean; objectType: 'qbd_vendor_credit'; refNumber: string; }`\n\n**delete** `/quickbooks-desktop/vendor-credits/{id}`\n\nPermanently deletes a vendor credit. The deletion will fail if the vendor credit is currently in use or has any linked transactions that are in use.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the vendor credit to delete.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; deleted: boolean; objectType: 'qbd_vendor_credit'; refNumber: string; }`\n\n - `id: string`\n - `deleted: boolean`\n - `objectType: 'qbd_vendor_credit'`\n - `refNumber: string`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst vendorCredit = await conductor.qbd.vendorCredits.delete('123ABC-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(vendorCredit);\n```", perLanguage: { typescript: { method: 'client.qbd.vendorCredits.delete', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst vendorCredit = await conductor.qbd.vendorCredits.delete('123ABC-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(vendorCredit.id);", }, python: { method: 'qbd.vendor_credits.delete', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nvendor_credit = conductor.qbd.vendor_credits.delete(\n id="123ABC-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(vendor_credit.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/vendor-credits/$ID \\\n -X DELETE \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'create', endpoint: '/quickbooks-desktop/vendors', httpMethod: 'post', summary: 'Create a vendor', description: 'Creates a new vendor.', stainlessPath: '(resource) qbd.vendors > (method) create', qualified: 'client.qbd.vendors.create', params: [ 'name: string;', 'Conductor-End-User-Id: string;', 'accountNumber?: string;', 'additionalContacts?: { firstName: string; customContactFields?: { name: string; value: string; }[]; jobTitle?: string; lastName?: string; middleName?: string; salutation?: string; }[];', 'additionalNotes?: { note: string; }[];', 'alternateContact?: string;', 'alternatePhone?: string;', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'billingRateId?: string;', 'ccEmail?: string;', 'classId?: string;', 'companyName?: string;', 'contact?: string;', 'creditLimit?: string;', 'currencyId?: string;', 'customContactFields?: { name: string; value: string; }[];', 'defaultExpenseAccountIds?: string[];', 'email?: string;', 'externalId?: string;', 'fax?: string;', 'firstName?: string;', 'isActive?: boolean;', 'isCompoundingTax?: boolean;', 'isEligibleFor1099?: boolean;', 'isSalesTaxAgency?: boolean;', 'isTrackingPurchaseTax?: boolean;', 'isTrackingSalesTax?: boolean;', 'jobTitle?: string;', 'lastName?: string;', 'middleName?: string;', 'nameOnCheck?: string;', 'note?: string;', 'openingBalance?: string;', 'openingBalanceDate?: string;', 'phone?: string;', 'purchaseTaxAccountId?: string;', "reportingPeriod?: 'monthly' | 'quarterly';", 'salesTaxAccountId?: string;', 'salesTaxCodeId?: string;', "salesTaxCountry?: 'australia' | 'canada' | 'uk' | 'us';", 'salesTaxReturnId?: string;', 'salutation?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'taxIdentificationNumber?: string;', 'taxRegistrationNumber?: string;', 'termsId?: string;', 'vendorTypeId?: string;', ], response: "{ id: string; accountNumber: string; additionalContacts: object[]; additionalNotes: object[]; alternateContact: string; alternatePhone: string; balance: string; billingAddress: object; billingRate: object; ccEmail: string; class: object; companyName: string; contact: string; createdAt: string; creditLimit: string; currency: object; customContactFields: object[]; customFields: object[]; defaultExpenseAccounts: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; isCompoundingTax: boolean; isEligibleFor1099: boolean; isSalesTaxAgency: boolean; isTrackingPurchaseTax: boolean; isTrackingSalesTax: boolean; jobTitle: string; lastName: string; middleName: string; name: string; nameOnCheck: string; note: string; objectType: 'qbd_vendor'; phone: string; purchaseTaxAccount: object; reportingPeriod: 'monthly' | 'quarterly' | 'annual'; revisionNumber: string; salesTaxAccount: object; salesTaxCode: object; salesTaxCountry: string; salesTaxReturn: object; salutation: string; shippingAddress: object; taxIdentificationNumber: string; taxRegistrationNumber: string; terms: object; updatedAt: string; vendorType: object; }", markdown: "## create\n\n`conductor.qbd.vendors.create(name: string, Conductor-End-User-Id: string, accountNumber?: string, additionalContacts?: { firstName: string; customContactFields?: { name: string; value: string; }[]; jobTitle?: string; lastName?: string; middleName?: string; salutation?: string; }[], additionalNotes?: { note: string; }[], alternateContact?: string, alternatePhone?: string, billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, billingRateId?: string, ccEmail?: string, classId?: string, companyName?: string, contact?: string, creditLimit?: string, currencyId?: string, customContactFields?: { name: string; value: string; }[], defaultExpenseAccountIds?: string[], email?: string, externalId?: string, fax?: string, firstName?: string, isActive?: boolean, isCompoundingTax?: boolean, isEligibleFor1099?: boolean, isSalesTaxAgency?: boolean, isTrackingPurchaseTax?: boolean, isTrackingSalesTax?: boolean, jobTitle?: string, lastName?: string, middleName?: string, nameOnCheck?: string, note?: string, openingBalance?: string, openingBalanceDate?: string, phone?: string, purchaseTaxAccountId?: string, reportingPeriod?: 'monthly' | 'quarterly', salesTaxAccountId?: string, salesTaxCodeId?: string, salesTaxCountry?: 'australia' | 'canada' | 'uk' | 'us', salesTaxReturnId?: string, salutation?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, taxIdentificationNumber?: string, taxRegistrationNumber?: string, termsId?: string, vendorTypeId?: string): { id: string; accountNumber: string; additionalContacts: object[]; additionalNotes: object[]; alternateContact: string; alternatePhone: string; balance: string; billingAddress: object; billingRate: object; ccEmail: string; class: object; companyName: string; contact: string; createdAt: string; creditLimit: string; currency: object; customContactFields: object[]; customFields: object[]; defaultExpenseAccounts: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; isCompoundingTax: boolean; isEligibleFor1099: boolean; isSalesTaxAgency: boolean; isTrackingPurchaseTax: boolean; isTrackingSalesTax: boolean; jobTitle: string; lastName: string; middleName: string; name: string; nameOnCheck: string; note: string; objectType: 'qbd_vendor'; phone: string; purchaseTaxAccount: object; reportingPeriod: 'monthly' | 'quarterly' | 'annual'; revisionNumber: string; salesTaxAccount: object; salesTaxCode: object; salesTaxCountry: string; salesTaxReturn: object; salutation: string; shippingAddress: object; taxIdentificationNumber: string; taxRegistrationNumber: string; terms: object; updatedAt: string; vendorType: object; }`\n\n**post** `/quickbooks-desktop/vendors`\n\nCreates a new vendor.\n\n### Parameters\n\n- `name: string`\n The case-insensitive unique name of this vendor, unique across all vendors.\n\n**NOTE**: Vendors do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 41 characters.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountNumber?: string`\n The vendor's account number, which appears in the QuickBooks chart of accounts, reports, and graphs.\n\nNote that if the \"Use Account Numbers\" preference is turned off in QuickBooks, the account number may not be visible in the user interface, but it can still be set and retrieved through the API.\n\n- `additionalContacts?: { firstName: string; customContactFields?: { name: string; value: string; }[]; jobTitle?: string; lastName?: string; middleName?: string; salutation?: string; }[]`\n Additional alternate contacts for this vendor.\n\n- `additionalNotes?: { note: string; }[]`\n Additional notes about this vendor.\n\n- `alternateContact?: string`\n The name of a alternate contact person for this vendor.\n\n- `alternatePhone?: string`\n The vendor's alternate telephone number.\n\nMaximum length: 21 characters.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The vendor's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `billingRateId?: string`\n The vendor's billing rate, used to override service item rates in time tracking activities.\n\n- `ccEmail?: string`\n An email address to carbon copy (CC) on communications with this vendor.\n\n- `classId?: string`\n The vendor's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `companyName?: string`\n The name of the company associated with this vendor. This name is used on invoices, checks, and other forms.\n\nMaximum length: 41 characters.\n\n- `contact?: string`\n The name of the primary contact person for this vendor.\n\n- `creditLimit?: string`\n The vendor's credit limit, represented as a decimal string. This is the maximum amount of money that can be spent being before billed by this vendor. If `null`, there is no credit limit.\n\n- `currencyId?: string`\n The vendor's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.\n\n- `customContactFields?: { name: string; value: string; }[]`\n Additional custom contact fields for this vendor, such as phone numbers or email addresses.\n\n- `defaultExpenseAccountIds?: string[]`\n The expense accounts to prefill when entering bills for this vendor.\n\n- `email?: string`\n The vendor's email address.\n\n- `externalId?: string`\n A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.\n\n**IMPORTANT**: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.\n\n- `fax?: string`\n The vendor's fax number.\n\nMaximum length: 21 characters.\n\n- `firstName?: string`\n The first name of the contact person for this vendor.\n\nMaximum length: 25 characters.\n\n- `isActive?: boolean`\n Indicates whether this vendor is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `isCompoundingTax?: boolean`\n Indicates whether tax is charged on top of tax for this vendor, for use in Canada or the UK.\n\n- `isEligibleFor1099?: boolean`\n Indicates whether this vendor is eligible to receive a 1099 form for tax reporting purposes. When `true`, then the fields `taxId` and `billingAddress` are required.\n\n- `isSalesTaxAgency?: boolean`\n Indicates whether this vendor is a sales tax agency.\n\n- `isTrackingPurchaseTax?: boolean`\n Indicates whether tax is tracked on purchases for this vendor, for use in Canada or the UK.\n\n- `isTrackingSalesTax?: boolean`\n Indicates whether tax is tracked on sales for this vendor, for use in Canada or the UK.\n\n- `jobTitle?: string`\n The job title of the contact person for this vendor.\n\n- `lastName?: string`\n The last name of the contact person for this vendor.\n\nMaximum length: 25 characters.\n\n- `middleName?: string`\n The middle name of the contact person for this vendor.\n\nMaximum length: 5 characters.\n\n- `nameOnCheck?: string`\n The vendor's name as it should appear on checks issued to this vendor.\n\nMaximum length: 41 characters.\n\n- `note?: string`\n A note or comment about this vendor.\n\n- `openingBalance?: string`\n The opening balance of this vendor's account, indicating the amount owed to this vendor, represented as a decimal string.\n\n- `openingBalanceDate?: string`\n The date of the opening balance of this vendor, in ISO 8601 format (YYYY-MM-DD).\n\n- `phone?: string`\n The vendor's primary telephone number.\n\nMaximum length: 21 characters.\n\n- `purchaseTaxAccountId?: string`\n The account used for tracking taxes on purchases for this vendor, for use in Canada or the UK.\n\n- `reportingPeriod?: 'monthly' | 'quarterly'`\n The vendor's tax reporting period, for use in Canada or the UK.\n\n- `salesTaxAccountId?: string`\n The account used for tracking taxes on sales for this vendor, for use in Canada or the UK.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for transactions with this vendor, determining whether the transactions are taxable or non-taxable. This can be overridden at the transaction or transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxCountry?: 'australia' | 'canada' | 'uk' | 'us'`\n The country for which sales tax is collected for this vendor.\n\n- `salesTaxReturnId?: string`\n The vendor's sales tax return information, used for tracking and reporting sales tax liabilities.\n\n- `salutation?: string`\n The formal salutation title that precedes the name of the contact person for this vendor, such as \"Mr.\", \"Ms.\", or \"Dr.\".\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The vendor's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `taxIdentificationNumber?: string`\n The vendor's tax identification number (e.g., EIN or SSN).\n\n- `taxRegistrationNumber?: string`\n The vendor's tax registration number, for use in Canada or the UK.\n\n- `termsId?: string`\n The vendor's payment terms, defining when payment is due and any applicable discounts.\n\n- `vendorTypeId?: string`\n The vendor's type, used for categorizing vendors into meaningful segments, such as industry or region.\n\n### Returns\n\n- `{ id: string; accountNumber: string; additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]; additionalNotes: { id: number; date: string; note: string; }[]; alternateContact: string; alternatePhone: string; balance: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; billingRate: { id: string; fullName: string; }; ccEmail: string; class: { id: string; fullName: string; }; companyName: string; contact: string; createdAt: string; creditLimit: string; currency: { id: string; fullName: string; }; customContactFields: { name: string; value: string; }[]; customFields: { name: string; ownerId: string; type: string; value: string; }[]; defaultExpenseAccounts: { id: string; fullName: string; }[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; isCompoundingTax: boolean; isEligibleFor1099: boolean; isSalesTaxAgency: boolean; isTrackingPurchaseTax: boolean; isTrackingSalesTax: boolean; jobTitle: string; lastName: string; middleName: string; name: string; nameOnCheck: string; note: string; objectType: 'qbd_vendor'; phone: string; purchaseTaxAccount: { id: string; fullName: string; }; reportingPeriod: 'monthly' | 'quarterly' | 'annual'; revisionNumber: string; salesTaxAccount: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxCountry: string; salesTaxReturn: { id: string; fullName: string; }; salutation: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; taxIdentificationNumber: string; taxRegistrationNumber: string; terms: { id: string; fullName: string; }; updatedAt: string; vendorType: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `accountNumber: string`\n - `additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]`\n - `additionalNotes: { id: number; date: string; note: string; }[]`\n - `alternateContact: string`\n - `alternatePhone: string`\n - `balance: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `billingRate: { id: string; fullName: string; }`\n - `ccEmail: string`\n - `class: { id: string; fullName: string; }`\n - `companyName: string`\n - `contact: string`\n - `createdAt: string`\n - `creditLimit: string`\n - `currency: { id: string; fullName: string; }`\n - `customContactFields: { name: string; value: string; }[]`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `defaultExpenseAccounts: { id: string; fullName: string; }[]`\n - `email: string`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `isActive: boolean`\n - `isCompoundingTax: boolean`\n - `isEligibleFor1099: boolean`\n - `isSalesTaxAgency: boolean`\n - `isTrackingPurchaseTax: boolean`\n - `isTrackingSalesTax: boolean`\n - `jobTitle: string`\n - `lastName: string`\n - `middleName: string`\n - `name: string`\n - `nameOnCheck: string`\n - `note: string`\n - `objectType: 'qbd_vendor'`\n - `phone: string`\n - `purchaseTaxAccount: { id: string; fullName: string; }`\n - `reportingPeriod: 'monthly' | 'quarterly' | 'annual'`\n - `revisionNumber: string`\n - `salesTaxAccount: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxCountry: string`\n - `salesTaxReturn: { id: string; fullName: string; }`\n - `salutation: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `taxIdentificationNumber: string`\n - `taxRegistrationNumber: string`\n - `terms: { id: string; fullName: string; }`\n - `updatedAt: string`\n - `vendorType: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst vendor = await conductor.qbd.vendors.create({ name: 'Acme Supplies Inc.', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(vendor);\n```", perLanguage: { typescript: { method: 'client.qbd.vendors.create', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst vendor = await conductor.qbd.vendors.create({\n name: 'Acme Supplies Inc.',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(vendor.id);", }, python: { method: 'qbd.vendors.create', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nvendor = conductor.qbd.vendors.create(\n name="Acme Supplies Inc.",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(vendor.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/vendors \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "name": "Acme Supplies Inc.",\n "accountNumber": "1010",\n "alternateContact": "Bob Johnson",\n "alternatePhone": "+1-555-987-6543",\n "billingRateId": "80000001-1234567890",\n "ccEmail": "manager@example.com",\n "classId": "80000001-1234567890",\n "companyName": "Acme Corporation",\n "contact": "Jane Smith",\n "creditLimit": "5000.00",\n "currencyId": "80000001-1234567890",\n "defaultExpenseAccountIds": [\n "80000001-1234567890"\n ],\n "email": "vendor@example.com",\n "externalId": "12345678-abcd-1234-abcd-1234567890ab",\n "fax": "+1-555-555-1212",\n "firstName": "John",\n "isActive": true,\n "isCompoundingTax": false,\n "isEligibleFor1099": true,\n "isSalesTaxAgency": false,\n "isTrackingPurchaseTax": true,\n "isTrackingSalesTax": true,\n "jobTitle": "Purchasing Manager",\n "lastName": "Doe",\n "middleName": "A.",\n "nameOnCheck": "Acme Supplies Ltd.",\n "note": "Preferred vendor for office supplies.",\n "openingBalance": "1000.00",\n "openingBalanceDate": "2023-01-01",\n "phone": "+1-555-123-4567",\n "purchaseTaxAccountId": "80000001-1234567890",\n "reportingPeriod": "quarterly",\n "salesTaxAccountId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxCountry": "us",\n "salesTaxReturnId": "80000001-1234567890",\n "salutation": "Dr.",\n "taxIdentificationNumber": "12-3456789",\n "taxRegistrationNumber": "GB123456789",\n "termsId": "80000001-1234567890",\n "vendorTypeId": "80000001-1234567890"\n }\'', }, }, }, { name: 'list', endpoint: '/quickbooks-desktop/vendors', httpMethod: 'get', summary: 'List all vendors', description: 'Returns a list of vendors. Use the `cursor` parameter to paginate through the results.', stainlessPath: '(resource) qbd.vendors > (method) list', qualified: 'client.qbd.vendors.list', params: [ 'Conductor-End-User-Id: string;', 'classIds?: string[];', 'currencyIds?: string[];', 'cursor?: string;', 'ids?: string[];', 'limit?: number;', 'nameContains?: string;', 'nameEndsWith?: string;', 'nameFrom?: string;', 'names?: string[];', 'nameStartsWith?: string;', 'nameTo?: string;', "status?: 'active' | 'all' | 'inactive';", 'totalBalance?: string;', 'totalBalanceGreaterThan?: string;', 'totalBalanceGreaterThanOrEqualTo?: string;', 'totalBalanceLessThan?: string;', 'totalBalanceLessThanOrEqualTo?: string;', 'updatedAfter?: string;', 'updatedBefore?: string;', ], response: "{ id: string; accountNumber: string; additionalContacts: object[]; additionalNotes: object[]; alternateContact: string; alternatePhone: string; balance: string; billingAddress: object; billingRate: object; ccEmail: string; class: object; companyName: string; contact: string; createdAt: string; creditLimit: string; currency: object; customContactFields: object[]; customFields: object[]; defaultExpenseAccounts: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; isCompoundingTax: boolean; isEligibleFor1099: boolean; isSalesTaxAgency: boolean; isTrackingPurchaseTax: boolean; isTrackingSalesTax: boolean; jobTitle: string; lastName: string; middleName: string; name: string; nameOnCheck: string; note: string; objectType: 'qbd_vendor'; phone: string; purchaseTaxAccount: object; reportingPeriod: 'monthly' | 'quarterly' | 'annual'; revisionNumber: string; salesTaxAccount: object; salesTaxCode: object; salesTaxCountry: string; salesTaxReturn: object; salutation: string; shippingAddress: object; taxIdentificationNumber: string; taxRegistrationNumber: string; terms: object; updatedAt: string; vendorType: object; }", markdown: "## list\n\n`conductor.qbd.vendors.list(Conductor-End-User-Id: string, classIds?: string[], currencyIds?: string[], cursor?: string, ids?: string[], limit?: number, nameContains?: string, nameEndsWith?: string, nameFrom?: string, names?: string[], nameStartsWith?: string, nameTo?: string, status?: 'active' | 'all' | 'inactive', totalBalance?: string, totalBalanceGreaterThan?: string, totalBalanceGreaterThanOrEqualTo?: string, totalBalanceLessThan?: string, totalBalanceLessThanOrEqualTo?: string, updatedAfter?: string, updatedBefore?: string): { id: string; accountNumber: string; additionalContacts: object[]; additionalNotes: object[]; alternateContact: string; alternatePhone: string; balance: string; billingAddress: object; billingRate: object; ccEmail: string; class: object; companyName: string; contact: string; createdAt: string; creditLimit: string; currency: object; customContactFields: object[]; customFields: object[]; defaultExpenseAccounts: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; isCompoundingTax: boolean; isEligibleFor1099: boolean; isSalesTaxAgency: boolean; isTrackingPurchaseTax: boolean; isTrackingSalesTax: boolean; jobTitle: string; lastName: string; middleName: string; name: string; nameOnCheck: string; note: string; objectType: 'qbd_vendor'; phone: string; purchaseTaxAccount: object; reportingPeriod: 'monthly' | 'quarterly' | 'annual'; revisionNumber: string; salesTaxAccount: object; salesTaxCode: object; salesTaxCountry: string; salesTaxReturn: object; salutation: string; shippingAddress: object; taxIdentificationNumber: string; taxRegistrationNumber: string; terms: object; updatedAt: string; vendorType: object; }`\n\n**get** `/quickbooks-desktop/vendors`\n\nReturns a list of vendors. Use the `cursor` parameter to paginate through the results.\n\n### Parameters\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `classIds?: string[]`\n Filter for vendors of these classes. A class is a way end-users can categorize vendors in QuickBooks.\n\n- `currencyIds?: string[]`\n Filter for vendors in these currencies.\n\n- `cursor?: string`\n The pagination token to fetch the next set of results when paginating with the `limit` parameter. Do not include this parameter on the first call. Use the `nextCursor` value returned in the previous response to request subsequent results.\n\n- `ids?: string[]`\n Filter for specific vendors by their QuickBooks-assigned unique identifier(s).\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `limit?: number`\n The maximum number of objects to return. Accepts values ranging from 1 to 150, defaults to 150. When used with cursor-based pagination, this parameter controls how many results are returned per page. To paginate through results, combine this with the `cursor` parameter. Each response will include a `nextCursor` value that can be passed to subsequent requests to retrieve the next page of results.\n\n- `nameContains?: string`\n Filter for vendors whose `name` contains this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameStartsWith` or `nameEndsWith`.\n\n- `nameEndsWith?: string`\n Filter for vendors whose `name` ends with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameStartsWith`.\n\n- `nameFrom?: string`\n Filter for vendors whose `name` is alphabetically greater than or equal to this value.\n\n- `names?: string[]`\n Filter for specific vendors by their name(s), case-insensitive. Like `id`, `name` is a unique identifier for a vendor.\n\n**IMPORTANT**: If you include this parameter, QuickBooks will ignore all other query parameters for this request.\n\n**NOTE**: If any of the values you specify in this parameter are not found, the request will return an error.\n\n- `nameStartsWith?: string`\n Filter for vendors whose `name` starts with this substring, case-insensitive.\n\n**NOTE**: If you use this parameter, you cannot also use `nameContains` or `nameEndsWith`.\n\n- `nameTo?: string`\n Filter for vendors whose `name` is alphabetically less than or equal to this value.\n\n- `status?: 'active' | 'all' | 'inactive'`\n Filter for vendors that are active, inactive, or both.\n\n- `totalBalance?: string`\n Filter for vendors whose `totalBalance` equals this amount, represented as a decimal string. You can only use one total-balance filter at a time.\n\n- `totalBalanceGreaterThan?: string`\n Filter for vendors whose `totalBalance` is greater than this amount, represented as a decimal string. You can only use one total-balance filter at a time.\n\n- `totalBalanceGreaterThanOrEqualTo?: string`\n Filter for vendors whose `totalBalance` is greater than or equal to this amount, represented as a decimal string. You can only use one total-balance filter at a time.\n\n- `totalBalanceLessThan?: string`\n Filter for vendors whose `totalBalance` is less than this amount, represented as a decimal string. You can only use one total-balance filter at a time.\n\n- `totalBalanceLessThanOrEqualTo?: string`\n Filter for vendors whose `totalBalance` is less than or equal to this amount, represented as a decimal string. You can only use one total-balance filter at a time.\n\n- `updatedAfter?: string`\n Filter for vendors updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n- `updatedBefore?: string`\n Filter for vendors updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.\n\n### Returns\n\n- `{ id: string; accountNumber: string; additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]; additionalNotes: { id: number; date: string; note: string; }[]; alternateContact: string; alternatePhone: string; balance: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; billingRate: { id: string; fullName: string; }; ccEmail: string; class: { id: string; fullName: string; }; companyName: string; contact: string; createdAt: string; creditLimit: string; currency: { id: string; fullName: string; }; customContactFields: { name: string; value: string; }[]; customFields: { name: string; ownerId: string; type: string; value: string; }[]; defaultExpenseAccounts: { id: string; fullName: string; }[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; isCompoundingTax: boolean; isEligibleFor1099: boolean; isSalesTaxAgency: boolean; isTrackingPurchaseTax: boolean; isTrackingSalesTax: boolean; jobTitle: string; lastName: string; middleName: string; name: string; nameOnCheck: string; note: string; objectType: 'qbd_vendor'; phone: string; purchaseTaxAccount: { id: string; fullName: string; }; reportingPeriod: 'monthly' | 'quarterly' | 'annual'; revisionNumber: string; salesTaxAccount: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxCountry: string; salesTaxReturn: { id: string; fullName: string; }; salutation: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; taxIdentificationNumber: string; taxRegistrationNumber: string; terms: { id: string; fullName: string; }; updatedAt: string; vendorType: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `accountNumber: string`\n - `additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]`\n - `additionalNotes: { id: number; date: string; note: string; }[]`\n - `alternateContact: string`\n - `alternatePhone: string`\n - `balance: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `billingRate: { id: string; fullName: string; }`\n - `ccEmail: string`\n - `class: { id: string; fullName: string; }`\n - `companyName: string`\n - `contact: string`\n - `createdAt: string`\n - `creditLimit: string`\n - `currency: { id: string; fullName: string; }`\n - `customContactFields: { name: string; value: string; }[]`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `defaultExpenseAccounts: { id: string; fullName: string; }[]`\n - `email: string`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `isActive: boolean`\n - `isCompoundingTax: boolean`\n - `isEligibleFor1099: boolean`\n - `isSalesTaxAgency: boolean`\n - `isTrackingPurchaseTax: boolean`\n - `isTrackingSalesTax: boolean`\n - `jobTitle: string`\n - `lastName: string`\n - `middleName: string`\n - `name: string`\n - `nameOnCheck: string`\n - `note: string`\n - `objectType: 'qbd_vendor'`\n - `phone: string`\n - `purchaseTaxAccount: { id: string; fullName: string; }`\n - `reportingPeriod: 'monthly' | 'quarterly' | 'annual'`\n - `revisionNumber: string`\n - `salesTaxAccount: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxCountry: string`\n - `salesTaxReturn: { id: string; fullName: string; }`\n - `salutation: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `taxIdentificationNumber: string`\n - `taxRegistrationNumber: string`\n - `terms: { id: string; fullName: string; }`\n - `updatedAt: string`\n - `vendorType: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\n// Automatically fetches more pages as needed.\nfor await (const vendor of conductor.qbd.vendors.list({ conductorEndUserId: 'end_usr_1234567abcdefg' })) {\n console.log(vendor);\n}\n```", perLanguage: { typescript: { method: 'client.qbd.vendors.list', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const vendor of conductor.qbd.vendors.list({\n conductorEndUserId: 'end_usr_1234567abcdefg',\n})) {\n console.log(vendor.id);\n}", }, python: { method: 'qbd.vendors.list', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\npage = conductor.qbd.vendors.list(\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\npage = page.data[0]\nprint(page.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/vendors \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'retrieve', endpoint: '/quickbooks-desktop/vendors/{id}', httpMethod: 'get', summary: 'Retrieve a vendor', description: 'Retrieves a vendor by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific vendors by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.', stainlessPath: '(resource) qbd.vendors > (method) retrieve', qualified: 'client.qbd.vendors.retrieve', params: ['id: string;', 'Conductor-End-User-Id: string;'], response: "{ id: string; accountNumber: string; additionalContacts: object[]; additionalNotes: object[]; alternateContact: string; alternatePhone: string; balance: string; billingAddress: object; billingRate: object; ccEmail: string; class: object; companyName: string; contact: string; createdAt: string; creditLimit: string; currency: object; customContactFields: object[]; customFields: object[]; defaultExpenseAccounts: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; isCompoundingTax: boolean; isEligibleFor1099: boolean; isSalesTaxAgency: boolean; isTrackingPurchaseTax: boolean; isTrackingSalesTax: boolean; jobTitle: string; lastName: string; middleName: string; name: string; nameOnCheck: string; note: string; objectType: 'qbd_vendor'; phone: string; purchaseTaxAccount: object; reportingPeriod: 'monthly' | 'quarterly' | 'annual'; revisionNumber: string; salesTaxAccount: object; salesTaxCode: object; salesTaxCountry: string; salesTaxReturn: object; salutation: string; shippingAddress: object; taxIdentificationNumber: string; taxRegistrationNumber: string; terms: object; updatedAt: string; vendorType: object; }", markdown: "## retrieve\n\n`conductor.qbd.vendors.retrieve(id: string, Conductor-End-User-Id: string): { id: string; accountNumber: string; additionalContacts: object[]; additionalNotes: object[]; alternateContact: string; alternatePhone: string; balance: string; billingAddress: object; billingRate: object; ccEmail: string; class: object; companyName: string; contact: string; createdAt: string; creditLimit: string; currency: object; customContactFields: object[]; customFields: object[]; defaultExpenseAccounts: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; isCompoundingTax: boolean; isEligibleFor1099: boolean; isSalesTaxAgency: boolean; isTrackingPurchaseTax: boolean; isTrackingSalesTax: boolean; jobTitle: string; lastName: string; middleName: string; name: string; nameOnCheck: string; note: string; objectType: 'qbd_vendor'; phone: string; purchaseTaxAccount: object; reportingPeriod: 'monthly' | 'quarterly' | 'annual'; revisionNumber: string; salesTaxAccount: object; salesTaxCode: object; salesTaxCountry: string; salesTaxReturn: object; salutation: string; shippingAddress: object; taxIdentificationNumber: string; taxRegistrationNumber: string; terms: object; updatedAt: string; vendorType: object; }`\n\n**get** `/quickbooks-desktop/vendors/{id}`\n\nRetrieves a vendor by ID.\n\n**IMPORTANT:** If you need to fetch multiple specific vendors by ID, use the list endpoint instead with the `ids` parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the vendor to retrieve.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n### Returns\n\n- `{ id: string; accountNumber: string; additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]; additionalNotes: { id: number; date: string; note: string; }[]; alternateContact: string; alternatePhone: string; balance: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; billingRate: { id: string; fullName: string; }; ccEmail: string; class: { id: string; fullName: string; }; companyName: string; contact: string; createdAt: string; creditLimit: string; currency: { id: string; fullName: string; }; customContactFields: { name: string; value: string; }[]; customFields: { name: string; ownerId: string; type: string; value: string; }[]; defaultExpenseAccounts: { id: string; fullName: string; }[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; isCompoundingTax: boolean; isEligibleFor1099: boolean; isSalesTaxAgency: boolean; isTrackingPurchaseTax: boolean; isTrackingSalesTax: boolean; jobTitle: string; lastName: string; middleName: string; name: string; nameOnCheck: string; note: string; objectType: 'qbd_vendor'; phone: string; purchaseTaxAccount: { id: string; fullName: string; }; reportingPeriod: 'monthly' | 'quarterly' | 'annual'; revisionNumber: string; salesTaxAccount: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxCountry: string; salesTaxReturn: { id: string; fullName: string; }; salutation: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; taxIdentificationNumber: string; taxRegistrationNumber: string; terms: { id: string; fullName: string; }; updatedAt: string; vendorType: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `accountNumber: string`\n - `additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]`\n - `additionalNotes: { id: number; date: string; note: string; }[]`\n - `alternateContact: string`\n - `alternatePhone: string`\n - `balance: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `billingRate: { id: string; fullName: string; }`\n - `ccEmail: string`\n - `class: { id: string; fullName: string; }`\n - `companyName: string`\n - `contact: string`\n - `createdAt: string`\n - `creditLimit: string`\n - `currency: { id: string; fullName: string; }`\n - `customContactFields: { name: string; value: string; }[]`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `defaultExpenseAccounts: { id: string; fullName: string; }[]`\n - `email: string`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `isActive: boolean`\n - `isCompoundingTax: boolean`\n - `isEligibleFor1099: boolean`\n - `isSalesTaxAgency: boolean`\n - `isTrackingPurchaseTax: boolean`\n - `isTrackingSalesTax: boolean`\n - `jobTitle: string`\n - `lastName: string`\n - `middleName: string`\n - `name: string`\n - `nameOnCheck: string`\n - `note: string`\n - `objectType: 'qbd_vendor'`\n - `phone: string`\n - `purchaseTaxAccount: { id: string; fullName: string; }`\n - `reportingPeriod: 'monthly' | 'quarterly' | 'annual'`\n - `revisionNumber: string`\n - `salesTaxAccount: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxCountry: string`\n - `salesTaxReturn: { id: string; fullName: string; }`\n - `salutation: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `taxIdentificationNumber: string`\n - `taxRegistrationNumber: string`\n - `terms: { id: string; fullName: string; }`\n - `updatedAt: string`\n - `vendorType: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst vendor = await conductor.qbd.vendors.retrieve('80000001-1234567890', { conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(vendor);\n```", perLanguage: { typescript: { method: 'client.qbd.vendors.retrieve', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst vendor = await conductor.qbd.vendors.retrieve('80000001-1234567890', {\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(vendor.id);", }, python: { method: 'qbd.vendors.retrieve', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nvendor = conductor.qbd.vendors.retrieve(\n id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(vendor.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/vendors/$ID \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY"', }, }, }, { name: 'update', endpoint: '/quickbooks-desktop/vendors/{id}', httpMethod: 'post', summary: 'Update a vendor', description: 'Updates an existing vendor.', stainlessPath: '(resource) qbd.vendors > (method) update', qualified: 'client.qbd.vendors.update', params: [ 'id: string;', 'revisionNumber: string;', 'Conductor-End-User-Id: string;', 'accountNumber?: string;', 'additionalContacts?: { id: string; revisionNumber: string; customContactFields?: { name: string; value: string; }[]; firstName?: string; jobTitle?: string; lastName?: string; middleName?: string; salutation?: string; }[];', 'additionalNotes?: { id: number; note: string; }[];', 'alternateContact?: string;', 'alternatePhone?: string;', 'billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'billingRateId?: string;', 'ccEmail?: string;', 'classId?: string;', 'companyName?: string;', 'contact?: string;', 'creditLimit?: string;', 'currencyId?: string;', 'customContactFields?: { name: string; value: string; }[];', 'defaultExpenseAccountIds?: string[];', 'email?: string;', 'fax?: string;', 'firstName?: string;', 'isActive?: boolean;', 'isCompoundingTax?: boolean;', 'isEligibleFor1099?: boolean;', 'isSalesTaxAgency?: boolean;', 'isTrackingPurchaseTax?: boolean;', 'isTrackingSalesTax?: boolean;', 'jobTitle?: string;', 'lastName?: string;', 'middleName?: string;', 'name?: string;', 'nameOnCheck?: string;', 'note?: string;', 'phone?: string;', 'purchaseTaxAccountId?: string;', "reportingPeriod?: 'monthly' | 'quarterly';", 'salesTaxAccountId?: string;', 'salesTaxCodeId?: string;', "salesTaxCountry?: 'australia' | 'canada' | 'uk' | 'us';", 'salesTaxReturnId?: string;', 'salutation?: string;', 'shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; };', 'taxIdentificationNumber?: string;', 'taxRegistrationNumber?: string;', 'termsId?: string;', 'vendorTypeId?: string;', ], response: "{ id: string; accountNumber: string; additionalContacts: object[]; additionalNotes: object[]; alternateContact: string; alternatePhone: string; balance: string; billingAddress: object; billingRate: object; ccEmail: string; class: object; companyName: string; contact: string; createdAt: string; creditLimit: string; currency: object; customContactFields: object[]; customFields: object[]; defaultExpenseAccounts: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; isCompoundingTax: boolean; isEligibleFor1099: boolean; isSalesTaxAgency: boolean; isTrackingPurchaseTax: boolean; isTrackingSalesTax: boolean; jobTitle: string; lastName: string; middleName: string; name: string; nameOnCheck: string; note: string; objectType: 'qbd_vendor'; phone: string; purchaseTaxAccount: object; reportingPeriod: 'monthly' | 'quarterly' | 'annual'; revisionNumber: string; salesTaxAccount: object; salesTaxCode: object; salesTaxCountry: string; salesTaxReturn: object; salutation: string; shippingAddress: object; taxIdentificationNumber: string; taxRegistrationNumber: string; terms: object; updatedAt: string; vendorType: object; }", markdown: "## update\n\n`conductor.qbd.vendors.update(id: string, revisionNumber: string, Conductor-End-User-Id: string, accountNumber?: string, additionalContacts?: { id: string; revisionNumber: string; customContactFields?: { name: string; value: string; }[]; firstName?: string; jobTitle?: string; lastName?: string; middleName?: string; salutation?: string; }[], additionalNotes?: { id: number; note: string; }[], alternateContact?: string, alternatePhone?: string, billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, billingRateId?: string, ccEmail?: string, classId?: string, companyName?: string, contact?: string, creditLimit?: string, currencyId?: string, customContactFields?: { name: string; value: string; }[], defaultExpenseAccountIds?: string[], email?: string, fax?: string, firstName?: string, isActive?: boolean, isCompoundingTax?: boolean, isEligibleFor1099?: boolean, isSalesTaxAgency?: boolean, isTrackingPurchaseTax?: boolean, isTrackingSalesTax?: boolean, jobTitle?: string, lastName?: string, middleName?: string, name?: string, nameOnCheck?: string, note?: string, phone?: string, purchaseTaxAccountId?: string, reportingPeriod?: 'monthly' | 'quarterly', salesTaxAccountId?: string, salesTaxCodeId?: string, salesTaxCountry?: 'australia' | 'canada' | 'uk' | 'us', salesTaxReturnId?: string, salutation?: string, shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }, taxIdentificationNumber?: string, taxRegistrationNumber?: string, termsId?: string, vendorTypeId?: string): { id: string; accountNumber: string; additionalContacts: object[]; additionalNotes: object[]; alternateContact: string; alternatePhone: string; balance: string; billingAddress: object; billingRate: object; ccEmail: string; class: object; companyName: string; contact: string; createdAt: string; creditLimit: string; currency: object; customContactFields: object[]; customFields: object[]; defaultExpenseAccounts: object[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; isCompoundingTax: boolean; isEligibleFor1099: boolean; isSalesTaxAgency: boolean; isTrackingPurchaseTax: boolean; isTrackingSalesTax: boolean; jobTitle: string; lastName: string; middleName: string; name: string; nameOnCheck: string; note: string; objectType: 'qbd_vendor'; phone: string; purchaseTaxAccount: object; reportingPeriod: 'monthly' | 'quarterly' | 'annual'; revisionNumber: string; salesTaxAccount: object; salesTaxCode: object; salesTaxCountry: string; salesTaxReturn: object; salutation: string; shippingAddress: object; taxIdentificationNumber: string; taxRegistrationNumber: string; terms: object; updatedAt: string; vendorType: object; }`\n\n**post** `/quickbooks-desktop/vendors/{id}`\n\nUpdates an existing vendor.\n\n### Parameters\n\n- `id: string`\n The QuickBooks-assigned unique identifier of the vendor to update.\n\n- `revisionNumber: string`\n The current QuickBooks-assigned revision number of the vendor object you are updating, which you can get by fetching the object first. Provide the most recent `revisionNumber` to ensure you're working with the latest data; otherwise, the update will return an error.\n\n- `Conductor-End-User-Id: string`\n The ID of the End-User to receive this request.\n\n- `accountNumber?: string`\n The vendor's account number, which appears in the QuickBooks chart of accounts, reports, and graphs.\n\nNote that if the \"Use Account Numbers\" preference is turned off in QuickBooks, the account number may not be visible in the user interface, but it can still be set and retrieved through the API.\n\n- `additionalContacts?: { id: string; revisionNumber: string; customContactFields?: { name: string; value: string; }[]; firstName?: string; jobTitle?: string; lastName?: string; middleName?: string; salutation?: string; }[]`\n Additional alternate contacts for this vendor.\n\n- `additionalNotes?: { id: number; note: string; }[]`\n Additional notes about this vendor.\n\n- `alternateContact?: string`\n The name of a alternate contact person for this vendor.\n\n- `alternatePhone?: string`\n The vendor's alternate telephone number.\n\nMaximum length: 21 characters.\n\n- `billingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The vendor's billing address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `billingRateId?: string`\n The vendor's billing rate, used to override service item rates in time tracking activities.\n\n- `ccEmail?: string`\n An email address to carbon copy (CC) on communications with this vendor.\n\n- `classId?: string`\n The vendor's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.\n\n- `companyName?: string`\n The name of the company associated with this vendor. This name is used on invoices, checks, and other forms.\n\nMaximum length: 41 characters.\n\n- `contact?: string`\n The name of the primary contact person for this vendor.\n\n- `creditLimit?: string`\n The vendor's credit limit, represented as a decimal string. This is the maximum amount of money that can be spent being before billed by this vendor. If `null`, there is no credit limit.\n\n- `currencyId?: string`\n The vendor's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.\n\n- `customContactFields?: { name: string; value: string; }[]`\n Additional custom contact fields for this vendor, such as phone numbers or email addresses.\n\n- `defaultExpenseAccountIds?: string[]`\n The expense accounts to prefill when entering bills for this vendor.\n\n- `email?: string`\n The vendor's email address.\n\n- `fax?: string`\n The vendor's fax number.\n\nMaximum length: 21 characters.\n\n- `firstName?: string`\n The first name of the contact person for this vendor.\n\nMaximum length: 25 characters.\n\n- `isActive?: boolean`\n Indicates whether this vendor is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.\n\n- `isCompoundingTax?: boolean`\n Indicates whether tax is charged on top of tax for this vendor, for use in Canada or the UK.\n\n- `isEligibleFor1099?: boolean`\n Indicates whether this vendor is eligible to receive a 1099 form for tax reporting purposes. When `true`, then the fields `taxId` and `billingAddress` are required.\n\n- `isSalesTaxAgency?: boolean`\n Indicates whether this vendor is a sales tax agency.\n\n- `isTrackingPurchaseTax?: boolean`\n Indicates whether tax is tracked on purchases for this vendor, for use in Canada or the UK.\n\n- `isTrackingSalesTax?: boolean`\n Indicates whether tax is tracked on sales for this vendor, for use in Canada or the UK.\n\n- `jobTitle?: string`\n The job title of the contact person for this vendor.\n\n- `lastName?: string`\n The last name of the contact person for this vendor.\n\nMaximum length: 25 characters.\n\n- `middleName?: string`\n The middle name of the contact person for this vendor.\n\nMaximum length: 5 characters.\n\n- `name?: string`\n The case-insensitive unique name of this vendor, unique across all vendors.\n\n**NOTE**: Vendors do not have a `fullName` field because they are not hierarchical objects, which is why `name` is unique for them but not for objects that have parents.\n\nMaximum length: 41 characters.\n\n- `nameOnCheck?: string`\n The vendor's name as it should appear on checks issued to this vendor.\n\nMaximum length: 41 characters.\n\n- `note?: string`\n A note or comment about this vendor.\n\n- `phone?: string`\n The vendor's primary telephone number.\n\nMaximum length: 21 characters.\n\n- `purchaseTaxAccountId?: string`\n The account used for tracking taxes on purchases for this vendor, for use in Canada or the UK.\n\n- `reportingPeriod?: 'monthly' | 'quarterly'`\n The vendor's tax reporting period, for use in Canada or the UK.\n\n- `salesTaxAccountId?: string`\n The account used for tracking taxes on sales for this vendor, for use in Canada or the UK.\n\n- `salesTaxCodeId?: string`\n The default sales-tax code for transactions with this vendor, determining whether the transactions are taxable or non-taxable. This can be overridden at the transaction or transaction-line level.\n\nDefault codes include \"Non\" (non-taxable) and \"Tax\" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the \"Do You Charge Sales Tax?\" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.\n\n- `salesTaxCountry?: 'australia' | 'canada' | 'uk' | 'us'`\n The country for which sales tax is collected for this vendor.\n\n- `salesTaxReturnId?: string`\n The vendor's sales tax return information, used for tracking and reporting sales tax liabilities.\n\n- `salutation?: string`\n The formal salutation title that precedes the name of the contact person for this vendor, such as \"Mr.\", \"Ms.\", or \"Dr.\".\n\n- `shippingAddress?: { city?: string; country?: string; line1?: string; line2?: string; line3?: string; line4?: string; line5?: string; note?: string; postalCode?: string; state?: string; }`\n The vendor's shipping address.\n - `city?: string`\n The city, district, suburb, town, or village name of the address.\n\nMaximum length: 31 characters.\n - `country?: string`\n The country name of the address.\n - `line1?: string`\n The first line of the address (e.g., street, PO Box, or company name).\n\nMaximum length: 41 characters.\n - `line2?: string`\n The second line of the address, if needed (e.g., apartment, suite, unit, or building).\n\nMaximum length: 41 characters.\n - `line3?: string`\n The third line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line4?: string`\n The fourth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `line5?: string`\n The fifth line of the address, if needed.\n\nMaximum length: 41 characters.\n - `note?: string`\n A note written at the bottom of the address in the form in which it appears, such as the invoice form.\n - `postalCode?: string`\n The postal code or ZIP code of the address.\n\nMaximum length: 13 characters.\n - `state?: string`\n The state, county, province, or region name of the address.\n\nMaximum length: 21 characters.\n\n- `taxIdentificationNumber?: string`\n The vendor's tax identification number (e.g., EIN or SSN).\n\n- `taxRegistrationNumber?: string`\n The vendor's tax registration number, for use in Canada or the UK.\n\n- `termsId?: string`\n The vendor's payment terms, defining when payment is due and any applicable discounts.\n\n- `vendorTypeId?: string`\n The vendor's type, used for categorizing vendors into meaningful segments, such as industry or region.\n\n### Returns\n\n- `{ id: string; accountNumber: string; additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]; additionalNotes: { id: number; date: string; note: string; }[]; alternateContact: string; alternatePhone: string; balance: string; billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; billingRate: { id: string; fullName: string; }; ccEmail: string; class: { id: string; fullName: string; }; companyName: string; contact: string; createdAt: string; creditLimit: string; currency: { id: string; fullName: string; }; customContactFields: { name: string; value: string; }[]; customFields: { name: string; ownerId: string; type: string; value: string; }[]; defaultExpenseAccounts: { id: string; fullName: string; }[]; email: string; externalId: string; fax: string; firstName: string; isActive: boolean; isCompoundingTax: boolean; isEligibleFor1099: boolean; isSalesTaxAgency: boolean; isTrackingPurchaseTax: boolean; isTrackingSalesTax: boolean; jobTitle: string; lastName: string; middleName: string; name: string; nameOnCheck: string; note: string; objectType: 'qbd_vendor'; phone: string; purchaseTaxAccount: { id: string; fullName: string; }; reportingPeriod: 'monthly' | 'quarterly' | 'annual'; revisionNumber: string; salesTaxAccount: { id: string; fullName: string; }; salesTaxCode: { id: string; fullName: string; }; salesTaxCountry: string; salesTaxReturn: { id: string; fullName: string; }; salutation: string; shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }; taxIdentificationNumber: string; taxRegistrationNumber: string; terms: { id: string; fullName: string; }; updatedAt: string; vendorType: { id: string; fullName: string; }; }`\n\n - `id: string`\n - `accountNumber: string`\n - `additionalContacts: { id: string; createdAt: string; customContactFields: { name: string; value: string; }[]; firstName: string; jobTitle: string; lastName: string; middleName: string; name: string; objectType: 'qbd_contact'; revisionNumber: string; salutation: string; updatedAt: string; }[]`\n - `additionalNotes: { id: number; date: string; note: string; }[]`\n - `alternateContact: string`\n - `alternatePhone: string`\n - `balance: string`\n - `billingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `billingRate: { id: string; fullName: string; }`\n - `ccEmail: string`\n - `class: { id: string; fullName: string; }`\n - `companyName: string`\n - `contact: string`\n - `createdAt: string`\n - `creditLimit: string`\n - `currency: { id: string; fullName: string; }`\n - `customContactFields: { name: string; value: string; }[]`\n - `customFields: { name: string; ownerId: string; type: string; value: string; }[]`\n - `defaultExpenseAccounts: { id: string; fullName: string; }[]`\n - `email: string`\n - `externalId: string`\n - `fax: string`\n - `firstName: string`\n - `isActive: boolean`\n - `isCompoundingTax: boolean`\n - `isEligibleFor1099: boolean`\n - `isSalesTaxAgency: boolean`\n - `isTrackingPurchaseTax: boolean`\n - `isTrackingSalesTax: boolean`\n - `jobTitle: string`\n - `lastName: string`\n - `middleName: string`\n - `name: string`\n - `nameOnCheck: string`\n - `note: string`\n - `objectType: 'qbd_vendor'`\n - `phone: string`\n - `purchaseTaxAccount: { id: string; fullName: string; }`\n - `reportingPeriod: 'monthly' | 'quarterly' | 'annual'`\n - `revisionNumber: string`\n - `salesTaxAccount: { id: string; fullName: string; }`\n - `salesTaxCode: { id: string; fullName: string; }`\n - `salesTaxCountry: string`\n - `salesTaxReturn: { id: string; fullName: string; }`\n - `salutation: string`\n - `shippingAddress: { city: string; country: string; line1: string; line2: string; line3: string; line4: string; line5: string; note: string; postalCode: string; state: string; }`\n - `taxIdentificationNumber: string`\n - `taxRegistrationNumber: string`\n - `terms: { id: string; fullName: string; }`\n - `updatedAt: string`\n - `vendorType: { id: string; fullName: string; }`\n\n### Example\n\n```typescript\nimport Conductor from 'conductor-node';\n\nconst client = new Conductor();\n\nconst vendor = await conductor.qbd.vendors.update('80000001-1234567890', { revisionNumber: '1721172183', conductorEndUserId: 'end_usr_1234567abcdefg' });\n\nconsole.log(vendor);\n```", perLanguage: { typescript: { method: 'client.qbd.vendors.update', example: "import Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst vendor = await conductor.qbd.vendors.update('80000001-1234567890', {\n revisionNumber: '1721172183',\n conductorEndUserId: 'end_usr_1234567abcdefg',\n});\n\nconsole.log(vendor.id);", }, python: { method: 'qbd.vendors.update', example: 'import os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\nvendor = conductor.qbd.vendors.update(\n id="80000001-1234567890",\n revision_number="1721172183",\n conductor_end_user_id="end_usr_1234567abcdefg",\n)\nprint(vendor.id)', }, http: { example: 'curl https://api.conductor.is/v1/quickbooks-desktop/vendors/$ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $CONDUCTOR_SECRET_KEY" \\\n -d \'{\n "revisionNumber": "1721172183",\n "accountNumber": "1010",\n "alternateContact": "Bob Johnson",\n "alternatePhone": "+1-555-987-6543",\n "billingRateId": "80000001-1234567890",\n "ccEmail": "manager@example.com",\n "classId": "80000001-1234567890",\n "companyName": "Acme Corporation",\n "contact": "Jane Smith",\n "creditLimit": "5000.00",\n "currencyId": "80000001-1234567890",\n "defaultExpenseAccountIds": [\n "80000001-1234567890"\n ],\n "email": "vendor@example.com",\n "fax": "+1-555-555-1212",\n "firstName": "John",\n "isActive": true,\n "isCompoundingTax": false,\n "isEligibleFor1099": true,\n "isSalesTaxAgency": false,\n "isTrackingPurchaseTax": true,\n "isTrackingSalesTax": true,\n "jobTitle": "Purchasing Manager",\n "lastName": "Doe",\n "middleName": "A.",\n "name": "Acme Supplies Inc.",\n "nameOnCheck": "Acme Supplies Ltd.",\n "note": "Preferred vendor for office supplies.",\n "phone": "+1-555-123-4567",\n "purchaseTaxAccountId": "80000001-1234567890",\n "reportingPeriod": "quarterly",\n "salesTaxAccountId": "80000001-1234567890",\n "salesTaxCodeId": "80000001-1234567890",\n "salesTaxCountry": "us",\n "salesTaxReturnId": "80000001-1234567890",\n "salutation": "Dr.",\n "taxIdentificationNumber": "12-3456789",\n "taxRegistrationNumber": "GB123456789",\n "termsId": "80000001-1234567890",\n "vendorTypeId": "80000001-1234567890"\n }\'', }, }, }, ]; const EMBEDDED_READMES: { language: string; content: string }[] = [ { language: 'typescript', content: "# QuickBooks Desktop Node.js API Library\n\n[![NPM version](https://img.shields.io/npm/v/conductor-node.svg?label=npm%20(stable))](https://npmjs.org/package/conductor-node) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/conductor-node)\n\nThis library provides convenient access to the Conductor REST API from server-side TypeScript or JavaScript.\n\n\n\nThe REST API documentation can be found on [docs.conductor.is](https://docs.conductor.is/api-ref). The full API of this library can be found in [api.md](api.md).\n\n\n\n## MCP Server\n\nUse the Conductor MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=conductor-node-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImNvbmR1Y3Rvci1ub2RlLW1jcCJdLCJlbnYiOnsiQ09ORFVDVE9SX1NFQ1JFVF9LRVkiOiJza19jb25kdWN0b3JfLi4uIn19)\n[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22conductor-node-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22conductor-node-mcp%22%5D%2C%22env%22%3A%7B%22CONDUCTOR_SECRET_KEY%22%3A%22sk_conductor_...%22%7D%7D)\n\n> Note: You may need to set environment variables in your MCP client.\n\n## Installation\n\n```sh\nnpm install conductor-node\n```\n\n\n\n## Usage\n\nThe full API of this library can be found in [api.md](api.md).\n\n\n```js\nimport Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst page = await conductor.qbd.invoices.list({ conductorEndUserId: 'YOUR_END_USER_ID' });\nconst invoice = page.data[0];\n\nconsole.log(invoice.id);\n```\n\n\n\n### Request & Response types\n\nThis library includes TypeScript definitions for all request params and response fields. You may import and use them like so:\n\n\n```ts\nimport Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted\n});\n\nconst params: Conductor.Qbd.InvoiceListParams = { conductorEndUserId: 'YOUR_END_USER_ID' };\nconst [invoice]: [Conductor.Qbd.Invoice] = await conductor.qbd.invoices.list(params);\n```\n\nDocumentation for each method, request param, and response field are available in docstrings and will appear on hover in most modern editors.\n\n\n\n\n\n## Handling errors\n\nWhen the library is unable to connect to the API,\nor if the API returns a non-success status code (i.e., 4xx or 5xx response),\na subclass of `APIError` will be thrown:\n\n\n```ts\nconst page = await conductor.qbd.invoices\n .list({ conductorEndUserId: 'YOUR_END_USER_ID' })\n .catch(async (err) => {\n if (err instanceof Conductor.APIError) {\n console.log(err.status); // 400\n console.log(err.name); // BadRequestError\n console.log(err.headers); // {server: 'nginx', ...}\n } else {\n throw err;\n }\n });\n```\n\nError codes are as follows:\n\n| Status Code | Error Type |\n| ----------- | -------------------------- |\n| 400 | `BadRequestError` |\n| 401 | `AuthenticationError` |\n| 403 | `PermissionDeniedError` |\n| 404 | `NotFoundError` |\n| 422 | `UnprocessableEntityError` |\n| 429 | `RateLimitError` |\n| >=500 | `InternalServerError` |\n| N/A | `APIConnectionError` |\n\n### Retries\n\nCertain errors will be automatically retried 2 times by default, with a short exponential backoff.\nConnection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,\n429 Rate Limit, and >=500 Internal errors will all be retried by default.\n\nYou can use the `maxRetries` option to configure or disable this:\n\n\n```js\n// Configure the default for all requests:\nconst conductor = new Conductor({\n maxRetries: 0, // default is 2\n});\n\n// Or, configure per-request:\nawait conductor.qbd.invoices.list({ conductorEndUserId: 'YOUR_END_USER_ID' }, {\n maxRetries: 5,\n});\n```\n\n### Timeouts\n\nRequests time out after 2 minutes by default. You can configure this with a `timeout` option:\n\n\n```ts\n// Configure the default for all requests:\nconst conductor = new Conductor({\n timeout: 20 * 1000, // 20 seconds (default is 2 minutes)\n});\n\n// Override per-request:\nawait conductor.qbd.invoices.list({ conductorEndUserId: 'YOUR_END_USER_ID' }, {\n timeout: 5 * 1000,\n});\n```\n\nOn timeout, an `APIConnectionTimeoutError` is thrown.\n\nNote that requests which time out will be [retried twice by default](#retries).\n\n## Auto-pagination\n\nList methods in the Conductor API are paginated.\nYou can use the `for await … of` syntax to iterate through items across all pages:\n\n```ts\nasync function fetchAllInvoices(params) {\n const allInvoices = [];\n // Automatically fetches more pages as needed.\n for await (const invoice of conductor.qbd.invoices.list({\n conductorEndUserId: 'YOUR_END_USER_ID',\n })) {\n allInvoices.push(invoice);\n }\n return allInvoices;\n}\n```\n\nAlternatively, you can request a single page at a time:\n\n```ts\nlet page = await conductor.qbd.invoices.list({ conductorEndUserId: 'YOUR_END_USER_ID' });\nfor (const invoice of page.data) {\n console.log(invoice);\n}\n\n// Convenience methods are provided for manually paginating:\nwhile (page.hasNextPage()) {\n page = await page.getNextPage();\n // ...\n}\n```\n\n\n\n## Advanced Usage\n\n### Accessing raw Response data (e.g., headers)\n\nThe \"raw\" `Response` returned by `fetch()` can be accessed through the `.asResponse()` method on the `APIPromise` type that all methods return.\nThis method returns as soon as the headers for a successful response are received and does not consume the response body, so you are free to write custom parsing or streaming logic.\n\nYou can also use the `.withResponse()` method to get the raw `Response` along with the parsed data.\nUnlike `.asResponse()` this method consumes the body, returning once it is parsed.\n\n\n```ts\nconst conductor = new Conductor();\n\nconst response = await conductor.qbd.invoices\n .list({ conductorEndUserId: 'YOUR_END_USER_ID' })\n .asResponse();\nconsole.log(response.headers.get('X-My-Header'));\nconsole.log(response.statusText); // access the underlying Response object\n\nconst { data: page, response: raw } = await conductor.qbd.invoices\n .list({ conductorEndUserId: 'YOUR_END_USER_ID' })\n .withResponse();\nconsole.log(raw.headers.get('X-My-Header'));\nfor await (const invoice of page) {\n console.log(invoice.id);\n}\n```\n\n### Logging\n\n> [!IMPORTANT]\n> All log messages are intended for debugging only. The format and content of log messages\n> may change between releases.\n\n#### Log levels\n\nThe log level can be configured in two ways:\n\n1. Via the `CONDUCTOR_LOG` environment variable\n2. Using the `logLevel` client option (overrides the environment variable if set)\n\n```ts\nimport Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n logLevel: 'debug', // Show all log messages\n});\n```\n\nAvailable log levels, from most to least verbose:\n\n- `'debug'` - Show debug messages, info, warnings, and errors\n- `'info'` - Show info messages, warnings, and errors\n- `'warn'` - Show warnings and errors (default)\n- `'error'` - Show only errors\n- `'off'` - Disable all logging\n\nAt the `'debug'` level, all HTTP requests and responses are logged, including headers and bodies.\nSome authentication-related headers are redacted, but sensitive data in request and response bodies\nmay still be visible.\n\n#### Custom logger\n\nBy default, this library logs to `globalThis.console`. You can also provide a custom logger.\nMost logging libraries are supported, including [pino](https://www.npmjs.com/package/pino), [winston](https://www.npmjs.com/package/winston), [bunyan](https://www.npmjs.com/package/bunyan), [consola](https://www.npmjs.com/package/consola), [signale](https://www.npmjs.com/package/signale), and [@std/log](https://jsr.io/@std/log). If your logger doesn't work, please open an issue.\n\nWhen providing a custom logger, the `logLevel` option still controls which messages are emitted, messages\nbelow the configured level will not be sent to your logger.\n\n```ts\nimport Conductor from 'conductor-node';\nimport pino from 'pino';\n\nconst logger = pino();\n\nconst conductor = new Conductor({\n logger: logger.child({ name: 'Conductor' }),\n logLevel: 'debug', // Send all messages to pino, allowing it to filter\n});\n```\n\n### Making custom/undocumented requests\n\nThis library is typed for convenient access to the documented API. If you need to access undocumented\nendpoints, params, or response properties, the library can still be used.\n\n#### Undocumented endpoints\n\nTo make requests to undocumented endpoints, you can use `conductor.get`, `conductor.post`, and other HTTP verbs.\nOptions on the client, such as retries, will be respected when making these requests.\n\n```ts\nawait conductor.post('/some/path', {\n body: { some_prop: 'foo' },\n query: { some_query_arg: 'bar' },\n});\n```\n\n#### Undocumented request params\n\nTo make requests using undocumented parameters, you may use `// @ts-expect-error` on the undocumented\nparameter. This library doesn't validate at runtime that the request matches the type, so any extra values you\nsend will be sent as-is.\n\n```ts\nconductor.qbd.invoices.list({\n // ...\n // @ts-expect-error baz is not yet public\n baz: 'undocumented option',\n});\n```\n\nFor requests with the `GET` verb, any extra params will be in the query, all other requests will send the\nextra param in the body.\n\nIf you want to explicitly send an extra argument, you can do so with the `query`, `body`, and `headers` request\noptions.\n\n#### Undocumented response properties\n\nTo access undocumented response properties, you may access the response object with `// @ts-expect-error` on\nthe response object, or cast the response object to the requisite type. Like the request params, we do not\nvalidate or strip extra properties from the response from the API.\n\n### Customizing the fetch client\n\nBy default, this library expects a global `fetch` function is defined.\n\nIf you want to use a different `fetch` function, you can either polyfill the global:\n\n```ts\nimport fetch from 'my-fetch';\n\nglobalThis.fetch = fetch;\n```\n\nOr pass it to the client:\n\n```ts\nimport Conductor from 'conductor-node';\nimport fetch from 'my-fetch';\n\nconst conductor = new Conductor({ fetch });\n```\n\n### Fetch options\n\nIf you want to set custom `fetch` options without overriding the `fetch` function, you can provide a `fetchOptions` object when instantiating the client or making a request. (Request-specific options override client options.)\n\n```ts\nimport Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n fetchOptions: {\n // `RequestInit` options\n },\n});\n```\n\n#### Configuring proxies\n\nTo modify proxy behavior, you can provide custom `fetchOptions` that add runtime-specific proxy\noptions to requests:\n\n **Node** [[docs](https://github.com/nodejs/undici/blob/main/docs/docs/api/ProxyAgent.md#example---proxyagent-with-fetch)]\n\n```ts\nimport Conductor from 'conductor-node';\nimport * as undici from 'undici';\n\nconst proxyAgent = new undici.ProxyAgent('http://localhost:8888');\nconst conductor = new Conductor({\n fetchOptions: {\n dispatcher: proxyAgent,\n },\n});\n```\n\n **Bun** [[docs](https://bun.sh/guides/http/proxy)]\n\n```ts\nimport Conductor from 'conductor-node';\n\nconst conductor = new Conductor({\n fetchOptions: {\n proxy: 'http://localhost:8888',\n },\n});\n```\n\n **Deno** [[docs](https://docs.deno.com/api/deno/~/Deno.createHttpClient)]\n\n```ts\nimport Conductor from 'npm:conductor-node';\n\nconst httpClient = Deno.createHttpClient({ proxy: { url: 'http://localhost:8888' } });\nconst conductor = new Conductor({\n fetchOptions: {\n client: httpClient,\n },\n});\n```\n\n## Frequently Asked Questions\n\n## Semantic versioning\n\nThis package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:\n\n1. Changes that only affect static types, without breaking runtime behavior.\n2. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_\n3. Changes that we do not expect to impact the vast majority of users in practice.\n\nWe take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.\n\nWe are keen for your feedback; please open an [issue](https://www.github.com/conductor-is/quickbooks-desktop-node/issues) with questions, bugs, or suggestions.\n\n## Requirements\n\nTypeScript >= 4.9 is supported.\n\nThe following runtimes are supported:\n\n- Web browsers (Up-to-date Chrome, Firefox, Safari, Edge, and more)\n- Node.js 20 LTS or later ([non-EOL](https://endoflife.date/nodejs)) versions.\n- Deno v1.28.0 or higher.\n- Bun 1.0 or later.\n- Cloudflare Workers.\n- Vercel Edge Runtime.\n- Jest 28 or greater with the `\"node\"` environment (`\"jsdom\"` is not supported at this time).\n- Nitro v2.6 or greater.\n\nNote that React Native is not supported at this time.\n\nIf you are interested in other runtime environments, please open or upvote an issue on GitHub.\n\n## Contributing\n\nSee [the contributing documentation](./CONTRIBUTING.md).\n", }, { language: 'python', content: '# QuickBooks Desktop Python API library\n\n\n[![PyPI version](https://img.shields.io/pypi/v/conductor-py.svg?label=pypi%20(stable))](https://pypi.org/project/conductor-py/)\n\nThe QuickBooks Desktop Python library provides convenient access to the Conductor REST API from any Python 3.9+\napplication. The library includes type definitions for all request params and response fields,\nand offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).\n\n\n\n\n\n## MCP Server\n\nUse the Conductor MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=conductor-node-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImNvbmR1Y3Rvci1ub2RlLW1jcCJdLCJlbnYiOnsiQ09ORFVDVE9SX1NFQ1JFVF9LRVkiOiJza19jb25kdWN0b3JfLi4uIn19)\n[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22conductor-node-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22conductor-node-mcp%22%5D%2C%22env%22%3A%7B%22CONDUCTOR_SECRET_KEY%22%3A%22sk_conductor_...%22%7D%7D)\n\n> Note: You may need to set environment variables in your MCP client.\n\n## Documentation\n\nThe REST API documentation can be found on [docs.conductor.is](https://docs.conductor.is/api-ref). The full API of this library can be found in [api.md](api.md).\n\n## Installation\n\n```sh\n# install from PyPI\npip install conductor-py\n```\n\n## Usage\n\nThe full API of this library can be found in [api.md](api.md).\n\n```python\nimport os\nfrom conductor import Conductor\n\nconductor = Conductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\n\npage = conductor.qbd.invoices.list(\n conductor_end_user_id="YOUR_END_USER_ID",\n)\nprint(page.data)\n```\n\nWhile you can provide an `api_key` keyword argument,\nwe recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)\nto add `CONDUCTOR_SECRET_KEY="sk_conductor_..."` to your `.env` file\nso that your API Key is not stored in source control.\n\n## Async usage\n\nSimply import `AsyncConductor` instead of `Conductor` and use `await` with each API call:\n\n```python\nimport os\nimport asyncio\nfrom conductor import AsyncConductor\n\nconductor = AsyncConductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n)\n\nasync def main() -> None:\n page = await conductor.qbd.invoices.list(\n conductor_end_user_id="YOUR_END_USER_ID",\n )\n print(page.data)\n\nasyncio.run(main())\n```\n\nFunctionality between the synchronous and asynchronous clients is otherwise identical.\n\n### With aiohttp\n\nBy default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.\n\nYou can enable this by installing `aiohttp`:\n\n```sh\n# install from PyPI\npip install conductor-py[aiohttp]\n```\n\nThen you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:\n\n```python\nimport os\nimport asyncio\nfrom conductor import DefaultAioHttpClient\nfrom conductor import AsyncConductor\n\nasync def main() -> None:\n async with AsyncConductor(\n api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted\n http_client=DefaultAioHttpClient(),\n) as conductor:\n page = await conductor.qbd.invoices.list(\n conductor_end_user_id="YOUR_END_USER_ID",\n )\n print(page.data)\n\nasyncio.run(main())\n```\n\n\n\n## Using types\n\nNested request parameters are [TypedDicts](https://docs.python.org/3/library/typing.html#typing.TypedDict). Responses are [Pydantic models](https://docs.pydantic.dev) which also provide helper methods for things like:\n\n- Serializing back into JSON, `model.to_json()`\n- Converting to a dictionary, `model.to_dict()`\n\nTyped requests and responses provide autocomplete and documentation within your editor. If you would like to see type errors in VS Code to help catch bugs earlier, set `python.analysis.typeCheckingMode` to `basic`.\n\n## Pagination\n\nList methods in the Conductor API are paginated.\n\nThis library provides auto-paginating iterators with each list response, so you do not have to request successive pages manually:\n\n```python\nfrom conductor import Conductor\n\nconductor = Conductor()\n\nall_invoices = []\n# Automatically fetches more pages as needed.\nfor invoice in conductor.qbd.invoices.list(\n conductor_end_user_id="YOUR_END_USER_ID",\n):\n # Do something with invoice here\n all_invoices.append(invoice)\nprint(all_invoices)\n```\n\nOr, asynchronously:\n\n```python\nimport asyncio\nfrom conductor import AsyncConductor\n\nconductor = AsyncConductor()\n\nasync def main() -> None:\n all_invoices = []\n # Iterate through items across all pages, issuing requests as needed.\n async for invoice in conductor.qbd.invoices.list(\n conductor_end_user_id="YOUR_END_USER_ID",\n):\n all_invoices.append(invoice)\n print(all_invoices)\n\nasyncio.run(main())\n```\n\nAlternatively, you can use the `.has_next_page()`, `.next_page_info()`, or `.get_next_page()` methods for more granular control working with pages:\n\n```python\nfirst_page = await conductor.qbd.invoices.list(\n conductor_end_user_id="YOUR_END_USER_ID",\n)\nif first_page.has_next_page():\n print(f"will fetch next page using these details: {first_page.next_page_info()}")\n next_page = await first_page.get_next_page()\n print(f"number of items we just fetched: {len(next_page.data)}")\n\n# Remove `await` for non-async usage.\n```\n\nOr just work directly with the returned data:\n\n```python\nfirst_page = await conductor.qbd.invoices.list(\n conductor_end_user_id="YOUR_END_USER_ID",\n)\n\nprint(f"next page cursor: {first_page.next_cursor}") # => "next page cursor: ..."\nfor invoice in first_page.data:\n print(invoice.id)\n\n# Remove `await` for non-async usage.\n```\n\nfrom datetime import date\n\n## Nested params\n\nNested parameters are dictionaries, typed using `TypedDict`, for example:\n\n```python\nfrom conductor import Conductor\n\nconductor = Conductor()\n\nbill = conductor.qbd.bills.create(\n transaction_date=date.fromisoformat("2024-10-01"),\n vendor_id="80000001-1234567890",\n conductor_end_user_id="end_usr_1234567abcdefg",\n vendor_address={},\n)\nprint(bill.vendor_address)\n```\n\n\n\n## Handling errors\n\nWhen the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `conductor.APIConnectionError` is raised.\n\nWhen the API returns a non-success status code (that is, 4xx or 5xx\nresponse), a subclass of `conductor.APIStatusError` is raised, containing `status_code` and `response` properties.\n\nAll errors inherit from `conductor.APIError`.\n\n```python\nimport conductor\nfrom conductor import Conductor\n\nconductor = Conductor()\n\ntry:\n conductor.qbd.invoices.list(\n conductor_end_user_id="YOUR_END_USER_ID",\n )\nexcept conductor.APIConnectionError as e:\n print("The server could not be reached")\n print(e.__cause__) # an underlying Exception, likely raised within httpx.\nexcept conductor.RateLimitError as e:\n print("A 429 status code was received; we should back off a bit.")\nexcept conductor.APIStatusError as e:\n print("Another non-200-range status code was received")\n print(e.status_code)\n print(e.response)\n```\n\nError codes are as follows:\n\n| Status Code | Error Type |\n| ----------- | -------------------------- |\n| 400 | `BadRequestError` |\n| 401 | `AuthenticationError` |\n| 403 | `PermissionDeniedError` |\n| 404 | `NotFoundError` |\n| 422 | `UnprocessableEntityError` |\n| 429 | `RateLimitError` |\n| >=500 | `InternalServerError` |\n| N/A | `APIConnectionError` |\n\n### Retries\n\nCertain errors are automatically retried 2 times by default, with a short exponential backoff.\nConnection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,\n429 Rate Limit, and >=500 Internal errors are all retried by default.\n\nYou can use the `max_retries` option to configure or disable retry settings:\n\n```python\nfrom conductor import Conductor\n\n# Configure the default for all requests:\nconductor = Conductor(\n # default is 2\n max_retries=0,\n)\n\n# Or, configure per-request:\nconductor.with_options(max_retries = 5).qbd.invoices.list(\n conductor_end_user_id="YOUR_END_USER_ID",\n)\n```\n\n### Timeouts\n\nBy default requests time out after 2 minutes. You can configure this with a `timeout` option,\nwhich accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/timeouts/#fine-tuning-the-configuration) object:\n\n```python\nfrom conductor import Conductor\n\n# Configure the default for all requests:\nconductor = Conductor(\n # 20 seconds (default is 2 minutes)\n timeout=20.0,\n)\n\n# More granular control:\nconductor = Conductor(\n timeout=httpx.Timeout(60.0, read=5.0, write=10.0, connect=2.0),\n)\n\n# Override per-request:\nconductor.with_options(timeout = 5.0).qbd.invoices.list(\n conductor_end_user_id="YOUR_END_USER_ID",\n)\n```\n\nOn timeout, an `APITimeoutError` is thrown.\n\nNote that requests that time out are [retried twice by default](#retries).\n\n\n\n## Advanced\n\n### Logging\n\nWe use the standard library [`logging`](https://docs.python.org/3/library/logging.html) module.\n\nYou can enable logging by setting the environment variable `CONDUCTOR_LOG` to `info`.\n\n```shell\n$ export CONDUCTOR_LOG=info\n```\n\nOr to `debug` for more verbose logging.\n\n### How to tell whether `None` means `null` or missing\n\nIn an API response, a field may be explicitly `null`, or missing entirely; in either case, its value is `None` in this library. You can differentiate the two cases with `.model_fields_set`:\n\n```py\nif response.my_field is None:\n if \'my_field\' not in response.model_fields_set:\n print(\'Got json like {}, without a "my_field" key present at all.\')\n else:\n print(\'Got json like {"my_field": null}.\')\n```\n\n### Accessing raw response data (e.g. headers)\n\nThe "raw" Response object can be accessed by prefixing `.with_raw_response.` to any HTTP method call, e.g.,\n\n```py\nfrom conductor import Conductor\n\nconductor = Conductor()\nresponse = conductor.qbd.invoices.with_raw_response.list(\n conductor_end_user_id="YOUR_END_USER_ID",\n)\nprint(response.headers.get(\'X-My-Header\'))\n\ninvoice = response.parse() # get the object that `qbd.invoices.list()` would have returned\nprint(invoice.id)\n```\n\nThese methods return an [`APIResponse`](https://github.com/conductor-is/quickbooks-desktop-python/tree/main/src/conductor/_response.py) object.\n\nThe async client returns an [`AsyncAPIResponse`](https://github.com/conductor-is/quickbooks-desktop-python/tree/main/src/conductor/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.\n\n#### `.with_streaming_response`\n\nThe above interface eagerly reads the full response body when you make the request, which may not always be what you want.\n\nTo stream the response body, use `.with_streaming_response` instead, which requires a context manager and only reads the response body once you call `.read()`, `.text()`, `.json()`, `.iter_bytes()`, `.iter_text()`, `.iter_lines()` or `.parse()`. In the async client, these are async methods.\n\n```python\nwith conductor.qbd.invoices.with_streaming_response.list(\n conductor_end_user_id="YOUR_END_USER_ID",\n) as response :\n print(response.headers.get(\'X-My-Header\'))\n\n for line in response.iter_lines():\n print(line)\n```\n\nThe context manager is required so that the response will reliably be closed.\n\n### Making custom/undocumented requests\n\nThis library is typed for convenient access to the documented API.\n\nIf you need to access undocumented endpoints, params, or response properties, the library can still be used.\n\n#### Undocumented endpoints\n\nTo make requests to undocumented endpoints, you can make requests using `conductor.get`, `conductor.post`, and other\nhttp verbs. Options on the client will be respected (such as retries) when making this request.\n\n```py\nimport httpx\n\nresponse = conductor.post(\n "/foo",\n cast_to=httpx.Response,\n body={"my_param": True},\n)\n\nprint(response.headers.get("x-foo"))\n```\n\n#### Undocumented request params\n\nIf you want to explicitly send an extra param, you can do so with the `extra_query`, `extra_body`, and `extra_headers` request\noptions.\n\n#### Undocumented response properties\n\nTo access undocumented response properties, you can access the extra fields like `response.unknown_prop`. You\ncan also get all the extra fields on the Pydantic model as a dict with\n[`response.model_extra`](https://docs.pydantic.dev/latest/api/base_model/#pydantic.BaseModel.model_extra).\n\n### Configuring the HTTP client\n\nYou can directly override the [httpx client](https://www.python-httpx.org/api/#client) to customize it for your use case, including:\n\n- Support for [proxies](https://www.python-httpx.org/advanced/proxies/)\n- Custom [transports](https://www.python-httpx.org/advanced/transports/)\n- Additional [advanced](https://www.python-httpx.org/advanced/clients/) functionality\n\n```python\nimport httpx\nfrom conductor import Conductor, DefaultHttpxClient\n\nconductor = Conductor(\n # Or use the `CONDUCTOR_BASE_URL` env var\n base_url="http://my.test.server.example.com:8083",\n http_client=DefaultHttpxClient(proxy="http://my.test.proxy.example.com", transport=httpx.HTTPTransport(local_address="0.0.0.0")),\n)\n```\n\nYou can also customize the client on a per-request basis by using `with_options()`:\n\n```python\nconductor.with_options(http_client=DefaultHttpxClient(...))\n```\n\n### Managing HTTP resources\n\nBy default the library closes underlying HTTP connections whenever the client is [garbage collected](https://docs.python.org/3/reference/datamodel.html#object.__del__). You can manually close the client using the `.close()` method if desired, or with a context manager that closes when exiting.\n\n```py\nfrom conductor import Conductor\n\nwith Conductor() as conductor:\n # make requests here\n ...\n\n# HTTP client is now closed\n```\n\n## Versioning\n\nThis package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:\n\n1. Changes that only affect static types, without breaking runtime behavior.\n2. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_\n3. Changes that we do not expect to impact the vast majority of users in practice.\n\nWe take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.\n\nWe are keen for your feedback; please open an [issue](https://www.github.com/conductor-is/quickbooks-desktop-python/issues) with questions, bugs, or suggestions.\n\n### Determining the installed version\n\nIf you\'ve upgraded to the latest version but aren\'t seeing any new features you were expecting then your python environment is likely still using an older version.\n\nYou can determine the version that is being used at runtime with:\n\n```py\nimport conductor\nprint(conductor.__version__)\n```\n\n## Requirements\n\nPython 3.9 or higher.\n\n## Contributing\n\nSee [the contributing documentation](./CONTRIBUTING.md).\n', }, ]; const INDEX_OPTIONS = { fields: [ 'name', 'endpoint', 'summary', 'description', 'qualified', 'stainlessPath', 'content', 'sectionContext', ], storeFields: ['kind', '_original'], searchOptions: { prefix: true, fuzzy: 0.1, boost: { name: 5, stainlessPath: 3, endpoint: 3, qualified: 3, summary: 2, content: 1, description: 1, } as Record, }, }; /** * Self-contained local search engine backed by MiniSearch. * Method data is embedded at SDK build time; prose documents * can be loaded from an optional docs directory at runtime. */ export class LocalDocsSearch { private methodIndex: MiniSearch; private proseIndex: MiniSearch; private constructor() { this.methodIndex = new MiniSearch(INDEX_OPTIONS); this.proseIndex = new MiniSearch(INDEX_OPTIONS); } static async create(opts?: { docsDir?: string }): Promise { const instance = new LocalDocsSearch(); instance.indexMethods(EMBEDDED_METHODS); for (const readme of EMBEDDED_READMES) { instance.indexProse(readme.content, `readme:${readme.language}`); } if (opts?.docsDir) { await instance.loadDocsDirectory(opts.docsDir); } return instance; } search(props: { query: string; language?: string; detail?: string; maxResults?: number; maxLength?: number; }): SearchResult { const { query, language = 'typescript', detail = 'default', maxResults = 5, maxLength = 100_000 } = props; const useMarkdown = detail === 'verbose' || detail === 'high'; // Search both indices and merge results by score. // Filter prose hits so language-tagged content (READMEs and docs with // frontmatter) only matches the requested language. const methodHits = this.methodIndex .search(query) .map((hit) => ({ ...hit, _kind: 'http_method' as const })); const proseHits = this.proseIndex .search(query) .filter((hit) => { const source = ((hit as Record)['_original'] as ProseChunk | undefined)?.source; if (!source) return true; // Check for language-tagged sources: "readme:" or "lang::" let taggedLang: string | undefined; if (source.startsWith('readme:')) taggedLang = source.slice('readme:'.length); else if (source.startsWith('lang:')) taggedLang = source.split(':')[1]; if (!taggedLang) return true; return taggedLang === language || (language === 'javascript' && taggedLang === 'typescript'); }) .map((hit) => ({ ...hit, _kind: 'prose' as const })); const merged = [...methodHits, ...proseHits].sort((a, b) => b.score - a.score); const top = merged.slice(0, maxResults); const fullResults: (string | Record)[] = []; for (const hit of top) { const original = (hit as Record)['_original']; if (hit._kind === 'http_method') { const m = original as MethodEntry; if (useMarkdown && m.markdown) { fullResults.push(m.markdown); } else { // Use per-language data when available, falling back to the // top-level fields (which are TypeScript-specific in the // legacy codepath). const langData = m.perLanguage?.[language]; fullResults.push({ method: langData?.method ?? m.qualified, summary: m.summary, description: m.description, endpoint: `${m.httpMethod.toUpperCase()} ${m.endpoint}`, ...(langData?.example ? { example: langData.example } : {}), ...(m.params ? { params: m.params } : {}), ...(m.response ? { response: m.response } : {}), }); } } else { const c = original as ProseChunk; fullResults.push({ content: c.content, ...(c.source ? { source: c.source } : {}), }); } } let totalLength = 0; const results: (string | Record)[] = []; for (const result of fullResults) { const len = typeof result === 'string' ? result.length : JSON.stringify(result).length; totalLength += len; if (totalLength > maxLength) break; results.push(result); } if (results.length < fullResults.length) { results.unshift(`Truncated; showing ${results.length} of ${fullResults.length} results.`); } return { results }; } private indexMethods(methods: MethodEntry[]): void { const docs: MiniSearchDocument[] = methods.map((m, i) => ({ id: `method-${i}`, kind: 'http_method' as const, name: m.name, endpoint: m.endpoint, summary: m.summary, description: m.description, qualified: m.qualified, stainlessPath: m.stainlessPath, _original: m as unknown as Record, })); if (docs.length > 0) { this.methodIndex.addAll(docs); } } private async loadDocsDirectory(docsDir: string): Promise { let entries; try { entries = await fs.readdir(docsDir, { withFileTypes: true }); } catch (err) { getLogger().warn({ err, docsDir }, 'Could not read docs directory'); return; } const files = entries .filter((e) => e.isFile()) .filter((e) => e.name.endsWith('.md') || e.name.endsWith('.markdown') || e.name.endsWith('.json')); for (const file of files) { try { const filePath = path.join(docsDir, file.name); const content = await fs.readFile(filePath, 'utf-8'); if (file.name.endsWith('.json')) { const texts = extractTexts(JSON.parse(content)); if (texts.length > 0) { this.indexProse(texts.join('\n\n'), file.name); } } else { // Parse optional YAML frontmatter for language tagging. // Files with a "language" field in frontmatter will only // surface in searches for that language. // // Example: // --- // language: python // --- // # Error handling in Python // ... const frontmatter = parseFrontmatter(content); const source = frontmatter.language ? `lang:${frontmatter.language}:${file.name}` : file.name; this.indexProse(content, source); } } catch (err) { getLogger().warn({ err, file: file.name }, 'Failed to index docs file'); } } } private indexProse(markdown: string, source: string): void { const chunks = chunkMarkdown(markdown); const baseId = this.proseIndex.documentCount; const docs: MiniSearchDocument[] = chunks.map((chunk, i) => ({ id: `prose-${baseId + i}`, kind: 'prose' as const, content: chunk.content, ...(chunk.sectionContext != null ? { sectionContext: chunk.sectionContext } : {}), _original: { ...chunk, source } as unknown as Record, })); if (docs.length > 0) { this.proseIndex.addAll(docs); } } } /** Lightweight markdown chunker — splits on headers, chunks by word count. */ function chunkMarkdown(markdown: string): { content: string; tag: string; sectionContext?: string }[] { // Strip YAML frontmatter const stripped = markdown.replace(/^---\n[\s\S]*?\n---\n?/, ''); const lines = stripped.split('\n'); const chunks: { content: string; tag: string; sectionContext?: string }[] = []; const headers: string[] = []; let current: string[] = []; const flush = () => { const text = current.join('\n').trim(); if (!text) return; const sectionContext = headers.length > 0 ? headers.join(' > ') : undefined; // Split into ~200-word chunks const words = text.split(/\s+/); for (let i = 0; i < words.length; i += 200) { const slice = words.slice(i, i + 200).join(' '); if (slice) { chunks.push({ content: slice, tag: 'p', ...(sectionContext != null ? { sectionContext } : {}) }); } } current = []; }; for (const line of lines) { const headerMatch = line.match(/^(#{1,6})\s+(.+)/); if (headerMatch) { flush(); const level = headerMatch[1]!.length; const text = headerMatch[2]!.trim(); while (headers.length >= level) headers.pop(); headers.push(text); } else { current.push(line); } } flush(); return chunks; } /** Recursively extracts string values from a JSON structure. */ function extractTexts(data: unknown, depth = 0): string[] { if (depth > 10) return []; if (typeof data === 'string') return data.trim() ? [data] : []; if (Array.isArray(data)) return data.flatMap((item) => extractTexts(item, depth + 1)); if (typeof data === 'object' && data !== null) { return Object.values(data).flatMap((v) => extractTexts(v, depth + 1)); } return []; } /** Parses YAML frontmatter from a markdown string, extracting the language field if present. */ function parseFrontmatter(markdown: string): { language?: string } { const match = markdown.match(/^---\n([\s\S]*?)\n---/); if (!match) return {}; const body = match[1] ?? ''; const langMatch = body.match(/^language:\s*(.+)$/m); return langMatch ? { language: langMatch[1]!.trim() } : {}; }