---
title: "Calculate on-road pricing"
method: POST
path: "/v1/quote"
---

# Calculate on-road pricing

`POST /v1/quote`

## Request

- Base URL: `https://pricing-api.vyro.com.au`
- URL: `https://pricing-api.vyro.com.au/v1/quote`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Runs the pricing engine for the requested jurisdiction, returning a staged drive-away breakdown that mirrors how OEMs explain taxes and fees to customers.

## Request body

- union: Encapsulates every commercial input required to price a vehicle. Pricing is evaluated in three stages: (1) dutiable value (contract price, accessories, dealer delivery), (2) statutory on-road charges (stamp duty, registration, CTP, showroom overrides), and (3) post-contract adjustments (rebates, admin fees). Each stage is represented inside `pricingInputs` so downstream consumers can see exactly which amounts fed the calculation.
  - object
    - `pricingCode` 'AU_NSW' | 'AU_QLD' | 'AU_WA' | 'AU_SA' | 'AU_ACT' | 'AU_VIC' | 'AU_TAS' | 'AU_NT', required: Jurisdiction to apply. New states will be added as additional enum values.
    - `showroomCode` string, required: Identifier for the Vyro showroom making the sale. Used to apply any showroom-specific pricing rules or fees. Your API credentials are scoped to your showroom code(s); requesting any other code returns 403 SHOWROOM_ACCESS_DENIED, whose `allowedShowroomCodes` lists the codes you can use.
    - `purchaseDate` string, date, required: The date the vehicle is purchased. Used to determine the applicable financial year for duty and registration calculations. Timezone should be relevant to the purchase location.
    - `vehicle` Vehicle, required: Base vehicle specification used by the rules engine.
      - `make` string, required: OEM/brand name (case-insensitive).
      - `model` string, required: Model or trim identifier.
      - `year` integer, required: Model year of the vehicle being priced.
      - `fuelType` 'BEV' | 'PHEV' | 'ICE' | 'HYBRID', required: Fuel type drives incentive eligibility and duty settings.
      - `tareKg` number, nullable: Vehicle tare mass in kilograms for weight-based fees.
      - `gvmKg` number, nullable: Gross vehicle mass in kilograms (optional).
      - `co2GramsPerKm` number, nullable: Combined tailpipe CO2 emissions used for VIC green passenger checks.
      - `isWheelchairModified` boolean, nullable: Indicates the vehicle has wheelchair-specific modifications recognised for NSW disability concessions.
      - `bodyType` 'passenger' | 'suv' | 'ute' | 'van' | 'truck' | 'cab_chassis' | 'trailer' | 'tractor': Body type classification. `van` means a goods (panel) van; send a people mover seating 8 or fewer as `passenger`. Utes, goods vans, trucks and cab-chassis are non-passenger vehicles for VIC and SA duty.
      - `cylinders` integer, nullable: Engine cylinder count for ICE, hybrid and PHEV vehicles. QLD stamp duty (ICE) and QLD registration (ICE/hybrid/PHEV) are banded by cylinders; without it QLD assumes 1-4 cylinders for duty and the EV/1-3 cylinder rate for registration, and returns a warning.
      - `fuelConsumptionLPer100km` number, nullable: Combined fuel consumption in L/100km, as shown on the vehicle's fuel consumption label. A car is "fuel-efficient" for the Luxury Car Tax threshold only at 3.5 L/100km or less (from 1 July 2025). When omitted, BEVs and PHEVs are treated as fuel-efficient and every other fuel type (including conventional hybrids) is not.
      - `seats` integer, nullable: Seating positions including the driver. Luxury Car Tax: a vehicle designed for 9 or more passengers (10+ seats) is not a car; utes use seats in the ATO commercial-vehicle test.
      - `kerbMassKg` number, nullable: Unladen (kerb) mass in kg, in running order with all fluids including fuel. With gvmKg it gives the designed load: 2 tonnes or more is not a car for LCT, and utes/cab-chassis are excluded from LCT when seats x 68 kg is less than 50% of (gvmKg - kerbMassKg) (ATO LCTD 2023/1).
      - `condition` 'new' | 'used': `used` enables used-vehicle treatment: consideration duty base (QLD, WA), VIC non-passenger used rate, and the Luxury Car Tax two-year test and resale credit. When omitted the engine applies its standard new-vehicle treatment; send `new` explicitly to enable condition-aware VIC duty classification for new utes and goods vans. `registration.type: transfer` implies `used`.
      - `manufactureDate` string, date, nullable: Build date (a real calendar date; impossible dates such as 2024-09-31 return 400 INVALID_VEHICLE_INPUT). For a used vehicle it can show the car is within the Luxury Car Tax two-year window, but never that it is outside it: for an imported car (almost every car) the two years run from importation. Use importDate or firstRegistrationDate for that.
      - `importDate` string, date, nullable: Date the vehicle was imported (entered for home consumption) into Australia. The LCT two-year clock for an imported car (LCT Act s 5-10(3)).
      - `firstRegistrationDate` string, date, nullable: Date first registered in Australia. A conservative stand-in for importDate (a car is always imported before it is first registered), used for the LCT two-year test when importDate is not sent.
      - `lctPreviouslyPaid` integer, nullable: LCT already payable on earlier supplies or the importation of this car, in cents. The LCT on a used car's resale is reduced by it (LCT Act s 5-15(2)), so a car first sold new with LCT usually owes none on resale. Required (send 0 if none was paid) for a used car within the two-year window and above the LCT threshold.
    - `vehicleGeneric` VehicleGeneric: Generic vehicle metadata used when make/model/year are unavailable.
      - `bodyType` 'passenger' | 'suv' | 'ute' | 'van' | 'truck' | 'cab_chassis' | 'trailer' | 'tractor', required: Body type classification. `van` means a goods (panel) van; send a people mover seating 8 or fewer as `passenger`. Utes, goods vans, trucks and cab-chassis are non-passenger vehicles for VIC and SA duty.
      - `fuelType` 'BEV' | 'PHEV' | 'ICE' | 'HYBRID', required: Fuel type drives incentive eligibility and duty settings.
      - `tareKg` number, nullable: Vehicle tare mass in kilograms for weight-based fees.
      - `gvmKg` number, nullable: Gross vehicle mass in kilograms (optional).
      - `co2GramsPerKm` number, nullable: Combined tailpipe CO2 emissions used for VIC green passenger checks.
      - `isWheelchairModified` boolean, nullable: Indicates the vehicle has wheelchair-specific modifications recognised for NSW disability concessions.
      - `cylinders` integer, nullable: Engine cylinder count for ICE, hybrid and PHEV vehicles. QLD stamp duty (ICE) and QLD registration (ICE/hybrid/PHEV) are banded by cylinders; without it QLD assumes 1-4 cylinders for duty and the EV/1-3 cylinder rate for registration, and returns a warning.
      - `fuelConsumptionLPer100km` number, nullable: Combined fuel consumption in L/100km, as shown on the vehicle's fuel consumption label. A car is "fuel-efficient" for the Luxury Car Tax threshold only at 3.5 L/100km or less (from 1 July 2025). When omitted, BEVs and PHEVs are treated as fuel-efficient and every other fuel type (including conventional hybrids) is not.
      - `seats` integer, nullable: Seating positions including the driver. Luxury Car Tax: a vehicle designed for 9 or more passengers (10+ seats) is not a car; utes use seats in the ATO commercial-vehicle test.
      - `kerbMassKg` number, nullable: Unladen (kerb) mass in kg, in running order with all fluids including fuel. With gvmKg it gives the designed load: 2 tonnes or more is not a car for LCT, and utes/cab-chassis are excluded from LCT when seats x 68 kg is less than 50% of (gvmKg - kerbMassKg) (ATO LCTD 2023/1).
      - `condition` 'new' | 'used': `used` enables used-vehicle treatment: consideration duty base (QLD, WA), VIC non-passenger used rate, and the Luxury Car Tax two-year test and resale credit. When omitted the engine applies its standard new-vehicle treatment; send `new` explicitly to enable condition-aware VIC duty classification for new utes and goods vans. `registration.type: transfer` implies `used`.
      - `manufactureDate` string, date, nullable: Build date (a real calendar date; impossible dates such as 2024-09-31 return 400 INVALID_VEHICLE_INPUT). For a used vehicle it can show the car is within the Luxury Car Tax two-year window, but never that it is outside it: for an imported car (almost every car) the two years run from importation. Use importDate or firstRegistrationDate for that.
      - `importDate` string, date, nullable: Date the vehicle was imported (entered for home consumption) into Australia. The LCT two-year clock for an imported car (LCT Act s 5-10(3)).
      - `firstRegistrationDate` string, date, nullable: Date first registered in Australia. A conservative stand-in for importDate (a car is always imported before it is first registered), used for the LCT two-year test when importDate is not sent.
      - `lctPreviouslyPaid` integer, nullable: LCT already payable on earlier supplies or the importation of this car, in cents. The LCT on a used car's resale is reduced by it (LCT Act s 5-15(2)), so a car first sold new with LCT usually owes none on resale. Required (send 0 if none was paid) for a used car within the two-year window and above the LCT threshold.
    - `pricingInputs` PricingInputs, required: Split the commercial deal into the three pricing stages so the engine can run compliant NSW logic while keeping every input auditable: 1. Dutiable stage (`dutiable`) – GST-inclusive vehicle price, accessories, dealer delivery, and any pre-contract cash adjustments. These amounts seed the dutiable base used for stamp duty and are echoed back in the response before rule-driven adjustments. 2. Statutory/on-road stage (`onRoad`) – dealer supplied on-road extras such as tinting or showroom-specific fees. Statutory charges calculated by the engine (duty, registration, CTP) are appended to this bucket in the response so third parties can reconcile everything in one list. 3. Post-contract stage (`additional`) – rebates, OEM incentives, or admin fees applied after statutory charges. Negative numbers lower the drive-away total. OEM discounts that should be removed after taxes (for example, a cashback offer) belong here. All values must be expressed in cents (AUD) to avoid rounding issues.
      - `dutiable` PricingInputLine[], required
        - `description` string, required: Plain-language label for the input line.
        - `value` integer, required: Amount in cents. Negative values reduce the subtotal.
        - `tag` 'dealer_delivery' | 'vehicle' | 'factory_option' | 'accessory_fitted' | 'accessory_loose' | 'discount' | 'post_sale_rebate' | 'warranty_or_service_plan': Optional classification of what an input line is, so the engine can apply each jurisdiction's stamp duty treatment. Describe the line, not its tax treatment: the same tag is sent in every state. Untagged lines keep their existing handling. `vehicle` is the vehicle price (with factory options if not sent separately); `factory_option` a manufacturer option or pack; `accessory_fitted` an accessory fitted to the vehicle before registration (e.g. towbar, tint, paint protection); `accessory_loose` an accessory supplied with the vehicle but not fitted (e.g. floor mats, cargo mat, cushions, charging cable); `dealer_delivery` a delivery or pre-delivery fee (may be supplied in any pricingInputs bucket); `discount` a price reduction agreed at sale (e.g. a campaign or negotiated discount, sent as a negative line); `post_sale_rebate` a rebate paid after the sale (negative line); `warranty_or_service_plan` an extended warranty, service or maintenance plan or insurance product. Classification tags other than `dealer_delivery` only affect lines in `pricingInputs.dutiable`, and only for new vehicles.
        - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
          - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
          - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
          - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
          - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
          - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
          - `metadata` object: Optional structured metadata for downstream reporting.
        - `amounts` MonetaryBreakdown: Net/tax/gross representation of a monetary amount in cents.
          - `beforeTax` integer, required: Amount in cents before tax is applied.
          - `taxAmount` integer, required: Tax component in cents.
          - `afterTax` integer, required: Amount in cents after tax (this mirrors `value` in most responses).
          - `currency` string: ISO 4217 currency code. Defaults to `AUD`.
      - `onRoad` PricingInputLine[]
        - `description` string, required: Plain-language label for the input line.
        - `value` integer, required: Amount in cents. Negative values reduce the subtotal.
        - `tag` 'dealer_delivery' | 'vehicle' | 'factory_option' | 'accessory_fitted' | 'accessory_loose' | 'discount' | 'post_sale_rebate' | 'warranty_or_service_plan': Optional classification of what an input line is, so the engine can apply each jurisdiction's stamp duty treatment. Describe the line, not its tax treatment: the same tag is sent in every state. Untagged lines keep their existing handling. `vehicle` is the vehicle price (with factory options if not sent separately); `factory_option` a manufacturer option or pack; `accessory_fitted` an accessory fitted to the vehicle before registration (e.g. towbar, tint, paint protection); `accessory_loose` an accessory supplied with the vehicle but not fitted (e.g. floor mats, cargo mat, cushions, charging cable); `dealer_delivery` a delivery or pre-delivery fee (may be supplied in any pricingInputs bucket); `discount` a price reduction agreed at sale (e.g. a campaign or negotiated discount, sent as a negative line); `post_sale_rebate` a rebate paid after the sale (negative line); `warranty_or_service_plan` an extended warranty, service or maintenance plan or insurance product. Classification tags other than `dealer_delivery` only affect lines in `pricingInputs.dutiable`, and only for new vehicles.
        - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
          - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
          - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
          - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
          - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
          - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
          - `metadata` object: Optional structured metadata for downstream reporting.
        - `amounts` MonetaryBreakdown: Net/tax/gross representation of a monetary amount in cents.
          - `beforeTax` integer, required: Amount in cents before tax is applied.
          - `taxAmount` integer, required: Tax component in cents.
          - `afterTax` integer, required: Amount in cents after tax (this mirrors `value` in most responses).
          - `currency` string: ISO 4217 currency code. Defaults to `AUD`.
      - `additional` PricingInputLine[]
        - `description` string, required: Plain-language label for the input line.
        - `value` integer, required: Amount in cents. Negative values reduce the subtotal.
        - `tag` 'dealer_delivery' | 'vehicle' | 'factory_option' | 'accessory_fitted' | 'accessory_loose' | 'discount' | 'post_sale_rebate' | 'warranty_or_service_plan': Optional classification of what an input line is, so the engine can apply each jurisdiction's stamp duty treatment. Describe the line, not its tax treatment: the same tag is sent in every state. Untagged lines keep their existing handling. `vehicle` is the vehicle price (with factory options if not sent separately); `factory_option` a manufacturer option or pack; `accessory_fitted` an accessory fitted to the vehicle before registration (e.g. towbar, tint, paint protection); `accessory_loose` an accessory supplied with the vehicle but not fitted (e.g. floor mats, cargo mat, cushions, charging cable); `dealer_delivery` a delivery or pre-delivery fee (may be supplied in any pricingInputs bucket); `discount` a price reduction agreed at sale (e.g. a campaign or negotiated discount, sent as a negative line); `post_sale_rebate` a rebate paid after the sale (negative line); `warranty_or_service_plan` an extended warranty, service or maintenance plan or insurance product. Classification tags other than `dealer_delivery` only affect lines in `pricingInputs.dutiable`, and only for new vehicles.
        - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
          - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
          - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
          - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
          - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
          - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
          - `metadata` object: Optional structured metadata for downstream reporting.
        - `amounts` MonetaryBreakdown: Net/tax/gross representation of a monetary amount in cents.
          - `beforeTax` integer, required: Amount in cents before tax is applied.
          - `taxAmount` integer, required: Tax component in cents.
          - `afterTax` integer, required: Amount in cents after tax (this mirrors `value` in most responses).
          - `currency` string: ISO 4217 currency code. Defaults to `AUD`.
    - `pricingInputDefaults` PricingInputDefaults: Default tax metadata applied to every pricing input when per-line values are omitted.
      - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
        - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
        - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
        - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
        - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
        - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
        - `metadata` object: Optional structured metadata for downstream reporting.
    - `registration` RegistrationContext, required: Registration window the quote should cover.
      - `termMonths` 1 | 3 | 6 | 12, required: Requested registration term in months. Availability depends on the selected pricingCode.
      - `startDate` string, date, required: Registration commencement date (ISO-8601).
      - `postcode` string, nullable: Optional postcode used to infer jurisdiction-specific taxes (e.g. VIC TAC risk zone). Required for accurate TAC calculations in Victoria.
      - `type` 'new' | 'transfer': `new` (default) prices a registration for `termMonths`, including CTP/TAC and plates. `transfer` is for a vehicle that is already registered: its registration transfers to the buyer, so registration, CTP/TAC and plates are omitted and the state's transfer fee is added. `transfer` is supported for AU_QLD, AU_WA and AU_VIC for registration dates in the modelled fee window (2026-07-01 to 2027-06-30); other states and dates return 400 UNSUPPORTED_REGISTRATION_TYPE. `termMonths` is required but ignored for a transfer.
    - `customer` CustomerContext, required: Customer type and usage information for pricing.
      - `customerType` 'consumer' | 'commercial', required: Indicates whether the buyer is a retail customer or fleet/commercial entity.
      - `usageType` 'consumer' | 'commercial', required: Scope of vehicle usage (used for future differences in CTP or tax).
      - `concession` ConcessionContext: Jurisdiction-specific concessions that waive or reduce statutory charges.
        - `hasConcession` boolean: True when any concession applies to the customer.
        - `type` 'pensioner_eligible' | 'primary_producer' | 'diplomat' | 'mobility_disability' | 'war_veteran' | 'other' | 'au_act_seniors_card' | 'au_act_seniors_ev_legacy' | 'au_tas_pensioner' | 'au_tas_health_care' | 'au_tas_dva_tpi' | 'au_tas_asylum_seeker' | 'au_vic_health_care_card' | 'au_vic_pensioner_card' | 'au_vic_dva_tpi' | 'au_wa_pensioner_full' | 'au_wa_pensioner_half' | 'au_wa_charity_full' | 'au_wa_wheelchair_vehicle' | 'au_wa_minister_religion' | 'au_wa_govt_federal_duty' | 'au_wa_govt_state_full' | 'au_wa_lga_full' | 'au_wa_govtfunded_full' | 'au_wa_farm_vehicle' | 'au_wa_ag_machine' | 'au_wa_occupation_beekeeper' | 'au_wa_occupation_kangaroo_hunter' | 'au_wa_occupation_prospector' | 'au_wa_occupation_sandalwood' | 'au_wa_classic_code404' | 'au_wa_classic_c4c' | 'au_sa_pensioner_50' | 'au_sa_incapacitated_person' | 'au_sa_incapacitated_ex_service' | 'au_sa_outer_area_50' | 'au_nt_concession_scheme' | 'au_nt_seniors_card' | 'au_nt_concession_scheme_plus_seniors' | 'au_qld_pre_1994_pensioner' | 'au_qld_concession_card_post_1994', nullable
    - `taxDatePolicy` TaxDatePolicy: Policy for handling registration dates outside supported tax ranges.
      - `outOfRange` 'legacy' | 'error' | 'prior_year': Controls how the engine responds when `registration.startDate` is outside the supported tax rule range.
      - `year` integer, nullable: Optional model year used for age-based checks.
    - `ruleOverrides` object: Optional escape hatch to disable specific rule IDs for reconciliation tests. Use sparingly; production quotes should rely on the configured rule catalog.
      - `ignore` string[]: List of rule `metadata.id` values to skip during evaluation.
    - `debug` boolean: Optional flag to return extra diagnostics (not guaranteed in production).
  - object
    - `pricingCode` 'AU_NSW' | 'AU_QLD' | 'AU_WA' | 'AU_SA' | 'AU_ACT' | 'AU_VIC' | 'AU_TAS' | 'AU_NT', required: Jurisdiction to apply. New states will be added as additional enum values.
    - `showroomCode` string, required: Identifier for the Vyro showroom making the sale. Used to apply any showroom-specific pricing rules or fees. Your API credentials are scoped to your showroom code(s); requesting any other code returns 403 SHOWROOM_ACCESS_DENIED, whose `allowedShowroomCodes` lists the codes you can use.
    - `purchaseDate` string, date, required: The date the vehicle is purchased. Used to determine the applicable financial year for duty and registration calculations. Timezone should be relevant to the purchase location.
    - `vehicle` Vehicle: Base vehicle specification used by the rules engine.
      - `make` string, required: OEM/brand name (case-insensitive).
      - `model` string, required: Model or trim identifier.
      - `year` integer, required: Model year of the vehicle being priced.
      - `fuelType` 'BEV' | 'PHEV' | 'ICE' | 'HYBRID', required: Fuel type drives incentive eligibility and duty settings.
      - `tareKg` number, nullable: Vehicle tare mass in kilograms for weight-based fees.
      - `gvmKg` number, nullable: Gross vehicle mass in kilograms (optional).
      - `co2GramsPerKm` number, nullable: Combined tailpipe CO2 emissions used for VIC green passenger checks.
      - `isWheelchairModified` boolean, nullable: Indicates the vehicle has wheelchair-specific modifications recognised for NSW disability concessions.
      - `bodyType` 'passenger' | 'suv' | 'ute' | 'van' | 'truck' | 'cab_chassis' | 'trailer' | 'tractor': Body type classification. `van` means a goods (panel) van; send a people mover seating 8 or fewer as `passenger`. Utes, goods vans, trucks and cab-chassis are non-passenger vehicles for VIC and SA duty.
      - `cylinders` integer, nullable: Engine cylinder count for ICE, hybrid and PHEV vehicles. QLD stamp duty (ICE) and QLD registration (ICE/hybrid/PHEV) are banded by cylinders; without it QLD assumes 1-4 cylinders for duty and the EV/1-3 cylinder rate for registration, and returns a warning.
      - `fuelConsumptionLPer100km` number, nullable: Combined fuel consumption in L/100km, as shown on the vehicle's fuel consumption label. A car is "fuel-efficient" for the Luxury Car Tax threshold only at 3.5 L/100km or less (from 1 July 2025). When omitted, BEVs and PHEVs are treated as fuel-efficient and every other fuel type (including conventional hybrids) is not.
      - `seats` integer, nullable: Seating positions including the driver. Luxury Car Tax: a vehicle designed for 9 or more passengers (10+ seats) is not a car; utes use seats in the ATO commercial-vehicle test.
      - `kerbMassKg` number, nullable: Unladen (kerb) mass in kg, in running order with all fluids including fuel. With gvmKg it gives the designed load: 2 tonnes or more is not a car for LCT, and utes/cab-chassis are excluded from LCT when seats x 68 kg is less than 50% of (gvmKg - kerbMassKg) (ATO LCTD 2023/1).
      - `condition` 'new' | 'used': `used` enables used-vehicle treatment: consideration duty base (QLD, WA), VIC non-passenger used rate, and the Luxury Car Tax two-year test and resale credit. When omitted the engine applies its standard new-vehicle treatment; send `new` explicitly to enable condition-aware VIC duty classification for new utes and goods vans. `registration.type: transfer` implies `used`.
      - `manufactureDate` string, date, nullable: Build date (a real calendar date; impossible dates such as 2024-09-31 return 400 INVALID_VEHICLE_INPUT). For a used vehicle it can show the car is within the Luxury Car Tax two-year window, but never that it is outside it: for an imported car (almost every car) the two years run from importation. Use importDate or firstRegistrationDate for that.
      - `importDate` string, date, nullable: Date the vehicle was imported (entered for home consumption) into Australia. The LCT two-year clock for an imported car (LCT Act s 5-10(3)).
      - `firstRegistrationDate` string, date, nullable: Date first registered in Australia. A conservative stand-in for importDate (a car is always imported before it is first registered), used for the LCT two-year test when importDate is not sent.
      - `lctPreviouslyPaid` integer, nullable: LCT already payable on earlier supplies or the importation of this car, in cents. The LCT on a used car's resale is reduced by it (LCT Act s 5-15(2)), so a car first sold new with LCT usually owes none on resale. Required (send 0 if none was paid) for a used car within the two-year window and above the LCT threshold.
    - `vehicleGeneric` VehicleGeneric, required: Generic vehicle metadata used when make/model/year are unavailable.
      - `bodyType` 'passenger' | 'suv' | 'ute' | 'van' | 'truck' | 'cab_chassis' | 'trailer' | 'tractor', required: Body type classification. `van` means a goods (panel) van; send a people mover seating 8 or fewer as `passenger`. Utes, goods vans, trucks and cab-chassis are non-passenger vehicles for VIC and SA duty.
      - `fuelType` 'BEV' | 'PHEV' | 'ICE' | 'HYBRID', required: Fuel type drives incentive eligibility and duty settings.
      - `tareKg` number, nullable: Vehicle tare mass in kilograms for weight-based fees.
      - `gvmKg` number, nullable: Gross vehicle mass in kilograms (optional).
      - `co2GramsPerKm` number, nullable: Combined tailpipe CO2 emissions used for VIC green passenger checks.
      - `isWheelchairModified` boolean, nullable: Indicates the vehicle has wheelchair-specific modifications recognised for NSW disability concessions.
      - `cylinders` integer, nullable: Engine cylinder count for ICE, hybrid and PHEV vehicles. QLD stamp duty (ICE) and QLD registration (ICE/hybrid/PHEV) are banded by cylinders; without it QLD assumes 1-4 cylinders for duty and the EV/1-3 cylinder rate for registration, and returns a warning.
      - `fuelConsumptionLPer100km` number, nullable: Combined fuel consumption in L/100km, as shown on the vehicle's fuel consumption label. A car is "fuel-efficient" for the Luxury Car Tax threshold only at 3.5 L/100km or less (from 1 July 2025). When omitted, BEVs and PHEVs are treated as fuel-efficient and every other fuel type (including conventional hybrids) is not.
      - `seats` integer, nullable: Seating positions including the driver. Luxury Car Tax: a vehicle designed for 9 or more passengers (10+ seats) is not a car; utes use seats in the ATO commercial-vehicle test.
      - `kerbMassKg` number, nullable: Unladen (kerb) mass in kg, in running order with all fluids including fuel. With gvmKg it gives the designed load: 2 tonnes or more is not a car for LCT, and utes/cab-chassis are excluded from LCT when seats x 68 kg is less than 50% of (gvmKg - kerbMassKg) (ATO LCTD 2023/1).
      - `condition` 'new' | 'used': `used` enables used-vehicle treatment: consideration duty base (QLD, WA), VIC non-passenger used rate, and the Luxury Car Tax two-year test and resale credit. When omitted the engine applies its standard new-vehicle treatment; send `new` explicitly to enable condition-aware VIC duty classification for new utes and goods vans. `registration.type: transfer` implies `used`.
      - `manufactureDate` string, date, nullable: Build date (a real calendar date; impossible dates such as 2024-09-31 return 400 INVALID_VEHICLE_INPUT). For a used vehicle it can show the car is within the Luxury Car Tax two-year window, but never that it is outside it: for an imported car (almost every car) the two years run from importation. Use importDate or firstRegistrationDate for that.
      - `importDate` string, date, nullable: Date the vehicle was imported (entered for home consumption) into Australia. The LCT two-year clock for an imported car (LCT Act s 5-10(3)).
      - `firstRegistrationDate` string, date, nullable: Date first registered in Australia. A conservative stand-in for importDate (a car is always imported before it is first registered), used for the LCT two-year test when importDate is not sent.
      - `lctPreviouslyPaid` integer, nullable: LCT already payable on earlier supplies or the importation of this car, in cents. The LCT on a used car's resale is reduced by it (LCT Act s 5-15(2)), so a car first sold new with LCT usually owes none on resale. Required (send 0 if none was paid) for a used car within the two-year window and above the LCT threshold.
    - `pricingInputs` PricingInputs, required: Split the commercial deal into the three pricing stages so the engine can run compliant NSW logic while keeping every input auditable: 1. Dutiable stage (`dutiable`) – GST-inclusive vehicle price, accessories, dealer delivery, and any pre-contract cash adjustments. These amounts seed the dutiable base used for stamp duty and are echoed back in the response before rule-driven adjustments. 2. Statutory/on-road stage (`onRoad`) – dealer supplied on-road extras such as tinting or showroom-specific fees. Statutory charges calculated by the engine (duty, registration, CTP) are appended to this bucket in the response so third parties can reconcile everything in one list. 3. Post-contract stage (`additional`) – rebates, OEM incentives, or admin fees applied after statutory charges. Negative numbers lower the drive-away total. OEM discounts that should be removed after taxes (for example, a cashback offer) belong here. All values must be expressed in cents (AUD) to avoid rounding issues.
      - `dutiable` PricingInputLine[], required
        - `description` string, required: Plain-language label for the input line.
        - `value` integer, required: Amount in cents. Negative values reduce the subtotal.
        - `tag` 'dealer_delivery' | 'vehicle' | 'factory_option' | 'accessory_fitted' | 'accessory_loose' | 'discount' | 'post_sale_rebate' | 'warranty_or_service_plan': Optional classification of what an input line is, so the engine can apply each jurisdiction's stamp duty treatment. Describe the line, not its tax treatment: the same tag is sent in every state. Untagged lines keep their existing handling. `vehicle` is the vehicle price (with factory options if not sent separately); `factory_option` a manufacturer option or pack; `accessory_fitted` an accessory fitted to the vehicle before registration (e.g. towbar, tint, paint protection); `accessory_loose` an accessory supplied with the vehicle but not fitted (e.g. floor mats, cargo mat, cushions, charging cable); `dealer_delivery` a delivery or pre-delivery fee (may be supplied in any pricingInputs bucket); `discount` a price reduction agreed at sale (e.g. a campaign or negotiated discount, sent as a negative line); `post_sale_rebate` a rebate paid after the sale (negative line); `warranty_or_service_plan` an extended warranty, service or maintenance plan or insurance product. Classification tags other than `dealer_delivery` only affect lines in `pricingInputs.dutiable`, and only for new vehicles.
        - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
          - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
          - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
          - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
          - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
          - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
          - `metadata` object: Optional structured metadata for downstream reporting.
        - `amounts` MonetaryBreakdown: Net/tax/gross representation of a monetary amount in cents.
          - `beforeTax` integer, required: Amount in cents before tax is applied.
          - `taxAmount` integer, required: Tax component in cents.
          - `afterTax` integer, required: Amount in cents after tax (this mirrors `value` in most responses).
          - `currency` string: ISO 4217 currency code. Defaults to `AUD`.
      - `onRoad` PricingInputLine[]
        - `description` string, required: Plain-language label for the input line.
        - `value` integer, required: Amount in cents. Negative values reduce the subtotal.
        - `tag` 'dealer_delivery' | 'vehicle' | 'factory_option' | 'accessory_fitted' | 'accessory_loose' | 'discount' | 'post_sale_rebate' | 'warranty_or_service_plan': Optional classification of what an input line is, so the engine can apply each jurisdiction's stamp duty treatment. Describe the line, not its tax treatment: the same tag is sent in every state. Untagged lines keep their existing handling. `vehicle` is the vehicle price (with factory options if not sent separately); `factory_option` a manufacturer option or pack; `accessory_fitted` an accessory fitted to the vehicle before registration (e.g. towbar, tint, paint protection); `accessory_loose` an accessory supplied with the vehicle but not fitted (e.g. floor mats, cargo mat, cushions, charging cable); `dealer_delivery` a delivery or pre-delivery fee (may be supplied in any pricingInputs bucket); `discount` a price reduction agreed at sale (e.g. a campaign or negotiated discount, sent as a negative line); `post_sale_rebate` a rebate paid after the sale (negative line); `warranty_or_service_plan` an extended warranty, service or maintenance plan or insurance product. Classification tags other than `dealer_delivery` only affect lines in `pricingInputs.dutiable`, and only for new vehicles.
        - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
          - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
          - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
          - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
          - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
          - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
          - `metadata` object: Optional structured metadata for downstream reporting.
        - `amounts` MonetaryBreakdown: Net/tax/gross representation of a monetary amount in cents.
          - `beforeTax` integer, required: Amount in cents before tax is applied.
          - `taxAmount` integer, required: Tax component in cents.
          - `afterTax` integer, required: Amount in cents after tax (this mirrors `value` in most responses).
          - `currency` string: ISO 4217 currency code. Defaults to `AUD`.
      - `additional` PricingInputLine[]
        - `description` string, required: Plain-language label for the input line.
        - `value` integer, required: Amount in cents. Negative values reduce the subtotal.
        - `tag` 'dealer_delivery' | 'vehicle' | 'factory_option' | 'accessory_fitted' | 'accessory_loose' | 'discount' | 'post_sale_rebate' | 'warranty_or_service_plan': Optional classification of what an input line is, so the engine can apply each jurisdiction's stamp duty treatment. Describe the line, not its tax treatment: the same tag is sent in every state. Untagged lines keep their existing handling. `vehicle` is the vehicle price (with factory options if not sent separately); `factory_option` a manufacturer option or pack; `accessory_fitted` an accessory fitted to the vehicle before registration (e.g. towbar, tint, paint protection); `accessory_loose` an accessory supplied with the vehicle but not fitted (e.g. floor mats, cargo mat, cushions, charging cable); `dealer_delivery` a delivery or pre-delivery fee (may be supplied in any pricingInputs bucket); `discount` a price reduction agreed at sale (e.g. a campaign or negotiated discount, sent as a negative line); `post_sale_rebate` a rebate paid after the sale (negative line); `warranty_or_service_plan` an extended warranty, service or maintenance plan or insurance product. Classification tags other than `dealer_delivery` only affect lines in `pricingInputs.dutiable`, and only for new vehicles.
        - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
          - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
          - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
          - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
          - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
          - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
          - `metadata` object: Optional structured metadata for downstream reporting.
        - `amounts` MonetaryBreakdown: Net/tax/gross representation of a monetary amount in cents.
          - `beforeTax` integer, required: Amount in cents before tax is applied.
          - `taxAmount` integer, required: Tax component in cents.
          - `afterTax` integer, required: Amount in cents after tax (this mirrors `value` in most responses).
          - `currency` string: ISO 4217 currency code. Defaults to `AUD`.
    - `pricingInputDefaults` PricingInputDefaults: Default tax metadata applied to every pricing input when per-line values are omitted.
      - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
        - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
        - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
        - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
        - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
        - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
        - `metadata` object: Optional structured metadata for downstream reporting.
    - `registration` RegistrationContext, required: Registration window the quote should cover.
      - `termMonths` 1 | 3 | 6 | 12, required: Requested registration term in months. Availability depends on the selected pricingCode.
      - `startDate` string, date, required: Registration commencement date (ISO-8601).
      - `postcode` string, nullable: Optional postcode used to infer jurisdiction-specific taxes (e.g. VIC TAC risk zone). Required for accurate TAC calculations in Victoria.
      - `type` 'new' | 'transfer': `new` (default) prices a registration for `termMonths`, including CTP/TAC and plates. `transfer` is for a vehicle that is already registered: its registration transfers to the buyer, so registration, CTP/TAC and plates are omitted and the state's transfer fee is added. `transfer` is supported for AU_QLD, AU_WA and AU_VIC for registration dates in the modelled fee window (2026-07-01 to 2027-06-30); other states and dates return 400 UNSUPPORTED_REGISTRATION_TYPE. `termMonths` is required but ignored for a transfer.
    - `customer` CustomerContext, required: Customer type and usage information for pricing.
      - `customerType` 'consumer' | 'commercial', required: Indicates whether the buyer is a retail customer or fleet/commercial entity.
      - `usageType` 'consumer' | 'commercial', required: Scope of vehicle usage (used for future differences in CTP or tax).
      - `concession` ConcessionContext: Jurisdiction-specific concessions that waive or reduce statutory charges.
        - `hasConcession` boolean: True when any concession applies to the customer.
        - `type` 'pensioner_eligible' | 'primary_producer' | 'diplomat' | 'mobility_disability' | 'war_veteran' | 'other' | 'au_act_seniors_card' | 'au_act_seniors_ev_legacy' | 'au_tas_pensioner' | 'au_tas_health_care' | 'au_tas_dva_tpi' | 'au_tas_asylum_seeker' | 'au_vic_health_care_card' | 'au_vic_pensioner_card' | 'au_vic_dva_tpi' | 'au_wa_pensioner_full' | 'au_wa_pensioner_half' | 'au_wa_charity_full' | 'au_wa_wheelchair_vehicle' | 'au_wa_minister_religion' | 'au_wa_govt_federal_duty' | 'au_wa_govt_state_full' | 'au_wa_lga_full' | 'au_wa_govtfunded_full' | 'au_wa_farm_vehicle' | 'au_wa_ag_machine' | 'au_wa_occupation_beekeeper' | 'au_wa_occupation_kangaroo_hunter' | 'au_wa_occupation_prospector' | 'au_wa_occupation_sandalwood' | 'au_wa_classic_code404' | 'au_wa_classic_c4c' | 'au_sa_pensioner_50' | 'au_sa_incapacitated_person' | 'au_sa_incapacitated_ex_service' | 'au_sa_outer_area_50' | 'au_nt_concession_scheme' | 'au_nt_seniors_card' | 'au_nt_concession_scheme_plus_seniors' | 'au_qld_pre_1994_pensioner' | 'au_qld_concession_card_post_1994', nullable
    - `taxDatePolicy` TaxDatePolicy: Policy for handling registration dates outside supported tax ranges.
      - `outOfRange` 'legacy' | 'error' | 'prior_year': Controls how the engine responds when `registration.startDate` is outside the supported tax rule range.
      - `year` integer, nullable: Optional model year used for age-based checks.
    - `ruleOverrides` object: Optional escape hatch to disable specific rule IDs for reconciliation tests. Use sparingly; production quotes should rely on the configured rule catalog.
      - `ignore` string[]: List of rule `metadata.id` values to skip during evaluation.
    - `debug` boolean: Optional flag to return extra diagnostics (not guaranteed in production).

