Skip to main content
As a RABOT sales partner, the API allows you to build your own custom sales funnel for your Whitelabel tariff, or to integrate the price quote and order process into your own systems and sales processes.
A create:orders scope is required to be able to submit orders and subsequently get their status via the API

Query Available Tariffs

A tariffKey is a required parameter of the calculate offer price and create order calls. Send the get tariffs call to retrieve the list of available tariffs for your application.
example response body
{
    "data": {
        "tariffName": "rabot.fix",
        "tariffKey": "DEMO_Fix24",
        "providerName": "Rabot Energy",
    },
    "isSuccess": true,
    "message": null,
    "error": null
}

Create a price quote

To create a price quote for a lead, in addition to your tariffKey parameter, you need to provide the following required information in the Request Body to calculate the price quote:
  • postcode of the delivery address - this will determine the applicable grid fees and other fees
  • estimated yearly energy consumption - this will be used to calculate the estimated monthly cost
With this information, you can call the offer calculation endpoint. The API endpoint returns a response that details the different pricing components both on a monthly base (EUR/month) and depending on the consumption (ct/kWh), as well as the contract conditions associated with the tariff (e.g. minimum duration, cancellation period).
example response
{
    "data": {
        "name": "rabot.flexpower",
        "priceComponents": {
            "pricePerMonth": {
                "value": 57.2510,
                "unit": {
                    "main": "Euro",
                    "per": "Month"
                },
                "unitText": "€/Monat"
            },
            "unitPrice": {
                "value": 32.9736,
                "unit": {
                    "main": "Cent",
                    "per": "Kwh"
                },
                "unitText": "ct/kWh"
            },
            "basePricePerMonth": {
                "value": 10.5384,
                "unit": {
                    "main": "Euro",
                    "per": "Month"
                },
                "unitText": "€/Monat"
            },
            "estimatedConsumption": {
                "value": 141.6667,
                "unit": {
                    "main": "Kwh",
                    "per": "Month"
                },
                "unitText": "kWh/Monat"
            },
            "estimatedWorkPrice": {
                "value": 32.9736,
                "unit": {
                    "main": "Cent",
                    "per": "Kwh"
                },
                "unitText": "ct/kWh"
            },
            "expectedWorkPrice": {
                "value": 46.7126,
                "unit": {
                    "main": "Euro",
                    "per": "Month"
                },
                "unitText": "€/Monat"
            },
            "effectiveWorkPrice": {
                "value": 32.9736,
                "unit": {
                    "main": "Cent",
                    "per": "Kwh"
                },
                "unitText": "ct/kWh"
            },
            "baseServiceFee": {
                "value": 4.9900,
                "unit": {
                    "main": "Euro",
                    "per": "Month"
                },
                "unitText": "€/Monat"
            },
            "variableServiceFee": {
                "value": 1.7850,
                "unit": {
                    "main": "Cent",
                    "per": "Kwh"
                },
                "unitText": "ct/kWh"
            },
            "rabotShare": {
                "rabotShare": {
                    "value": 0.0000,
                    "unit": {
                        "main": "Euro",
                        "per": "Month"
                    },
                    "unitText": "€/Monat"
                },
                "rabotSharePercentage": {
                    "value": 0.0000,
                    "unit": {
                        "main": "Percent"
                    },
                    "unitText": "%"
                },
                "totalPriceWithoutRabotShare": {
                    "value": 57.2510,
                    "unit": {
                        "main": "Euro",
                        "per": "Month"
                    },
                    "unitText": "€/Monat"
                }
            }
        },
        "durationPeriod": {
            "value": 1,
            "unit": {
                "main": "Month"
            },
            "unitText": "Monat"
        },
        "noticePeriod": {
            "value": 1,
            "unit": {
                "main": "Month"
            },
            "unitText": "Monat"
        }
    },
    "isSuccess": true,
    "message": null,
    "error": null
}

Submit the order (contract draft)

When a lead has accepted the offer, you can use the API to submit the customer and order details to the RABOT platform with a create new order call.
Partners are responsible for collecting, validating, and securely storing all information required for order submission. Incorrect or incomplete data may cause the order to be blocked during the change process.Submitted order data must be retained in accordance with applicable legal and regulatory requirements.
The following information is mandatory for the creation of an order (contract draft) in RABOT’s system (see Orders API reference for detailed call body breakdown):
  • a tariffKey to identify the requested product
  • customer identification and contact details.
  • delivery address and meter identification details
  • previous supplier BDEW code, desired change date and expected yearly consumption
  • bank details (for SEPA mandate)
