Overview
This document outlines the mandatory and optional fields for the POST /orders endpoint, including conditional requirements based on contract type and reason.Field Requirement Levels
| Symbol | Meaning |
|---|---|
| ✅ Required | Always mandatory |
| ⚠️ Conditional | Required based on specific conditions |
| ℹ️ Optional | Not required but recommended |
| ❌ Excluded | Must be null for certain scenarios |
1. Top-Level Fields
| Field | Requirement | Notes |
|---|---|---|
tariffKey | ✅ Required | Mandatory for order creation and change process |
offerDate | ℹ️ Optional | Mandatory for Fix Tariffs to ensure accurate pricing for the contract |
campaignCode | ℹ️ Optional | If a promotion is running and a campaignCode exists, relevant campaign conditions will apply to the contract |
2. User Account (userAccount)
| Field | Requirement | Notes |
|---|---|---|
emailAddress | ✅ Required | Mandatory for order creation and change process |
phoneNumber | ℹ️ Optional | |
password | ⚠️ Conditional | Transmit null, customer is auto-enrolled in password set email flow |
firstName | ⚠️ Conditional | B2C: Required for change process B2B: Can be null if businessName is provided |
lastName | ⚠️ Conditional | B2C: Required for change process B2B: Can be null if businessName is provided |
businessName | ⚠️ Conditional | B2B: Required for change process if firstName and lastName are null |
gender | ℹ️ Optional | |
dateOfBirth | ℹ️ Required | Mandatory for order creation and change process |
3. Contract (contract)
3.1 Contract Top-Level
| Field | Requirement | Notes |
|---|---|---|
externalId | ℹ️ Optional | Partner’s internal reference |
type | ✅ Required | Required for change process (B2C & B2B) Values: Personal, Business |
industry | ⚠️ Conditional | B2B: Required for Business contracts B2C: Must be nullExample values: ElectricalEquipment, Manufacturing, Retail, etc. |
legalStructure | ⚠️ Conditional | B2B: Required for Business contracts B2C: Must be nullExample values: GmbH, AG, KG, OHG, etc. |
transactionDateTime | ℹ️ Optional |
3.2 Delivery Address (contract.deliveryAddress)
| Field | Requirement | Notes |
|---|---|---|
title | ℹ️ Optional | |
firstName | ⚠️ Conditional | B2C: Required for change process B2B: Can be null if businessName is provided |
lastName | ⚠️ Conditional | B2C: Required for change process B2B: Can be null if businessName is provided |
businessName | ⚠️ Conditional | B2B: Required for change process if firstName and lastName are null |
gender | ℹ️ Optional | |
extension | ℹ️ Optional | |
streetName | ✅ Required | Required for change process (B2C & B2B) |
houseNumber | ✅ Required | Required for change process (B2C & B2B) |
city | ✅ Required | Required for change process (B2C & B2B) |
postCode | ✅ Required | Required for change process (B2C & B2B) |
countryCode | ✅ Required | Required for change process (B2C & B2B) Expected: DE |
3.3 Billing Address (contract.billingAddress)
| Field | Requirement | Notes |
|---|---|---|
billingAddress | ℹ️ Optional | If null, billing address = delivery address, all data fields must be transmitted if it deviates from the deliveryAddress |
3.4 Bank Details (contract.bankDetails)
| Field | Requirement | Notes |
|---|---|---|
accountHolder | ⚠️ Conditional | Required if hasAcceptedDirectDebit is true |
iban | ⚠️ Conditional | Required if hasAcceptedDirectDebit is true |
bic | ℹ️ Optional | |
bankName | ℹ️ Optional | |
hasAcceptedDirectDebit | ✅ Required | Required for change process (B2C & B2B) |
4. Delivery Details (contract.deliveryDetails)
4.1 Meter & Location Identifiers
| Field | Requirement | Notes |
|---|---|---|
meterNumber | ✅ Required | Required for change process (B2C & B2B) |
maLoIdentifier | ℹ️ Optional | Recommended: Increases speed at which change process progresses (e.g., invalid address, invalid meter number) |
meLoIdentifier | ℹ️ Optional |
4.2 Contract Reason & Dates
| Field | Requirement | Notes |
|---|---|---|
contractReason | ✅ Required | Values: ChangeOfSupplier, NewDeliveryLocation |
Conditional Fields Based on contractReason:
If contractReason = ChangeOfSupplier (Supplier Switch)
| Field | Requirement | Notes |
|---|---|---|
desiredTransitionDate | ✅ Required | Required for change process (B2C & B2B) |
moveInDate | ❌ Excluded | Must be null |
previousSelfCancelledDate | ✅ Required | Required for change process (B2C & B2B) |
If contractReason = NewDeliveryLocation (Move-In)
| Field | Requirement | Notes |
|---|---|---|
desiredTransitionDate | ❌ Excluded | Must be null |
moveInDate | ✅ Required | Required for change process (B2C & B2B) |
previousSelfCancelledDate | ❌ Excluded | Must be null |
4.3 Previous Supplier & Consumption
| Field | Requirement | Notes |
|---|---|---|
previousSupplierCode | ✅ Required | Required for change process (B2C & B2B) 13-digit supplier code |
previousAnnualConsumptionKwh | ✅ Required | Required for order creation and change process - Value must be above 1000 kWh |
4.4 Capabilities (contract.deliveryDetails.capabilities)
| Field | Requirement | Notes |
|---|---|---|
hasElectricVehicle | ✅ Required | Required for order creation and change process |
hasSmartMeter | ✅ Required | Required for order creation and change process |
hasHeatPump | ✅ Required | Required for order creation and change process |
5. Agreements (contract.agreements)
| Field | Requirement | Notes |
|---|---|---|
termsAndConditions | ✅ Required | Required for order creation and change process Must be true |
privacyPolicy | ✅ Required | Required for order creation and change process Must be true |
revocationPolicy | ✅ Required | Required for order creation and change process Must be true |
Quick Reference: Contract Reason Decision Tree
B2C vs B2B Decision Tree
Validation Summary
Always Required (All Scenarios)
tariffKeyuserAccount.emailAddresscontract.typecontract.deliveryAddress(full address: street, house number, city, postcode, country)contract.bankDetails.hasAcceptedDirectDebitcontract.deliveryDetails.meterNumbercontract.deliveryDetails.previousSupplierCodecontract.deliveryDetails.previousAnnualConsumptionKwhcontract.deliveryDetails.capabilities(all three flags)contract.agreements(all three must betrue)
Conditionally Required
- Bank details (if direct debit accepted):
accountHolderiban
- B2C contracts:
userAccount.firstNameuserAccount.lastNamedeliveryAddress.firstNamedeliveryAddress.lastName
- B2B contracts:
userAccount.businessNamedeliveryAddress.businessNamecontract.industrycontract.legalStructure
- ChangeOfSupplier:
desiredTransitionDatepreviousSelfCancelledDate
- NewDeliveryLocation:
moveInDate
Recommended (Optional but Helpful)
contract.deliveryDetails.maLoIdentifier- Can prevent delays due to invalid addresses or meter numbers
Example Payloads
Example 1: B2C Supplier Change
Example 2: B2B Move-In
Common Validation Errors
| Error Scenario | Cause | Solution |
|---|---|---|
| Missing mandatory field | Required field is null or omitted | Review requirement tables above |
| Invalid contract reason combination | moveInDate provided with ChangeOfSupplier | Follow contract reason decision tree |
| Missing bank details | Direct debit accepted but IBAN/account holder missing | Provide both fields when hasAcceptedDirectDebit: true |
| B2C/B2B mismatch | Business name provided with personal contract type | Align contract.type with name fields |
| Invalid address | Address cannot be found in system | Provide maLoIdentifier to improve matching |