Log inTalk to us

Quote a session's cost on a connector's tariff

post/v1/tenants/{tenant_id}/stations/{station_id}/evses/{evse_number}/connectors/{connector_id}/quote
Requires an API key

Read-only: quotes the session profile exactly as POST /tariffs/{tariff_id}/quote does, on the tariff that applies to this connector now by the pricing order (its own, its location's default or the project's default; an archived assigned tariff can be quoted). The response's tariff_id says which. The tax of the station's own location applies (tax, and total_minor tax included), as a bill on this connector freezes it; the body takes no location_id (422 if sent). 409 connector_tariff_missing when no tariff applies. Nothing is stored and no charger is contacted. Needs stations:read and billing:read.

Path parameters

  • tenant_idintegerRequired
  • station_idintegerRequired
  • connector_idintegerRequired
  • evse_numberintegerRequired
    The EVSE's number on the station (evse_number in station reads).
    Minimum 1 · Maximum 99

Request body

  • sessionSessionProfileRequired
    A charging session to price. Energy is cumulative kWh: energy_kwh spreads evenly over duration_minutes, or energy_curve gives it at points (linear between them).
    Child attributes
    • start_atstringRequired
      When charging starts, ISO 8601 with an offset.
    • time_zonestring | null
      IANA time zone for the tariff's local-time restrictions. Default: the tariff's time_zone, else start_at's offset.
      Up to 64 characters
    • duration_minutesnumber
      Charging time in minutes (TIME is billed on it).
      Default 0 · Minimum 0 · Maximum 10080
    • energy_kwhnumber | null
      Total energy, kWh. Omit when energy_curve is given.
      Minimum 0 · Maximum 100000
    • energy_curvearray of CurvePoint | null
      Cumulative kWh at minutes into charging, ascending.
      Child attributes
      • minutenumberRequired
        Minutes after charging started.
        Minimum 0 · Maximum 10080
      • kwhnumberRequired
        Cumulative energy charged by then, kWh.
        Minimum 0 · Maximum 100000
    • idle_minutesnumber
      Minutes connected after charging ends (PARKING_TIME is billed on it).
      Default 0 · Minimum 0 · Maximum 10080
    • power_kwnumber | null
      Constant charging power for power restrictions, kW. Default: the energy curve's slope.
      Minimum 0 · Maximum 10000
    • current_anumber | null
      Charging current for current restrictions, A. Unknown matches no current-restricted element.
      Minimum 0 · Maximum 10000
    • reservation_minutesnumber
      Minutes reserved before charging starts (reservation elements price them).
      Default 0 · Minimum 0 · Maximum 1440
    • reservation_expiredboolean
      The reservation expired unused: no charging; RESERVATION_EXPIRES elements apply.
      Default false
    • groupstring | null
      Member or RFID group, for group discounts.
      Up to 128 characters
    • id_tokenstring | null
      RFID or app token, for group discounts that list tokens. Not stored.
      Up to 64 characters
    • merchant_validationstring | null
      A merchant validation code, for the merchant validation rule.
      Pattern ^[A-Za-z0-9][A-Za-z0-9_.:-]{0,63}$
    • prepaid_balance_minorinteger | null
      A prepaid balance, for the prepaid_limit report.
      Minimum 0 · Maximum 100000000

