Set the QR a charger screen shows

put/v1/tenants/{tenant_id}/stations/{station_id}/evses/{evse_number}/display
Requires an API key

Synchronous desired state: returns immediately with delivery.state pending and never waits for the charger. Ivora pushes it on the next sweep, even while an earlier failed push is backing off, and again after reboots and price changes; applied means the charging core accepted the push. The price comes from tariff_id when you set it (a tariff in this tenant, usually the one your application bills with; 404 tariff_not_found otherwise), else from the EVSE's connector tariff; without either, adapters that always carry a price (RCD/Renova) show 0. The same body keeps its revision; any change is a new revision. unsupported means no adapter drives this charger's screen, so use a printed QR. Replays with the same Idempotency-Key return the original result.

Path parameters

  • tenant_idintegerRequired
  • station_idintegerRequired
  • evse_numberintegerRequired
    OCPP EVSE number on the station, as in connectors[].evse_number
    Greater than 0 · Maximum 99

Headers

  • idempotency-keystringRequired

Request body

  • qrstringRequired
    https URL the screen encodes as a QR, usually your checkout page for this EVSE. No customer data or secrets.
    1–500 characters
  • show_priceboolean
    Also show the price where the adapter supports it: the tariff_id tariff when set, else the EVSE's connector tariff.
    Default true
  • tariff_idinteger | null
    A tariff in this tenant whose price the screen shows, usually the one your application bills with. Omit to use the EVSE's connector tariff.
    Greater than 0
  • visibilityenum
    idle shows the QR only while the connector is payable, on adapters that can clear; always keeps it up.
    One of idle, always · Default "idle"

Returns · 200

  • idstringRequired
    <station_id>-<evse_number>
  • tenant_idintegerRequired
  • station_idintegerRequired
  • evse_numberintegerRequired
  • qrstringRequired
  • show_pricebooleanRequired
  • visibilityenumRequired
    One of idle, always
  • tariff_idinteger | nullRequired
    Tariff the screen's price comes from; null uses the EVSE's connector tariff.
  • revisionintegerRequired
    Increments whenever qr, show_price, visibility or tariff_id changes.
  • adapterstring | nullRequired
    Display adapter template that last resolved for this charger, for example builtin-rcd.
  • clearbooleanRequired
    The adapter can take the QR off the screen.
  • deletedbooleanRequired
  • deliveryDisplayDeliveryRequired
    Child attributes
    • stateenumRequired
      applied: the charging core dispatched the latest push, which does not confirm what the screen shows (the generic OCPP 2.x adapters cannot tell whether a charger has a screen). unsupported: no adapter drives this charger's screen; use a printed QR.
      One of pending, applied, failed, unsupported
    • shownboolean | nullRequired
      Whether the last applied push sent the QR (false after a clear); null before the first push.
    • revisioninteger | nullRequired
      Desired revision the last successful push carried.
    • applied_atstring | nullRequired
    • last_attempt_atstring | nullRequired
    • last_errorstring | nullRequired
      Error code of the last failed push, for example dispatch_unconfirmed or template_render_failed.
  • updated_atstringRequired
PUT /v1/tenants/{tenant_id}/stations/{station_id}/evses/{evse_number}/display
curl --fail-with-body -X PUT "https://api.ivoracharge.com/v1/tenants/1042/stations/1/evses/1/display" \
  -H "Authorization: Bearer $IVORA_API_KEY" \
  -H "Idempotency-Key: order-2026-09-30-0001" \
  -H "Content-Type: application/json" \
  -d '{
  "qr": "https://payment.ivoracharge.com/checkout/station-01-1",
  "tariff_id": 42
}'
Response · 200
{
  "id": "id_0123456789abcdef",
  "tenant_id": 1042,
  "station_id": 1,
  "evse_number": 1,
  "qr": "string",
  "show_price": false,
  "visibility": "idle",
  "tariff_id": 42,
  "revision": 1,
  "adapter": "string",
  "clear": false,
  "deleted": false,
  "delivery": {
    "state": "pending",
    "shown": false,
    "revision": 1,
    "applied_at": "2026-09-30T17:00:00Z",
    "last_attempt_at": "2026-09-30T17:00:00Z",
    "last_error": "string"
  },
  "updated_at": "2026-09-30T17:00:00Z"
}
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.