## Response `200`

Pricing calculated

- PricingResponse: Returns the staged quote. Totals are presented per stage plus a drive-away sum, while `categories` exposes the full ledger of line items with the rule IDs that generated them so third parties can trace how the engine augmented their inputs.
  - `currency` string, required: ISO 4217 currency code. Currently always `AUD`.
  - `pricingCode` string, required: Echoes the jurisdiction that was priced.
  - `financialYear` string, required: Financial year derived from `purchaseDate` (format: YYYY-YYYY).
  - `categories` object, required: Mirrors the three pricing stages. Each array begins with the exact line items you sent in the matching `pricingInputs` bucket and then includes any derived adjustments. For instance, the `dutiable` array will show your base price, accessories, and dealer delivery followed by lookup-generated items; `onRoad` contains caller-provided extras plus NSW duty/registration/CTP rows; `additional` lists rebates or promotions applied after taxes.
    - `dutiable` PricingLineItem[], required
      - `value` integer, required: Amount in cents (AUD).
      - `description` string: Readable label safe for invoice or UI display.
      - `ruleId` string: Identifier of the rule that generated this line item.
      - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
        - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
        - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
        - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
        - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
        - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
        - `metadata` object: Optional structured metadata for downstream reporting.
      - `amounts` MonetaryBreakdown: Net/tax/gross representation of a monetary amount in cents.
        - `beforeTax` integer, required: Amount in cents before tax is applied.
        - `taxAmount` integer, required: Tax component in cents.
        - `afterTax` integer, required: Amount in cents after tax (this mirrors `value` in most responses).
        - `currency` string: ISO 4217 currency code. Defaults to `AUD`.
      - `components` PricingLineItemComponent[]: Optional breakdown of sub-components rolled into this line item.
        - `description` string, required
        - `value` integer, required
        - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
          - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
          - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
          - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
          - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
          - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
          - `metadata` object: Optional structured metadata for downstream reporting.
        - `amounts` MonetaryBreakdown: Net/tax/gross representation of a monetary amount in cents.
          - `beforeTax` integer, required: Amount in cents before tax is applied.
          - `taxAmount` integer, required: Tax component in cents.
          - `afterTax` integer, required: Amount in cents after tax (this mirrors `value` in most responses).
          - `currency` string: ISO 4217 currency code. Defaults to `AUD`.
    - `onRoad` PricingLineItem[], required
      - `value` integer, required: Amount in cents (AUD).
      - `description` string: Readable label safe for invoice or UI display.
      - `ruleId` string: Identifier of the rule that generated this line item.
      - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
        - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
        - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
        - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
        - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
        - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
        - `metadata` object: Optional structured metadata for downstream reporting.
      - `amounts` MonetaryBreakdown: Net/tax/gross representation of a monetary amount in cents.
        - `beforeTax` integer, required: Amount in cents before tax is applied.
        - `taxAmount` integer, required: Tax component in cents.
        - `afterTax` integer, required: Amount in cents after tax (this mirrors `value` in most responses).
        - `currency` string: ISO 4217 currency code. Defaults to `AUD`.
      - `components` PricingLineItemComponent[]: Optional breakdown of sub-components rolled into this line item.
        - `description` string, required
        - `value` integer, required
        - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
          - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
          - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
          - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
          - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
          - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
          - `metadata` object: Optional structured metadata for downstream reporting.
        - `amounts` MonetaryBreakdown: Net/tax/gross representation of a monetary amount in cents.
          - `beforeTax` integer, required: Amount in cents before tax is applied.
          - `taxAmount` integer, required: Tax component in cents.
          - `afterTax` integer, required: Amount in cents after tax (this mirrors `value` in most responses).
          - `currency` string: ISO 4217 currency code. Defaults to `AUD`.
    - `additional` PricingLineItem[], required
      - `value` integer, required: Amount in cents (AUD).
      - `description` string: Readable label safe for invoice or UI display.
      - `ruleId` string: Identifier of the rule that generated this line item.
      - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
        - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
        - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
        - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
        - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
        - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
        - `metadata` object: Optional structured metadata for downstream reporting.
      - `amounts` MonetaryBreakdown: Net/tax/gross representation of a monetary amount in cents.
        - `beforeTax` integer, required: Amount in cents before tax is applied.
        - `taxAmount` integer, required: Tax component in cents.
        - `afterTax` integer, required: Amount in cents after tax (this mirrors `value` in most responses).
        - `currency` string: ISO 4217 currency code. Defaults to `AUD`.
      - `components` PricingLineItemComponent[]: Optional breakdown of sub-components rolled into this line item.
        - `description` string, required
        - `value` integer, required
        - `tax` TaxDetail: Describes which tax regime applies to a line item and how the amount was interpreted.
          - `code` 'GST' | 'VAT' | 'NONE': Tax identifier (GST by default).
          - `jurisdiction` string: Optional ISO-style jurisdiction for multi-region deployments.
          - `rateBps` integer: Tax rate expressed in basis points (e.g. 1000 = 10%).
          - `mode` 'inclusive' | 'exclusive' | 'exempt': Whether `value` already includes tax, requires tax to be applied, or is exempt.
          - `source` 'caller' | 'engine': Indicates whether the caller provided the tax metadata or the engine defaulted it.
          - `metadata` object: Optional structured metadata for downstream reporting.
        - `amounts` MonetaryBreakdown: Net/tax/gross representation of a monetary amount in cents.
          - `beforeTax` integer, required: Amount in cents before tax is applied.
          - `taxAmount` integer, required: Tax component in cents.
          - `afterTax` integer, required: Amount in cents after tax (this mirrors `value` in most responses).
          - `currency` string: ISO 4217 currency code. Defaults to `AUD`.
  - `totals` Totals, required: Aggregated cents-per-stage plus the final drive-away amount.
    - `dutiable` integer, required: Sum of `categories.dutiable`.
    - `onRoad` integer, required: Sum of `categories.onRoad`.
    - `additional` integer, required: Sum of `categories.additional`.
    - `driveAway` integer, required: dutiable + onRoad + additional.
    - `tax` PricingTaxTotals: Aggregated tax (GST/VAT) amounts per pricing stage.
      - `dutiable` integer, required: Sum of tax across `categories.dutiable`.
      - `onRoad` integer, required: Sum of tax across `categories.onRoad`.
      - `additional` integer, required: Sum of tax across `categories.additional`.
      - `overall` integer, required: dutiable + onRoad + additional tax.
  - `metadata` PricingResponseMetadata, required: Trace data for auditing and debugging.
    - `rulesVersion` string, required: Semantic identifier for the active rule set.
    - `appliedRules` string[], required: Ordered list of rule IDs executed during the quote.
    - `appliedConcessions` string[], required: Concession identifiers that affected this quote.
    - `warnings` string[], required: Non-fatal warnings surfaced during the calculation.
    - `taxEffectiveDate` string, date, required: Date actually used to select tax rules.
    - `taxFinancialYear` string, required: Financial year derived from the effective tax date.
    - `taxDatePolicy` 'legacy' | 'error' | 'prior_year', required: Controls how the engine responds when `registration.startDate` is outside the supported tax rule range.
    - `taxFallbackApplied` boolean, required: True when prior-year fallback was applied.

## Other responses

- `400`: Invalid input
- `401`: Authentication required
- `403`: Showroom access denied
- `500`: Server error

---

[API](https://skmtc.dev/vyro/apis/pricing-api.md) - [All operations](https://skmtc.dev/vyro/apis/pricing-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vyro/apis/pricing-api/revisions/cbb70392151c?raw)
