Update an invoice
Updates an invoice.
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/invoices.write scope.
curl -X PATCH "https://api.moov.io/accounts/{accountID}/invoices/{invoiceID}" \
-H "Authorization: Bearer {token}" \
-H "X-Moov-Version: v2026.04.00"mc, _ := moov.NewClient()
var accountID string
var invoiceID string
now := time.Now().UTC()
update := moov.UpdateInvoice{DueDate: moov.PtrOf(now)}
mc.UpdateInvoice(ctx, accountID, invoiceID, update)
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();declare(strict_types=1);
require 'vendor/autoload.php';
use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;
use Moov\MoovPhp\Utils;
$sdk = MoovPhp\Moov::builder()
->setSecurity(
new Components\Security(
username: '',
password: '',
)
)
->build();
$updateInvoice = new Components\UpdateInvoice(
description: 'Updated professional services for Q1 2026',
lineItems: new Components\CreateInvoiceLineItemsUpdate(
items: [
new Components\CreateInvoiceLineItem(
name: 'Professional Services',
basePrice: new Components\AmountDecimal(
currency: 'USD',
valueDecimal: '1000.00',
),
quantity: 1,
),
],
),
invoiceDate: Utils\Utils::parseDateTime('2026-01-16T00:00:00Z'),
dueDate: Utils\Utils::parseDateTime('2026-02-16T00:00:00Z'),
);
$response = $sdk->invoices->updateInvoice(
accountID: 'ce46d65a-8504-4afa-b3f7-303401bd08b3',
invoiceID: 'ef510999-370a-4350-87d5-bc81fc02a2ea',
updateInvoice: $updateInvoice
);
if ($response->invoice !== null) {
// handle response
}package hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.*;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.errors.UpdateInvoiceError;
import io.moov.sdk.models.operations.UpdateInvoiceResponse;
import java.lang.Exception;
import java.time.OffsetDateTime;
import java.util.List;
public class Application {
public static void main(String[] args) throws GenericError, UpdateInvoiceError, Exception {
Moov sdk = Moov.builder()
.security(Security.builder()
.username("")
.password("")
.build())
.build();
UpdateInvoiceResponse res = sdk.invoices().updateInvoice()
.accountID("ce46d65a-8504-4afa-b3f7-303401bd08b3")
.invoiceID("ef510999-370a-4350-87d5-bc81fc02a2ea")
.updateInvoice(UpdateInvoice.builder()
.description("Updated professional services for Q1 2026")
.lineItems(CreateInvoiceLineItemsUpdate.builder()
.items(List.of(
CreateInvoiceLineItem.builder()
.name("Professional Services")
.basePrice(AmountDecimal.builder()
.currency("USD")
.valueDecimal("1000.00")
.build())
.quantity(1)
.build()))
.build())
.invoiceDate(OffsetDateTime.parse("2026-01-16T00:00:00Z"))
.dueDate(OffsetDateTime.parse("2026-02-16T00:00:00Z"))
.build())
.call();
if (res.invoice().isPresent()) {
System.out.println(res.invoice().get());
}
}
}from moovio_sdk import Moov
from moovio_sdk.models import components
from moovio_sdk.utils import parse_datetime
with Moov(
security=components.Security(
username="",
password="",
),
) as moov:
res = moov.invoices.update_invoice(account_id="ce46d65a-8504-4afa-b3f7-303401bd08b3", invoice_id="ef510999-370a-4350-87d5-bc81fc02a2ea", description="Updated professional services for Q1 2026", line_items={
"items": [
{
"name": "Professional Services",
"base_price": {
"currency": "USD",
"value_decimal": "1000.00",
},
"quantity": 1,
},
],
}, invoice_date=parse_datetime("2026-01-16T00:00:00Z"), due_date=parse_datetime("2026-02-16T00:00:00Z"), tax_amount={
"currency": "USD",
"value_decimal": "12.987654321",
})
# Handle response
print(res)require 'moov_ruby'
Models = ::Moov::Models
s = ::Moov::Client.new(
security: Models::Components::Security.new(
username: '',
password: ''
)
)
res = s.invoices.update_invoice(account_id: 'ce46d65a-8504-4afa-b3f7-303401bd08b3', invoice_id: 'ef510999-370a-4350-87d5-bc81fc02a2ea', update_invoice: Models::Components::UpdateInvoice.new(
description: 'Updated professional services for Q1 2026',
line_items: Models::Components::CreateInvoiceLineItemsUpdate.new(
items: [
Models::Components::CreateInvoiceLineItem.new(
name: 'Professional Services',
base_price: Models::Components::AmountDecimal.new(
currency: 'USD',
value_decimal: '1000.00'
),
quantity: 1
),
]
),
invoice_date: DateTime.iso8601('2026-01-16T00:00:00Z'),
due_date: DateTime.iso8601('2026-02-16T00:00:00Z')
))
unless res.invoice.nil?
# handle response
endusing Moov.Sdk;
using Moov.Sdk.Models.Components;
using System;
using System.Collections.Generic;
var sdk = new MoovClient(security: new Security() {
Username = "",
Password = "",
});
var res = await sdk.Invoices.UpdateInvoiceAsync(
accountID: "ce46d65a-8504-4afa-b3f7-303401bd08b3",
invoiceID: "ef510999-370a-4350-87d5-bc81fc02a2ea",
body: new UpdateInvoice() {
Description = "Updated professional services for Q1 2026",
LineItems = new CreateInvoiceLineItemsUpdate() {
Items = new List<CreateInvoiceLineItem>() {
new CreateInvoiceLineItem() {
Name = "Professional Services",
BasePrice = new AmountDecimal() {
Currency = "USD",
ValueDecimal = "1000.00",
},
Quantity = 1,
},
},
},
InvoiceDate = System.DateTime.Parse("2026-01-16T00:00:00Z").ToUniversalTime(),
DueDate = System.DateTime.Parse("2026-02-16T00:00:00Z").ToUniversalTime(),
}
);
// handle response{
"createdOn": "2024-05-06T12:20:38.184Z",
"customerAccountID": "3dfff852-927d-47e8-822c-2fffc57ff6b9",
"customerDisplayName": "Acme Corp",
"customerEmail": "billing@acmecorp.com",
"description": "Professional services for Q1 2026",
"disputedAmount": {
"currency": "USD",
"valueDecimal": "0.00"
},
"dueDate": "2026-02-15T00:00:00Z",
"invoiceDate": "2026-01-15T00:00:00Z",
"invoiceID": "ec7e1848-dc80-4ab0-8827-dd7fc0737b43",
"invoiceNumber": "INV-1001",
"lineItems": {
"items": [
{
"basePrice": {
"currency": "USD",
"valueDecimal": "1000.00"
},
"name": "Professional Services",
"quantity": 1
}
]
},
"paidAmount": {
"currency": "USD",
"valueDecimal": "0.00"
},
"partnerAccountID": "5dfff852-927d-47e8-822c-2fffc57ff6b8",
"pendingAmount": {
"currency": "USD",
"valueDecimal": "0.00"
},
"refundedAmount": {
"currency": "USD",
"valueDecimal": "0.00"
},
"status": "unpaid",
"subtotalAmount": {
"currency": "USD",
"valueDecimal": "1000.00"
},
"taxAmount": {
"currency": "USD",
"valueDecimal": "80.00"
},
"totalAmount": {
"currency": "USD",
"valueDecimal": "1080.00"
}
}Response headers
x-request-id
string
required
{
"error": "string"
}Response headers
x-request-id
string
required
Response headers
x-request-id
string
required
Response headers
x-request-id
string
required
Response headers
x-request-id
string
required
{
"error": "string"
}Response headers
x-request-id
string
required
{
"description": "string",
"lineItems": {
"items": {
"property1": {
"productID": "string",
"name": "string",
"basePrice": {
"currency": "string",
"valueDecimal": "string"
},
"options": {
"property1": {
"name": "string",
"group": "string",
"priceModifier": {
"currency": "string",
"valueDecimal": "string"
},
"quantity": "string"
},
"property2": {
"name": "string",
"group": "string",
"priceModifier": {
"currency": "string",
"valueDecimal": "string"
},
"quantity": "string"
}
},
"quantity": "string"
},
"property2": {
"productID": "string",
"name": "string",
"basePrice": {
"currency": "string",
"valueDecimal": "string"
},
"options": {
"property1": {
"name": "string",
"group": "string",
"priceModifier": {
"currency": "string",
"valueDecimal": "string"
},
"quantity": "string"
},
"property2": {
"name": "string",
"group": "string",
"priceModifier": {
"currency": "string",
"valueDecimal": "string"
},
"quantity": "string"
}
},
"quantity": "string"
}
}
},
"invoiceDate": "string",
"dueDate": "string",
"status": "string",
"taxAmount": {
"currency": "string",
"valueDecimal": "string"
}
}Response headers
x-request-id
string
required
Response headers
x-request-id
string
required
Response headers
x-request-id
string
required
Response headers
x-request-id
string
required
Headers
X-Moov-Version
string
v2026.04.00
Path parameters
accountID
string
required
invoiceID
string
required
Body
description
string
dueDate
string<date-time>
| null
invoiceDate
string<date-time>
| null
lineItems
object
Show child attributes
items
array<object>
Show child attributes
basePrice
object
required
Show child attributes
currency
string
required
Pattern
valueDecimal
string
required
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
name
string
[1 to 150] characters
required
quantity
integer<int32>
required
options
array<object>
Show child attributes
name
string
[1 to 150] characters
required
quantity
integer<int32>
required
group
string
<=100 characters
priceModifier
object
Show child attributes
currency
string
required
Pattern
valueDecimal
string
required
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
productID
string
status
string
The status can be updated to one of the following values under specific conditions:
canceled: Can only be set if the current status isdraft,unpaid, oroverdue. Canceling an invoice indicates the invoice is no longer expected to be paid (e.g., the charge was waived or terms changed). Canceled invoices still appear in list results by default and remain part of the invoice history. To completely discard an invoice created by mistake, use the delete endpoint instead.unpaid: Can only be set if the current status isdraft. Setting the status tounpaidfinalizes the invoice and sends an email with a payment link to the customer.
draft,
unpaid,
payment-pending,
paid,
overdue,
canceled
taxAmount
object
Show child attributes
currency
string
Pattern
valueDecimal
string
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
Response
createdOn
string<date-time>
required
customerAccountID
string
<=36 characters
required
customerDisplayName
string
required
customerEmail
string
required
disputedAmount
object
required
Show child attributes
currency
string
required
Pattern
valueDecimal
string
required
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
invoiceID
string
<=36 characters
required
invoiceNumber
string
required
lineItems
object
required
Show child attributes
items
array<object>
required
Show child attributes
basePrice
object
required
Show child attributes
currency
string
required
Pattern
valueDecimal
string
required
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
name
string
[1 to 150] characters
required
quantity
integer<int32>
required
images
array<object>
Show child attributes
altText
string
<=125 characters
imageID
string
<=36 characters
link
string<uri>
publicID
string
Pattern
options
array<object>
Show child attributes
name
string
[1 to 150] characters
required
quantity
integer<int32>
required
group
string
<=100 characters
images
array<object>
Show child attributes
altText
string
<=125 characters
imageID
string
<=36 characters
link
string<uri>
publicID
string
Pattern
priceModifier
object
Show child attributes
currency
string
required
Pattern
valueDecimal
string
required
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
productID
string
paidAmount
object
required
Show child attributes
currency
string
required
Pattern
valueDecimal
string
required
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
partnerAccountID
string
<=36 characters
required
pendingAmount
object
required
Show child attributes
currency
string
required
Pattern
valueDecimal
string
required
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
refundedAmount
object
required
Show child attributes
currency
string
required
Pattern
valueDecimal
string
required
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
status
string<enum>
required
draft,
unpaid,
payment-pending,
paid,
overdue,
canceled
subtotalAmount
object
required
Show child attributes
currency
string
required
Pattern
valueDecimal
string
required
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
taxAmount
object
required
Show child attributes
currency
string
required
Pattern
valueDecimal
string
required
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
totalAmount
object
required
Show child attributes
currency
string
required
Pattern
valueDecimal
string
required
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
canceledOn
string<date-time>
description
string
disabledOn
string<date-time>
dueDate
string<date-time>
invoiceDate
string<date-time>
invoicePayments
array<object>
Show child attributes
amount
object
Show child attributes
currency
string
required
Pattern
valueDecimal
string
required
Pattern
A decimal-formatted numerical string that represents up to 9 decimal place precision.
For example, $12.987654321 is '12.987654321'.
external
object
Show child attributes
description
string
foreignID
string
paymentDate
string<date-time>
invoicePaymentID
string
<=36 characters
invoicePaymentType
string<enum>
transfer,
external
transfer
object
Show child attributes
transferID
string
<=36 characters
required
paidOn
string<date-time>
paymentLinkCode
string
sentOn
string<date-time>