Log inTalk to us

Decommission a station

post/v1/tenants/{tenant_id}/stations/{station_id}/decommission
Requires an API key

Flags a charger the owner dropped for good. Monitoring, alerts, charger events and fleet counts skip it, so its being offline or refused is expected, and station reads report decommissioned true. It takes no new sessions: the start command, bill creation, bill and charging-session starts and checkout answer 409 station_decommissioned; a running session finishes normally and can still be stopped. Its history, sessions and bills stay, and nothing is sent to the charger. It is not a delete (DELETE the station for that). name must be the station's connection name (409 station_name_mismatch, details.name); reason is kept with the flag. Emits station.decommissioned. Needs stations:admin (team owners and admins, Ivora staff, and API keys created with it). Synchronous and idempotent: a repeat changes nothing and answers changed false, and only a change emits a webhook. Audit-logged with the caller. Ivora staff can set and clear the same flag; the station's tenant then receives the same events. Errors: 404 station_not_found, 409 station_name_mismatch. See Errors and statuses.

Path parameters

  • tenant_idintegerRequired
  • station_idintegerRequired

Request body

  • namestringRequired
    The station's OCPP connection name (name in station reads), as a confirmation; refused with 409 station_name_mismatch when it is another one (details.name), so a wrong station ID never decommissions another charger.
    1–100 characters
  • reasonstringRequired
    Why, for the record: kept with the flag, in the audit log and in station.decommissioned.
    3–500 characters

Returns · 200

  • station_idintegerRequired
  • namestringRequired
    The station's OCPP connection name.
  • decommissionedbooleanRequired
    Whether the station is decommissioned after this request.
  • reasonstring | nullRequired
    The recorded reason; null once recommissioned.
  • decommissioned_bystring | nullRequired
    Who decommissioned it (key:<id>, user:<id> or app:<id>); null once recommissioned.
  • decommissioned_atstring | nullRequired
    When; null once recommissioned.
  • changedbooleanRequired
    false when the request changed nothing: the station was already decommissioned (the first record is kept) or, on DELETE, was not. No webhook is sent then.
POST /v1/tenants/{tenant_id}/stations/{station_id}/decommission
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/tenants/1042/stations/1/decommission" \
  -H "Authorization: Bearer $IVORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "bay-01",
  "reason": "string"
}'
Response · 200JSON
{
  "station_id": 1,
  "name": "bay-01",
  "decommissioned": false,
  "reason": "string",
  "decommissioned_by": "string",
  "decommissioned_at": "2026-09-30T17:00:00Z",
  "changed": false
}
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.