Set a location's tax lines
Replaces the location's tax configuration: lines (percent, or per_kwh in minor units of the tariff's currency) applied in order, with price_mode tax_exclusive (tariff prices exclude tax; the lines are added) or tax_inclusive (tariff prices include them). Or preset (GET /v1/tax-presets) with confirm_preset true, as an editable starting point. lines [] removes the tax. Ivora computes and prints the lines you configure; you are the seller and are responsible for their legal correctness and for filing the tax. A bill freezes its station's location tax when it is created: a change applies to bills created afterwards, never to an open or final one. Needs stations:admin (team owners and admins, Ivora staff, and API keys created with it). Synchronous; replays with the same Idempotency-Key return the current configuration. Audit-logged with the caller. Errors: 404 location_not_found, 422 tax_invalid, 422 tax_preset_unconfirmed, 422 tax_preset_unknown. See Errors and statuses.
Path parameters
- tenant_idintegerRequired
- location_idintegerRequired
Headers
- idempotency-keystringRequired
Request body
- price_modeenum | nulltax_exclusive (the US norm): tariff prices exclude tax and the lines are added to them. tax_inclusive: tariff prices include every line, and the lines are taken out of the price the driver pays. Default tax_exclusive, or the preset's.One of
tax_exclusive,tax_inclusive - linesarray of TaxLineInput | nullThe tax lines, applied in order. [] removes every line: the location has no tax.
Child attributes
- namestringRequiredPrinted on receipts: GST, HST, PST, QST, state sales tax, county, city, EV excise.1–40 characters
- typeenumRequiredpercent: rate is a percentage of the components it taxes. per_kwh: rate is minor units of the bill's currency per kWh delivered (2.6 is 2.6 cents per kWh in USD).One of
percent,per_kwh - ratenumberRequiredAt most 4 decimal places (9.975 for QST). percent: 0 to 100. per_kwh: 0 to 1000 minor units per kWh.Minimum 0 · Maximum 1000
- registration_numberstring | nullYour tax registration number for this tax, printed on receipts.Up to 64 characters
- orderinteger | nullPosition among the lines, ascending; lines without one keep their place after those with one.Minimum 1 · Maximum 100
- compoundbooleanpercent lines: the base includes the earlier lines' tax. Never on the first line or a per_kwh line.Default
false - excluded_componentsarray of enumpercent lines: tariff components this line does not tax (for example PARKING_TIME). Empty: all of them.
- presetstring | nullA preset from GET /v1/tax-presets as the configuration, instead of lines. Ivora does not guarantee a preset's legal correctness: check it applies to you.Pattern
^[A-Za-z]{2}-[A-Za-z]{2}$ - confirm_presetbooleanWith preset: true confirms that you checked the preset applies to this location.Default
false
Returns · 200
- location_idintegerRequired
- configuredbooleanRequiredfalse: no tax lines; bills at the location carry no tax.
- price_modeenumRequiredtax_exclusive (the US norm): tariff prices exclude tax and the lines are added to them. tax_inclusive: tariff prices include every line, and the lines are taken out of the price the driver pays.One of
tax_exclusive,tax_inclusive - linesarray of TaxLineRecordRequired
Child attributes
- orderintegerRequired1 for the first line applied.
- namestringRequired
- typeenumRequiredOne of
percent,per_kwh - ratestringRequiredDecimal text: a percentage, or minor units per kWh.
- compoundbooleanRequired
- excluded_componentsarray of enumRequired
- registration_numberstring | nullRequired
- presetstring | nullRequiredThe preset this configuration was confirmed from, or null.
- updated_bystring | nullRequired
- updated_atstring | nullRequired
curl --fail-with-body -X PUT "https://api.ivoracharge.com/v1/tenants/1042/locations/7/tax" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Idempotency-Key: order-2026-09-30-0001" \
-H "Content-Type: application/json" \
-d '{
"preset": "CA-AB"
}'{
"location_id": 7,
"configured": false,
"price_mode": "tax_exclusive",
"lines": [
{
"order": 1,
"name": "bay-01",
"type": "percent",
"rate": "string",
"compound": false,
"excluded_components": [
"ENERGY"
],
"registration_number": "string"
}
],
"preset": "string",
"updated_by": "string",
"updated_at": "2026-09-30T17:00:00Z"
}Try itproduction · api.ivoracharge.com
Paste a production api key (iv_live_…). Create keys in Developer tools. The key stays in this page's memory, is sent only to https://api.ivoracharge.com and clears when you reload. Test keys are refused.
PUT is a write: you confirm the method, path and project before it is sent, with a generated Idempotency-Key.



