Skip to content

Calculate Government Charges

POST
/api/v1/government_charges/calculate
curl --request POST \
--url https://dashboard.dealerstudio.com.au/api/v1/government_charges/calculate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "model_variant_id": 123, "vehicle_use": "private", "interior_colour_id": 456, "exterior_colour_id": 789, "state": "ACT", "vehicle_condition": "new", "postcode": "3000", "accessories": [ 101, 102 ], "market": "AU", "calculation_date": "01/07/2025", "dealership_id": 1, "website_id": 1, "location_id": 1, "finance_option": "Finance", "with_finance_estimators": true, "driveaway_offer_id": 42, "year": 2025 }'

Calculates government charges (registration, CTP, stamp duty, etc.) for a vehicle based on its attributes and jurisdiction. This endpoint is intended for external API consumers and requires API key authentication with the calculate:government_charge permission. Pricing (base_price and dealer_delivery_fee) is automatically calculated from the model variant regional list price and selected colours, unless a matching DriveawayOffer supplies a promotional list price for the state. Optional accessories (IDs linked to the model variant) are summed inc GST into the dutiable value. Vehicle attributes are automatically extracted from the model variant.

Media typeapplication/json
object
model_variant_id
required

Required. ID of the model variant. Vehicle attributes (fuel_kind, seats, year, tare_weight, engine_size_litres, body_type, vehicle_category, etc.) are automatically extracted from the model variant. Base price is calculated from model_variant_prices.list_price (resolved by market) + exterior_colour.price + interior_colour.price. Dealer delivery fee is retrieved from model_variant.recommended_dealer_delivery_fee.

integer

Example

123
vehicle_use
required

Required. Vehicle use type

string
Allowed values: private commercial

Example

private
interior_colour_id
required

Required. ID of the interior colour. The colour price is added to the base price calculation.

integer

Example

456
exterior_colour_id
required

Required. ID of the exterior colour. The colour price is added to the base price calculation.

integer

Example

789
state

Australian state or territory, or NZ for New Zealand national charges. Omit when market is NZ or dealership_id is a New Zealand dealership (defaults to NZ).

string
Allowed values: ACT NSW NT QLD SA TAS VIC WA NZ

Example

NSW
vehicle_condition

Optional. Vehicle condition. If not specified, defaults to “new”

string
Allowed values: new demo used

Example

new
postcode

Optional. Postcode for jurisdiction-specific calculations (e.g., VIC CTP zones)

string

Example

3000
accessories

Optional. Accessory IDs linked to the model variant (accessory_model_variants). Prices inc GST are summed for charge calculations.

Array<integer>

Example

[
101,
102
]
market

Optional. Market used to resolve model_variant_prices.list_price. Defaults to AU when not provided (or from dealership country when dealership_id is supplied). Other values return 422 with error “market must be AU or NZ”.

string
Allowed values: AU NZ

Example

AU
calculation_date

Optional. Date used to select charge definitions active on that date (effective_from / effective_to). Accepts DD/MM/YYYY (e.g. 01/07/2025) or ISO 8601 YYYY-MM-DD. Defaults to max(Brisbane today, 1 July 2026) when omitted. Use to preview future or historical rule changes, e.g. LCT thresholds from 1 July 2025.

string

Example

01/07/2025
dealership_id

Optional. Dealership ID for pricing market resolution and stock NVIC/redbook lookup during charge calculation.

integer

Example

1
website_id

Required when finance_option is supplied. Dealer Studio website ID used to build finance or novated lease estimator URLs. Dealership is taken from the website.

integer

Example

1
location_id

Optional. Location ID for Allied introducer code resolution when finance_option is Finance.

integer

Example

1
finance_option

Optional. When supplied (and with_finance_estimators is not true), the response includes finance_estimator with finance_option and estimator_url for iframe embed. Requires website_id on a Denza website (dealership is taken from the website). Ignored when with_finance_estimators is true.

string
Allowed values: Finance Novated Lease

Example

Finance
with_finance_estimators

Optional. When true on a Denza website, the response includes finance_estimators: an array with both Finance and Novated Lease entries (each finance_option + estimator_url, or estimator_url null + error when that option fails). Prefer this over finance_option once websites are updated. Non-Denza websites omit estimator fields.

boolean

Example

true
driveaway_offer_id

Optional. Omit to auto-apply the most specific current DriveawayOffer compatible with the variant, colours, year, vehicle_use, and state. Send a blank/null value to use catalogue list price. Send an id to pin that offer (422 if it is missing, expired, incompatible, or has no promotional list for the state).

integer
nullable

Example

42
year

Optional. Model year used when matching year-scoped driveaway offers. Defaults to the model variant year.

integer

Example

2025

Government charges calculated with model variant and colours

Media typeapplication/json
object
results
required
Array<object>
object
charge_definition_id
required
integer
charge_definition_label
required
string
charge_definition_code
required
string
charge_definition_jurisdiction
required
string
rule_id
required
integer
rule_notes
string
nullable
amount_cents
required
integer
amount
required
number format: float
calculation_method
required
string
Allowed values: static tiered formula external_api
base_price
required

Base price (EGC) in dollars, calculated from model_variant_prices.list_price (resolved by market) + exterior_colour.price + interior_colour.price

number format: float
dealer_delivery_fee
required

Dealer delivery fee in dollars, retrieved from model_variant.recommended_dealer_delivery_fee

number format: float
accessories_inc_gst
required

Sum of selected accessories inc GST in dollars (0 when none supplied)

number format: float
driveaway_offer

The driveaway offer applied to this calculation, or null when none matched or the caller skipped offers. Live driveaway is still the sum of base_price, colours, dealer delivery, accessories, and government charges — do not replace it with target_driveaway_price.

object
id
integer
name
string
target_driveaway_price
number format: float
vehicle_use
string
list_price_for_state
number format: float
dealer_delivery_fee
number format: float
nullable
finance_estimator

Present when finance_option is supplied. Use estimator_url as the iframe src.

object
finance_option
required
string
Allowed values: Finance Novated Lease
estimator_url
required

Ready-to-embed iframe URL for the selected finance option

string format: uri
finance_estimators

Present when with_finance_estimators is true on a Denza website. One entry per option (Finance then Novated Lease).

Array<object>
nullable
object
finance_option
required
string
Allowed values: Finance Novated Lease
estimator_url
string format: uri
nullable
error
string
nullable

Example

{
"results": [
{
"charge_definition_id": 1,
"charge_definition_label": "NSW Vehicle Registration",
"charge_definition_code": "registration",
"charge_definition_jurisdiction": "NSW",
"rule_id": 1,
"rule_notes": "Standard registration fee",
"amount_cents": 10000,
"amount": 100,
"calculation_method": "static"
}
],
"base_price": 72995,
"dealer_delivery_fee": 1995,
"accessories_inc_gst": 0,
"driveaway_offer": {
"id": 42,
"name": "NSW launch driveaway",
"target_driveaway_price": 74990,
"vehicle_use": "private",
"list_price_for_state": 61250,
"dealer_delivery_fee": 1500
},
"finance_estimator": {
"finance_option": "Finance"
},
"finance_estimators": [
{
"finance_option": "Finance"
}
]
}

Unauthorized - API key lacks required permission

Media typeapplication/json
object
error
required
string

Example

{
"error": "Invalid API key"
}

Missing required parameter - state

Media typeapplication/json
object
error
required
string

Example

{
"error": "state is required"
}