Quote reference
POST /v1/quote
Section titled “POST /v1/quote”Calculates a drive-away price. Send JSON. All money is in cents (AUD).
Request body
Section titled “Request body”Top level
Section titled “Top level”| Field | Type | Required | Description |
|---|---|---|---|
pricingCode |
string | Yes | Jurisdiction: AU_NSW, AU_VIC, AU_QLD, AU_WA, AU_SA, AU_TAS, AU_ACT or AU_NT. This is the state the vehicle is registered in. |
showroomCode |
string | Yes | Your showroom code. Must be one your API client is bound to. |
purchaseDate |
date | Yes | Contract date, YYYY-MM-DD. Sets the financial year and is the supply date for the LCT two-year test. |
vehicle |
object | one of | A vehicle described by make/model/year. See Vehicle. |
vehicleGeneric |
object | one of | A vehicle described by body type, when you don’t have or don’t want to send make/model. See Vehicle. |
pricingInputs |
object | Yes | Your commercial inputs, split into dutiable, onRoad and additional. See Pricing inputs. |
registration |
object | Yes | Registration term, start date, postcode and type. See Registration. |
customer |
object | Yes | Buyer type and any concession. See Customer. |
taxDatePolicy |
object | recommended | What to do when registration.startDate is beyond the dates we have published rates for. Send { "outOfRange": "error" }. See Tax date policy. |
pricingInputDefaults |
object | Default tax metadata applied to every input line that doesn’t carry its own. |
Send exactly one of vehicle or vehicleGeneric. If you send both, vehicle is used and a warning is returned.
Vehicle
Section titled “Vehicle”vehicle requires make, model, year and fuelType. vehicleGeneric requires bodyType and fuelType. Every other field is optional and can be sent on either shape.
| Field | Type | Description |
|---|---|---|
make, model |
string | vehicle only. Case-insensitive. |
year |
integer | Model year. Required on vehicle, optional on vehicleGeneric. |
bodyType |
string | passenger, suv, ute, van, truck, cab_chassis, trailer, tractor. Required on vehicleGeneric. van means a goods van; send people movers as passenger. Victoria and SA tax utes and goods vans differently (see Used vehicles). |
fuelType |
string | BEV, PHEV, HYBRID or ICE. |
tareKg |
number | Tare mass in kg. Several states band registration by weight. See States & inputs. |
gvmKg |
number | Gross vehicle mass in kg. Vehicles over 4,500 kg are heavy vehicles for duty purposes (e.g. no Queensland $100,000+ surcharge). |
cylinders |
integer | Engine cylinders for ICE, HYBRID and PHEV (rotary: twice the rotors). Queensland duty and registration depend on it. |
condition |
string | new or used. See Used vehicles. |
firstRegistrationDate |
date | Date first registered in Australia. Used vehicles: proves the car is outside the LCT two-year window. |
importDate |
date | Date imported (entered for home consumption). Used vehicles: the LCT two-year clock. |
manufactureDate |
date | Build date. Used vehicles: can show the car is within the LCT window. |
lctPreviouslyPaid |
integer | LCT already paid on this car, in cents. Required for a used car within the LCT window above the threshold. |
co2GramsPerKm |
number | Combined CO2 emissions. Victoria’s “green car” duty rate applies at 120 g/km or less; BEVs and PHEVs qualify automatically. |
fuelConsumptionLPer100km |
number | Combined fuel consumption from the fuel label. LCT fuel-efficient threshold applies at 3.5 L/100km or less. |
seats |
integer | Seats including the driver. LCT: 10+ seats is not a car; used in the ute commercial-vehicle test. |
kerbMassKg |
number | Kerb (unladen) mass. With gvmKg, decides the LCT load tests for utes and heavy-load vehicles. |
isWheelchairModified |
boolean | Vehicle modified for wheelchair access (NSW disability concessions). |
Pricing inputs
Section titled “Pricing inputs”Each of dutiable (required), onRoad and additional is a list of lines:
| Field | Type | Required | Description |
|---|---|---|---|
description |
string | Yes | Your label. It is echoed back in the response. |
value |
integer | Yes | Amount in cents, GST-inclusive by default. Negative values are discounts. |
tag |
string | dealer_delivery marks a dealer delivery fee. States treat delivery differently for duty and LCT; tag it and we handle that. |
|
tax |
object | Override the tax treatment of this line: mode (inclusive, exclusive or exempt), rateBps (e.g. 1000 = 10%). |
Where each amount goes:
dutiable: the vehicle price, factory options, accessories fitted before delivery, dealer delivery (tagged), and discounts agreed before the contract. Stamp duty and LCT are calculated from this stage. Never send a trade-in here: it is payment, not a discount.onRoad: dealer-supplied extras you want shown with on-road costs (tinting, a dealer admin fee). Don’t send government charges here; the engine calculates those.additional: amounts applied after duty, which don’t change the dutiable value, such as a manufacturer cashback paid after sale.
For a new vehicle, most states charge duty on the manufacturer’s list price, so a negative dutiable discount does not lower the duty. For a used vehicle in QLD and WA it does (see Used vehicles).
Registration
Section titled “Registration”| Field | Type | Required | Description |
|---|---|---|---|
termMonths |
integer | Yes | 1, 3, 6 or 12. Supported terms vary by state; an unsupported term returns a warning. Queensland adds a short-term surcharge under 12 months. Ignored for a transfer. |
startDate |
date | Yes | Registration start (or transfer) date. Selects the statutory rates, so a quote dated after 1 July uses that financial year’s fees. |
postcode |
string | Garaging postcode. Required for accurate Victorian quotes (the TAC charge varies by postcode). | |
type |
string | new (default): register the vehicle for termMonths. transfer: the vehicle is already registered and its registration transfers to the buyer (QLD, WA and VIC). See Used vehicles. |
Customer
Section titled “Customer”| Field | Type | Required | Description |
|---|---|---|---|
customerType |
string | Yes | consumer or commercial. |
usageType |
string | Yes | consumer (private use) or commercial (business use). |
concession |
object | hasConcession (boolean) and type, a concession code from GET /v1/concessions. One concession per quote. |
Note: For no concession, omit concession entirely. "type": null is rejected.
Response
Section titled “Response”200 OK
| Field | Description |
|---|---|
currency |
Always AUD. |
pricingCode |
The jurisdiction priced. |
financialYear |
Financial year of purchaseDate, e.g. 2026-2027. |
categories.dutiable |
Your dutiable lines, echoed back. |
categories.onRoad |
Your on-road lines, then every statutory charge the engine added. |
categories.additional |
Your post-contract lines. |
totals |
dutiable, onRoad, additional, driveAway, and tax (GST per stage and overall). |
metadata.appliedRules |
The rules that ran, in order. |
metadata.appliedConcessions |
Concessions that changed the quote. |
metadata.warnings |
Non-fatal notes about assumptions and defaults. Log these. See Errors, warnings & changes. |
metadata.taxEffectiveDate |
The date actually used to select statutory rates. |
metadata.taxFinancialYear, taxDatePolicy, taxFallbackApplied |
How the tax date was resolved. |
Each line has:
| Field | Description |
|---|---|
description |
Display label. Statutory lines use consistent labels such as Stamp Duty, Registration Fee, CTP Fee, TAC Charge, Plates and Luxury Car Tax (LCT). |
value |
Amount in cents. |
ruleId |
The rule that produced the line, e.g. AU_QLD_STAMP_DUTY_FY27. Use this, not description, to identify a charge in code. |
components |
Optional breakdown, e.g. a registration fee’s sub-fees. |
tax, amounts |
GST treatment and the before-tax / tax / after-tax split. Government charges are GST-exempt. |
Example: new vehicle, NSW
Section titled “Example: new vehicle, NSW”A new BEV with dealer delivery, a window tint, and a manufacturer cashback paid after sale.
curl -s -X POST "https://pricing-api.vyro.com.au/v1/quote" \ -H "Authorization: Bearer your-access-token" \ -H 'Content-Type: application/json' \ -d '{ "pricingCode": "AU_NSW", "showroomCode": "your-showroom-code", "purchaseDate": "2026-10-01", "vehicle": { "make": "Hyundai", "model": "IONIQ 5", "year": 2026, "fuelType": "BEV", "tareKg": 1990 }, "pricingInputs": { "dutiable": [ { "description": "Vehicle price", "value": 6499000 }, { "description": "Dealer delivery", "value": 150000, "tag": "dealer_delivery" } ], "onRoad": [{ "description": "Window tint", "value": 49500 }], "additional": [{ "description": "Manufacturer cashback", "value": -200000 }] }, "registration": { "termMonths": 12, "startDate": "2026-10-01" }, "customer": { "customerType": "consumer", "usageType": "consumer" } }'200 OK (abridged: the per-line tax and amounts objects are omitted)
{ "currency": "AUD", "pricingCode": "AU_NSW", "financialYear": "2026-2027", "categories": { "dutiable": [ { "description": "Vehicle price", "value": 6499000, "ruleId": "AU_NSW_DUTIABLE_VALUE_FY27" }, { "description": "Delivery Fee", "value": 150000, "ruleId": "AU_NSW_DUTIABLE_VALUE_FY27" } ], "onRoad": [ { "description": "Window tint", "value": 49500, "ruleId": "AU_NSW_ON_ROAD_INPUTS_FY27" }, { "description": "Stamp Duty", "value": 242500, "ruleId": "AU_NSW_STAMP_DUTY_FY27" }, { "description": "Registration Fee", "value": 63400, "ruleId": "AU_NSW_REGISTRATION_FY27", "components": [ { "description": "MVT – lower taxed private light vehicle, 1,500 < tare ≤ 2,500 kg (12m)", "value": 55000 }, { "description": "Registration administration fee – all registrable light vehicles, 12-month term (12m)", "value": 8400 } ] }, { "description": "Standard general issue plates – new or replacement for car/light truck", "value": 5800, "ruleId": "AU_NSW_REGISTRATION_FY27" }, { "description": "NSW registration discount (2026-27, 12m)", "value": -10000, "ruleId": "AU_NSW_REGISTRATION_DISCOUNT_2026_27" }, { "description": "CTP Fee", "value": 53600, "ruleId": "AU_NSW_CTP_FY27" } ], "additional": [ { "description": "Manufacturer cashback", "value": -200000, "ruleId": "AU_NSW_POST_SALE_REBATES_FY27" } ] }, "totals": { "dutiable": 6649000, "onRoad": 404800, "additional": -200000, "driveAway": 6853800, "tax": { "dutiable": 604454, "onRoad": 4500, "additional": -18182, "overall": 590772 } }, "metadata": { "rulesVersion": "AU_NSW_FY26_v1", "appliedRules": [ "AU_NSW_DUTIABLE_VALUE_FY27", "AU_NSW_ON_ROAD_INPUTS_FY27", "AU_NSW_STAMP_DUTY_FY27", "AU_NSW_REGISTRATION_FY27", "AU_NSW_REGISTRATION_DISCOUNT_2026_27", "AU_NSW_CTP_FY27", "AU_NSW_POST_SALE_REBATES_FY27" ], "appliedConcessions": [], "warnings": [], "taxEffectiveDate": "2026-10-01", "taxFinancialYear": "2026-2027", "taxDatePolicy": "legacy", "taxFallbackApplied": false }}Reading it: duty is charged on the $66,490 dutiable value (price plus delivery). The cashback in additional lowers the drive-away to $68,538.00 without lowering the duty.
- Store the whole response with the deal.
ruleIds andappliedRuleslet you, and us, explain any figure later. - Re-quote on the contract date. Statutory rates change on fixed dates, most often 1 July. A quote is only valid for the
registration.startDateit was priced for. - Display
description, reason onruleId. Labels are made for customers and may be refined over time; rule IDs are stable within a financial year.