Customer and contract model
A customer in the chargecloud OS represents either an EV driver or a business, e.g. employer or location partner. To enable the billing of charging sessions or services, a contract is assigned to the customer. The type of contract determines the business context: e-mobility contract for end customers (B2C) and non-commodity contract for businesses (B2B). Customer and contract are always registered together in a single API call, there is no separate customer endpoint.1
Customer (inline)
EV driver or business (employee, location partner). Defined by salutation, name, billing address, and the
business flag (false for B2C, true for B2B). Sent inline in the POST /api/v1/crm/contracts body, there is no separate customer endpoint.Identified by customer_id and external_customer_id in the response.2
Contract
Determines the business context (e-mobility or non-commodity) and enables billing of services and charging sessions. Identified by
contract.uuid, which is the handle for every follow-up call (GET, update, cancel, deletion-request).Returns contract.uuid and customer_id.The read and update endpoints are keyed by the contract
uuid (/crm/contracts/{uuid}), while
the cancel and deletion-request endpoints are keyed by the contract id (/crm/contracts/{id} /…). Use the identifier shown in each example below.Contract registration flow
Authenticate once against the chargecloud IDP to obtain a Bearer token, then register the customer and their contract in a singlePOST. Verify the contract with a GET to confirm its status before the customer starts using the service. For authentication details, see the Authentication page.
1 · Authenticate
2 · Register customer & contract
201 Created
3 · Verify contract
Additional use cases
- Add a contract for an existing customer: Send
external_customer_idin thePOSTbody to link the new contract to an existing customer record instead of creating a new customer. - B2B contracts: Set
business: truefor an employer or service partner. Employer/employee relationships are managed on the contract viais_employer(available on update,PUT /api/v1/crm/contracts/{uuid}). - Update a contract: Change billing address, customer group, or contact details via
PUT /api/v1/crm/contracts/{uuid}. - Cancel a contract: End an active contract via
POST /api/v1/crm/contracts/{id}/cancel. The contract record is preserved for billing reconciliation. - Request deletion of a contract: Initiate a GDPR deletion request via
POST /api/v1/crm/contracts/{id}/deletion-request.