Create an externally funded charging session
post/v1/tenants/{tenant_id}/charging-sessions
Requires an API key
Requires billing:write and settlement:write. Atomically snapshots the tariff and fixes external settlement ownership. Your backend owns checkout, processor credentials and capture. References contain no secrets. One open physical external session per connector; this does not reserve hardware against other CSMS commands.
Path parameters
- tenant_idintegerRequired
Headers
- idempotency-keystringRequired
Request body
- station_idintegerRequiredGreater than 0
- connector_idintegerRequiredGreater than 0
- tariff_idintegerRequiredTenant-owned tariff, snapshotted before chargingGreater than 0
- sourceenumOne of
csms,simulated· Default"csms" - application_referencestringRequiredUnique booking/session reference within your tenant. No customer data or secrets.Pattern
^[A-Za-z0-9][A-Za-z0-9_.:/-]{0,127}$ - processorstringRequiredDescriptive payment integration name. No adapter is called.Pattern
^[a-z][a-z0-9-]{0,31}$ - merchant_referencestringRequiredYour non-secret processor account reference.Pattern
^[A-Za-z0-9][A-Za-z0-9_.:/-]{0,127}$ - payment_referencestringRequiredStable external payment reference, unique per tenant, processor and merchant.Pattern
^[A-Za-z0-9][A-Za-z0-9_.:/-]{0,127}$
Returns · 201
- idstringRequired
- tenant_idintegerRequired
- application_referencestringRequired
- processorstringRequired
- merchant_referencestringRequired
- payment_referencestringRequired
- created_bystringRequired
- created_atstringRequired
- settlement_ownerstringDefault
"external" - statusenumRequiredOne of
prepared,starting,charging,stopping,awaiting_bill,completed,canceled,reconciliation_required - billBillRecordRequired
Child attributes
- idstringRequired
- tenant_idintegerRequired
- station_idintegerRequired
- connector_idintegerRequired
- sourceenumRequiredOne of
csms,simulated - tariff_idintegerRequired
- rate_minorstringRequired
- hold_minorintegerRequired
- currencystringRequired
- charging_tokenstringRequired
- statusenumRequiredOne of
open,final - energy_kwhstring | nullRequired
- energy_whinteger | nullInteger Wh of the finalized usage.
- total_minorinteger | nullRequired
- transaction_idinteger | nullRequired
- created_atstringRequired
- finalized_atstring | nullRequired
- settlement_ownerenumOne of
managed,external· Default"managed" - billing_versionstringDefault
"energy-v1" - usageobject | nullSingle bill reads only: live matched usage after start, a final snapshot once final.
Child attributes
- transaction_idinteger | nullRequiredPhysical transaction resource ID; null for simulated bills.
- activebooleanRequired
- energy_kwhstring | nullRequiredDecimal kWh string for display.
- energy_whinteger | nullRequiredInteger Wh for arithmetic.
- estimated_minorinteger | nullRequiredInteger minor units. On final bills this equals total_minor.
- started_atstring | nullRequired
- ended_atstring | nullRequired
- power_winteger | nullLatest reported charging power in watts; 0 once the transaction ended; null when the charger reports none.
- soc_percentinteger | nullLatest reported vehicle state of charge, when the charger reports it.
- metered_atstring | nullTimestamp of the meter sample behind power_w/soc_percent.
- start_operationobject | nullSingle bill reads only: the journaled start dispatch, if any.
Child attributes
- idstringRequired
- tenant_idintegerRequired
- statusenumRequiredOne of
dispatching,succeeded,rejected,unknown - resultobject | nullRequired
- created_atstringRequired
- updated_atstringRequired
- usageobject | nullRequiredLive matched usage while charging; a final snapshot once completed. Null before a transaction is observed and on canceled sessions.
Child attributes
- transaction_idinteger | nullRequiredPhysical transaction resource ID; null for simulated bills.
- activebooleanRequired
- energy_kwhstring | nullRequiredDecimal kWh string for display.
- energy_whinteger | nullRequiredInteger Wh for arithmetic.
- estimated_minorinteger | nullRequiredInteger minor units. On final bills this equals total_minor.
- started_atstring | nullRequired
- ended_atstring | nullRequired
- power_winteger | nullLatest reported charging power in watts; 0 once the transaction ended; null when the charger reports none.
- soc_percentinteger | nullLatest reported vehicle state of charge, when the charger reports it.
- metered_atstring | nullTimestamp of the meter sample behind power_w/soc_percent.
- start_operationobject | nullRequired
Child attributes
- idstringRequired
- tenant_idintegerRequired
- statusenumRequiredOne of
dispatching,succeeded,rejected,unknown - resultobject | nullRequired
- created_atstringRequired
- updated_atstringRequired
- stop_operationobject | nullRequired
Child attributes
- idstringRequired
- tenant_idintegerRequired
- statusenumRequiredOne of
dispatching,succeeded,rejected,unknown - resultobject | nullRequired
- created_atstringRequired
- updated_atstringRequired
- settlementSettlementSummaryRequired
Child attributes
- verificationstringDefault
"application_reported" - captured_minorintegerRequired
- refunded_minorintegerRequired
- net_minorintegerRequired
- uncollected_minorinteger | nullRequired
- statusenumRequiredOne of
unreported,pending,unknown,failed,reported_unpaid,reported_partial,reported_paid,reported_refunded,reported_released
POST /v1/tenants/{tenant_id}/charging-sessions
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/tenants/1042/charging-sessions" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Idempotency-Key: order-2026-09-30-0001" \
-H "Content-Type: application/json" \
-d '{
"station_id": 1,
"connector_id": 1,
"tariff_id": 42,
"application_reference": "string",
"processor": "string",
"merchant_reference": "string",
"payment_reference": "string"
}'Response · 201
{
"id": "id_0123456789abcdef",
"tenant_id": 1042,
"application_reference": "string",
"processor": "string",
"merchant_reference": "string",
"payment_reference": "string",
"created_by": "string",
"created_at": "2026-09-30T17:00:00Z",
"settlement_owner": "external",
"status": "prepared",
"bill": {
"id": "id_0123456789abcdef",
"tenant_id": 1042,
"station_id": 1,
"connector_id": 1,
"source": "csms",
"tariff_id": 42,
"rate_minor": "string",
"hold_minor": 1250,
"currency": "USD",
"charging_token": "string",
"status": "open",
"energy_kwh": "string",
"energy_wh": 7500,
"total_minor": 1250,
"transaction_id": 1,
"created_at": "2026-09-30T17:00:00Z",
"finalized_at": "2026-09-30T17:00:00Z",
"settlement_owner": "managed",
"billing_version": "energy-v1",
"usage": {
"transaction_id": 1,
"active": false,
"energy_kwh": "string",
"energy_wh": 7500,
"estimated_minor": 1250,
"started_at": "2026-09-30T17:00:00Z",
"ended_at": "2026-09-30T17:00:00Z",
"power_w": 1,
"soc_percent": 1,
"metered_at": "2026-09-30T17:00:00Z"
},
"start_operation": {
"id": "id_0123456789abcdef",
"tenant_id": 1042,
"status": "dispatching",
"result": {},
"created_at": "2026-09-30T17:00:00Z",
"updated_at": "2026-09-30T17:00:00Z"
}
},
"usage": {
"transaction_id": 1,
"active": false,
"energy_kwh": "string",
"energy_wh": 7500,
"estimated_minor": 1250,
"started_at": "2026-09-30T17:00:00Z",
"ended_at": "2026-09-30T17:00:00Z",
"power_w": 1,
"soc_percent": 1,
"metered_at": "2026-09-30T17:00:00Z"
},
"start_operation": {
"id": "id_0123456789abcdef",
"tenant_id": 1042,
"status": "dispatching",
"result": {},
"created_at": "2026-09-30T17:00:00Z",
"updated_at": "2026-09-30T17:00:00Z"
},
"stop_operation": {
"id": "id_0123456789abcdef",
"tenant_id": 1042,
"status": "dispatching",
"result": {},
"created_at": "2026-09-30T17:00:00Z",
"updated_at": "2026-09-30T17:00:00Z"
},
"settlement": {
"verification": "application_reported",
"captured_minor": 1250,
"refunded_minor": 1250,
"net_minor": 1250,
"uncollected_minor": 1250,
"status": "unreported"
}
}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.