---
title: "Update Quote record"
method: PUT
path: "/public/v2/quotes/{record_number}/"
tags: ["Quotes"]
---

# Update Quote record

`PUT /public/v2/quotes/{record_number}/`

## Request

- Base URL: `https://api.dualentry.com`
- URL: `https://api.dualentry.com/public/v2/quotes/{record_number}/`
- Auth: none declared

Update an existing Quote record with the provided data. Validates all required fields and business rules.

**Side effects**
- If an approval workflow matches this request, DualEntry can set `record_status` back to `draft`.

## Path parameters

- `record_number` integer, required: The `number` attribute of the record.

## Headers

- `Idempotency-Key` string

## Request body

- PublicQuoteSchemaUpdateIn: Replace a quote. Omitted optional fields are reset, except `recipients` and the document settings, which keep their saved values. `items` replaces the quote lines wholesale: send `id` to keep a line, and send its billing fields (`billing_frequency`, `billing_interval`, `billing_start_date`, `billing_end_date`, `ramp_group_id`) or it is saved as a one-time line that follows the quote contract dates. On recurring lines `rate` is the price per billing period.
  - `bill_to_address` string, nullable: Deprecated: send the structured `billing_address` / `shipping_address` instead.
  - `ship_to_address` string, nullable: Deprecated: send the structured `billing_address` / `shipping_address` instead.
  - `billing_address` AddressSchemaIn
    - `street` string, required
    - `city` string, required
    - `state` string
    - `postal_code` string, required
    - `country` union
      - ''
      - 'AA' | 'AB' | 'AC' | 'AD' | 'AE' | 'AF' | 'AG' | 'AH' | 'AI' | 'AJ' | 'AK' | 'AL' | 'AM' | 'AN' | 'AO' | 'AP' | 'AQ' | 'AR' | 'AS' | 'AT' | 'AU' | 'AV' | 'AW' | 'AX' | 'AY' | 'AZ' | 'BA' | 'BB' | 'BC' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BK' | 'BL' | 'BM' | 'BN' | 'BO' | 'BP' | 'BQ' | 'BR' | 'BS' | 'BT' | 'BU' | 'BV' | 'BW' | 'BX' | 'BY' | 'BZ' | 'CA' | 'CB' | 'CC' | 'CD' | 'CE' | 'CF' | 'CG' | 'CH' | 'CI' | 'CJ' | 'CK' | 'CL' | 'CM' | 'CN' | 'CO' | 'CP' | 'CQ' | 'CR' | 'CS' | 'CT' | 'CU' | 'CV' | 'CW' | 'CX' | 'CY' | 'CZ' | 'DA' | 'DB' | 'DC' | 'DD' | 'DE' | 'DF' | 'DG' | 'DH' | 'DI' | 'DJ' | 'DK' | 'DL' | 'DM' | 'DN' | 'DO' | 'DP' | 'DQ' | 'DR' | 'DS' | 'DT' | 'DU' | 'DV' | 'DW' | 'DX' | 'DY' | 'DZ' | 'EA' | 'EB' | 'EC' | 'ED' | 'EE' | 'EF' | 'EG' | 'EH' | 'EI' | 'EJ' | 'EK' | 'EL' | 'EM' | 'EN' | 'EO' | 'EP' | 'EQ' | 'ER' | 'ES' | 'ET' | 'EU' | 'EV' | 'EW' | 'EX' | 'EY' | 'EZ' | 'FA' | 'FB' | 'FC' | 'FD' | 'FE' | 'FF' | 'FG' | 'FH' | 'FI' | 'FJ' | 'FK' | 'FL' | 'FM' | 'FN' | 'FO' | 'FP' | 'FQ' | 'FR' | 'FS' | 'FT' | 'FU' | 'FV' | 'FW' | 'FX' | 'FY' | 'FZ' | 'GA' | 'GB' | 'GC' | 'GD' | 'GE' | 'GF' | 'GG' | 'GH' | 'GI' | 'GJ' | 'GK' | 'GL' | 'GM' | 'GN' | 'GO' | 'GP' | 'GQ' | 'GR' | 'GS' | 'GT' | 'GU' | 'GV' | 'GW' | 'GX' | 'GY' | 'GZ' | 'HA' | 'HB' | 'HC' | 'HD' | 'HE' | 'HF' | 'HG' | 'HH' | 'HI' | 'HJ' | 'HK' | 'HL' | 'HM' | 'HN' | 'HO' | 'HP' | 'HQ' | 'HR' | 'HS' | 'HT' | 'HU' | 'HV' | 'HW' | 'HX' | 'HY' | 'HZ' | 'IA' | 'IB' | 'IC' | 'ID' | 'IE' | 'IF' | 'IG' | 'IH' | 'II' | 'IJ' | 'IK' | 'IL' | 'IM' | 'IN' | 'IO' | 'IP' | 'IQ' | 'IR' | 'IS' | 'IT' | 'IU' | 'IV' | 'IW' | 'IX' | 'IY' | 'IZ' | 'JA' | 'JB' | 'JC' | 'JD' | 'JE' | 'JF' | 'JG' | 'JH' | 'JI' | 'JJ' | 'JK' | 'JL' | 'JM' | 'JN' | 'JO' | 'JP' | 'JQ' | 'JR' | 'JS' | 'JT' | 'JU' | 'JV' | 'JW' | 'JX' | 'JY' | 'JZ' | 'KA' | 'KB' | 'KC' | 'KD' | 'KE' | 'KF' | 'KG' | 'KH' | 'KI' | 'KJ' | 'KK' | 'KL' | 'KM' | 'KN' | 'KO' | 'KP' | 'KQ' | 'KR' | 'KS' | 'KT' | 'KU' | 'KV' | 'KW' | 'KX' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LD' | 'LE' | 'LF' | 'LG' | 'LH' | 'LI' | 'LJ' | 'LK' | 'LL' | 'LM' | 'LN' | 'LO' | 'LP' | 'LQ' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LW' | 'LX' | 'LY' | 'LZ' | 'MA' | 'MB' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MI' | 'MJ' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NB' | 'NC' | 'ND' | 'NE' | 'NF' | 'NG' | 'NH' | 'NI' | 'NJ' | 'NK' | 'NL' | 'NM' | 'NN' | 'NO' | 'NP' | 'NQ' | 'NR' | 'NS' | 'NT' | 'NU' | 'NV' | 'NW' | 'NX' | 'NY' | 'NZ' | 'OA' | 'OB' | 'OC' | 'OD' | 'OE' | 'OF' | 'OG' | 'OH' | 'OI' | 'OJ' | 'OK' | 'OL' | 'OM' | 'ON' | 'OO' | 'OP' | 'OQ' | 'OR' | 'OS' | 'OT' | 'OU' | 'OV' | 'OW' | 'OX' | 'OY' | 'OZ' | 'PA' | 'PB' | 'PC' | 'PD' | 'PE' | 'PF' | 'PG' | 'PH' | 'PI' | 'PJ' | 'PK' | 'PL' | 'PM' | 'PN' | 'PO' | 'PP' | 'PQ' | 'PR' | 'PS' | 'PT' | 'PU' | 'PV' | 'PW' | 'PX' | 'PY' | 'PZ' | 'QA' | 'QB' | 'QC' | 'QD' | 'QE' | 'QF' | 'QG' | 'QH' | 'QI' | 'QJ' | 'QK' | 'QL' | 'QM' | 'QN' | 'QO' | 'QP' | 'QQ' | 'QR' | 'QS' | 'QT' | 'QU' | 'QV' | 'QW' | 'QX' | 'QY' | 'QZ' | 'RA' | 'RB' | 'RC' | 'RD' | 'RE' | 'RF' | 'RG' | 'RH' | 'RI' | 'RJ' | 'RK' | 'RL' | 'RM' | 'RN' | 'RO' | 'RP' | 'RQ' | 'RR' | 'RS' | 'RT' | 'RU' | 'RV' | 'RW' | 'RX' | 'RY' | 'RZ' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SF' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SP' | 'SQ' | 'SR' | 'SS' | 'ST' | 'SU' | 'SV' | 'SW' | 'SX' | 'SY' | 'SZ' | 'TA' | 'TB' | 'TC' | 'TD' | 'TE' | 'TF' | 'TG' | 'TH' | 'TI' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TP' | 'TQ' | 'TR' | 'TS' | 'TT' | 'TU' | 'TV' | 'TW' | 'TX' | 'TY' | 'TZ' | 'UA' | 'UB' | 'UC' | 'UD' | 'UE' | 'UF' | 'UG' | 'UH' | 'UI' | 'UJ' | 'UK' | 'UL' | 'UM' | 'UN' | 'UO' | 'UP' | 'UQ' | 'UR' | 'US' | 'UT' | 'UU' | 'UV' | 'UW' | 'UX' | 'UY' | 'UZ' | 'VA' | 'VB' | 'VC' | 'VD' | 'VE' | 'VF' | 'VG' | 'VH' | 'VI' | 'VJ' | 'VK' | 'VL' | 'VM' | 'VN' | 'VO' | 'VP' | 'VQ' | 'VR' | 'VS' | 'VT' | 'VU' | 'VV' | 'VW' | 'VX' | 'VY' | 'VZ' | 'WA' | 'WB' | 'WC' | 'WD' | 'WE' | 'WF' | 'WG' | 'WH' | 'WI' | 'WJ' | 'WK' | 'WL' | 'WM' | 'WN' | 'WO' | 'WP' | 'WQ' | 'WR' | 'WS' | 'WT' | 'WU' | 'WV' | 'WW' | 'WX' | 'WY' | 'WZ' | 'XA' | 'XB' | 'XC' | 'XD' | 'XE' | 'XF' | 'XG' | 'XH' | 'XI' | 'XJ' | 'XK' | 'XL' | 'XM' | 'XN' | 'XO' | 'XP' | 'XQ' | 'XR' | 'XS' | 'XT' | 'XU' | 'XV' | 'XW' | 'XX' | 'XY' | 'XZ' | 'YA' | 'YB' | 'YC' | 'YD' | 'YE' | 'YF' | 'YG' | 'YH' | 'YI' | 'YJ' | 'YK' | 'YL' | 'YM' | 'YN' | 'YO' | 'YP' | 'YQ' | 'YR' | 'YS' | 'YT' | 'YU' | 'YV' | 'YW' | 'YX' | 'YY' | 'YZ' | 'ZA' | 'ZB' | 'ZC' | 'ZD' | 'ZE' | 'ZF' | 'ZG' | 'ZH' | 'ZI' | 'ZJ' | 'ZK' | 'ZL' | 'ZM' | 'ZN' | 'ZO' | 'ZP' | 'ZQ' | 'ZR' | 'ZS' | 'ZT' | 'ZU' | 'ZV' | 'ZW' | 'ZX' | 'ZY' | 'ZZ'
    - `second_line` string
    - `name` string, nullable
  - `shipping_address` AddressSchemaIn
    - `street` string, required
    - `city` string, required
    - `state` string
    - `postal_code` string, required
    - `country` union
      - ''
      - 'AA' | 'AB' | 'AC' | 'AD' | 'AE' | 'AF' | 'AG' | 'AH' | 'AI' | 'AJ' | 'AK' | 'AL' | 'AM' | 'AN' | 'AO' | 'AP' | 'AQ' | 'AR' | 'AS' | 'AT' | 'AU' | 'AV' | 'AW' | 'AX' | 'AY' | 'AZ' | 'BA' | 'BB' | 'BC' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BK' | 'BL' | 'BM' | 'BN' | 'BO' | 'BP' | 'BQ' | 'BR' | 'BS' | 'BT' | 'BU' | 'BV' | 'BW' | 'BX' | 'BY' | 'BZ' | 'CA' | 'CB' | 'CC' | 'CD' | 'CE' | 'CF' | 'CG' | 'CH' | 'CI' | 'CJ' | 'CK' | 'CL' | 'CM' | 'CN' | 'CO' | 'CP' | 'CQ' | 'CR' | 'CS' | 'CT' | 'CU' | 'CV' | 'CW' | 'CX' | 'CY' | 'CZ' | 'DA' | 'DB' | 'DC' | 'DD' | 'DE' | 'DF' | 'DG' | 'DH' | 'DI' | 'DJ' | 'DK' | 'DL' | 'DM' | 'DN' | 'DO' | 'DP' | 'DQ' | 'DR' | 'DS' | 'DT' | 'DU' | 'DV' | 'DW' | 'DX' | 'DY' | 'DZ' | 'EA' | 'EB' | 'EC' | 'ED' | 'EE' | 'EF' | 'EG' | 'EH' | 'EI' | 'EJ' | 'EK' | 'EL' | 'EM' | 'EN' | 'EO' | 'EP' | 'EQ' | 'ER' | 'ES' | 'ET' | 'EU' | 'EV' | 'EW' | 'EX' | 'EY' | 'EZ' | 'FA' | 'FB' | 'FC' | 'FD' | 'FE' | 'FF' | 'FG' | 'FH' | 'FI' | 'FJ' | 'FK' | 'FL' | 'FM' | 'FN' | 'FO' | 'FP' | 'FQ' | 'FR' | 'FS' | 'FT' | 'FU' | 'FV' | 'FW' | 'FX' | 'FY' | 'FZ' | 'GA' | 'GB' | 'GC' | 'GD' | 'GE' | 'GF' | 'GG' | 'GH' | 'GI' | 'GJ' | 'GK' | 'GL' | 'GM' | 'GN' | 'GO' | 'GP' | 'GQ' | 'GR' | 'GS' | 'GT' | 'GU' | 'GV' | 'GW' | 'GX' | 'GY' | 'GZ' | 'HA' | 'HB' | 'HC' | 'HD' | 'HE' | 'HF' | 'HG' | 'HH' | 'HI' | 'HJ' | 'HK' | 'HL' | 'HM' | 'HN' | 'HO' | 'HP' | 'HQ' | 'HR' | 'HS' | 'HT' | 'HU' | 'HV' | 'HW' | 'HX' | 'HY' | 'HZ' | 'IA' | 'IB' | 'IC' | 'ID' | 'IE' | 'IF' | 'IG' | 'IH' | 'II' | 'IJ' | 'IK' | 'IL' | 'IM' | 'IN' | 'IO' | 'IP' | 'IQ' | 'IR' | 'IS' | 'IT' | 'IU' | 'IV' | 'IW' | 'IX' | 'IY' | 'IZ' | 'JA' | 'JB' | 'JC' | 'JD' | 'JE' | 'JF' | 'JG' | 'JH' | 'JI' | 'JJ' | 'JK' | 'JL' | 'JM' | 'JN' | 'JO' | 'JP' | 'JQ' | 'JR' | 'JS' | 'JT' | 'JU' | 'JV' | 'JW' | 'JX' | 'JY' | 'JZ' | 'KA' | 'KB' | 'KC' | 'KD' | 'KE' | 'KF' | 'KG' | 'KH' | 'KI' | 'KJ' | 'KK' | 'KL' | 'KM' | 'KN' | 'KO' | 'KP' | 'KQ' | 'KR' | 'KS' | 'KT' | 'KU' | 'KV' | 'KW' | 'KX' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LD' | 'LE' | 'LF' | 'LG' | 'LH' | 'LI' | 'LJ' | 'LK' | 'LL' | 'LM' | 'LN' | 'LO' | 'LP' | 'LQ' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LW' | 'LX' | 'LY' | 'LZ' | 'MA' | 'MB' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MI' | 'MJ' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NB' | 'NC' | 'ND' | 'NE' | 'NF' | 'NG' | 'NH' | 'NI' | 'NJ' | 'NK' | 'NL' | 'NM' | 'NN' | 'NO' | 'NP' | 'NQ' | 'NR' | 'NS' | 'NT' | 'NU' | 'NV' | 'NW' | 'NX' | 'NY' | 'NZ' | 'OA' | 'OB' | 'OC' | 'OD' | 'OE' | 'OF' | 'OG' | 'OH' | 'OI' | 'OJ' | 'OK' | 'OL' | 'OM' | 'ON' | 'OO' | 'OP' | 'OQ' | 'OR' | 'OS' | 'OT' | 'OU' | 'OV' | 'OW' | 'OX' | 'OY' | 'OZ' | 'PA' | 'PB' | 'PC' | 'PD' | 'PE' | 'PF' | 'PG' | 'PH' | 'PI' | 'PJ' | 'PK' | 'PL' | 'PM' | 'PN' | 'PO' | 'PP' | 'PQ' | 'PR' | 'PS' | 'PT' | 'PU' | 'PV' | 'PW' | 'PX' | 'PY' | 'PZ' | 'QA' | 'QB' | 'QC' | 'QD' | 'QE' | 'QF' | 'QG' | 'QH' | 'QI' | 'QJ' | 'QK' | 'QL' | 'QM' | 'QN' | 'QO' | 'QP' | 'QQ' | 'QR' | 'QS' | 'QT' | 'QU' | 'QV' | 'QW' | 'QX' | 'QY' | 'QZ' | 'RA' | 'RB' | 'RC' | 'RD' | 'RE' | 'RF' | 'RG' | 'RH' | 'RI' | 'RJ' | 'RK' | 'RL' | 'RM' | 'RN' | 'RO' | 'RP' | 'RQ' | 'RR' | 'RS' | 'RT' | 'RU' | 'RV' | 'RW' | 'RX' | 'RY' | 'RZ' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SF' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SP' | 'SQ' | 'SR' | 'SS' | 'ST' | 'SU' | 'SV' | 'SW' | 'SX' | 'SY' | 'SZ' | 'TA' | 'TB' | 'TC' | 'TD' | 'TE' | 'TF' | 'TG' | 'TH' | 'TI' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TP' | 'TQ' | 'TR' | 'TS' | 'TT' | 'TU' | 'TV' | 'TW' | 'TX' | 'TY' | 'TZ' | 'UA' | 'UB' | 'UC' | 'UD' | 'UE' | 'UF' | 'UG' | 'UH' | 'UI' | 'UJ' | 'UK' | 'UL' | 'UM' | 'UN' | 'UO' | 'UP' | 'UQ' | 'UR' | 'US' | 'UT' | 'UU' | 'UV' | 'UW' | 'UX' | 'UY' | 'UZ' | 'VA' | 'VB' | 'VC' | 'VD' | 'VE' | 'VF' | 'VG' | 'VH' | 'VI' | 'VJ' | 'VK' | 'VL' | 'VM' | 'VN' | 'VO' | 'VP' | 'VQ' | 'VR' | 'VS' | 'VT' | 'VU' | 'VV' | 'VW' | 'VX' | 'VY' | 'VZ' | 'WA' | 'WB' | 'WC' | 'WD' | 'WE' | 'WF' | 'WG' | 'WH' | 'WI' | 'WJ' | 'WK' | 'WL' | 'WM' | 'WN' | 'WO' | 'WP' | 'WQ' | 'WR' | 'WS' | 'WT' | 'WU' | 'WV' | 'WW' | 'WX' | 'WY' | 'WZ' | 'XA' | 'XB' | 'XC' | 'XD' | 'XE' | 'XF' | 'XG' | 'XH' | 'XI' | 'XJ' | 'XK' | 'XL' | 'XM' | 'XN' | 'XO' | 'XP' | 'XQ' | 'XR' | 'XS' | 'XT' | 'XU' | 'XV' | 'XW' | 'XX' | 'XY' | 'XZ' | 'YA' | 'YB' | 'YC' | 'YD' | 'YE' | 'YF' | 'YG' | 'YH' | 'YI' | 'YJ' | 'YK' | 'YL' | 'YM' | 'YN' | 'YO' | 'YP' | 'YQ' | 'YR' | 'YS' | 'YT' | 'YU' | 'YV' | 'YW' | 'YX' | 'YY' | 'YZ' | 'ZA' | 'ZB' | 'ZC' | 'ZD' | 'ZE' | 'ZF' | 'ZG' | 'ZH' | 'ZI' | 'ZJ' | 'ZK' | 'ZL' | 'ZM' | 'ZN' | 'ZO' | 'ZP' | 'ZQ' | 'ZR' | 'ZS' | 'ZT' | 'ZU' | 'ZV' | 'ZW' | 'ZX' | 'ZY' | 'ZZ'
    - `second_line` string
    - `name` string, nullable
  - `valid_until` string, date
  - `company_id` integer, required
  - `customer_id` integer, nullable
  - `name` string
  - `email` string, required
  - `currency_iso_4217_code` string, required
  - `term_id` integer, nullable
  - `memo` string
  - `close_date` string, date, required
  - `contract_start_date` string, date, required
  - `contract_end_type` 'after' | 'ongoing' | 'date'
  - `number_of_months` integer, nullable
  - `contract_end_date` string, date, nullable
  - `contract_legal_terms` string, nullable
  - `document_headline_total` 'tcv' | 'annual' | 'quarterly' | 'monthly' | 'first_year'
  - `document_total_rows` QuoteTotalRow[], nullable: Total rows that print on the quote document, in print order. The row of the large total does not print. Omit to use the organization default on create and keep the saved rows on update.
  - `document_year_by_year` boolean, nullable: Print the year-by-year breakdown table on the quote document. Omit to keep the saved value on update; new quotes start with it off.
  - `items` QuoteItemIn[]
    - `discount_type` 'PERCENTAGE' | 'FIXED'
    - `discount_value` union
      - number
      - string
    - `tax` ItemTaxData
      - `code` string, required
      - `rate` union, required
        - number
        - string
      - `amount` union, required
        - number
        - string
      - `is_taxable` boolean, nullable
      - `tax_exempt_amount` union
        - number
        - string
      - `vat_rate_id` integer, nullable
      - `gst_tax_rate_id` integer, nullable
      - `tax_metadata` object, nullable
    - `id` integer, nullable
    - `item_id` integer, required
    - `quantity` union, required
      - number
      - string
    - `rate` union, required: Price per billing period on recurring lines
      - number
      - string
    - `position` integer, required
    - `memo` string
    - `billing_frequency` 'one_time' | 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'semi_annually' | 'annually'
    - `billing_interval` integer: Bill every N periods of the billing frequency
    - `billing_start_date` string, date, nullable: Null follows the quote contract start
    - `billing_end_date` string, date, nullable: Null follows the quote contract end, so the line is ongoing on an ongoing quote
    - `ramp_group_id` string, uuid, nullable: Shared by the segments of one multi-year ramp: same item, frequency and interval over back-to-back service periods. Maps to the contract obligation ramp_group_id
  - `recipients` QuoteRecipientIn[], nullable: Omit to leave the saved recipients unchanged
    - `id` integer, nullable
    - `side` 'company' | 'buyer', required
    - `organization_user_id` integer, nullable
    - `customer_id` integer, nullable
    - `name` string
    - `email` string
    - `is_signer` boolean
    - `signing_order` integer, nullable
    - `position` integer
  - `record_status` 'draft' | 'posted' | 'archived'