Depending on whether the order is a customer who is changing supplier or moving into a new home, different information is required for successful order processing.See the New Delivery Location Case for more detailed field requirements.See the Change of Supplier for more detailed field requirements.
If the customer email address submitted with the order does not exist in the RABOT platform yet, a new user account is automatically created. Please submit your order without ‘password’ set to ‘null’.The user account will be enrolled in a “set password” flow to create their password.
If successful, the API returns a customer number and contract number, which uniquely identify the customer and order in the RABOT platform, and can be used in subsequent API calls, e.g. to check the status of the order processing. Before submitting the order via the API, you need to ensure that customers have received all the required contract and pricing information, accepted the terms and conditions (AGB), confirmed the email address and accepted the offer. Once the order is received by the RABOT platform, an order confirmation email will be sent out to the email address provided in the order.
If you are a Whitelabel partner, the order confirmation and all other communications are branded based on the CI guidelines provided during initial kick-off.
example request body
{
    "tariffKey": "DEMO_Dynamic",
    "userAccount": {
        "emailAddress": "[email protected]",
        "phoneNumber": "",
        "password": "SomeExamplePassword987.",
        "firstName": "Max",
        "lastName": "Mustermann",
        "businessName": null,
        "gender": "Male",
        "dateOfBirth": "1999-12-31"
    },
    "contract": {
        "externalId": null,
        "type": "Private",
        "deliveryAddress": {
            "title": null,
            "firstName": "Max",
            "lastName": "Mustermann",
            "businessName": null,
            "gender": "Male",
            "extension": null,
            "streetName": "Grüner Weg",
            "houseNumber": "42",
            "city": "Berlin",
            "postCode": "14109",
            "countryCode": "DE"
        },
        "billingAddress": null,
        "bankDetails": {
            "accountHolder": "Max Mustermann",
            "iban": "DE89370400440532013000",
            "bic": "DEUTDEFF",
            "bankName": "Deutsche Bank",
            "hasAcceptedDirectDebit": true
        },
        "contractReason": "NewDeliveryLocation",
        "deliveryDetails": {
            "meterNumber": "123456789",
            "maLoIdentifier": null,
            "meLoIdentifier": null,
            "desiredTransitionDate": "2025-06-01",
            "moveInDate": "2025-07-07",
            "previousSelfCancelledDate": null,
            "previousSupplierCode": "9979250000006",
            "previousAnnualConsumptionkwh": 2000,
            "capabilities": {
                "hasElectricVehicle": false,
                "hasSmartMeter": true,
                "hasHeatPump": false
            }
        },
        "agreements": {
            "termsAndConditions": true,
            "privacyPolicy": true,
            "revocationPolicy": true
        },
        "transactionDateTime": null
    },
    "campaignCode": null
}
example response body
{
    "data": {
        "customerNumber": "74048277",
        "contractNumber": "48270225"
    },
    "isSuccess": true,
    "message": null,
    "error": null
}

Password Setting

When an order is submitted, a User Account is created using the Email address provided in the call. Depending on your partnership agreement, the capability to set the password of the User Account is restricted to optimize the user experience.
Unless otherwise stated, the password field should be submitted with null to enroll the user in the password setting email flow.

Offer date (Ensuring correct energy tariff costs)

By default, when you submit a new order, the RABOT platform applies the prices and conditions that are applicable at the time of the API call. For fix price tariffs, this can be a problem, as prices might have changed significantly between the time that you requested the price quote from the API and presented it to customers, and the time you submit the order. In this case, customers could get an order confirmation showing different prices than what they ordered. To prevent this, include the offerDate parameter in the create new order call, and the API will automatically use the price that was valid on the given date.
The specific conditions under which you can use the offerDate feature, such as elegible tariffs and maximum offer validity depend on the partnership agreement. If you are unsure about these, please consult your Partner Manager contact to confirm.

Contract draft creation and the “Change process”

As you may have noticed, the term contract draft is almost inter-changeable with the term order. This is due to the submitted order transitioning to a contract draft in the RABOT platform once received. The details in the contract draft are subsequently used in the market communication during the change process. Additionally, these details are used to populate dynamic fields within RABOT’s email and transactional document communication. Below we will go into more detail about querying the order status. For a more detailed breakdown of the change process and the various statuses an order can have as well as action taken to resolve delays, please refer to our Change Process Detailed guide.
The Change Process is particularly important for Whitelabel partners, however for RABOT Affilliate partners that have a commission compensation model for their sales staff, this is a relevant topic due to its impact on payout amounts and dates.

Check order status

After the order has been submitted successfully, you can use the get orders endpoint to follow the different processing states of the order. You can include the ‘filter.fromUpdatedAt’ (Format: YYYY-MM-DD) as a parameter to retrieve orders that have experienced a status update via market communication during the change process from the date you submit.
example response body
{
    "data": {
        "order": {
            "customerNumber": "74048277",
            "firstName": "Max",
            "lastName": "Mustermann",
            "businessName": null,
            "emailAddress": "[email protected]",
            "tariffName": "rabot.flexpower",
            "contractNumber": "48270225",
            "meterNumber": "123456789",
            "meLoIdentifier": null,
            "maLoIdentifier": null,
            "deliveryAddress": {
                "title": null,
                "firstName": "Max",
                "lastName": "Mustermann",
                "businessName": null,
                "gender": null,
                "extension": null,
                "streetName": "Grüner Weg",
                "houseNumber": "42",
                "city": "Berlin",
                "postCode": "14109",
                "countryCode": null
            },
            "state": "Open",
            "denialReason": null,
            "actualDateOfDelivery": null,
            "endDateOfDelivery": null,
            "contractSignatureDate": "2025-07-08 17:42",
            "contractSignedAt": "2025-07-08 17:42",
            "estimatedYearlyConsumption": 2000
        }
    },
    "isSuccess": true,
    "message": null,
    "error": null
}
See Change Process Detailed for a deeper look at the different order states and change process in general.