Archive a tariff

delete/v1/tenants/{tenant_id}/tariffs/{tariff_id}
Requires an API key

Synchronous. The tariff keeps its ID and price for the bills that snapshot it, leaves tariff lists (include_archived=true lists it), takes no more edits and starts no new bill or display (409 tariff_archived). While a station's connector or a charger display uses it, or it is the OCPP bench tariff, it returns 409 tariff_in_use with the connectors and displays in details. Supply replacement_tariff_id, an active tariff in this tenant, to move those connectors and displays to it first. Records a tariff.archived event with the actor. The archive is recorded only in this API: the core keeps the row, and the operator console and Host neither know nor enforce it. Replays with the same Idempotency-Key return the same result.

Path parameters

  • tenant_idintegerRequired
  • tariff_idintegerRequired

Query parameters

  • replacement_tariff_idinteger | null
    Active tariff that connectors and displays using this one move to.
    Greater than 0

Headers

  • idempotency-keystringRequired

Returns · 200

  • idintegerRequired
  • tenant_idintegerRequired
  • currencystringRequired
  • rate_minor_per_kwhinteger | numberRequired
    Integer minor units per kWh. Tariffs created elsewhere with sub-cent rates return a decimal number.
  • authorization_minorinteger | numberRequired
  • rate_minor_per_minuteinteger | number | null
    Minor units per minute, or null. The simple fields are kWh-only: a simple tariff bills rate_minor_per_kwh × kWh and no time or session fee, so only 0 is accepted (and stored as 0); a non-zero value returns 422. Price charging time, idle time or a session fee with elements (TIME, PARKING_TIME, FLAT). Tariffs created elsewhere may still carry one, which is returned unchanged and not billed.
  • session_fee_minorinteger | number | null
    Minor units per session, or null. The simple fields are kWh-only: a simple tariff bills rate_minor_per_kwh × kWh and no time or session fee, so only 0 is accepted (and stored as 0); a non-zero value returns 422. Price charging time, idle time or a session fee with elements (TIME, PARKING_TIME, FLAT). Tariffs created elsewhere may still carry one, which is returned unchanged and not billed.
  • archivedboolean
    Default true
  • archived_atstring | null
  • external_referencestring | null
  • is_complexboolean
    Billing differs from rate_minor_per_kwh × kWh: the tariff has restricted or several elements, time, idle or session prices, a step size, or billing rules. rate_minor_per_kwh is then its base rate only.
    Default false
  • pricing_summarystring | null
    Driver-facing description: the English tariff_alt_text.
  • elementsarray of TariffElement | null
    API version 2026-10-15 and later: the OCPI 2.2.1-aligned blocks billing uses; a simple tariff shows its one ENERGY block.
    Child attributes
    • price_componentsarray of PriceComponentRequired
      Child attributes
      • typeenumRequired
        ENERGY: price per kWh. TIME: price per hour while charging. PARKING_TIME: price per hour idle (connected, not charging). FLAT: a fee per session (per reservation in a reservation element). Bills tell charging from idle time from the charger's reports and charge TIME and PARKING_TIME accordingly; when a session has too little data, all of it is charging time.
        One of ENERGY, TIME, PARKING_TIME, FLAT
      • pricenumberRequired
        Major units excluding tax, at most 4 decimal places (OCPI): 0.35 is $0.35 per kWh.
        Minimum 0 · Maximum 10000
      • step_sizeinteger
        OCPI step size: ENERGY in Wh, TIME and PARKING_TIME in seconds; the dimension's total rounds up to a multiple of the last billed element's step. 1 bills the metered quantity exactly. Ignored for FLAT.
        Default 1 · Minimum 1 · Maximum 86400
    • restrictionsobject | null
      OCPI 2.2.1 TariffRestrictions, evaluated in the tariff's local time. All given restrictions must hold. min values are inclusive, max values and end times/dates exclusive; an end_time before its start_time wraps midnight.
      Child attributes
      • start_timestring | null
        Local time of day (HH:MM) from which the element applies.
        Pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
      • end_timestring | null
        Local time of day (HH:MM) until which the element applies (exclusive).
        Pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
      • start_datestring | null
        Local date (YYYY-MM-DD) from which the element applies.
        Pattern ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$
      • end_datestring | null
        Local date (YYYY-MM-DD) until which the element applies (exclusive).
        Pattern ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$
      • min_kwhnumber | null
        Energy already charged in the session, kWh (inclusive).
        Minimum 0 · Maximum 100000
      • max_kwhnumber | null
        Energy already charged in the session, kWh (exclusive).
        Minimum 0 · Maximum 100000
      • min_currentnumber | null
        Charging current, A (inclusive). An element restricting current never applies when the current is unknown.
        Minimum 0 · Maximum 10000
      • max_currentnumber | null
        Charging current, A (exclusive).
        Minimum 0 · Maximum 10000
      • min_powernumber | null
        Charging power, kW (inclusive). Unknown power matches no power-restricted element.
        Minimum 0 · Maximum 10000
      • max_powernumber | null
        Charging power, kW (exclusive).
        Minimum 0 · Maximum 10000
      • min_durationinteger | null
        Session duration so far, seconds (inclusive).
        Minimum 0 · Maximum 604800
      • max_durationinteger | null
        Session duration so far, seconds (exclusive).
        Minimum 0 · Maximum 604800
      • day_of_weekarray of enum | null
        Local days on which the element applies.
      • reservationenum | null
        Prices a reservation (TIME: reserved time, FLAT: reservation fee) instead of charging; RESERVATION_EXPIRES only when the reservation expires unused.
        One of RESERVATION, RESERVATION_EXPIRES
  • tariff_alt_textarray of AltText | null
    API version 2026-10-15 and later: the driver-facing descriptions, supplied or generated.
    Child attributes
    • languagestringRequired
      ISO 639-1 language code.
      Pattern ^[a-z]{2}$
    • textstringRequired
      Driver-facing description of the tariff.
      1–512 characters
  • rulesobject | null
    API version 2026-10-15 and later: the Ivora billing rules, {} without any.
    Child attributes
    • group_discountsarray of GroupDiscount
      Member/RFID group discounts: the largest matching one applies; they never stack.
      Child attributes
      • idstringRequired
        Your name for this discount; shown on quote and bill adjustments.
        Pattern ^[A-Za-z0-9][A-Za-z0-9_.:-]{0,63}$
      • groupsarray of string
        Member or RFID groups (the session's group) the discount applies to.
      • id_tokensarray of string
        RFID or app tokens (the session's id_token) the discount applies to.
      • percent_offintegerRequired
        Minimum 1 · Maximum 100
    • merchant_validationobject | null
      A discount when the session carries a merchant validation code.
      Child attributes
      • percent_offinteger | null
        Minimum 1 · Maximum 100
      • amount_off_minorinteger | null
        Integer minor units off, never below 0.
        Minimum 1 · Maximum 10000000
      • codesarray of string
        Accepted validation codes; empty accepts any code the session carries.
    • max_session_cost_minorinteger | null
      Cap on a session's total, integer minor units.
      Minimum 1 · Maximum 100000000
    • prepaid_limitboolean
      Report, on quotes for sessions with prepaid_balance_minor, how much the balance covers and whether the session reaches it. It never changes the total; your application stops or tops up.
      Default false
  • time_zonestring | null
    API version 2026-10-15 and later: the restrictions' IANA time zone, or null.
  • replacement_tariff_idinteger | nullRequired
    The tariff the connectors and displays below now use, when one was supplied.
  • reassigned_connectorsarray of integerRequired
    Connector resource IDs moved to replacement_tariff_id.
  • reassigned_displaysarray of objectRequired
    Displays ({station_id, evse_number}) whose tariff_id moved to replacement_tariff_id.
DELETE /v1/tenants/{tenant_id}/tariffs/{tariff_id}
curl --fail-with-body -X DELETE "https://api.ivoracharge.com/v1/tenants/1042/tariffs/42" \
  -H "Authorization: Bearer $IVORA_API_KEY" \
  -H "Idempotency-Key: order-2026-09-30-0001"
Response · 200
{
  "id": 1,
  "tenant_id": 1042,
  "currency": "usd",
  "rate_minor_per_kwh": 1,
  "authorization_minor": 1250,
  "rate_minor_per_minute": 1,
  "session_fee_minor": 1250,
  "archived": true,
  "archived_at": "2026-09-30T17:00:00Z",
  "external_reference": "property:1001",
  "is_complex": false,
  "pricing_summary": "string",
  "elements": [
    {
      "price_components": [
        {
          "type": "ENERGY",
          "price": 0,
          "step_size": 1
        }
      ],
      "restrictions": {
        "start_time": "16:00",
        "end_time": "21:00",
        "start_date": "string",
        "end_date": "string",
        "min_kwh": 0,
        "max_kwh": 0,
        "min_current": 0,
        "max_current": 0,
        "min_power": 0,
        "max_power": 0,
        "min_duration": 0,
        "max_duration": 0,
        "day_of_week": [
          "MONDAY"
        ],
        "reservation": "RESERVATION"
      }
    }
  ],
  "tariff_alt_text": [
    {
      "language": "string",
      "text": "string"
    }
  ],
  "rules": {
    "group_discounts": [
      {
        "id": "id_0123456789abcdef",
        "groups": [
          "string"
        ],
        "id_tokens": [
          "string"
        ],
        "percent_off": 1
      }
    ],
    "merchant_validation": {
      "percent_off": 1,
      "amount_off_minor": 1250,
      "codes": [
        "string"
      ]
    },
    "max_session_cost_minor": 1250,
    "prepaid_limit": false
  },
  "time_zone": "America/Los_Angeles",
  "replacement_tariff_id": 1,
  "reassigned_connectors": [
    1
  ],
  "reassigned_displays": [
    {}
  ]
}
Try it is not available here yetRequests from this page are off until the production API at https://api.ivoracharge.com is public. Use the code samples from your application server; Ivora grants production access. Keys are created in Developer tools.