# Update Invoice — QuickBooks Sandbox

> Updates an invoice. See the documentation

- Key: `quickbooks_sandbox-update-invoice`
- Type: Action (Write)
- Version: 0.0.2
- App: QuickBooks Sandbox (`quickbooks_sandbox`) — https://pipedream.com/apps/quickbooks-sandbox.md
- This page (HTML): https://pipedream.com/apps/quickbooks-sandbox/actions/update-invoice
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/quickbooks_sandbox/actions/update-invoice/update-invoice.mjs

## Description

Updates an invoice. [See the documentation](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#update-an-invoice)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `invoiceId` | `string` | Yes | ID of the invoice to get details of Options are loaded from the connected account. |
| `customerRefValue` | `string` | Yes | Reference to a customer or job Options are loaded from the connected account. |
| `billEmail` | `string` | No | Email address where the invoice should be sent |
| `dueDate` | `string` | No | Date when the payment of the transaction is due (YYYY-MM-DD) |
| `allowOnlineCreditCardPayment` | `boolean` | No | Allow online credit card payment |
| `allowOnlineACHPayment` | `boolean` | No | Allow online bank transfer payment |
| `currencyRefValue` | `string` | No | A three letter string representing the ISO 4217 code for the currency. For example, USD, AUD, EUR, and so on. This must be defined if multicurrency is enabled for the company. Multicurrency is enabled for the company if Preferences.MultiCurrencyEnabled is set to true. Read more about multicurrency support here. Required if multicurrency is enabled for the company. Options are loaded from the connected account. |
| `docNumber` | `string` | No | Reference number for the transaction |
| `billingStreetAddress` | `string` | No | The street address of the billing address |
| `billingCity` | `string` | No | The city of the billing address |
| `billingState` | `string` | No | The state of the billing address |
| `billingZip` | `string` | No | The zip code of the billing address |
| `billingLatitude` | `string` | No | The latitude of the billing address |
| `billingLongitude` | `string` | No | The longitude of the billing address |
| `shippingStreetAddress` | `string` | No | The street address of the shipping address |
| `shippingCity` | `string` | No | The city of the shipping address |
| `shippingState` | `string` | No | The state of the shipping address |
| `shippingZip` | `string` | No | The zip code of the shipping address |
| `shippingLatitude` | `string` | No | The latitude of the shipping address |
| `shippingLongitude` | `string` | No | The longitude of the shipping address |
| `trackingNum` | `string` | No | Shipping tracking number |
| `privateNote` | `string` | No | Private note for internal use |
| `customerMemo` | `string` | No | Memo visible to customer |
| `taxCodeId` | `string` | No | The identifier of a tax code Options are loaded from the connected account. |
| `lineItemsAsObjects` | `boolean` | Yes | Enter line items as an array of objects |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "quickbooks_sandbox",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "quickbooks_sandbox-update-invoice",
  arguments: {
    invoiceId: "Invoice ID",
    customerRefValue: "Customer Reference",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "quickbooks_sandbox-update-invoice",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    quickbooks_sandbox: { authProvisionId: "apn_xxxxxxx" },
    invoiceId: "Invoice ID",
    customerRefValue: "Customer Reference",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "quickbooks_sandbox-update-invoice",
    "configured_props": {
      "quickbooks_sandbox": { "authProvisionId": "apn_xxxxxxx" },
      "invoiceId": "Invoice ID",
      "customerRefValue": "Customer Reference"
    }
  }'
```

---

- App: https://pipedream.com/apps/quickbooks-sandbox.md · All apps: https://pipedream.com/apps
