Skip to main content

Overview

This guide explains which fields of the POST /orders request body are mandatory, optional or conditional, depending on the contract type (B2C or B2B), the contract reason (supplier change or move-in) and the payment method. A field can be needed at one of two stages:
To get your customers into supply as quickly as possible, transmit every field marked for the change process, plus the recommended optional fields, with the initial order.

Field Requirement Levels


1. Top-Level Fields


2. User Account (userAccount)


3. Contract (contract)

3.1 Contract Top-Level

Read-only fields of the contract object (number, state, deliveryState, validFromDate, validToDate) are populated by RABOT and should not be transmitted when creating an order.

3.2 Delivery Address (contract.deliveryAddress)

3.3 Billing Address (contract.billingAddress)

3.4 Bank Details (contract.bankDetails)

The bankDetails object determines the payment method.
If bank transfer (Überweisung) is selected as the payment method, the bankDetails object must be null.

4. Delivery Details (contract.deliveryDetails)

4.1 Meter, Location & Grid Operator Identifiers

4.2 Contract Reason

The date fields and the previous supplier depend on the contract reason.

If contractReason = ChangeOfSupplier (Supplier Switch)

If contractReason = NewDeliveryLocation (Move-In)

4.3 Consumption

4.4 Capabilities (contract.deliveryDetails.capabilities)

4.5 BDEW Code of the Grid Operator

bdewCode identifies the grid operator (Netzbetreiber) serving the delivery point. It is distinct from previousSupplierCode, which identifies the customer’s previous electricity supplier.
Only transmit bdewCode if you have a verified value for the delivery point. If you are unsure, transmit null. The same field is available on the tariff calculation request; use the same value in both calls so the order is priced as calculated.

5. Agreements (contract.agreements)


6. Response Messages

A successful response returns the customerNumber and contractNumber. It can also include a messages array of non-fatal advisory messages. These do not mean the order failed, but you should log them and review them. The messages array is omitted when there are no messages.

Quick Reference: Contract Reason Decision Tree

B2C vs B2B Decision Tree

Direct Debit vs Bank Transfer Decision Tree


Validation Summary


Example Payloads

Example 1: B2C Supplier Switch (RABOT cancels the previous contract)

If the customer has already cancelled their previous contract, transmit the cancellation date in previousSelfCancelledDate, e.g. "2026-10-31".

Example 2: B2B Move-In (bank transfer, previous supplier unknown)


Common Validation Errors


Questions or Concerns?

Feel free to speak with our Integration Management Team or alternatively, ask our built-in AI assistant, Rabotini πŸ€– (several languages supported).