Update BillV2 record (partial)
Partially update an existing BillV2 record. Send only the fields you want to change. Anything you don’t send stays as it is. Updates are subject to the same constraints as the full update endpoint: period locks, payment-applied restrictions, and approval-workflow rules apply.
Side effects
- If an approval workflow matches this request, DualEntry can set
record_statusback todraft.
Additional validations
- Fails with
503if the exchange rate for the transaction date is unavailable. - Fails with
422and the error codeposting_date_after_limitifdateis after the latest posting date that your organization allows. - Fails with
422anderror_codetax_not_calculatedwhen the organization uses manual tax mode with the tax reminder on, the request posts the record, and the request sends lines but none of them carriestax. Setauto_calculate_taxtorequired, or sendtaxon the lines. - Fails with
422if you set an inactive, archived, or draft customer or vendor, or an inactive company. - Fails with
422if a line account is not available to the record’s company. - Fails with
422if you set the customer or vendor that stands for the record’s own company as a party. - A reference that the record or its linked source record already holds passes these checks.
Authorizations
Headers
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.
255Path Parameters
The number attribute of the record.
Body
Partial update payload for PATCH /public/bills/{number}/.
Every field is optional: send only the fields you want to change. Unset fields are left untouched on the existing record.
Updates allowed under the same constraints as PUT: period locks,
payment-applied restrictions, and approval-workflow rules apply.
Tax point date for VAT and GST.
When the saved record uses a VAT or GST tax regime and you omit this field, DualEntry sets it to transaction_date, or to date when there is no transaction_date.
Recurring templates store the value you send. Each generated record that uses VAT or GST and has no supply date gets that default on save.
On PATCH, an omitted field keeps the stored value. Send supply_date again when you change date or transaction_date.
2Configures how to handle automatic tax calculations.
If auto_calculate_tax is unset, the tax you send on each line is stored. Set it to required to have DualEntry calculate the tax, replacing the tax on every line before it saves the record.
The calculation covers native US sales tax using DualEntry's tax engine. It also covers Avalara US sales tax, VAT, and GST.
- For native VAT and GST, leave this field unset and send the rate and the tax on each line. Set it to
requiredwhen a tax provider returns the tax. - The request fails with
422when the result is DualEntry's own VAT or GST, when the calculation cannot finish, or when a required address is still missing. - When the record has a customer, DualEntry reads
shipping_address, thenbilling_address, then the address saved on the customer. - If you send neither address, DualEntry copies the customer's saved address to
billing_addressandshipping_address. - When the record has a vendor, DualEntry reads
ship_from_addressandship_to_address, then the addresses saved on the vendor and the company. - DualEntry stores only the ship addresses you sent.
required If this vendor is intercompany, DualEntry also writes a transaction in the elimination company.
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 If you omit this field, DualEntry keeps the stored rate. If you omit this field and you change transaction_date or currency_iso_4217_code, DualEntry calculates a new rate. This also applies when you change company_id to a company with a different base currency. A change to date also changes the transaction date when your organization does not keep the two dates independent. DualEntry stores a rate that you send, including 1.0, and calculates a new rate when you send null.
512draft, posted, archived Response
OK
Base for record-level tax context; regime discriminates data.
Mirrors TaxResultV2Out (core.taxes.api.taxes)
Posting date (GL date) - the date when the transaction is recorded in the general ledger
Transaction date (inception date) - the date when the transaction actually occurred
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 ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,16}0*$Total amount of transaction
^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$Amount to be paid
^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$Amount that was already paid by Vendor Prepayment Applications or Vendor Payments
^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$draft, posted, archived Date and time the record was created
Date and time the record was last updated
2Schema for audit actor information.
Schema for audit actor information.
Schema for rejector information including rejection reason.