# Update an invoice

Updates an invoice.

To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) you'll need to specify the `/accounts/{accountID}/invoices.write` scope.

PATCH

/accounts/{accountID}/invoices/{invoiceID}

Ask

```shell
curl -X PATCH "https://api.moov.io/accounts/{accountID}/invoices/{invoiceID}" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.07.00"
```

Ask

```go
mc, _ := moov.NewClient()

var accountID string
var invoiceID string
now := time.Now().UTC()
update := moov.UpdateInvoice{DueDate: moov.Set(now)}

mc.UpdateInvoice(ctx, accountID, invoiceID, update)
```

Ask

```typescript
import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.invoices.updateInvoice({
    accountID: "ce46d65a-8504-4afa-b3f7-303401bd08b3",
    invoiceID: "ef510999-370a-4350-87d5-bc81fc02a2ea",
    updateInvoice: {
      description: "Updated professional services for Q1 2026",
      lineItems: {
        items: [
          {
            name: "Professional Services",
            basePrice: {
              currency: "USD",
              valueDecimal: "1000.00",
            },
            quantity: 1,
          },
        ],
      },
      invoiceDate: new Date("2026-01-16T00:00:00Z"),
      dueDate: new Date("2026-02-16T00:00:00Z"),
    },
  });

console.log(result);
}

run();
```

Ask

```php
declare(strict_types=1);

require 'vendor/autoload.php';

use Moov\