## Response `200`

OK

- PublicQuoteSchemaOut: A quote with its lines, recipients (signing order included), send status, and totals by billing frequency.
  - `bill_to_address` string, required: Deprecated: send the structured `billing_address` / `shipping_address` instead.
  - `ship_to_address` string, required: Deprecated: send the structured `billing_address` / `shipping_address` instead.
  - `billing_address` AddressSchemaOut
    - `street` string, required
    - `city` string, required
    - `state` string
    - `postal_code` string, required
    - `country` union
      - ''
      - 'AA' | 'AB' | 'AC' | 'AD' | 'AE' | 'AF' | 'AG' | 'AH' | 'AI' | 'AJ' | 'AK' | 'AL' | 'AM' | 'AN' | 'AO' | 'AP' | 'AQ' | 'AR' | 'AS' | 'AT' | 'AU' | 'AV' | 'AW' | 'AX' | 'AY' | 'AZ' | 'BA' | 'BB' | 'BC' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BK' | 'BL' | 'BM' | 'BN' | 'BO' | 'BP' | 'BQ' | 'BR' | 'BS' | 'BT' | 'BU' | 'BV' | 'BW' | 'BX' | 'BY' | 'BZ' | 'CA' | 'CB' | 'CC' | 'CD' | 'CE' | 'CF' | 'CG' | 'CH' | 'CI' | 'CJ' | 'CK' | 'CL' | 'CM' | 'CN' | 'CO' | 'CP' | 'CQ' | 'CR' | 'CS' | 'CT' | 'CU' | 'CV' | 'CW' | 'CX' | 'CY' | 'CZ' | 'DA' | 'DB' | 'DC' | 'DD' | 'DE' | 'DF' | 'DG' | 'DH' | 'DI' | 'DJ' | 'DK' | 'DL' | 'DM' | 'DN' | 'DO' | 'DP' | 'DQ' | 'DR' | 'DS' | 'DT' | 'DU' | 'DV' | 'DW' | 'DX' | 'DY' | 'DZ' | 'EA' | 'EB' | 'EC' | 'ED' | 'EE' | 'EF' | 'EG' | 'EH' | 'EI' | 'EJ' | 'EK' | 'EL' | 'EM' | 'EN' | 'EO' | 'EP' | 'EQ' | 'ER' | 'ES' | 'ET' | 'EU' | 'EV' | 'EW' | 'EX' | 'EY' | 'EZ' | 'FA' | 'FB' | 'FC' | 'FD' | 'FE' | 'FF' | 'FG' | 'FH' | 'FI' | 'FJ' | 'FK' | 'FL' | 'FM' | 'FN' | 'FO' | 'FP' | 'FQ' | 'FR' | 'FS' | 'FT' | 'FU' | 'FV' | 'FW' | 'FX' | 'FY' | 'FZ' | 'GA' | 'GB' | 'GC' | 'GD' | 'GE' | 'GF' | 'GG' | 'GH' | 'GI' | 'GJ' | 'GK' | 'GL' | 'GM' | 'GN' | 'GO' | 'GP' | 'GQ' | 'GR' | 'GS' | 'GT' | 'GU' | 'GV' | 'GW' | 'GX' | 'GY' | 'GZ' | 'HA' | 'HB' | 'HC' | 'HD' | 'HE' | 'HF' | 'HG' | 'HH' | 'HI' | 'HJ' | 'HK' | 'HL' | 'HM' | 'HN' | 'HO' | 'HP' | 'HQ' | 'HR' | 'HS' | 'HT' | 'HU' | 'HV' | 'HW' | 'HX' | 'HY' | 'HZ' | 'IA' | 'IB' | 'IC' | 'ID' | 'IE' | 'IF' | 'IG' | 'IH' | 'II' | 'IJ' | 'IK' | 'IL' | 'IM' | 'IN' | 'IO' | 'IP' | 'IQ' | 'IR' | 'IS' | 'IT' | 'IU' | 'IV' | 'IW' | 'IX' | 'IY' | 'IZ' | 'JA' | 'JB' | 'JC' | 'JD' | 'JE' | 'JF' | 'JG' | 'JH' | 'JI' | 'JJ' | 'JK' | 'JL' | 'JM' | 'JN' | 'JO' | 'JP' | 'JQ' | 'JR' | 'JS' | 'JT' | 'JU' | 'JV' | 'JW' | 'JX' | 'JY' | 'JZ' | 'KA' | 'KB' | 'KC' | 'KD' | 'KE' | 'KF' | 'KG' | 'KH' | 'KI' | 'KJ' | 'KK' | 'KL' | 'KM' | 'KN' | 'KO' | 'KP' | 'KQ' | 'KR' | 'KS' | 'KT' | 'KU' | 'KV' | 'KW' | 'KX' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LD' | 'LE' | 'LF' | 'LG' | 'LH' | 'LI' | 'LJ' | 'LK' | 'LL' | 'LM' | 'LN' | 'LO' | 'LP' | 'LQ' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LW' | 'LX' | 'LY' | 'LZ' | 'MA' | 'MB' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MI' | 'MJ' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NB' | 'NC' | 'ND' | 'NE' | 'NF' | 'NG' | 'NH' | 'NI' | 'NJ' | 'NK' | 'NL' | 'NM' | 'NN' | 'NO' | 'NP' | 'NQ' | 'NR' | 'NS' | 'NT' | 'NU' | 'NV' | 'NW' | 'NX' | 'NY' | 'NZ' | 'OA' | 'OB' | 'OC' | 'OD' | 'OE' | 'OF' | 'OG' | 'OH' | 'OI' | 'OJ' | 'OK' | 'OL' | 'OM' | 'ON' | 'OO' | 'OP' | 'OQ' | 'OR' | 'OS' | 'OT' | 'OU' | 'OV' | 'OW' | 'OX' | 'OY' | 'OZ' | 'PA' | 'PB' | 'PC' | 'PD' | 'PE' | 'PF' | 'PG' | 'PH' | 'PI' | 'PJ' | 'PK' | 'PL' | 'PM' | 'PN' | 'PO' | 'PP' | 'PQ' | 'PR' | 'PS' | 'PT' | 'PU' | 'PV' | 'PW' | 'PX' | 'PY' | 'PZ' | 'QA' | 'QB' | 'QC' | 'QD' | 'QE' | 'QF' | 'QG' | 'QH' | 'QI' | 'QJ' | 'QK' | 'QL' | 'QM' | 'QN' | 'QO' | 'QP' | 'QQ' | 'QR' | 'QS' | 'QT' | 'QU' | 'QV' | 'QW' | 'QX' | 'QY' | 'QZ' | 'RA' | 'RB' | 'RC' | 'RD' | 'RE' | 'RF' | 'RG' | 'RH' | 'RI' | 'RJ' | 'RK' | 'RL' | 'RM' | 'RN' | 'RO' | 'RP' | 'RQ' | 'RR' | 'RS' | 'RT' | 'RU' | 'RV' | 'RW' | 'RX' | 'RY' | 'RZ' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SF' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SP' | 'SQ' | 'SR' | 'SS' | 'ST' | 'SU' | 'SV' | 'SW' | 'SX' | 'SY' | 'SZ' | 'TA' | 'TB' | 'TC' | 'TD' | 'TE' | 'TF' | 'TG' | 'TH' | 'TI' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TP' | 'TQ' | 'TR' | 'TS' | 'TT' | 'TU' | 'TV' | 'TW' | 'TX' | 'TY' | 'TZ' | 'UA' | 'UB' | 'UC' | 'UD' | 'UE' | 'UF' | 'UG' | 'UH' | 'UI' | 'UJ' | 'UK' | 'UL' | 'UM' | 'UN' | 'UO' | 'UP' | 'UQ' | 'UR' | 'US' | 'UT' | 'UU' | 'UV' | 'UW' | 'UX' | 'UY' | 'UZ' | 'VA' | 'VB' | 'VC' | 'VD' | 'VE' | 'VF' | 'VG' | 'VH' | 'VI' | 'VJ' | 'VK' | 'VL' | 'VM' | 'VN' | 'VO' | 'VP' | 'VQ' | 'VR' | 'VS' | 'VT' | 'VU' | 'VV' | 'VW' | 'VX' | 'VY' | 'VZ' | 'WA' | 'WB' | 'WC' | 'WD' | 'WE' | 'WF' | 'WG' | 'WH' | 'WI' | 'WJ' | 'WK' | 'WL' | 'WM' | 'WN' | 'WO' | 'WP' | 'WQ' | 'WR' | 'WS' | 'WT' | 'WU' | 'WV' | 'WW' | 'WX' | 'WY' | 'WZ' | 'XA' | 'XB' | 'XC' | 'XD' | 'XE' | 'XF' | 'XG' | 'XH' | 'XI' | 'XJ' | 'XK' | 'XL' | 'XM' | 'XN' | 'XO' | 'XP' | 'XQ' | 'XR' | 'XS' | 'XT' | 'XU' | 'XV' | 'XW' | 'XX' | 'XY' | 'XZ' | 'YA' | 'YB' | 'YC' | 'YD' | 'YE' | 'YF' | 'YG' | 'YH' | 'YI' | 'YJ' | 'YK' | 'YL' | 'YM' | 'YN' | 'YO' | 'YP' | 'YQ' | 'YR' | 'YS' | 'YT' | 'YU' | 'YV' | 'YW' | 'YX' | 'YY' | 'YZ' | 'ZA' | 'ZB' | 'ZC' | 'ZD' | 'ZE' | 'ZF' | 'ZG' | 'ZH' | 'ZI' | 'ZJ' | 'ZK' | 'ZL' | 'ZM' | 'ZN' | 'ZO' | 'ZP' | 'ZQ' | 'ZR' | 'ZS' | 'ZT' | 'ZU' | 'ZV' | 'ZW' | 'ZX' | 'ZY' | 'ZZ'
    - `second_line` string
    - `name` string, nullable
  - `shipping_address` AddressSchemaOut
    - `street` string, required
    - `city` string, required
    - `state` string
    - `postal_code` string, required
    - `country` union
      - ''
      - 'AA' | 'AB' | 'AC' | 'AD' | 'AE' | 'AF' | 'AG' | 'AH' | 'AI' | 'AJ' | 'AK' | 'AL' | 'AM' | 'AN' | 'AO' | 'AP' | 'AQ' | 'AR' | 'AS' | 'AT' | 'AU' | 'AV' | 'AW' | 'AX' | 'AY' | 'AZ' | 'BA' | 'BB' | 'BC' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BK' | 'BL' | 'BM' | 'BN' | 'BO' | 'BP' | 'BQ' | 'BR' | 'BS' | 'BT' | 'BU' | 'BV' | 'BW' | 'BX' | 'BY' | 'BZ' | 'CA' | 'CB' | 'CC' | 'CD' | 'CE' | 'CF' | 'CG' | 'CH' | 'CI' | 'CJ' | 'CK' | 'CL' | 'CM' | 'CN' | 'CO' | 'CP' | 'CQ' | 'CR' | 'CS' | 'CT' | 'CU' | 'CV' | 'CW' | 'CX' | 'CY' | 'CZ' | 'DA' | 'DB' | 'DC' | 'DD' | 'DE' | 'DF' | 'DG' | 'DH' | 'DI' | 'DJ' | 'DK' | 'DL' | 'DM' | 'DN' | 'DO' | 'DP' | 'DQ' | 'DR' | 'DS' | 'DT' | 'DU' | 'DV' | 'DW' | 'DX' | 'DY' | 'DZ' | 'EA' | 'EB' | 'EC' | 'ED' | 'EE' | 'EF' | 'EG' | 'EH' | 'EI' | 'EJ' | 'EK' | 'EL' | 'EM' | 'EN' | 'EO' | 'EP' | 'EQ' | 'ER' | 'ES' | 'ET' | 'EU' | 'EV' | 'EW' | 'EX' | 'EY' | 'EZ' | 'FA' | 'FB' | 'FC' | 'FD' | 'FE' | 'FF' | 'FG' | 'FH' | 'FI' | 'FJ' | 'FK' | 'FL' | 'FM' | 'FN' | 'FO' | 'FP' | 'FQ' | 'FR' | 'FS' | 'FT' | 'FU' | 'FV' | 'FW' | 'FX' | 'FY' | 'FZ' | 'GA' | 'GB' | 'GC' | 'GD' | 'GE' | 'GF' | 'GG' | 'GH' | 'GI' | 'GJ' | 'GK' | 'GL' | 'GM' | 'GN' | 'GO' | 'GP' | 'GQ' | 'GR' | 'GS' | 'GT' | 'GU' | 'GV' | 'GW' | 'GX' | 'GY' | 'GZ' | 'HA' | 'HB' | 'HC' | 'HD' | 'HE' | 'HF' | 'HG' | 'HH' | 'HI' | 'HJ' | 'HK' | 'HL' | 'HM' | 'HN' | 'HO' | 'HP' | 'HQ' | 'HR' | 'HS' | 'HT' | 'HU' | 'HV' | 'HW' | 'HX' | 'HY' | 'HZ' | 'IA' | 'IB' | 'IC' | 'ID' | 'IE' | 'IF' | 'IG' | 'IH' | 'II' | 'IJ' | 'IK' | 'IL' | 'IM' | 'IN' | 'IO' | 'IP' | 'IQ' | 'IR' | 'IS' | 'IT' | 'IU' | 'IV' | 'IW' | 'IX' | 'IY' | 'IZ' | 'JA' | 'JB' | 'JC' | 'JD' | 'JE' | 'JF' | 'JG' | 'JH' | 'JI' | 'JJ' | 'JK' | 'JL' | 'JM' | 'JN' | 'JO' | 'JP' | 'JQ' | 'JR' | 'JS' | 'JT' | 'JU' | 'JV' | 'JW' | 'JX' | 'JY' | 'JZ' | 'KA' | 'KB' | 'KC' | 'KD' | 'KE' | 'KF' | 'KG' | 'KH' | 'KI' | 'KJ' | 'KK' | 'KL' | 'KM' | 'KN' | 'KO' | 'KP' | 'KQ' | 'KR' | 'KS' | 'KT' | 'KU' | 'KV' | 'KW' | 'KX' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LD' | 'LE' | 'LF' | 'LG' | 'LH' | 'LI' | 'LJ' | 'LK' | 'LL' | 'LM' | 'LN' | 'LO' | 'LP' | 'LQ' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LW' | 'LX' | 'LY' | 'LZ' | 'MA' | 'MB' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MI' | 'MJ' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NB' | 'NC' | 'ND' | 'NE' | 'NF' | 'NG' | 'NH' | 'NI' | 'NJ' | 'NK' | 'NL' | 'NM' | 'NN' | 'NO' | 'NP' | 'NQ' | 'NR' | 'NS' | 'NT' | 'NU' | 'NV' | 'NW' | 'NX' | 'NY' | 'NZ' | 'OA' | 'OB' | 'OC' | 'OD' | 'OE' | 'OF' | 'OG' | 'OH' | 'OI' | 'OJ' | 'OK' | 'OL' | 'OM' | 'ON' | 'OO' | 'OP' | 'OQ' | 'OR' | 'OS' | 'OT' | 'OU' | 'OV' | 'OW' | 'OX' | 'OY' | 'OZ' | 'PA' | 'PB' | 'PC' | 'PD' | 'PE' | 'PF' | 'PG' | 'PH' | 'PI' | 'PJ' | 'PK' | 'PL' | 'PM' | 'PN' | 'PO' | 'PP' | 'PQ' | 'PR' | 'PS' | 'PT' | 'PU' | 'PV' | 'PW' | 'PX' | 'PY' | 'PZ' | 'QA' | 'QB' | 'QC' | 'QD' | 'QE' | 'QF' | 'QG' | 'QH' | 'QI' | 'QJ' | 'QK' | 'QL' | 'QM' | 'QN' | 'QO' | 'QP' | 'QQ' | 'QR' | 'QS' | 'QT' | 'QU' | 'QV' | 'QW' | 'QX' | 'QY' | 'QZ' | 'RA' | 'RB' | 'RC' | 'RD' | 'RE' | 'RF' | 'RG' | 'RH' | 'RI' | 'RJ' | 'RK' | 'RL' | 'RM' | 'RN' | 'RO' | 'RP' | 'RQ' | 'RR' | 'RS' | 'RT' | 'RU' | 'RV' | 'RW' | 'RX' | 'RY' | 'RZ' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SF' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SP' | 'SQ' | 'SR' | 'SS' | 'ST' | 'SU' | 'SV' | 'SW' | 'SX' | 'SY' | 'SZ' | 'TA' | 'TB' | 'TC' | 'TD' | 'TE' | 'TF' | 'TG' | 'TH' | 'TI' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TP' | 'TQ' | 'TR' | 'TS' | 'TT' | 'TU' | 'TV' | 'TW' | 'TX' | 'TY' | 'TZ' | 'UA' | 'UB' | 'UC' | 'UD' | 'UE' | 'UF' | 'UG' | 'UH' | 'UI' | 'UJ' | 'UK' | 'UL' | 'UM' | 'UN' | 'UO' | 'UP' | 'UQ' | 'UR' | 'US' | 'UT' | 'UU' | 'UV' | 'UW' | 'UX' | 'UY' | 'UZ' | 'VA' | 'VB' | 'VC' | 'VD' | 'VE' | 'VF' | 'VG' | 'VH' | 'VI' | 'VJ' | 'VK' | 'VL' | 'VM' | 'VN' | 'VO' | 'VP' | 'VQ' | 'VR' | 'VS' | 'VT' | 'VU' | 'VV' | 'VW' | 'VX' | 'VY' | 'VZ' | 'WA' | 'WB' | 'WC' | 'WD' | 'WE' | 'WF' | 'WG' | 'WH' | 'WI' | 'WJ' | 'WK' | 'WL' | 'WM' | 'WN' | 'WO' | 'WP' | 'WQ' | 'WR' | 'WS' | 'WT' | 'WU' | 'WV' | 'WW' | 'WX' | 'WY' | 'WZ' | 'XA' | 'XB' | 'XC' | 'XD' | 'XE' | 'XF' | 'XG' | 'XH' | 'XI' | 'XJ' | 'XK' | 'XL' | 'XM' | 'XN' | 'XO' | 'XP' | 'XQ' | 'XR' | 'XS' | 'XT' | 'XU' | 'XV' | 'XW' | 'XX' | 'XY' | 'XZ' | 'YA' | 'YB' | 'YC' | 'YD' | 'YE' | 'YF' | 'YG' | 'YH' | 'YI' | 'YJ' | 'YK' | 'YL' | 'YM' | 'YN' | 'YO' | 'YP' | 'YQ' | 'YR' | 'YS' | 'YT' | 'YU' | 'YV' | 'YW' | 'YX' | 'YY' | 'YZ' | 'ZA' | 'ZB' | 'ZC' | 'ZD' | 'ZE' | 'ZF' | 'ZG' | 'ZH' | 'ZI' | 'ZJ' | 'ZK' | 'ZL' | 'ZM' | 'ZN' | 'ZO' | 'ZP' | 'ZQ' | 'ZR' | 'ZS' | 'ZT' | 'ZU' | 'ZV' | 'ZW' | 'ZX' | 'ZY' | 'ZZ'
    - `second_line` string
    - `name` string, nullable
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `completed_approvals_count` integer
  - `total_approvals_count` integer
  - `workflow_status` string, nullable
  - `pending_approvers_count` integer
  - `send_status` 'draft' | 'awaiting_approval' | 'approved' | 'rejected'
  - `can_send` boolean
  - `approval_info` ApprovalInfoSchema: Schema for complete approval workflow information.
    - `workflow_name` string, required
    - `workflow_version` integer, required
    - `step_name` string, required
    - `current_substep` integer, required
    - `substeps` SubstepInfoSchema[], required
      - `order` integer, required
      - `status` 'completed' | 'pending' | 'not_started', required: Status of a substep in the approval workflow.
      - `approve_condition` 'any' | 'all', required: Condition for approving a substep.
      - `approvers` ApproverSchema[], required
        - `id` integer, required
        - `first_name` string, required
        - `last_name` string, required
        - `email` string, required
        - `full_name` string, required
        - `avatar_url` string, nullable
      - `approved_by` ApproverSchema[], required
        - `id` integer, required
        - `first_name` string, required
        - `last_name` string, required
        - `email` string, required
        - `full_name` string, required
        - `avatar_url` string, nullable
      - `rejected_by` ApproverSchema[], required
        - `id` integer, required
        - `first_name` string, required
        - `last_name` string, required
        - `email` string, required
        - `full_name` string, required
        - `avatar_url` string, nullable
  - `approval_chain` ApprovalChainSchema: Full approval chain.
    - `workflow_name` string, required
    - `workflow_version` integer, required
    - `steps` StepChainSchema[], required
      - `order` integer, required
      - `name` string, required
      - `status` 'completed' | 'pending' | 'not_started' | 'skipped', required: Status of a step in the approval chain.
      - `approve_condition` 'any' | 'all', required: Condition for approving a substep.
      - `substeps` SubstepChainSchema[], nullable
        - `order` integer, required
        - `status` 'completed' | 'pending' | 'not_started', required: Status of a substep in the approval workflow.
        - `approve_condition` 'any' | 'all', required: Condition for approving a substep.
        - `approvers` ApproverDictSchema[], required
          - `id` integer, required
          - `first_name` string, required
          - `last_name` string, required
          - `email` string, required
          - `full_name` string, required
          - `avatar_url` string, nullable
        - `approved_by` ApproverDictSchema[], required
          - `id` integer, required
          - `first_name` string, required
          - `last_name` string, required
          - `email` string, required
          - `full_name` string, required
          - `avatar_url` string, nullable
        - `rejected_by` ApproverDictSchema[], required
          - `id` integer, required
          - `first_name` string, required
          - `last_name` string, required
          - `email` string, required
          - `full_name` string, required
          - `avatar_url` string, nullable
      - `approvers` ApproverDictSchema[], nullable
        - `id` integer, required
        - `first_name` string, required
        - `last_name` string, required
        - `email` string, required
        - `full_name` string, required
        - `avatar_url` string, nullable
      - `approved_by` ApproverDictSchema[], nullable
        - `id` integer, required
        - `first_name` string, required
        - `last_name` string, required
        - `email` string, required
        - `full_name` string, required
        - `avatar_url` string, nullable
      - `rejected_by` ApproverDictSchema[], nullable
        - `id` integer, required
        - `first_name` string, required
        - `last_name` string, required
        - `email` string, required
        - `full_name` string, required
        - `avatar_url` string, nullable
  - `bank_match_status` string, nullable
  - `id` integer, required
  - `number` integer, required
  - `code` string, nullable: Code from the company quote sequence, e.g. QT-0001
  - `record_status` 'draft' | 'posted' | 'archived', required
  - `valid_until` string, date, required
  - `company_id` integer, required
  - `company_name` string, required
  - `company_currency` string, required
  - `customer_id` integer, nullable, required
  - `customer_name` string, nullable, required
  - `name` string, required
  - `email` string, required
  - `currency_iso_4217_code` string, required
  - `term_id` integer, nullable, required
  - `term_name` string, required
  - `memo` string, required
  - `close_date` string, date, required
  - `contract_start_date` string, date, required
  - `contract_end_type` 'after' | 'ongoing' | 'date', required
  - `number_of_months` integer, nullable, required
  - `contract_end_date` string, date, nullable, required
  - `contract_legal_terms` string, nullable, required
  - `sent_at` string, date-time, nullable, required
  - `document_headline_total` 'tcv' | 'annual' | 'quarterly' | 'monthly' | 'first_year', required
  - `document_total_rows` QuoteTotalRow[], required
  - `document_year_by_year` boolean, required
  - `items` QuoteItemOut[], required
    - `item_type` string, nullable
    - `hsn_sac_code` string, nullable
    - `discount_type` 'PERCENTAGE' | 'FIXED'
    - `discount_value` string, nullable
    - `tax` ItemTaxDataOut
      - `code` string, required
      - `rate` string, required
      - `amount` string, required
      - `is_taxable` boolean, nullable
      - `tax_exempt_amount` string, nullable
      - `vat_rate_id` integer, nullable
      - `gst_tax_rate_id` integer, nullable
      - `tax_metadata` object, nullable
      - `tax_components` TaxComponentSchema[], nullable
        - `component_type` union, required
          - 'CGST' | 'SGST' | 'IGST' | 'CESS' | 'GST' | 'PST' | 'HST' | 'QST'
          - 'GST' | 'SST': Broad classification of a tax rate within the GST module. `GST` covers the single-stage value-added-style regimes (AU, NZ, SG, IN, CA). `SST` covers Malaysia's Sales and Service Tax — a non-creditable single-stage regime that replaced Malaysia's GST in 2018. SST actually has two sub-regimes (Sales Tax on goods, Service Tax on services) but they share registration format (ANN-YYMM-NNNNNNNN, self-identifying by prefix), calculation rules, and administration — so we don't split them at the family level. The rate's ``name`` ("Sales Tax 10%", "Service Tax 8%") carries that human distinction.
        - `rate` string, required
        - `amount` string, required
        - `region` string, nullable
        - `position` integer, required
      - `amount_with_tax` string, nullable
      - `rate_name` string, nullable
      - `rate_description` string, nullable
      - `rate_type` string, nullable
      - `tax_treatment` string, nullable
      - `valid_to` string, date, nullable
    - `id` integer, required
    - `item_id` integer, required
    - `item_name` string, required
    - `quantity` string, required
    - `rate` string, required
    - `position` integer, required
    - `memo` string, required
    - `billing_frequency` 'one_time' | 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'semi_annually' | 'annually', required
    - `billing_interval` integer, required
    - `billing_start_date` string, date, nullable, required: Set only when the line overrides the quote contract start
    - `billing_end_date` string, date, nullable, required: Set only when the line overrides the quote contract end
    - `service_start_date` string, date, required: Billing start in effect: the line's own date or the quote contract start
    - `service_end_date` string, date, nullable, required: Billing end in effect; null when ongoing
    - `periods_in_term` integer, nullable, required: Billing periods in the line's service period; null when ongoing
    - `ramp_group_id` string, uuid, nullable, required
    - `net_amount` string, required: Net amount after discount, before tax
    - `tax_amount` string, required: Calculated tax amount
    - `gross_amount` string, required: Calculated total amount including tax
    - `amount` string, required: Calculated total amount including tax named amount for backward compatibility
    - `discount_amount` string, required: Inline discount amount
    - `line_tcv` string, nullable, required: Net amount x periods in term, before tax; null when ongoing
  - `recipients` QuoteRecipientOut[], required
    - `id` integer, required
    - `side` 'company' | 'buyer', required
    - `organization_user_id` integer, nullable, required
    - `customer_id` integer, nullable, required
    - `name` string, required
    - `email` string, required
    - `is_signer` boolean, required
    - `signing_order` integer, nullable, required
    - `position` integer, required
  - `subtotal` string, required: Sum of quantity x rate before discounts and tax
  - `discount_total` string, required: Sum of inline line discounts
  - `tax_total` string, required: Sum of line tax
  - `amount` string, required: Quote total for one billing period of each line, calculated like an invoice total
  - `contract_value` string, required: Contract amount this quote converts to: quantity x rate over each line's term, before discount and tax; approvals compare this
  - `totals` QuoteTotalsOut, required
    - `one_time` QuoteTotalsBucketOut, required
      - `subtotal` string, required: Sum of quantity x rate before discounts and tax
      - `discount_total` string, required: Sum of inline line discounts
      - `tax_total` string, required: Sum of line tax
      - `total` string, required: Subtotal - discount + tax
    - `recurring` QuoteRecurringTotalsOut[], required: Amounts billed each period, one entry per billing frequency and interval, shortest period first
      - `subtotal` string, required: Sum of quantity x rate before discounts and tax
      - `discount_total` string, required: Sum of inline line discounts
      - `tax_total` string, required: Sum of line tax
      - `total` string, required: Subtotal - discount + tax
      - `billing_frequency` 'one_time' | 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'semi_annually' | 'annually', required
      - `billing_interval` integer, required
    - `mrr` string, required: Monthly recurring revenue before tax, calculated like the contract MRR
    - `arr` string, required: Annual recurring revenue before tax, calculated like the contract ARR
    - `first_invoice_amount` string, required: Amount with tax billed on the contract start date
    - `first_year_value` string, required: Value of the periods that start in the first 12 months, net of discounts, before tax
    - `tcv` string, nullable, required: Total contract value net of discounts, before tax; null when any line is ongoing
    - `initial_term_tcv` string, nullable, required: Total contract value of the initial term when the quote runs for a number of months
    - `years` QuoteYearTotalOut[], required: Value per contract year; the years add up to the TCV. Empty when the quote is ongoing
      - `year` integer, required: Contract year, starting at 1
      - `start_date` string, date, required
      - `end_date` string, date, required
      - `total` string, required: Value of the billing periods that start in this year, net of discounts, before tax
  - `created_by` AuditActorSchemaOut: Schema for audit actor information.
    - `actor_type` string, nullable
    - `email` string, nullable
    - `first_name` string, nullable
    - `last_name` string, nullable
    - `via` string, nullable
    - `agent_id` integer, nullable
    - `agent_name` string, nullable
    - `timestamp` string, date-time, nullable
  - `updated_by` AuditActorSchemaOut: Schema for audit actor information.
    - `actor_type` string, nullable
    - `email` string, nullable
    - `first_name` string, nullable
    - `last_name` string, nullable
    - `via` string, nullable
    - `agent_id` integer, nullable
    - `agent_name` string, nullable
    - `timestamp` string, date-time, nullable

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `422`: Unprocessable Content
- `500`: Internal Server Error

## Changes

- **2026-10-06** `f8de2ceea61d`: 6 info
  - added the optional property `created_by/anyOf[subschema #1: AuditActorSchemaOut]/agent_id` to the response with the `200` status
  - added the optional property `created_by/anyOf[subschema #1: AuditActorSchemaOut]/agent_name` to the response with the `200` status
  - added the optional property `created_by/anyOf[subschema #1: AuditActorSchemaOut]/via` to the response with the `200` status
  - added the optional property `updated_by/anyOf[subschema #1: AuditActorSchemaOut]/agent_id` to the response with the `200` status
  - …2 more
- **2026-10-01** `8f0a589ca348`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/dualentry/apis/dualentry-public-api/changes/public/v2/quotes/:record_number/put.md)

---

[API](https://skmtc.dev/dualentry/apis/dualentry-public-api.md) · [All operations](https://skmtc.dev/dualentry/apis/dualentry-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dualentry/apis/dualentry-public-api/revisions/7588ae19aaff?raw)