Returns · 200

  • tariff_idinteger | null
    The stored tariff quoted; null for a simulation.
  • currencystringRequired
  • pricing_versionenumRequired
    energy-v1: a simple tariff (kWh × rate, unchanged); elements-v1: elements and rules.
    One of energy-v1, elements-v1
  • linesarray of QuoteLineRequired
    Child attributes
    • typeenumRequired
      One of ENERGY, TIME, PARKING_TIME, FLAT
    • elementintegerRequired
      Index of the element that priced this line.
    • reservationbooleanRequired
      The line prices a reservation.
    • quantitystringRequired
      Decimal quantity in unit (rounded to 6 places for display).
    • unitenumRequired
      One of kWh, h, session
    • price_minorstringRequired
      Minor units per unit (decimal string).
    • exact_minorstringRequired
      Unrounded amount, minor units (decimal string, 6 places).
    • amount_minorintegerRequired
      Amount rounded half up to integer minor units, for display. total_minor rounds the exact sum once, so line amounts may differ from it by rounding.
  • subtotal_minorintegerRequired
    The elements' exact sum rounded half up, before rules.
  • exact_subtotal_minorstringRequired
  • adjustmentsarray of QuoteAdjustmentRequired
    Child attributes
    • kindenumRequired
      One of group_discount, merchant_validation, max_session_cost
    • rulestringRequired
      The group discount id, the validation code, or max_session_cost_minor.
    • exact_minorstringRequired
    • amount_minorintegerRequired
      Negative: a reduction.
  • total_minorintegerRequired
    Integer minor units: the exact subtotal after rules, rounded half up once, plus the location's tax lines when they apply (tax). Bills finalize with this same calculation.
  • prepaidobject | nullRequired
    Child attributes
    • balance_minorintegerRequired
    • covered_minorintegerRequired
    • shortfall_minorintegerRequired
    • limit_reachedbooleanRequired
      The session's total reaches the balance: stop or top up.
  • tariff_alt_textarray of AltText
    The tariff's driver-facing descriptions, for receipts.
    Child attributes
    • languagestringRequired
      ISO 639-1 language code.
      Pattern ^[a-z]{2}$
    • textstringRequired
      Driver-facing description of the tariff.
      1–512 characters
  • idle_free_secondsinteger | null
    With idle_grace_minutes: the idle seconds that were free; absent otherwise.
  • activityobject | null
    Bills on complex tariffs only: the charging and idle time the bill was priced over. Null on quotes, simulations and simple tariffs (which price kWh only).
    Child attributes
    • methodenumRequired
      ocpp201_charging_state: the charger's OCPP 2.x chargingState. ocpp16_status: OCPP 1.6 connector statuses (Charging; SuspendedEV, SuspendedEVSE and Finishing are idle). ocpp16_status_and_power: those statuses, plus idle wherever the meter shows almost no power for a while. meter_power: the meter alone. none: not enough data; the whole transaction is charging time, as before idle detection (unless it drew less than 1 Wh: see reason no_energy).
      One of ocpp201_charging_state, ocpp16_status, ocpp16_status_and_power, meter_power, none
    • detectedbooleanRequired
      False: method none, and reason says why. A session with less than 1 Wh is all waiting (reason no_energy), and detected is true then, also with method none.
    • reasonstring | null
      Why nothing was detected (for example no_state_or_meter_data); no_energy: a session with less than 1 Wh is all waiting, billing neither TIME nor PARKING_TIME nor energy; else null.
    • charging_secondsintegerRequired
    • idle_secondsintegerRequired
    • waiting_secondsinteger
      Plugged in before the first charging: neither TIME nor PARKING_TIME.
      Default 0
    • intervalsarray of ActivityIntervalRequired
      The transaction from start to end, oldest first.
      Child attributes
      • startstringRequired
        UTC, ISO 8601.
      • endstringRequired
        UTC, ISO 8601.
      • stateenumRequired
        waiting: plugged in before the first charging, priced as neither TIME nor PARKING_TIME.
        One of charging, idle, waiting
  • taxobject | null
    With a location's tax lines (location_id on quotes, the station's location on bills): the tax lines, net and total. Absent without tax.
    Child attributes
    • price_modeenumRequired
      One of tax_exclusive, tax_inclusive
    • linesarray of QuoteTaxLineRequired
      Child attributes
      • namestringRequired
      • typeenumRequired
        One of percent, per_kwh
      • ratestringRequired
      • compoundbooleanRequired
      • excluded_componentsarray of enumRequired
      • registration_numberstring | nullRequired
        Printed on receipts.
      • base_minorstring | nullRequired
        percent lines: the exact amount taxed, minor units (decimal string, 6 places); null for per_kwh.
      • quantity_kwhstring | nullRequired
        per_kwh lines: the kWh taxed; null for percent.
      • exact_minorstringRequired
        Unrounded tax, minor units (decimal string, 6 places).
      • amount_minorintegerRequired
        The line's tax, rounded half up once.
    • net_minorintegerRequired
      The price before tax: total_minor minus tax_minor.
    • tax_minorintegerRequired
      The sum of the lines' amount_minor.
    • total_minorintegerRequired
      What the driver pays, tax included; the quote's and bill's total_minor.
POST /v1/tenants/{tenant_id}/stations/{station_id}/evses/{evse_number}/connectors/{connector_id}/quote
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/tenants/1042/stations/1/evses/1/connectors/1/quote" \
  -H "Authorization: Bearer $IVORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "session": {
    "start_at": "2026-10-15T17:30:00-07:00"
  }
}'
Response · 200JSON
{
  "tariff_id": 42,
  "currency": "usd",
  "pricing_version": "energy-v1",
  "lines": [
    {
      "type": "ENERGY",
      "element": 1,
      "reservation": false,
      "quantity": "string",
      "unit": "kWh",
      "price_minor": "string",
      "exact_minor": "string",
      "amount_minor": 1250
    }
  ],
  "subtotal_minor": 1250,
  "exact_subtotal_minor": "string",
  "adjustments": [
    {
      "kind": "group_discount",
      "rule": "string",
      "exact_minor": "string",
      "amount_minor": 1250
    }
  ],
  "total_minor": 1250,
  "prepaid": {
    "balance_minor": 1250,
    "covered_minor": 1250,
    "shortfall_minor": 1250,
    "limit_reached": false
  },
  "tariff_alt_text": [
    {
      "language": "string",
      "text": "string"
    }
  ],
  "idle_free_seconds": 1,
  "activity": {
    "method": "ocpp201_charging_state",
    "detected": false,
    "reason": "string",
    "charging_seconds": 1,
    "idle_seconds": 1,
    "waiting_seconds": 0,
    "intervals": [
      {
        "start": "string",
        "end": "string",
        "state": "charging"
      }
    ]
  },
  "tax": {
    "price_mode": "tax_exclusive",
    "lines": [
      {
        "name": "bay-01",
        "type": "percent",
        "rate": "string",
        "compound": false,
        "excluded_components": [
          "ENERGY"
        ],
        "registration_number": "string",
        "base_minor": "string",
        "quantity_kwh": "string",
        "exact_minor": "string",
        "amount_minor": 1250
      }
    ],
    "net_minor": 1250,
    "tax_minor": 1250,
    "total_minor": 1250
  }
}
Requires an approved production API keyProduction access starts with a request, a short meeting with Ivora and a card on file, after which Ivora staff grant your account access. How to request access
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.

POST is a write: you confirm the method, path and project before it is sent, with a generated Idempotency-Key.