Skip to main content
PUT
Update InvoiceV2 record

Authorizations

X-API-KEY
string
header
required

Headers

Idempotency-Key
string

Optional. A unique value (a UUID works well) identifying this operation. If the request is repeated with the same key, the original response is replayed instead of the operation running again, so a retry cannot create a duplicate record. Results are replayable for 48 hours. Reusing a key with a different request body returns 422.

Maximum string length: 255

Path Parameters

record_number
integer
required

The number attribute of the record.

Body

application/json
date
string<date>
required
supply_date
string<date> | null
place_of_supply
string | null
Maximum string length: 2
tax_registration_numbers
TaxRegistrationNumbersSnapshot · object | null
tax_metadata
object | null
transaction_date
string<date> | null
bill_to_address
string | null
default:""
deprecated

Deprecated: send the structured billing_address / shipping_address instead.

ship_to_address
string | null
default:""
deprecated

Deprecated: send the structured billing_address / shipping_address instead.

billing_address
AddressSchemaIn · object | null
shipping_address
AddressSchemaIn · object | null
custom_fields
Custom Fields · object[] | null
discount_type
enum<string> | null
Available options:
PERCENTAGE,
FIXED
discount_value
auto_calculate_tax
enum<string> | null

Set to "required" to calculate tax for every line and replace any supplied tax amounts before saving, or return 422 when calculation cannot complete. Omit the field to keep caller-supplied tax. The calculation supports native US sales tax (the DualEntry tax engine) and Avalara Sales Tax, VAT, and GST. Native VAT and GST return 422, because this field does not select a rate. Tax addresses: money-in uses shipping_address, then billing_address, then the customer saved address. Money-out uses ship_from_address and ship_to_address, then the vendor and company saved addresses. When a money-in payload has no address, DualEntry copies the customer saved address to billing_address and shipping_address. A money-out record saves only the ship addresses that the payload sends. Returns 422 when calculation cannot resolve a required address.

Available options:
required
memo
string | null
due_date
string<date> | null
company_id
integer | null
customer_id
integer | null

If this customer is intercompany, DualEntry also writes a transaction in the elimination company.

currency_iso_4217_code
enum<string> | null
Available options:
AED,
AFN,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BTN,
BWP,
BYN,
BZD,
CAD,
CDF,
CHF,
CLF,
CLP,
CNY,
COP,
CRC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ERN,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
IRR,
ISK,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KPW,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SDG,
SEK,
SGD,
SHP,
SLL,
SOS,
SRD,
STN,
SVC,
SYP,
SZL,
THB,
TJS,
TMT,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XAG,
XAU,
XCD,
XDR,
XOF,
XPD,
XPF,
XPT,
YER,
ZAR,
ZMW,
ZWL
exchange_rate

If omitted or null, calculated from the company base currency, invoice currency, and date.

items
PublicInvoiceItemIn · object[] | null
sales_order_id
integer | null
record_status
enum<string>
default:posted
Available options:
draft,
posted,
archived
attachments
AttachmentSchemaOut · object[]
contracted
boolean
default:false
contract_id
integer | null
term_id
integer | null
reference_number
string
default:""
ar_account_id
integer | null
payment
PaymentSchemaIn · object | null

Schema for payment collection configuration input (matches frontend structure).

Response

OK

bill_to_address
string
required
deprecated

Deprecated: send the structured billing_address / shipping_address instead.

ship_to_address
string
required
deprecated

Deprecated: send the structured billing_address / shipping_address instead.

supply_date
string<date> | null
required
tax
RecordTaxContextOut · object | null
required

Base for record-level tax context; regime discriminates data.

Mirrors TaxResultV2Out (core.taxes.api.taxes)

term_id
integer | null
required
term_name
string
required
transaction_ids
integer[]
required
internal_id
integer
required
number
integer
required
company_id
integer
required
company_name
string
required
company_currency
string
required
customer_id
integer | null
required
currency_iso_4217_code
enum<string>
required
Available options:
AED,
AFN,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BTN,
BWP,
BYN,
BZD,
CAD,
CDF,
CHF,
CLF,
CLP,
CNY,
COP,
CRC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ERN,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
IRR,
ISK,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KPW,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SDG,
SEK,
SGD,
SHP,
SLL,
SOS,
SRD,
STN,
SVC,
SYP,
SZL,
THB,
TJS,
TMT,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XAG,
XAU,
XCD,
XDR,
XOF,
XPD,
XPF,
XPT,
YER,
ZAR,
ZMW,
ZWL
exchange_rate
string
required
Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,16}0*$
amount
string
required

Total amount of transaction

Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
amount_due
string
required

Amount to be paid

Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
paid_total
string
required

Amount that was already paid by Customer Repayment Applications or Customer Payments

Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
amount_due_updated_at
string<date-time>
required

Timestamp of the most recent change that could have affected amount_due. Moves whenever the invoice itself is edited, or whenever a posted Customer Payment or Customer Prepayment Application referencing this invoice is written.

memo
string
required
date
string<date>
required

Posting date (GL date) - the date when the transaction is recorded in the general ledger

transaction_date
string<date>
required

Transaction date (inception date) - the date when the transaction actually occurred

due_date
string<date> | null
required
record_status
enum<string>
required
Available options:
draft,
posted,
archived
recurring_record_number
integer | null
required
contracted
boolean
required
ar_account_id
integer | null
required
discount_type
enum<string> | null
required
Available options:
PERCENTAGE,
FIXED
discount_value
string | null
required
Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
reference_number
string
required
created_at
string<date-time>
required

Date and time the record was created

updated_at
string<date-time>
required

Date and time the record was last updated

billing_address
AddressSchemaOut · object | null
shipping_address
AddressSchemaOut · object | null
custom_fields
CustomFieldValuePairOutputSchema · object[]
place_of_supply
string | null
Maximum string length: 2
tax_registration_numbers
TaxRegistrationNumbersSnapshot · object | null
tax_metadata
object | null
integration_remote_records
IntegrationRemoteRecordSchemaOut · object[]
customer_name
string | null
attachments
PublicAttachmentSchemaOut · object[]
payment
PaymentSchemaOut · object | null

Schema for payment collection configuration output.

bank_match_status
string | null
reconciliation_status
string | null
created_by
AuditActorSchemaOut · object | null

Schema for audit actor information.

updated_by
AuditActorSchemaOut · object | null

Schema for audit actor information.

approval_status
string | null
next_approvers
ApproverDictSchema · object[] | null
rejected_by
RejectedBySchema · object | null

Schema for rejector information including rejection reason.

code
string | null
items
PublicInvoiceItemOut · object[]
sales_order_number
integer | null

The number of the linked sales order.

contract_id
integer | null
e_invoice
PublicEInvoiceSummarySchemaOut · object | null

The e-invoice filing of the record. Null when DualEntry did not file it. Not in v1.

has_more_lines
boolean
default:false
lines_count
integer
default:0