Changed the periods array on Electricity Rate Day responses (GET /resources/electricity-rates/v2.0, GET /resources/electricity-rates/v2.0/{electricityRate}) to return aggregated periods. Consecutive periods with the same pricePerKwh are now merged into a single period with the combined time range, resulting in a more compact response.
Expanded tariff pricing visibility for ad-hoc users on GET /resources/tariffs/v1.0 and GET /resources/tariffs/v1.0/{tariff}. Tariff pricings with operator-specific ad-hoc restrictions are now included in responses when filtering by filter.userId=null.
Added the POST /public-api/actions/charge-point/v1.0/{chargePoint}/send-custom-ocpp endpoint to send custom OCPP commands to a charge point. The request requires a command (string) and payload (object).
Added the optional showTermsAndConditions (boolean) and termVersionId (integer or null) properties to Payment Terminal responses for Valina, Adyen Castles, Printec Castles, and Cardlink Castles terminal types. These fields are returned on GET /public-api/resources/payment-terminals/v1.0, POST /public-api/resources/payment-terminals/v1.0, GET /public-api/resources/payment-terminals/v1.0/{paymentTerminal}, PATCH /public-api/resources/payment-terminals/v1.0/{paymentTerminal}, and all corresponding v1.1 endpoints.
Added the optional display object to Tariff Group requests on POST /public-api/resources/tariff-groups/v1.0 and PATCH /public-api/resources/tariff-groups/v1.0/{tariffGroup}. The object supports defaultPriceInformation and defaultPriceInformationOffline string properties (max 150 characters each).
Added the optional email, locale, and invoiceDetails properties to the Transactions request body on POST /resources/transactions/v1.0. When invoiceDetails is provided, an ad-hoc user is created with the supplied invoice information and associated with the transaction. The invoiceDetails object accepts an invoiceType field (individual or company) along with dynamic fields defined by the operator's invoice integration configuration.
Added the optional partnerContractId filter to GET /resources/charge-points/v2.0. Allows filtering charge points by their associated partner contract.
Added the optional lastNetworkStatusUpdateAt property to Charge Point responses on GET /resources/charge-points/v2.0, POST /resources/charge-points/v2.0, GET /resources/charge-points/v2.0/{chargePoint}, and PATCH /resources/charge-points/v2.0/{chargePoint}. This field contains the timestamp of the last network status change.
Added the optional corporateBilling.frequency and corporateBilling.limit properties to Partner requests and responses on GET /resources/partners/v2.0, POST /resources/partners/v2.0, GET /resources/partners/v2.0/{partner}, and PATCH /resources/partners/v2.0/{partner}. These fields allow configuring billing limits with a specified frequency period (e.g., weekly, monthly) instead of fixed monthly limits.
Added the optional options.corporateBillingLimit property to Partner Invite requests and responses on GET /resources/partner-invites/v1.0, POST /resources/partner-invites/v1.0, GET /resources/partner-invites/v1.0/{partnerInvite}, and PATCH /resources/partner-invites/v1.0/{partnerInvite}. This field allows setting a corporate billing spending limit for the invited user.
Added the optional invoiceDetails.lastUpdatedAt property to User responses on GET /resources/users/v1.0, POST /resources/users/v1.0, GET /resources/users/v1.0/{user}, PATCH /resources/users/v1.0/{user}, GET /resources/users/v1.0/{user}/invoice-details, POST /resources/users/v1.0/{user}/invoice-details, and the v1.1 equivalents. This field contains the timestamp when the user's invoice details were last modified.
Added the optional filter.invoiceDetailsLastUpdatedAfter and filter.invoiceDetailsLastUpdatedBefore query parameters to GET /resources/users/v1.0 and GET /resources/users/v1.1. These filters allow retrieving users whose invoice details were modified within a specific date range.
🔧 Improvements
Made the email property conditionally optional on POST /actions/transactions/v1.0/{transaction}/issue-invoice. The field requirement now depends on the operator's invoice processor configuration—if the email field is configured as optional for the invoice type being issued, it no longer needs to be provided.
🗑️ Deprecations
Deprecated the corporateBilling.monthlyLimit property on Partner endpoints (GET /resources/partners/v2.0, POST /resources/partners/v2.0, GET /resources/partners/v2.0/{partner}, PATCH /resources/partners/v2.0/{partner}). Use the new corporateBilling.frequency and corporateBilling.limit properties instead for more flexible billing period configuration.
Added the session.chargingPeriod.changed notification type. This webhook fires when a session's charging period state changes — either when the first charging period is created, or when the session transitions between charging states (e.g., charging to idle). The notification payload includes sessionId, chargePointId, evseId, previousChargingPeriodId, currentChargingPeriodId, previousState, currentState, and lastUpdatedAt. Available for subscription on POST /public-api/notifications/v1.0, PUT /public-api/notifications/v1.0/{notification}, POST /public-api/notifications/v2.0, and PUT /public-api/notifications/v2.0/{notification}.
Changed POST /actions/tariffs/v2.0/{tariff}/set-tariff-display-information to support both creating and updating tariff display information. Previously, calling this endpoint when display information already existed returned a 406 error. Now the endpoint is idempotent: it returns 201 when creating new display information and 200 when updating existing values. The response body now includes the full tariff display information data.
Relaxed validation on PATCH /resources/charge-points/v1.0/{chargePoint}/configurations/{key} and PATCH /resources/charge-points/v2.0/{chargePoint}/configurations/{key} for the MeterValuesAlignedData and ClockAlignedDataInterval configuration keys. The value field for these keys now accepts null or empty strings, where previously a non-empty string was required.
Changed the downloadUrl field on Invoice responses to support externally-configured download URLs. When an invoice has an external download URL configured, that URL is returned directly instead of a platform-generated signed URL.
Added the POST /actions/tax/v1.0/validate-vat endpoint for validating EU VAT numbers against the VIES service. Accepts required countryCode (2-character string) and vatNumber (string) fields, and returns validation details on success.
Added the PATCH /resources/partner-contracts/v1.0/{partnerContract} endpoint for partial updates to partner contracts. Unlike PUT, this allows updating individual fields without providing all required fields.
Added the optional locale request property to POST /actions/transactions/v1.0/{transaction}/issue-invoice. When provided, the invoice is issued in the specified locale.
Added the optional allowChargingOutsideWorkingHours property to the workingHours object on Location v2.0 endpoints. This field appears in responses from GET /resources/locations/v2.0, GET /resources/locations/v2.0/{location}, and can be set in requests to POST /resources/locations/v2.0 and PATCH /resources/locations/v2.0/{location}.
Added the optional companyName property to User endpoints. The field is returned in responses and accepted as an optional company_name request property on POST /resources/users/v1.0, PATCH /resources/users/v1.0/{user}, and the corresponding v1.1 endpoints.
Added FirmwareStatusNotification as a new subscribable webhook notification type on POST /notifications/v1.0, PUT /notifications/v1.0/{notification}, POST /notifications/v2.0, and PUT /notifications/v2.0/{notification}. The callback payload includes firmware update status details and varies based on the OCPP protocol version (1.5, 1.6, or 2.0.1).
Expanded the resourceType enum in Issue responses to include integration as a new value. This value may appear in the keyResource.resourceType and relatedResources fields on GET /resources/issues/v1.0, POST /resources/issues/v1.0, GET /resources/issues/v1.0/{issue}, and PATCH /resources/issues/v1.0/{issue}.
🔧 Improvements
Made Issue endpoint responses more resilient to unknown resource types. Issues referencing resources with unmapped types now omit those references from the response instead of causing errors.
Changed the deprecated field accepted by the Charge Point V2 endpoints from autoFaultRecovery to enableAutoFaultRecovery on POST /resources/charge-points/v2.0 and PATCH /resources/charge-points/v2.0/{chargePoint}. Consumers using the undocumented autoFaultRecovery field name with V2 endpoints must update to enableAutoFaultRecovery. This aligns the server behavior with the documented OpenAPI specification.
Added date validation on Partner Contract endpoints: startDate must be today or in the future when creating a contract via POST /resources/partner-contracts/v1.0. When updating via PATCH /resources/partner-contracts/v1.0/{partnerContract}, the same validation applies only if the startDate value is being changed.
Made partnerId immutable on PATCH /resources/partner-contracts/v1.0/{partnerContract}. The partnerId must match the existing contract's partner and cannot be changed during an update.
✨ New features
Added the optional invoiceRequired boolean property to the Transaction request body on POST /resources/transactions/v1.0 and PATCH /resources/transactions/v1.0/{transaction}. When set to true and the operator has receipt suppression for invoice issuance enabled, automatic receipt generation is suppressed for the transaction.
🔧 Improvements
Changed the Transaction paymentMethod response fields (type, last4, expMonth, expYear) to fall back to stored payment data when the original payment method record is unavailable, instead of returning null. The paymentMethod string representation also falls back to stored data in this scenario. Affects all Transaction response endpoints.