Record an OCPP 1.6 shadow session's transaction IDs (charger proxy)
The project's charger proxy key (migration:proxy, made by Ivora administrators, bound to this project) or Ivora platform administrators; team roles and other keys are refused. The same record as the staff route PUT /v1/admin/stations/{station_id}/shadow/transactions/{control_transaction_id}: for one session on an OCPP 1.6 station of the project in shadow mode, the transactionId the controlling platform assigned (control_transaction_id) and the one Ivora's core assigned on the copy link, with the charger's meterStart, then again at StopTransaction with meterStop (registers in Wh, as the charger sent them). Idempotent by its key and copy ID; conflicts answer 409 shadow_mapping_conflict. Another project's station reads as unknown. A new or completed record is audit-logged (shadow.transaction_recorded). Errors: 403 restricted_key_refused, 404 station_not_found, 409 shadow_mapping_conflict, 409 shadow_mapping_not_needed, 409 station_not_shadow, 422. See Errors and statuses.
Path parameters
- tenant_idintegerRequiredGreater than 0
- station_idintegerRequiredGreater than 0
- control_transaction_idstringRequiredPattern
^-?[0-9]{1,10}$
Request body
- copy_transaction_idstringRequiredThe transactionId Ivora's core answered StartTransaction with on the copy link.Pattern
^-?[0-9]{1,10}$ - connector_idintegerRequiredThe OCPP 1.6 connectorId of the StartTransaction.Minimum 0 · Maximum 1000
- started_atstringRequiredThe StartTransaction timestamp (the charger's), ISO 8601.Up to 40 characters
- meter_start_whinteger | nullStartTransaction meterStart: the charger's energy register in Wh, as sent.Minimum 0
- control_statusstring | nullidTagInfo.status the controlling platform answered the StartTransaction with.Up to 40 characters
- copy_statusstring | nullidTagInfo.status Ivora's core answered it with on the copy link.Up to 40 characters
- stopped_atstring | nullThe StopTransaction timestamp, once the session stopped.Up to 40 characters
- meter_stop_whinteger | nullStopTransaction meterStop: the charger's energy register in Wh, as sent.Minimum 0
- stop_reasonstring | nullStopTransaction reason (Local when absent, per OCPP 1.6).Up to 40 characters
Returns · 200
- station_idintegerRequired
- tenant_idintegerRequired
- control_transaction_idstringRequiredThe transactionId the controlling platform assigned; the charger uses it in MeterValues and StopTransaction.
- copy_transaction_idstringRequiredThe transactionId Ivora's core assigned on the copy link: the proxy rewrites the charger's control ID to it on that link.
- connector_idintegerRequired
- started_atstringRequired
- meter_start_whinteger | nullRequired
- control_statusstring | nullRequired
- copy_statusstring | nullRequired
- stopped_atstring | nullRequired
- meter_stop_whinteger | nullRequired
- stop_reasonstring | nullRequired
- energy_whinteger | nullRequiredmeter_stop_wh - meter_start_wh: the charger's registers, Wh; null until both are known.
- recorded_bystringRequired
- created_atstringRequired
- updated_atstringRequired
curl --fail-with-body -X PUT "https://api.ivoracharge.com/v1/tenants/1042/stations/1/shadow/transactions/control_transaction_0123456789abcdef" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"copy_transaction_id": "copy_transaction_0123456789abcdef",
"connector_id": 1,
"started_at": "2026-09-30T17:00:00Z"
}'{
"station_id": 1,
"tenant_id": 1042,
"control_transaction_id": "control_transaction_0123456789abcdef",
"copy_transaction_id": "copy_transaction_0123456789abcdef",
"connector_id": 1,
"started_at": "2026-09-30T17:00:00Z",
"meter_start_wh": 7500,
"control_status": "string",
"copy_status": "string",
"stopped_at": "2026-09-30T17:00:00Z",
"meter_stop_wh": 7500,
"stop_reason": "string",
"energy_wh": 7500,
"recorded_by": "string",
"created_at": "2026-09-30T17:00:00Z",
"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.



