Skip to main content

Data Import REST API Changelog

This page shows recent changes to Data Import REST API.

Reset

26 June 2026 - Latest

New
[
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    },
    {
        "name": "Validate no duplicate portfolio reference namespaces",
        "description": "Validate that there are no duplicate portfolio reference namespaces in the payload.",
        "possible_errors": [
            "duplicate_portfolio_references"
        ]
    }
]
Old
[
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    }
]
New
[
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    },
    {
        "name": "Validate no duplicate portfolio reference namespaces",
        "description": "Validate that there are no duplicate portfolio reference namespaces in the payload.",
        "possible_errors": [
            "duplicate_portfolio_references"
        ]
    }
]
Old
[
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    }
]
New
[
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    },
    {
        "name": "Validate no duplicate portfolio reference namespaces",
        "description": "Validate that there are no duplicate portfolio reference namespaces in the payload.",
        "possible_errors": [
            "duplicate_portfolio_references"
        ]
    }
]
Old
[
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    }
]

24 June 2026

New
{
    "MARKET_PARTICIPANT_CODE": "#/components/schemas/MarketParticipantCodeCharacteristic"
}
New
[
    {
        "$ref": "#/components/schemas/PointOfCommonCouplingCharacteristic"
    },
    {
        "$ref": "#/components/schemas/MarketParticipantCodeCharacteristic"
    },
    {
        "$ref": "#/components/schemas/ConsumptionBandsCharacteristic"
    },
    {
        "$ref": "#/components/schemas/SalesChannelCharacteristic"
    },
    {
        "$ref": "#/components/schemas/ZipCodeCharacteristic"
    },
    {
        "$ref": "#/components/schemas/NbAssociationNumberCharacteristic"
    }
]
Old
[
    {
        "$ref": "#/components/schemas/ZipCodeCharacteristic"
    },
    {
        "$ref": "#/components/schemas/PointOfCommonCouplingCharacteristic"
    },
    {
        "$ref": "#/components/schemas/NbAssociationNumberCharacteristic"
    },
    {
        "$ref": "#/components/schemas/ConsumptionBandsCharacteristic"
    },
    {
        "$ref": "#/components/schemas/SalesChannelCharacteristic"
    }
]

23 June 2026

No attributes to display

22 June 2026

New
[
    {
        "name": "Validate that business information is provided if not linking account to business with contract",
        "description": "Validate that business information is provided for the business to link the account to if <code>link_account_to_business_with_contract</code> is false for the given import supplier.",
        "possible_errors": [
            "business_information_required_if_not_linking_via_contract"
        ]
    },
    {
        "name": "Validate that business information is not provided if linking an account to the business of the business contract.",
        "description": "Validate that business information is not provided for the business to link the account to if <code>link_account_to_business_with_contract</code> is true for the given import supplier.",
        "possible_errors": [
            "business_information_not_required_if_linking_via_contract"
        ]
    },
    {
        "name": "Validate that at least one contract identifier is provided for import",
        "description": "Validate that at least one of <code>business_contract_identifiers</code> or <code>business_contract_identifier</code> is provided in the payload.",
        "possible_errors": [
            "missing_contract_identifier"
        ]
    }
]
Old
[
    {
        "name": "Validate that values are unique in Kraken for unique registered keys",
        "description": "Validate that keys with unique constraints do not already have provided value in Kraken.",
        "possible_errors": [
            "business_detail_value_exists_for_unique_key"
        ]
    },
    {
        "name": "Validate that business information is provided if not linking account to business with contract",
        "description": "Validate that business information is provided for the business to link the account to if <code>link_account_to_business_with_contract</code> is false for the given import supplier.",
        "possible_errors": [
            "business_information_required_if_not_linking_via_contract"
        ]
    },
    {
        "name": "Validate that business information is not provided if linking an account to the business of the business contract.",
        "description": "Validate that business information is not provided for the business to link the account to if <code>link_account_to_business_with_contract</code> is true for the given import supplier.",
        "possible_errors": [
            "business_information_not_required_if_linking_via_contract"
        ]
    },
    {
        "name": "Validate that at least one contract identifier is provided for import",
        "description": "Validate that at least one of <code>business_contract_identifiers</code> or <code>business_contract_identifier</code> is provided in the payload.",
        "possible_errors": [
            "missing_contract_identifier"
        ]
    }
]
No attributes to display

19 June 2026

No attributes to display

15 June 2026

No attributes to display
No attributes to display
New
[
    {
        "name": "Validate account type is valid",
        "description": "Validate that only one account type is specified in the payload.",
        "possible_errors": [
            "multiple_account_types_selected"
        ]
    },
    {
        "name": "Validate billing address fields",
        "description": "If a legacy billing address is provided, validate that it is in the correct format.",
        "possible_errors": [
            "invalid_address"
        ]
    },
    {
        "name": "Validate customer family name",
        "description": "Validate the family name is provided for all customers on a domestic account. For Business accounts, set the family name to 'Business' if it is not provided.",
        "possible_errors": [
            "customer_family_name_required"
        ]
    },
    {
        "name": "Validate metadata",
        "description": "Validate that metadata, which is a list of key value pairs, does not contain duplicate keys.",
        "possible_errors": [
            "metadata_has_duplicate_keys"
        ]
    },
    {
        "name": "Validate unique property external identifiers",
        "description": "Ensures that <code>property_external_identifier</code> is not repeated across <code>supply_addresses</code> and <code>properties</code>.",
        "possible_errors": [
            "duplicate_property_external_identifiers"
        ]
    },
    {
        "name": "Validate managed account type is allowed",
        "description": "Validate that this instance of Kraken allows managed account types.",
        "possible_errors": [
            "managed_accounts_are_not_allowed"
        ]
    },
    {
        "name": "Validate only portfolio lead has portfolio setting",
        "description": "Validates that if portfolio settings are provided, then the account is marked as the portfolio lead.",
        "possible_errors": [
            "portfolio_settings_included_when_not_lead"
        ]
    },
    {
        "name": "Validate business type and company number not provided for domestic accounts",
        "description": "Validate that neither a business type or company number are provided for domestic accounts.",
        "possible_errors": [
            "business_fields_provided_for_domestic_accounts"
        ]
    },
    {
        "name": "Validate no customers for unknown occupier",
        "description": "Validate that no customers are provided for an unknown occupier.",
        "possible_errors": [
            "customer_with_unknown_occupier"
        ]
    },
    {
        "name": "Validate that a customer given name is provided for business accounts",
        "description": "Validate that a given name is provided for all customers on a business account. Note that this validation only applies if Kraken is configured to send registration flows for this import supplier.",
        "possible_errors": [
            "customer_given_name_required"
        ]
    },
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    },
    {
        "name": "Validate billing address style",
        "description": "Validate that a legacy billing address (<code>billing_address1</code> etc.) and new-style billing address (<code>billing_address</code> object) are not both provided.",
        "possible_errors": [
            "billing_address_new_style_and_legacy"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate supply charge line items covered by a single agreement",
        "description": "Validate each supply charge has a single agreement with matching product code that covers the period defined by it's line items minimum <code>start_date</code> to maximum <code>end_date</code>.",
        "possible_errors": [
            "supply_charge_line_items_not_covered_by_single_agreement"
        ]
    },
    {
        "name": "Validate that Kraken can calculate when to start billing the account",
        "description": "Validate that Kraken can calculate when to start billing the account. This is determined based on the existence of last billed to date, last statement closing date, and agreements.",
        "possible_errors": [
            "cannot_determine_responsible_for_billing_from_date"
        ]
    },
    {
        "name": "Validate historical statement period end must not be in the future",
        "description": "Ensures that the historical statement period end date (last_statement_closing_date or latest transaction_date) is not set in the future.",
        "possible_errors": [
            "historical_statement_period_end_in_future"
        ]
    },
    {
        "name": "Validate that terms with supply type matches a supply point supply type",
        "description": "Validate that for terms containing a <code>supply_type</code> field that there is a supply point in the payload with a matching <code>supply_type</code>.",
        "possible_errors": [
            "term_supply_type_mismatch"
        ]
    },
    {
        "name": "Validate that supply addresses and supply points are provided if account contracts are provided",
        "description": "Validate that if <code>account_contracts</code> have been provided that a supply address with supply points has been provided under <code>supply_addresses</code>",
        "possible_errors": [
            "account_contracts_without_supply_points"
        ]
    },
    {
        "name": "Validate historical statement billing document identifier presence",
        "description": "Ensure that billing document identifiers are only provided for historical statement transactions and only when the relevant feature flag is enabled.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_missing",
            "historical_statement_billing_document_identifier_not_allowed_when_feature_flag_disabled"
        ]
    },
    {
        "name": "Validate current statement transactions do not provide <code>billing_document_identifier</code>",
        "description": "Validate that none of the current statement transactions include a <code>billing_document_identifier</code>, as this field is only applicable to historical statement transactions.",
        "possible_errors": [
            "billing_document_identifier_not_allowed_for_current_statement_transactions"
        ]
    },
    {
        "name": "Validate historical statement transaction billing document identifier",
        "description": "Ensure that the billing document identifier is the same for all historical statement transactions.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_mismatch"
        ]
    },
    {
        "name": "Validate that contract terms' product codes are part of supply agreements",
        "description": "Ensure that any contract terms with product references have corresponding products in supply addresses.",
        "possible_errors": [
            "contract_term_product_code_not_in_agreements"
        ]
    },
    {
        "name": "Validate that business is provided if enforcing business contracts",
        "description": "Validate that the business field is provided if <code>enforce_business_contracts_exist</code> is set to True on the import supplier configuration.",
        "possible_errors": [
            "business_field_required"
        ]
    },
    {
        "name": "Validate agreement business contract identifier is declared",
        "description": "Validates that an agreement's <code>business_contract_identifier</code>, if provided, is one of the account's declared <code>business_contract_identifiers</code>.",
        "possible_errors": [
            "agreement_business_contract_identifier_not_declared"
        ]
    },
    {
        "name": "Validate that the sum of ledger balances equals the transfer balance",
        "description": "Validate that the sum of all <code>ledger_balance</code> provided for each ledger in <code>ledgers</code> equals the account-level <code>transfer_balance</code>.",
        "possible_errors": [
            "ledger_balances_not_equal_to_transfer_balance"
        ]
    },
    {
        "name": "Validate business user info against customer info",
        "description": "Validates that business user information matches the corresponding customer information for basic fields.",
        "possible_errors": [
            "customer_details_and_user_details_both_provided"
        ]
    },
    {
        "name": "Validate payment preference <code>ledger_identifier</code>",
        "description": "Ensure that the <code>ledger_identifier</code> provided has an equivalent <code>ledger</code> object with the same <code>ledger_identifier</code> .",
        "possible_errors": [
            "invalid_payment_preference_ledger_identifier"
        ]
    },
    {
        "name": "Validate that referenced ledgers are unique in payment preferences",
        "description": "Ensure that each ledger is referenced in at most one payment preference.",
        "possible_errors": [
            "duplicate_ledger_in_payment_preferences"
        ]
    },
    {
        "name": "Validate that valid instruction_identifier provided for <code>ACTIVE_NEW</code> payment preference",
        "description": "Ensure that <code>ACTIVE_NEW</code> payment preference has instruction_identifier from </code>payment_instructions</code> object.",
        "possible_errors": [
            "active_new_payment_preference_invalid_instruction_identifier"
        ]
    },
    {
        "name": "Validate that the transactions for a voucher do not exceed its value",
        "description": "Validate that the sum of all transaction values for a voucher is not greater than the value of the voucher.",
        "possible_errors": [
            "voucher_transactions_sum_greater_than_voucher_value"
        ]
    },
    {
        "name": "Validate that each voucher charge transaction id has a matching transaction id within a transaction of type CHARGE",
        "description": "Validate that each <code>voucher</code> <code>charge_transaction_id</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CHARGE in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_charge_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate that each voucher redemption credit transaction id has a matching transaction id within a transaction of type CREDIT",
        "description": "Validate that every <code>credit_transaction_id</code> in all <code>voucher_redemptions</code> in every <code>voucher</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CREDIT in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_redemption_credit_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate parent property references exist",
        "description": "Validates that all <code>parent_property_reference</code> values in <code>supply_addresses</code> and <code>properties</code> correspond to a <code>property_external_identifier</code> in the payload. This ensures the property hierarchy is valid.",
        "possible_errors": [
            "parent_property_reference_not_found"
        ]
    },
    {
        "name": "Validate that a portfolio lead account has no supply address since it makes no sense for it to have one",
        "description": "Validate that a portfolio lead account has no supply address.",
        "possible_errors": [
            "portfolio_lead_has_a_supply_address"
        ]
    },
    {
        "name": "Validate that a system account has no supply address",
        "description": "Validate that a system account has no supply address",
        "possible_errors": [
            "system_account_has_a_supply_address"
        ]
    },
    {
        "name": "Validate auto allocation of operations team",
        "description": "Validate that operations_team_name is provided if auto allocation is not configured.",
        "possible_errors": [
            "operations_team_provided_when_using_auto_allocation",
            "operations_team_should_be_provided"
        ]
    },
    {
        "name": "Validate ledger identifiers are known",
        "description": "Validate ledger identifiers are among supply point identifiers.",
        "possible_errors": [
            "unknown_ledger_identifiers"
        ]
    },
    {
        "name": "Validate identifiers are unique in ledgers",
        "description": "Validate identifier is not declared twice in ledgers.",
        "possible_errors": [
            "duplicate_identifiers_entries_found"
        ]
    },
    {
        "name": "Validate agreements cover last statement closing date",
        "description": "Validate that there is an agreement for each supply point covering each ledger's <code>last_statement_closing_date</code>.",
        "possible_errors": [
            "no_agreement_covering_last_statement_closing_date"
        ]
    },
    {
        "name": "Validate no unbilled period on former supply addresses",
        "description": "Validate that if a customer is no longer at the given supply address they have been fully billed. This check is performed if we are importing supply address history.",
        "possible_errors": [
            "unbilled_former_supply_address"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate that corresponding supply type exists for the account reference",
        "description": "Validate that, if a value is provided for an electricity or gas account reference namespace, a supply point of the corresponding supply type also exists.",
        "possible_errors": [
            "reference_for_invalid_supply_type"
        ]
    },
    {
        "name": "Validate that sales channel and references must either both or neither be of type <code>PRICE_COMPARISON</code>",
        "description": "Validate that if a price comparison reference is provided, the sales channel must be <code>PRICE_COMPARISON</code>, and vice versa.",
        "possible_errors": [
            "invalid_sales_channel_reference_combination"
        ]
    },
    {
        "name": "Validate that billing data is complete",
        "description": "Validate that if one required billing field is provided, the rest must also be provided. This means that if one of <code>last_statement_closing_date</code>, <code>last_statement_balance</code> (both on the relevant <code>ledger</code> object), <code>statements</code> or <code>transfer_readings</code> is provided, the rest must also be provided.",
        "possible_errors": [
            "incomplete_billing_data"
        ]
    },
    {
        "name": "Validate that the given MaLo is not on supply currently or in the future",
        "description": "Validate that the given MaLo is not on supply currently or in the future. A MaLo that is on supply could either belong to a non-migrated or a migrated account.",
        "possible_errors": [
            "duplicate_mpxn_on_supply",
            "duplicate_mpxn_on_supply_in_the_future"
        ]
    },
    {
        "name": "Validate that every supply point identifier is included in a ledger identifiers field",
        "description": "Validate that every <code>supply_point</code> <code>identifier</code> is included in a <code>ledger</code> <code>identifiers</code> list. This is needed so that the supply point can be linked to the correct ledger information.",
        "possible_errors": [
            "identifier_missing_from_ledger_identifiers"
        ]
    }
]
Old
[
    {
        "name": "Validate account type is valid",
        "description": "Validate that only one account type is specified in the payload.",
        "possible_errors": [
            "multiple_account_types_selected"
        ]
    },
    {
        "name": "Validate billing address fields",
        "description": "If a legacy billing address is provided, validate that it is in the correct format.",
        "possible_errors": [
            "invalid_address"
        ]
    },
    {
        "name": "Validate customer family name",
        "description": "Validate the family name is provided for all customers on a domestic account. For Business accounts, set the family name to 'Business' if it is not provided.",
        "possible_errors": [
            "customer_family_name_required"
        ]
    },
    {
        "name": "Validate metadata",
        "description": "Validate that metadata, which is a list of key value pairs, does not contain duplicate keys.",
        "possible_errors": [
            "metadata_has_duplicate_keys"
        ]
    },
    {
        "name": "Validate unique property external identifiers",
        "description": "Ensures that <code>property_external_identifier</code> is not repeated across <code>supply_addresses</code> and <code>properties</code>.",
        "possible_errors": [
            "duplicate_property_external_identifiers"
        ]
    },
    {
        "name": "Validate managed account type is allowed",
        "description": "Validate that this instance of Kraken allows managed account types.",
        "possible_errors": [
            "managed_accounts_are_not_allowed"
        ]
    },
    {
        "name": "Validate only portfolio lead has portfolio setting",
        "description": "Validates that if portfolio settings are provided, then the account is marked as the portfolio lead.",
        "possible_errors": [
            "portfolio_settings_included_when_not_lead"
        ]
    },
    {
        "name": "Validate business type and company number not provided for domestic accounts",
        "description": "Validate that neither a business type or company number are provided for domestic accounts.",
        "possible_errors": [
            "business_fields_provided_for_domestic_accounts"
        ]
    },
    {
        "name": "Validate no customers for unknown occupier",
        "description": "Validate that no customers are provided for an unknown occupier.",
        "possible_errors": [
            "customer_with_unknown_occupier"
        ]
    },
    {
        "name": "Validate that a customer given name is provided for business accounts",
        "description": "Validate that a given name is provided for all customers on a business account. Note that this validation only applies if Kraken is configured to send registration flows for this import supplier.",
        "possible_errors": [
            "customer_given_name_required"
        ]
    },
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    },
    {
        "name": "Validate billing address style",
        "description": "Validate that a legacy billing address (<code>billing_address1</code> etc.) and new-style billing address (<code>billing_address</code> object) are not both provided.",
        "possible_errors": [
            "billing_address_new_style_and_legacy"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate supply charge line items covered by a single agreement",
        "description": "Validate each supply charge has a single agreement with matching product code that covers the period defined by it's line items minimum <code>start_date</code> to maximum <code>end_date</code>.",
        "possible_errors": [
            "supply_charge_line_items_not_covered_by_single_agreement"
        ]
    },
    {
        "name": "Validate that Kraken can calculate when to start billing the account",
        "description": "Validate that Kraken can calculate when to start billing the account. This is determined based on the existence of last billed to date, last statement closing date, and agreements.",
        "possible_errors": [
            "cannot_determine_responsible_for_billing_from_date"
        ]
    },
    {
        "name": "Validate historical statement period end must not be in the future",
        "description": "Ensures that the historical statement period end date (last_statement_closing_date or latest transaction_date) is not set in the future.",
        "possible_errors": [
            "historical_statement_period_end_in_future"
        ]
    },
    {
        "name": "Validate that terms with supply type matches a supply point supply type",
        "description": "Validate that for terms containing a <code>supply_type</code> field that there is a supply point in the payload with a matching <code>supply_type</code>.",
        "possible_errors": [
            "term_supply_type_mismatch"
        ]
    },
    {
        "name": "Validate that supply addresses and supply points are provided if account contracts are provided",
        "description": "Validate that if <code>account_contracts</code> have been provided that a supply address with supply points has been provided under <code>supply_addresses</code>",
        "possible_errors": [
            "account_contracts_without_supply_points"
        ]
    },
    {
        "name": "Validate historical statement billing document identifier presence",
        "description": "Ensure that billing document identifiers are only provided for historical statement transactions and only when the relevant feature flag is enabled.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_missing",
            "historical_statement_billing_document_identifier_not_allowed_when_feature_flag_disabled"
        ]
    },
    {
        "name": "Validate current statement transactions do not provide <code>billing_document_identifier</code>",
        "description": "Validate that none of the current statement transactions include a <code>billing_document_identifier</code>, as this field is only applicable to historical statement transactions.",
        "possible_errors": [
            "billing_document_identifier_not_allowed_for_current_statement_transactions"
        ]
    },
    {
        "name": "Validate historical statement transaction billing document identifier",
        "description": "Ensure that the billing document identifier is the same for all historical statement transactions.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_mismatch"
        ]
    },
    {
        "name": "Validate that contract terms' product codes are part of supply agreements",
        "description": "Ensure that any contract terms with product references have corresponding products in supply addresses.",
        "possible_errors": [
            "contract_term_product_code_not_in_agreements"
        ]
    },
    {
        "name": "Validate that business is provided if enforcing business contracts",
        "description": "Validate that the business field is provided if <code>enforce_business_contracts_exist</code> is set to True on the import supplier configuration.",
        "possible_errors": [
            "business_field_required"
        ]
    },
    {
        "name": "Validate that the sum of ledger balances equals the transfer balance",
        "description": "Validate that the sum of all <code>ledger_balance</code> provided for each ledger in <code>ledgers</code> equals the account-level <code>transfer_balance</code>.",
        "possible_errors": [
            "ledger_balances_not_equal_to_transfer_balance"
        ]
    },
    {
        "name": "Validate business user info against customer info",
        "description": "Validates that business user information matches the corresponding customer information for basic fields.",
        "possible_errors": [
            "customer_details_and_user_details_both_provided"
        ]
    },
    {
        "name": "Validate payment preference <code>ledger_identifier</code>",
        "description": "Ensure that the <code>ledger_identifier</code> provided has an equivalent <code>ledger</code> object with the same <code>ledger_identifier</code> .",
        "possible_errors": [
            "invalid_payment_preference_ledger_identifier"
        ]
    },
    {
        "name": "Validate that referenced ledgers are unique in payment preferences",
        "description": "Ensure that each ledger is referenced in at most one payment preference.",
        "possible_errors": [
            "duplicate_ledger_in_payment_preferences"
        ]
    },
    {
        "name": "Validate that valid instruction_identifier provided for <code>ACTIVE_NEW</code> payment preference",
        "description": "Ensure that <code>ACTIVE_NEW</code> payment preference has instruction_identifier from </code>payment_instructions</code> object.",
        "possible_errors": [
            "active_new_payment_preference_invalid_instruction_identifier"
        ]
    },
    {
        "name": "Validate that the transactions for a voucher do not exceed its value",
        "description": "Validate that the sum of all transaction values for a voucher is not greater than the value of the voucher.",
        "possible_errors": [
            "voucher_transactions_sum_greater_than_voucher_value"
        ]
    },
    {
        "name": "Validate that each voucher charge transaction id has a matching transaction id within a transaction of type CHARGE",
        "description": "Validate that each <code>voucher</code> <code>charge_transaction_id</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CHARGE in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_charge_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate that each voucher redemption credit transaction id has a matching transaction id within a transaction of type CREDIT",
        "description": "Validate that every <code>credit_transaction_id</code> in all <code>voucher_redemptions</code> in every <code>voucher</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CREDIT in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_redemption_credit_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate parent property references exist",
        "description": "Validates that all <code>parent_property_reference</code> values in <code>supply_addresses</code> and <code>properties</code> correspond to a <code>property_external_identifier</code> in the payload. This ensures the property hierarchy is valid.",
        "possible_errors": [
            "parent_property_reference_not_found"
        ]
    },
    {
        "name": "Validate that a portfolio lead account has no supply address since it makes no sense for it to have one",
        "description": "Validate that a portfolio lead account has no supply address.",
        "possible_errors": [
            "portfolio_lead_has_a_supply_address"
        ]
    },
    {
        "name": "Validate that a system account has no supply address",
        "description": "Validate that a system account has no supply address",
        "possible_errors": [
            "system_account_has_a_supply_address"
        ]
    },
    {
        "name": "Validate auto allocation of operations team",
        "description": "Validate that operations_team_name is provided if auto allocation is not configured.",
        "possible_errors": [
            "operations_team_provided_when_using_auto_allocation",
            "operations_team_should_be_provided"
        ]
    },
    {
        "name": "Validate ledger identifiers are known",
        "description": "Validate ledger identifiers are among supply point identifiers.",
        "possible_errors": [
            "unknown_ledger_identifiers"
        ]
    },
    {
        "name": "Validate identifiers are unique in ledgers",
        "description": "Validate identifier is not declared twice in ledgers.",
        "possible_errors": [
            "duplicate_identifiers_entries_found"
        ]
    },
    {
        "name": "Validate agreements cover last statement closing date",
        "description": "Validate that there is an agreement for each supply point covering each ledger's <code>last_statement_closing_date</code>.",
        "possible_errors": [
            "no_agreement_covering_last_statement_closing_date"
        ]
    },
    {
        "name": "Validate no unbilled period on former supply addresses",
        "description": "Validate that if a customer is no longer at the given supply address they have been fully billed. This check is performed if we are importing supply address history.",
        "possible_errors": [
            "unbilled_former_supply_address"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate that corresponding supply type exists for the account reference",
        "description": "Validate that, if a value is provided for an electricity or gas account reference namespace, a supply point of the corresponding supply type also exists.",
        "possible_errors": [
            "reference_for_invalid_supply_type"
        ]
    },
    {
        "name": "Validate that sales channel and references must either both or neither be of type <code>PRICE_COMPARISON</code>",
        "description": "Validate that if a price comparison reference is provided, the sales channel must be <code>PRICE_COMPARISON</code>, and vice versa.",
        "possible_errors": [
            "invalid_sales_channel_reference_combination"
        ]
    },
    {
        "name": "Validate that billing data is complete",
        "description": "Validate that if one required billing field is provided, the rest must also be provided. This means that if one of <code>last_statement_closing_date</code>, <code>last_statement_balance</code> (both on the relevant <code>ledger</code> object), <code>statements</code> or <code>transfer_readings</code> is provided, the rest must also be provided.",
        "possible_errors": [
            "incomplete_billing_data"
        ]
    },
    {
        "name": "Validate that the given MaLo is not on supply currently or in the future",
        "description": "Validate that the given MaLo is not on supply currently or in the future. A MaLo that is on supply could either belong to a non-migrated or a migrated account.",
        "possible_errors": [
            "duplicate_mpxn_on_supply",
            "duplicate_mpxn_on_supply_in_the_future"
        ]
    },
    {
        "name": "Validate that every supply point identifier is included in a ledger identifiers field",
        "description": "Validate that every <code>supply_point</code> <code>identifier</code> is included in a <code>ledger</code> <code>identifiers</code> list. This is needed so that the supply point can be linked to the correct ledger information.",
        "possible_errors": [
            "identifier_missing_from_ledger_identifiers"
        ]
    }
]
No attributes to display
No attributes to display
New
{
    "x-enum-descriptions": {
        "CSC": "CSC",
        "N26": "N26",
        "OLD": "OLD",
        "SEA": "SEA",
        "MIVO": "MIVO",
        "MIETZ": "MIETZ",
        "RANGER": "RANGER",
        "CHECK24": "CHECK24",
        "DISPLAY": "DISPLAY",
        "EWI_APP": "EWI_APP",
        "UNISTER": "UNISTER",
        "WEBSITE": "WEBSITE",
        "DRIVANGO": "DRIVANGO",
        "AFFILIATE": "AFFILIATE",
        "ICS_ENERGIE": "ICS_ENERGIE",
        "4MOTIONS_GMBH": "4MOTIONS_GMBH",
        "AFFILIATE_SHOOP": "AFFILIATE_SHOOP",
        "WEBSITE_WINBACK": "WEBSITE_WINBACK",
        "WEBSITE_E_SPORTS": "WEBSITE_E_SPORTS",
        "AFFILIATE_PAYBACK": "AFFILIATE_PAYBACK",
        "PREISVERGLEICH_DE": "PREISVERGLEICH_DE",
        "RANGER_OHNE_BONUS": "RANGER_OHNE_BONUS",
        "REGIOCOM_INT_POST": "REGIOCOM_INT_POST",
        "VERIVOX_RETENTION": "VERIVOX_RETENTION",
        "AFFILIATE_SWITCHUP": "AFFILIATE_SWITCHUP",
        "CORPORATE_BENEFITS": "CORPORATE_BENEFITS",
        "DISPLAY_AMAZON_CLM": "DISPLAY_AMAZON_CLM",
        "WEBSITE_IAMSTUDENT": "WEBSITE_IAMSTUDENT",
        "WEBSITE_STUDDY4YOU": "WEBSITE_STUDDY4YOU",
        "AFFILIATE_REMIND_ME": "AFFILIATE_REMIND_ME",
        "WEBSITE_INBOUND_OVA": "WEBSITE_INBOUND_OVA",
        "DEUTSCHLANDCARD_GMBH": "DEUTSCHLANDCARD_GMBH",
        "ICS_ENERGIE_STANDARD": "ICS_ENERGIE_STANDARD",
        "VODAFONE_HAPPY_INCENT": "VODAFONE_HAPPY_INCENT",
        "AFFILIATE_WECHSELPILOT": "AFFILIATE_WECHSELPILOT",
        "CHECK24_AT_GRENZGEBIET": "CHECK24_AT_GRENZGEBIET",
        "CHECK24_WUNSCHPRODUKTE": "CHECK24_WUNSCHPRODUKTE",
        "REGIOCOM_INT_PDF_EMAIL": "REGIOCOM_INT_PDF_EMAIL",
        "VERIVOX_AT_GRENZGEBIET": "VERIVOX_AT_GRENZGEBIET",
        "4MOTIONS_GMBH_NON_BONUS": "4MOTIONS_GMBH_NON_BONUS",
        "AFFILIATE_GUTSCHEINCODE": "AFFILIATE_GUTSCHEINCODE",
        "AFFILIATE_MILES_AND_MORE": "AFFILIATE_MILES_AND_MORE",
        "AFFILIATE_WECHSELSERVICE": "AFFILIATE_WECHSELSERVICE",
        "ICS_ENERGIE_FOLGEPROVISION": "ICS_ENERGIE_FOLGEPROVISION",
        "REGIOCOM_TVA_CROSS_SELLING": "REGIOCOM_TVA_CROSS_SELLING",
        "AFFILIATE_COMMUNICATION_ADS": "AFFILIATE_COMMUNICATION_ADS",
        "KUBI_KUENDIGERRUECKGEWINNUNG": "KUBI_KUENDIGERRUECKGEWINNUNG",
        "REGIOCOM_INT_PDF_CO_BROWSING": "REGIOCOM_INT_PDF_CO_BROWSING",
        "SG_SD_KUENDIGERRUECKGEWINNUNG": "SG_SD_KUENDIGERRUECKGEWINNUNG",
        "SHARENOW_VERTRIEBSKOOPERATION": "SHARENOW_VERTRIEBSKOOPERATION",
        "BESTANDSKUNDEN_RETENTION_BRIEF": "BESTANDSKUNDEN_RETENTION_BRIEF",
        "INCENT_CORPORATE_SERVICES_GMBH": "INCENT_CORPORATE_SERVICES_GMBH",
        "CSC_UMZUG_MIT_NEUEN_KONDITIONEN": "CSC_UMZUG_MIT_NEUEN_KONDITIONEN",
        "REGIOCOM_TVA_NEUKUNDENABSCHLUSS": "REGIOCOM_TVA_NEUKUNDENABSCHLUSS",
        "VERIVOX_AMAZONGUTSCHEIN_NON_BONUS": "VERIVOX_AMAZONGUTSCHEIN_NON_BONUS",
        "EWI_APP_UMZUG_MIT_NEUEN_KONDITIONEN": "EWI_APP_UMZUG_MIT_NEUEN_KONDITIONEN",
        "PRODUKTWECHSEL_PRODUKTWECHSEL_BASIC": "PRODUKTWECHSEL_PRODUKTWECHSEL_BASIC",
        "RESERVIERT_VON_GENNADIY_VOLCHIK_VVL": "RESERVIERT_VON_GENNADIY_VOLCHIK_VVL",
        "BESTANDSKUNDEN_PRODUKTWECHSEL_AKTION": "BESTANDSKUNDEN_PRODUKTWECHSEL_AKTION",
        "REGIOCOM_TVA_INTERESSENT_NEUABSCHLUSS": "REGIOCOM_TVA_INTERESSENT_NEUABSCHLUSS",
        "BESTANDSKUNDEN_PRODUKTWECHSEL_KAMPAGNE": "BESTANDSKUNDEN_PRODUKTWECHSEL_KAMPAGNE",
        "BESTANDSKUNDEN_PRODUKTWECHSEL_SWITCHUP": "BESTANDSKUNDEN_PRODUKTWECHSEL_SWITCHUP",
        "BESTANDSKUNDEN_PRODUKTWECHSEL_KUBI_HIGH": "BESTANDSKUNDEN_PRODUKTWECHSEL_KUBI_HIGH",
        "PRODUKTWECHSEL_PRODUKTWECHSEL_KUBI_BASIC": "PRODUKTWECHSEL_PRODUKTWECHSEL_KUBI_BASIC",
        "REGIOCOM_TVA_UMZUG_MIT_NEUEN_KONDITIONEN": "REGIOCOM_TVA_UMZUG_MIT_NEUEN_KONDITIONEN",
        "BESTANDSKUNDEN_PRODUKTWECHSEL_KUBI_MEDIUM": "BESTANDSKUNDEN_PRODUKTWECHSEL_KUBI_MEDIUM",
        "BESTANDSKUNDEN_PRODUKTWECHSEL_WECHSELPILOT": "BESTANDSKUNDEN_PRODUKTWECHSEL_WECHSELPILOT",
        "PSO_VERTRIEBSPROGRAMME_GMBH_FREUNDE_WERBEN": "PSO_VERTRIEBSPROGRAMME_GMBH_FREUNDE_WERBEN",
        "RESERVIERT_VON_GENNADIY_VOLCHIK_PREISANPASSUNG_MCT": "RESERVIERT_VON_GENNADIY_VOLCHIK_PREISANPASSUNG_MCT",
        "PSO_VERTRIEBSPROGRAMME_GMBH_MITARBEITER_WERBEN_KUNDEN": "PSO_VERTRIEBSPROGRAMME_GMBH_MITARBEITER_WERBEN_KUNDEN",
        "REGIOCOM_TVA_UMZUG_MIT_VERPFLICHTENDER_VERTRAGSMITNAHME": "REGIOCOM_TVA_UMZUG_MIT_VERPFLICHTENDER_VERTRAGSMITNAHME",
        "EWI_APP_SORGLOSUMZUG_UMZUG_MIT_VERPFLICHTENDER_VERTRAGSMITNAHME": "EWI_APP_SORGLOSUMZUG_UMZUG_MIT_VERPFLICHTENDER_VERTRAGSMITNAHME",
        "REGIOCOM_ARCHIVIERUNG_OPT_IN_VRCS_DIENT_NICHT_ZUR_NEUKUNDENAKQUISE_NUR_ZUR_ARCHIVIERUNG_DER_OPT_IN_VRCS": "REGIOCOM_ARCHIVIERUNG_OPT_IN_VRCS_DIENT_NICHT_ZUR_NEUKUNDENAKQUISE_NUR_ZUR_ARCHIVIERUNG_DER_OPT_IN_VRCS"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "CSC": "CSC",
        "N26": "n26",
        "OLD": "old",
        "SEA": "SEA",
        "MIVO": "MIVO",
        "MIETZ": "MIETZ",
        "RANGER": "Ranger",
        "CHECK24": "check24",
        "DISPLAY": "Display",
        "EWI_APP": "EWI App",
        "UNISTER": "Unister",
        "WEBSITE": "Website",
        "DRIVANGO": "drivango",
        "AFFILIATE": "Affiliate",
        "ICS_ENERGIE": "ICS Energie",
        "4MOTIONS_GMBH": "4motions GmbH",
        "AFFILIATE_SHOOP": "Affiliate Shoop",
        "WEBSITE_WINBACK": "Website Winback",
        "WEBSITE_E_SPORTS": "Website E Sports",
        "AFFILIATE_PAYBACK": "Affiliate Payback",
        "PREISVERGLEICH_DE": "preisvergleich de",
        "RANGER_OHNE_BONUS": "Ranger ohne Bonus",
        "REGIOCOM_INT_POST": "regiocom Int Post",
        "VERIVOX_RETENTION": "Verivox Retention",
        "AFFILIATE_SWITCHUP": "Affiliate SwitchUp",
        "CORPORATE_BENEFITS": "corporate benefits",
        "DISPLAY_AMAZON_CLM": "Display amazon CLM",
        "WEBSITE_IAMSTUDENT": "Website Iamstudent",
        "WEBSITE_STUDDY4YOU": "Website studdy4you",
        "AFFILIATE_REMIND_ME": "Affiliate remind me",
        "WEBSITE_INBOUND_OVA": "Website Inbound OVA",
        "DEUTSCHLANDCARD_GMBH": "DeutschlandCard GmbH",
        "ICS_ENERGIE_STANDARD": "ICS Energie Standard",
        "VODAFONE_HAPPY_INCENT": "Vodafone Happy Incent",
        "AFFILIATE_WECHSELPILOT": "Affiliate Wechselpilot",
        "CHECK24_AT_GRENZGEBIET": "check24 AT Grenzgebiet",
        "CHECK24_WUNSCHPRODUKTE": "check24 Wunschprodukte",
        "REGIOCOM_INT_PDF_EMAIL": "regiocom Int pdf Email",
        "VERIVOX_AT_GRENZGEBIET": "Verivox AT Grenzgebiet",
        "4MOTIONS_GMBH_NON_BONUS": "4motions GmbH non Bonus",
        "AFFILIATE_GUTSCHEINCODE": "Affiliate Gutscheincode",
        "AFFILIATE_MILES_AND_MORE": "Affiliate Miles and More",
        "AFFILIATE_WECHSELSERVICE": "Affiliate Wechselservice",
        "ICS_ENERGIE_FOLGEPROVISION": "ICS Energie Folgeprovision",
        "REGIOCOM_TVA_CROSS_SELLING": "regiocom TVA Cross Selling",
        "AFFILIATE_COMMUNICATION_ADS": "Affiliate Communication Ads",
        "KUBI_KUENDIGERRUECKGEWINNUNG": "KuBi Kuendigerrueckgewinnung",
        "REGIOCOM_INT_PDF_CO_BROWSING": "regiocom Int pdf Co Browsing",
        "SG_SD_KUENDIGERRUECKGEWINNUNG": "SG SD Kuendigerrueckgewinnung",
        "SHARENOW_VERTRIEBSKOOPERATION": "ShareNow Vertriebskooperation",
        "BESTANDSKUNDEN_RETENTION_BRIEF": "Bestandskunden Retention Brief",
        "INCENT_CORPORATE_SERVICES_GMBH": "Incent Corporate Services GmbH",
        "CSC_UMZUG_MIT_NEUEN_KONDITIONEN": "CSC Umzug mit neuen Konditionen",
        "REGIOCOM_TVA_NEUKUNDENABSCHLUSS": "regiocom TVA Neukundenabschluss",
        "VERIVOX_AMAZONGUTSCHEIN_NON_BONUS": "Verivox Amazongutschein Non Bonus",
        "EWI_APP_UMZUG_MIT_NEUEN_KONDITIONEN": "EWI App Umzug mit neuen Konditionen",
        "PRODUKTWECHSEL_PRODUKTWECHSEL_BASIC": "Produktwechsel Produktwechsel Basic",
        "RESERVIERT_VON_GENNADIY_VOLCHIK_VVL": "Reserviert von Gennadiy Volchik VVL",
        "BESTANDSKUNDEN_PRODUKTWECHSEL_AKTION": "Bestandskunden Produktwechsel Aktion",
        "REGIOCOM_TVA_INTERESSENT_NEUABSCHLUSS": "regiocom TVA Interessent Neuabschluss",
        "BESTANDSKUNDEN_PRODUKTWECHSEL_KAMPAGNE": "Bestandskunden Produktwechsel Kampagne",
        "BESTANDSKUNDEN_PRODUKTWECHSEL_SWITCHUP": "Bestandskunden Produktwechsel SwitchUp",
        "BESTANDSKUNDEN_PRODUKTWECHSEL_KUBI_HIGH": "Bestandskunden Produktwechsel Kubi High",
        "PRODUKTWECHSEL_PRODUKTWECHSEL_KUBI_BASIC": "Produktwechsel Produktwechsel Kubi Basic",
        "REGIOCOM_TVA_UMZUG_MIT_NEUEN_KONDITIONEN": "regiocom TVA Umzug mit neuen Konditionen",
        "BESTANDSKUNDEN_PRODUKTWECHSEL_KUBI_MEDIUM": "Bestandskunden Produktwechsel Kubi Medium",
        "BESTANDSKUNDEN_PRODUKTWECHSEL_WECHSELPILOT": "Bestandskunden Produktwechsel WechselPilot",
        "PSO_VERTRIEBSPROGRAMME_GMBH_FREUNDE_WERBEN": "pso Vertriebsprogramme GmbH Freunde werben",
        "RESERVIERT_VON_GENNADIY_VOLCHIK_PREISANPASSUNG_MCT": "Reserviert von Gennadiy Volchik Preisanpassung MCT",
        "PSO_VERTRIEBSPROGRAMME_GMBH_MITARBEITER_WERBEN_KUNDEN": "pso Vertriebsprogramme GmbH Mitarbeiter werben Kunden",
        "REGIOCOM_TVA_UMZUG_MIT_VERPFLICHTENDER_VERTRAGSMITNAHME": "regiocom TVA Umzug mit verpflichtender Vertragsmitnahme",
        "EWI_APP_SORGLOSUMZUG_UMZUG_MIT_VERPFLICHTENDER_VERTRAGSMITNAHME": "EWI App Sorglosumzug Umzug mit verpflichtender Vertragsmitnahme",
        "REGIOCOM_ARCHIVIERUNG_OPT_IN_VRCS_DIENT_NICHT_ZUR_NEUKUNDENAKQUISE_NUR_ZUR_ARCHIVIERUNG_DER_OPT_IN_VRCS": "regiocom Archivierung Opt In VRCs dient nicht zur Neukundenakquise nur zur Archivierung der Opt In VRCs"
    }
}
Old
{
    "x-enum-descriptions": {}
}

12 June 2026

No attributes to display
No attributes to display

11 June 2026

No attributes to display

9 June 2026

New
{
    "x-enum-descriptions": {
        "EINFACH-COHORT-2": "EINFACH-COHORT-2"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "EINFACH-COHORT-2": "EINFACH-COHORT-2"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "EINFACH-COHORT-2": "EINFACH-COHORT-2"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "EINFACH-COHORT-2": "EINFACH-COHORT-2"
    }
}
Old
{
    "x-enum-descriptions": {}
}

4 June 2026

No attributes to display
No attributes to display
New
[
    {
        "name": "Validate account type is valid",
        "description": "Validate that only one account type is specified in the payload.",
        "possible_errors": [
            "multiple_account_types_selected"
        ]
    },
    {
        "name": "Validate billing address fields",
        "description": "If a legacy billing address is provided, validate that it is in the correct format.",
        "possible_errors": [
            "invalid_address"
        ]
    },
    {
        "name": "Validate customer family name",
        "description": "Validate the family name is provided for all customers on a domestic account. For Business accounts, set the family name to 'Business' if it is not provided.",
        "possible_errors": [
            "customer_family_name_required"
        ]
    },
    {
        "name": "Validate metadata",
        "description": "Validate that metadata, which is a list of key value pairs, does not contain duplicate keys.",
        "possible_errors": [
            "metadata_has_duplicate_keys"
        ]
    },
    {
        "name": "Validate unique property external identifiers",
        "description": "Ensures that <code>property_external_identifier</code> is not repeated across <code>supply_addresses</code> and <code>properties</code>.",
        "possible_errors": [
            "duplicate_property_external_identifiers"
        ]
    },
    {
        "name": "Validate managed account type is allowed",
        "description": "Validate that this instance of Kraken allows managed account types.",
        "possible_errors": [
            "managed_accounts_are_not_allowed"
        ]
    },
    {
        "name": "Validate only portfolio lead has portfolio setting",
        "description": "Validates that if portfolio settings are provided, then the account is marked as the portfolio lead.",
        "possible_errors": [
            "portfolio_settings_included_when_not_lead"
        ]
    },
    {
        "name": "Validate business type and company number not provided for domestic accounts",
        "description": "Validate that neither a business type or company number are provided for domestic accounts.",
        "possible_errors": [
            "business_fields_provided_for_domestic_accounts"
        ]
    },
    {
        "name": "Validate no customers for unknown occupier",
        "description": "Validate that no customers are provided for an unknown occupier.",
        "possible_errors": [
            "customer_with_unknown_occupier"
        ]
    },
    {
        "name": "Validate that a customer given name is provided for business accounts",
        "description": "Validate that a given name is provided for all customers on a business account. Note that this validation only applies if Kraken is configured to send registration flows for this import supplier.",
        "possible_errors": [
            "customer_given_name_required"
        ]
    },
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    },
    {
        "name": "Validate billing address style",
        "description": "Validate that a legacy billing address (<code>billing_address1</code> etc.) and new-style billing address (<code>billing_address</code> object) are not both provided.",
        "possible_errors": [
            "billing_address_new_style_and_legacy"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate supply charge line items covered by a single agreement",
        "description": "Validate each supply charge has a single agreement with matching product code that covers the period defined by it's line items minimum <code>start_date</code> to maximum <code>end_date</code>.",
        "possible_errors": [
            "supply_charge_line_items_not_covered_by_single_agreement"
        ]
    },
    {
        "name": "Validate that Kraken can calculate when to start billing the account",
        "description": "Validate that Kraken can calculate when to start billing the account. This is determined based on the existence of last billed to date, last statement closing date, and agreements.",
        "possible_errors": [
            "cannot_determine_responsible_for_billing_from_date"
        ]
    },
    {
        "name": "Validate historical statement period end must not be in the future",
        "description": "Ensures that the historical statement period end date (last_statement_closing_date or latest transaction_date) is not set in the future.",
        "possible_errors": [
            "historical_statement_period_end_in_future"
        ]
    },
    {
        "name": "Validate that terms with supply type matches a supply point supply type",
        "description": "Validate that for terms containing a <code>supply_type</code> field that there is a supply point in the payload with a matching <code>supply_type</code>.",
        "possible_errors": [
            "term_supply_type_mismatch"
        ]
    },
    {
        "name": "Validate that supply addresses and supply points are provided if account contracts are provided",
        "description": "Validate that if <code>account_contracts</code> have been provided that a supply address with supply points has been provided under <code>supply_addresses</code>",
        "possible_errors": [
            "account_contracts_without_supply_points"
        ]
    },
    {
        "name": "Validate historical statement billing document identifier presence",
        "description": "Ensure that billing document identifiers are only provided for historical statement transactions and only when the relevant feature flag is enabled.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_missing",
            "historical_statement_billing_document_identifier_not_allowed_when_feature_flag_disabled"
        ]
    },
    {
        "name": "Validate current statement transactions do not provide <code>billing_document_identifier</code>",
        "description": "Validate that none of the current statement transactions include a <code>billing_document_identifier</code>, as this field is only applicable to historical statement transactions.",
        "possible_errors": [
            "billing_document_identifier_not_allowed_for_current_statement_transactions"
        ]
    },
    {
        "name": "Validate historical statement transaction billing document identifier",
        "description": "Ensure that the billing document identifier is the same for all historical statement transactions.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_mismatch"
        ]
    },
    {
        "name": "Validate that contract terms' product codes are part of supply agreements",
        "description": "Ensure that any contract terms with product references have corresponding products in supply addresses.",
        "possible_errors": [
            "contract_term_product_code_not_in_agreements"
        ]
    },
    {
        "name": "Validate that business is provided if enforcing business contracts",
        "description": "Validate that the business field is provided if <code>enforce_business_contracts_exist</code> is set to True on the import supplier configuration.",
        "possible_errors": [
            "business_field_required"
        ]
    },
    {
        "name": "Validate that the sum of ledger balances equals the transfer balance",
        "description": "Validate that the sum of all <code>ledger_balance</code> provided for each ledger in <code>ledgers</code> equals the account-level <code>transfer_balance</code>.",
        "possible_errors": [
            "ledger_balances_not_equal_to_transfer_balance"
        ]
    },
    {
        "name": "Validate business user info against customer info",
        "description": "Validates that business user information matches the corresponding customer information for basic fields.",
        "possible_errors": [
            "customer_details_and_user_details_both_provided"
        ]
    },
    {
        "name": "Validate payment preference <code>ledger_identifier</code>",
        "description": "Ensure that the <code>ledger_identifier</code> provided has an equivalent <code>ledger</code> object with the same <code>ledger_identifier</code> .",
        "possible_errors": [
            "invalid_payment_preference_ledger_identifier"
        ]
    },
    {
        "name": "Validate that referenced ledgers are unique in payment preferences",
        "description": "Ensure that each ledger is referenced in at most one payment preference.",
        "possible_errors": [
            "duplicate_ledger_in_payment_preferences"
        ]
    },
    {
        "name": "Validate that valid instruction_identifier provided for <code>ACTIVE_NEW</code> payment preference",
        "description": "Ensure that <code>ACTIVE_NEW</code> payment preference has instruction_identifier from </code>payment_instructions</code> object.",
        "possible_errors": [
            "active_new_payment_preference_invalid_instruction_identifier"
        ]
    },
    {
        "name": "Validate that the transactions for a voucher do not exceed its value",
        "description": "Validate that the sum of all transaction values for a voucher is not greater than the value of the voucher.",
        "possible_errors": [
            "voucher_transactions_sum_greater_than_voucher_value"
        ]
    },
    {
        "name": "Validate that each voucher charge transaction id has a matching transaction id within a transaction of type CHARGE",
        "description": "Validate that each <code>voucher</code> <code>charge_transaction_id</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CHARGE in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_charge_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate that each voucher redemption credit transaction id has a matching transaction id within a transaction of type CREDIT",
        "description": "Validate that every <code>credit_transaction_id</code> in all <code>voucher_redemptions</code> in every <code>voucher</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CREDIT in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_redemption_credit_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate parent property references exist",
        "description": "Validates that all <code>parent_property_reference</code> values in <code>supply_addresses</code> and <code>properties</code> correspond to a <code>property_external_identifier</code> in the payload. This ensures the property hierarchy is valid.",
        "possible_errors": [
            "parent_property_reference_not_found"
        ]
    },
    {
        "name": "Validate that a portfolio lead account has no supply address since it makes no sense for it to have one",
        "description": "Validate that a portfolio lead account has no supply address.",
        "possible_errors": [
            "portfolio_lead_has_a_supply_address"
        ]
    },
    {
        "name": "Validate that a system account has no supply address",
        "description": "Validate that a system account has no supply address",
        "possible_errors": [
            "system_account_has_a_supply_address"
        ]
    },
    {
        "name": "Validate auto allocation of operations team",
        "description": "Validate that operations_team_name is provided if auto allocation is not configured.",
        "possible_errors": [
            "operations_team_provided_when_using_auto_allocation",
            "operations_team_should_be_provided"
        ]
    },
    {
        "name": "Validate ledger identifiers are known",
        "description": "Validate ledger identifiers are among supply point identifiers.",
        "possible_errors": [
            "unknown_ledger_identifiers"
        ]
    },
    {
        "name": "Validate identifiers are unique in ledgers",
        "description": "Validate identifier is not declared twice in ledgers.",
        "possible_errors": [
            "duplicate_identifiers_entries_found"
        ]
    },
    {
        "name": "Validate agreements cover last statement closing date",
        "description": "Validate that there is an agreement for each supply point covering each ledger's <code>last_statement_closing_date</code>.",
        "possible_errors": [
            "no_agreement_covering_last_statement_closing_date"
        ]
    },
    {
        "name": "Validate no unbilled period on former supply addresses",
        "description": "Validate that if a customer is no longer at the given supply address they have been fully billed. This check is performed if we are importing supply address history.",
        "possible_errors": [
            "unbilled_former_supply_address"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate that corresponding supply type exists for the account reference",
        "description": "Validate that, if a value is provided for an electricity or gas account reference namespace, a supply point of the corresponding supply type also exists.",
        "possible_errors": [
            "reference_for_invalid_supply_type"
        ]
    },
    {
        "name": "Validate that sales channel and references must either both or neither be of type <code>PRICE_COMPARISON</code>",
        "description": "Validate that if a price comparison reference is provided, the sales channel must be <code>PRICE_COMPARISON</code>, and vice versa.",
        "possible_errors": [
            "invalid_sales_channel_reference_combination"
        ]
    },
    {
        "name": "Validate that billing data is complete",
        "description": "Validate that if one required billing field is provided, the rest must also be provided. This means that if one of <code>last_statement_closing_date</code>, <code>last_statement_balance</code> (both on the relevant <code>ledger</code> object), <code>statements</code> or <code>transfer_readings</code> is provided, the rest must also be provided.",
        "possible_errors": [
            "incomplete_billing_data"
        ]
    },
    {
        "name": "Validate that the given MaLo is not on supply currently or in the future",
        "description": "Validate that the given MaLo is not on supply currently or in the future. A MaLo that is on supply could either belong to a non-migrated or a migrated account.",
        "possible_errors": [
            "duplicate_mpxn_on_supply",
            "duplicate_mpxn_on_supply_in_the_future"
        ]
    },
    {
        "name": "Validate that every supply point identifier is included in a ledger identifiers field",
        "description": "Validate that every <code>supply_point</code> <code>identifier</code> is included in a <code>ledger</code> <code>identifiers</code> list. This is needed so that the supply point can be linked to the correct ledger information.",
        "possible_errors": [
            "identifier_missing_from_ledger_identifiers"
        ]
    }
]
Old
[
    {
        "name": "Validate account type is valid",
        "description": "Validate that only one account type is specified in the payload.",
        "possible_errors": [
            "multiple_account_types_selected"
        ]
    },
    {
        "name": "Validate billing address fields",
        "description": "If a legacy billing address is provided, validate that it is in the correct format.",
        "possible_errors": [
            "invalid_address"
        ]
    },
    {
        "name": "Validate customer family name",
        "description": "Validate the family name is provided for all customers on a domestic account. For Business accounts, set the family name to 'Business' if it is not provided.",
        "possible_errors": [
            "customer_family_name_required"
        ]
    },
    {
        "name": "Validate metadata",
        "description": "Validate that metadata, which is a list of key value pairs, does not contain duplicate keys.",
        "possible_errors": [
            "metadata_has_duplicate_keys"
        ]
    },
    {
        "name": "Validate unique property external identifiers",
        "description": "Ensures that <code>property_external_identifier</code> is not repeated across <code>supply_addresses</code> and <code>properties</code>.",
        "possible_errors": [
            "duplicate_property_external_identifiers"
        ]
    },
    {
        "name": "Validate managed account type is allowed",
        "description": "Validate that this instance of Kraken allows managed account types.",
        "possible_errors": [
            "managed_accounts_are_not_allowed"
        ]
    },
    {
        "name": "Validate only portfolio lead has portfolio setting",
        "description": "Validates that if portfolio settings are provided, then the account is marked as the portfolio lead.",
        "possible_errors": [
            "portfolio_settings_included_when_not_lead"
        ]
    },
    {
        "name": "Validate business type and company number not provided for domestic accounts",
        "description": "Validate that neither a business type or company number are provided for domestic accounts.",
        "possible_errors": [
            "business_fields_provided_for_domestic_accounts"
        ]
    },
    {
        "name": "Validate no customers for unknown occupier",
        "description": "Validate that no customers are provided for an unknown occupier.",
        "possible_errors": [
            "customer_with_unknown_occupier"
        ]
    },
    {
        "name": "Validate that a customer given name is provided for business accounts",
        "description": "Validate that a given name is provided for all customers on a business account. Note that this validation only applies if Kraken is configured to send registration flows for this import supplier.",
        "possible_errors": [
            "customer_given_name_required"
        ]
    },
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    },
    {
        "name": "Validate billing address style",
        "description": "Validate that a legacy billing address (<code>billing_address1</code> etc.) and new-style billing address (<code>billing_address</code> object) are not both provided.",
        "possible_errors": [
            "billing_address_new_style_and_legacy"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate supply charge line items covered by a single agreement",
        "description": "Validate each supply charge has a single agreement with matching product code that covers the period defined by it's line items minimum <code>start_date</code> to maximum <code>end_date</code>.",
        "possible_errors": [
            "supply_charge_line_items_not_covered_by_single_agreement"
        ]
    },
    {
        "name": "Validate that Kraken can calculate when to start billing the account",
        "description": "Validate that Kraken can calculate when to start billing the account. This is determined based on the existence of last billed to date, last statement closing date, and agreements.",
        "possible_errors": [
            "cannot_determine_responsible_for_billing_from_date"
        ]
    },
    {
        "name": "Validate historical statement period end must not be in the future",
        "description": "Ensures that the historical statement period end date (last_statement_closing_date or latest transaction_date) is not set in the future.",
        "possible_errors": [
            "historical_statement_period_end_in_future"
        ]
    },
    {
        "name": "Validate that terms with supply type matches a supply point supply type",
        "description": "Validate that for terms containing a <code>supply_type</code> field that there is a supply point in the payload with a matching <code>supply_type</code>.",
        "possible_errors": [
            "term_supply_type_mismatch"
        ]
    },
    {
        "name": "Validate that supply addresses and supply points are provided if account contracts are provided",
        "description": "Validate that if <code>account_contracts</code> have been provided that a supply address with supply points has been provided under <code>supply_addresses</code>",
        "possible_errors": [
            "account_contracts_without_supply_points"
        ]
    },
    {
        "name": "Validate historical statement billing document identifier presence",
        "description": "Ensure that billing document identifiers are only provided for historical statement transactions and only when the relevant feature flag is enabled.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_missing",
            "historical_statement_billing_document_identifier_not_allowed_when_feature_flag_disabled"
        ]
    },
    {
        "name": "Validate current statement transactions do not provide <code>billing_document_identifier</code>",
        "description": "Validate that none of the current statement transactions include a <code>billing_document_identifier</code>, as this field is only applicable to historical statement transactions.",
        "possible_errors": [
            "billing_document_identifier_not_allowed_for_current_statement_transactions"
        ]
    },
    {
        "name": "Validate historical statement transaction billing document identifier",
        "description": "Ensure that the billing document identifier is the same for all historical statement transactions.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_mismatch"
        ]
    },
    {
        "name": "Validate that contract terms' product codes are part of supply agreements",
        "description": "Ensure that any contract terms with product references have corresponding products in supply addresses.",
        "possible_errors": [
            "contract_term_product_code_not_in_agreements"
        ]
    },
    {
        "name": "Validate that business is provided if enforcing business contracts",
        "description": "Validate that the business field is provided if <code>enforce_business_contracts_exist</code> is set to True on the import supplier configuration.",
        "possible_errors": [
            "business_field_required"
        ]
    },
    {
        "name": "Validate that the sum of ledger balances equals the transfer balance",
        "description": "Validate that the sum of all <code>ledger_balance</code> provided for each ledger in <code>ledgers</code> equals the account-level <code>transfer_balance</code>.",
        "possible_errors": [
            "ledger_balances_not_equal_to_transfer_balance"
        ]
    },
    {
        "name": "Validate business user info against customer info",
        "description": "Validates that business user information matches the corresponding customer information for basic fields.",
        "possible_errors": [
            "customer_details_and_user_details_both_provided"
        ]
    },
    {
        "name": "Validate payment preference <code>ledger_identifier</code>",
        "description": "Ensure that the <code>ledger_identifier</code> provided has an equivalent <code>ledger</code> object with the same <code>ledger_identifier</code> .",
        "possible_errors": [
            "invalid_payment_preference_ledger_identifier"
        ]
    },
    {
        "name": "Validate that referenced ledgers are unique in payment preferences",
        "description": "Ensure that each ledger is referenced in at most one payment preference.",
        "possible_errors": [
            "duplicate_ledger_in_payment_preferences"
        ]
    },
    {
        "name": "Validate that valid instruction_identifier provided for <code>ACTIVE_NEW</code> payment preference",
        "description": "Ensure that <code>ACTIVE_NEW</code> payment preference has instruction_identifier from </code>payment_instructions</code> object.",
        "possible_errors": [
            "active_new_payment_preference_invalid_instruction_identifier"
        ]
    },
    {
        "name": "Validate that the transactions for a voucher do not exceed its value",
        "description": "Validate that the sum of all transaction values for a voucher is not greater than the value of the voucher.",
        "possible_errors": [
            "voucher_transactions_sum_greater_than_voucher_value"
        ]
    },
    {
        "name": "Validate that each voucher charge transaction id has a matching transaction id within a transaction of type CHARGE",
        "description": "Validate that each <code>voucher</code> <code>charge_transaction_id</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CHARGE in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_charge_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate that each voucher redemption credit transaction id has a matching transaction id within a transaction of type CREDIT",
        "description": "Validate that every <code>credit_transaction_id</code> in all <code>voucher_redemptions</code> in every <code>voucher</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CREDIT in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_redemption_credit_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate parent property references exist",
        "description": "Validates that all <code>parent_property_reference</code> values in <code>supply_addresses</code> and <code>properties</code> correspond to a <code>property_external_identifier</code> in the payload. This ensures the property hierarchy is valid.",
        "possible_errors": [
            "parent_property_reference_not_found"
        ]
    },
    {
        "name": "Validate auto allocation of operations team",
        "description": "Validate that operations_team_name is provided if auto allocation is not configured.",
        "possible_errors": [
            "operations_team_provided_when_using_auto_allocation",
            "operations_team_should_be_provided"
        ]
    },
    {
        "name": "Validate ledger identifiers are known",
        "description": "Validate ledger identifiers are among supply point identifiers.",
        "possible_errors": [
            "unknown_ledger_identifiers"
        ]
    },
    {
        "name": "Validate identifiers are unique in ledgers",
        "description": "Validate identifier is not declared twice in ledgers.",
        "possible_errors": [
            "duplicate_identifiers_entries_found"
        ]
    },
    {
        "name": "Validate agreements cover last statement closing date",
        "description": "Validate that there is an agreement for each supply point covering each ledger's <code>last_statement_closing_date</code>.",
        "possible_errors": [
            "no_agreement_covering_last_statement_closing_date"
        ]
    },
    {
        "name": "Validate no unbilled period on former supply addresses",
        "description": "Validate that if a customer is no longer at the given supply address they have been fully billed. This check is performed if we are importing supply address history.",
        "possible_errors": [
            "unbilled_former_supply_address"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate that corresponding supply type exists for the account reference",
        "description": "Validate that, if a value is provided for an electricity or gas account reference namespace, a supply point of the corresponding supply type also exists.",
        "possible_errors": [
            "reference_for_invalid_supply_type"
        ]
    },
    {
        "name": "Validate that sales channel and references must either both or neither be of type <code>PRICE_COMPARISON</code>",
        "description": "Validate that if a price comparison reference is provided, the sales channel must be <code>PRICE_COMPARISON</code>, and vice versa.",
        "possible_errors": [
            "invalid_sales_channel_reference_combination"
        ]
    },
    {
        "name": "Validate that billing data is complete",
        "description": "Validate that if one required billing field is provided, the rest must also be provided. This means that if one of <code>last_statement_closing_date</code>, <code>last_statement_balance</code> (both on the relevant <code>ledger</code> object), <code>statements</code> or <code>transfer_readings</code> is provided, the rest must also be provided.",
        "possible_errors": [
            "incomplete_billing_data"
        ]
    },
    {
        "name": "Validate that the given MaLo is not on supply currently or in the future",
        "description": "Validate that the given MaLo is not on supply currently or in the future. A MaLo that is on supply could either belong to a non-migrated or a migrated account.",
        "possible_errors": [
            "duplicate_mpxn_on_supply",
            "duplicate_mpxn_on_supply_in_the_future"
        ]
    },
    {
        "name": "Validate that every supply point identifier is included in a ledger identifiers field",
        "description": "Validate that every <code>supply_point</code> <code>identifier</code> is included in a <code>ledger</code> <code>identifiers</code> list. This is needed so that the supply point can be linked to the correct ledger information.",
        "possible_errors": [
            "identifier_missing_from_ledger_identifiers"
        ]
    }
]
New
{
    "x-enum-descriptions": {
        "SYSTEM": "System"
    }
}
Old
{
    "x-enum-descriptions": {}
}

3 June 2026

New
{
    "x-enum-descriptions": {
        "VERIVOX": "VERIVOX"
    }
}
Old
{
    "x-enum-descriptions": {
        "DIRECT": "DIRECT"
    }
}
New
{
    "x-enum-descriptions": {
        "VERIVOX": "Verivox"
    }
}
Old
{
    "x-enum-descriptions": {
        "DIRECT": "Direct"
    }
}

29 May 2026

New
{
    "x-enum-descriptions": {
        "KULANZGUTSCHRIFT": "KULANZGUTSCHRIFT"
    }
}
Old
{
    "x-enum-descriptions": {}
}

27 May 2026

New
{
    "enum": [
        "DIRECT"
    ],
    "type": "string",
    "x-spec-enum-id": "e433db566280d926",
    "x-enum-descriptions": {
        "DIRECT": "DIRECT"
    }
}
Old
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
New
{
    "x-enum-descriptions": {
        "DIRECT": "Direct"
    }
}
Old
{
    "x-enum-descriptions": {}
}

24 May 2026

No attributes to display
No attributes to display

22 May 2026

No attributes to display
No attributes to display
New
{
    "enum": [
        "delivery_confirmation",
        "advance_payment_plan_change",
        "advance_payment_plan_update",
        "payment_reminder",
        "returned_bank_transaction",
        "installment_agreement",
        "cancellation_confirmation",
        "product_change_confirmation",
        "contract_extension",
        "price_adjustment",
        "account_information",
        "bank_details_change",
        "billing_cycle_change",
        "last_call_bonus_letter",
        "billing_information",
        "custom_letter"
    ],
    "x-spec-enum-id": "1aec63b6f0d98710",
    "x-enum-descriptions": {
        "custom_letter": "individuelle Schreiben",
        "payment_reminder": "Mahnung",
        "price_adjustment": "Preisanpassung",
        "contract_extension": "Vertragsverl\u00e4ngerung",
        "account_information": "Kontoinformation",
        "bank_details_change": "Bankdaten\u00e4nderung",
        "billing_information": "Abrechnungsinformation",
        "billing_cycle_change": "Umstellung Rechnungsturnus",
        "delivery_confirmation": "Lieferbest\u00e4tigung",
        "installment_agreement": "Ratenplanvereinbarung",
        "last_call_bonus_letter": "Last-Call-Bonusschreiben",
        "cancellation_confirmation": "K\u00fcndigungsbest\u00e4tigung",
        "returned_bank_transaction": "R\u00fcckl\u00e4ufer",
        "advance_payment_plan_change": "Abschlagsplan\u00e4nderung",
        "advance_payment_plan_update": "Abschlagsplanupdate",
        "product_change_confirmation": "Produktwechselbest\u00e4tigung"
    }
}
Old
{
    "maxLength": 225
}

21 May 2026

No attributes to display
New
[
    {
        "name": "Validate <code>\u2068supply_end_date\u2069</code> not before <code>\u2068supply_start_date\u2069</code>",
        "description": "Validates that <code>\u2068supply_end_date\u2069</code>, if given, is on or later than <code>\u2068supply_start_date\u2069</code>.",
        "possible_errors": [
            "start_date_later_than_end_date"
        ]
    },
    {
        "name": "Validate agreements do not start before supply start date",
        "description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
        "possible_errors": [
            "agreement_start_date_before_supply_start_date"
        ]
    },
    {
        "name": "Validate that exactly one active agreement is provided",
        "description": "Validate that exactly one active agreement is provided for the supply point if it is already on supply. If the <code>supply_start_date</code> is in the future or the <code>supply_end_date</code> is in the past then we do not check for an active agreement.",
        "possible_errors": [
            "exactly_one_active_agreement_required"
        ]
    },
    {
        "name": "Validate that a future agreement provided if supply start date is in the future",
        "description": "Validate that exactly one future agreement is provided if the supply start date is in the future. This future agreement must start on the supply start date.",
        "possible_errors": [
            "future_agreement_required"
        ]
    },
    {
        "name": "Validate both <code>melo_number</code> and <code>identifier</code> are provided for on supply supply points",
        "description": "Validate that both <code>melo_number</code> and <code>identifier</code> (MaLo number) are provided for supply points that are on supply or off supply but not fully billed.",
        "possible_errors": [
            "missing_data_for_on_supply_supply_point"
        ]
    },
    {
        "name": "Validate that the given MeLo is not already on supply",
        "description": "Validate that no existing MeLo with the same number is still on supply at the new account's supply start date. An existing MeLo whose supply has already ended is allowed (e.g. previous tenant churned, new tenant moves in).",
        "possible_errors": [
            "melo_already_exists"
        ]
    }
]
Old
[
    {
        "name": "Validate <code>\u2068supply_end_date\u2069</code> not before <code>\u2068supply_start_date\u2069</code>",
        "description": "Validates that <code>\u2068supply_end_date\u2069</code>, if given, is on or later than <code>\u2068supply_start_date\u2069</code>.",
        "possible_errors": [
            "start_date_later_than_end_date"
        ]
    },
    {
        "name": "Validate agreements do not start before supply start date",
        "description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
        "possible_errors": [
            "agreement_start_date_before_supply_start_date"
        ]
    },
    {
        "name": "Validate that exactly one active agreement is provided",
        "description": "Validate that exactly one active agreement is provided for the supply point if it is already on supply. If the <code>supply_start_date</code> is in the future or the <code>supply_end_date</code> is in the past then we do not check for an active agreement.",
        "possible_errors": [
            "exactly_one_active_agreement_required"
        ]
    },
    {
        "name": "Validate that a future agreement provided if supply start date is in the future",
        "description": "Validate that exactly one future agreement is provided if the supply start date is in the future. This future agreement must start on the supply start date.",
        "possible_errors": [
            "future_agreement_required"
        ]
    },
    {
        "name": "Validate both <code>melo_number</code> and <code>identifier</code> are provided for on supply supply points",
        "description": "Validate that both <code>melo_number</code> and <code>identifier</code> (MaLo number) are provided for supply points that are on supply or off supply but not fully billed.",
        "possible_errors": [
            "missing_data_for_on_supply_supply_point"
        ]
    }
]
New
{
    "x-validators": [
        {
            "name": "Validate that the MeLo number format is correct",
            "description": "Validate that the MeLo number format is correct. If it is not provided, the validation will pass as we assume it is a customer who is not currently on supply.",
            "possible_errors": [
                "invalid_melo"
            ]
        }
    ]
}
Old
{
    "x-validators": [
        {
            "name": "Validate that the MeLo number format is correct",
            "description": "Validate that the MeLo number format is correct. If it is not provided, the validation will pass as we assume it is a customer who is not currently on supply.",
            "possible_errors": [
                "invalid_melo"
            ]
        },
        {
            "name": "Validate that the given MeLo does not already exist in the DB",
            "description": "Validate that the given MeLo does not already exist in the DB. Specifically, the MeLo number should not be associated with any electricity or gas MeLos in the DB.",
            "possible_errors": [
                "melo_already_exists"
            ]
        }
    ]
}
New
[
    {
        "name": "Validate <code>\u2068supply_end_date\u2069</code> not before <code>\u2068supply_start_date\u2069</code>",
        "description": "Validates that <code>\u2068supply_end_date\u2069</code>, if given, is on or later than <code>\u2068supply_start_date\u2069</code>.",
        "possible_errors": [
            "start_date_later_than_end_date"
        ]
    },
    {
        "name": "Validate agreements do not start before supply start date",
        "description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
        "possible_errors": [
            "agreement_start_date_before_supply_start_date"
        ]
    },
    {
        "name": "Validate that exactly one active agreement is provided",
        "description": "Validate that exactly one active agreement is provided for the supply point if it is already on supply. If the <code>supply_start_date</code> is in the future or the <code>supply_end_date</code> is in the past then we do not check for an active agreement.",
        "possible_errors": [
            "exactly_one_active_agreement_required"
        ]
    },
    {
        "name": "Validate that a future agreement provided if supply start date is in the future",
        "description": "Validate that exactly one future agreement is provided if the supply start date is in the future. This future agreement must start on the supply start date.",
        "possible_errors": [
            "future_agreement_required"
        ]
    },
    {
        "name": "Validate both <code>melo_number</code> and <code>identifier</code> are provided for on supply supply points",
        "description": "Validate that both <code>melo_number</code> and <code>identifier</code> (MaLo number) are provided for supply points that are on supply or off supply but not fully billed.",
        "possible_errors": [
            "missing_data_for_on_supply_supply_point"
        ]
    },
    {
        "name": "Validate that the given MeLo is not already on supply",
        "description": "Validate that no existing MeLo with the same number is still on supply at the new account's supply start date. An existing MeLo whose supply has already ended is allowed (e.g. previous tenant churned, new tenant moves in).",
        "possible_errors": [
            "melo_already_exists"
        ]
    }
]
Old
[
    {
        "name": "Validate <code>\u2068supply_end_date\u2069</code> not before <code>\u2068supply_start_date\u2069</code>",
        "description": "Validates that <code>\u2068supply_end_date\u2069</code>, if given, is on or later than <code>\u2068supply_start_date\u2069</code>.",
        "possible_errors": [
            "start_date_later_than_end_date"
        ]
    },
    {
        "name": "Validate agreements do not start before supply start date",
        "description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
        "possible_errors": [
            "agreement_start_date_before_supply_start_date"
        ]
    },
    {
        "name": "Validate that exactly one active agreement is provided",
        "description": "Validate that exactly one active agreement is provided for the supply point if it is already on supply. If the <code>supply_start_date</code> is in the future or the <code>supply_end_date</code> is in the past then we do not check for an active agreement.",
        "possible_errors": [
            "exactly_one_active_agreement_required"
        ]
    },
    {
        "name": "Validate that a future agreement provided if supply start date is in the future",
        "description": "Validate that exactly one future agreement is provided if the supply start date is in the future. This future agreement must start on the supply start date.",
        "possible_errors": [
            "future_agreement_required"
        ]
    },
    {
        "name": "Validate both <code>melo_number</code> and <code>identifier</code> are provided for on supply supply points",
        "description": "Validate that both <code>melo_number</code> and <code>identifier</code> (MaLo number) are provided for supply points that are on supply or off supply but not fully billed.",
        "possible_errors": [
            "missing_data_for_on_supply_supply_point"
        ]
    }
]
New
{
    "x-validators": [
        {
            "name": "Validate that the MeLo number format is correct",
            "description": "Validate that the MeLo number format is correct. If it is not provided, the validation will pass as we assume it is a customer who is not currently on supply.",
            "possible_errors": [
                "invalid_melo"
            ]
        }
    ]
}
Old
{
    "x-validators": [
        {
            "name": "Validate that the MeLo number format is correct",
            "description": "Validate that the MeLo number format is correct. If it is not provided, the validation will pass as we assume it is a customer who is not currently on supply.",
            "possible_errors": [
                "invalid_melo"
            ]
        },
        {
            "name": "Validate that the given MeLo does not already exist in the DB",
            "description": "Validate that the given MeLo does not already exist in the DB. Specifically, the MeLo number should not be associated with any electricity or gas MeLos in the DB.",
            "possible_errors": [
                "melo_already_exists"
            ]
        }
    ]
}
New
[
    {
        "name": "Validate account type is valid",
        "description": "Validate that only one account type is specified in the payload.",
        "possible_errors": [
            "multiple_account_types_selected"
        ]
    },
    {
        "name": "Validate billing address fields",
        "description": "If a legacy billing address is provided, validate that it is in the correct format.",
        "possible_errors": [
            "invalid_address"
        ]
    },
    {
        "name": "Validate customer family name",
        "description": "Validate the family name is provided for all customers on a domestic account. For Business accounts, set the family name to 'Business' if it is not provided.",
        "possible_errors": [
            "customer_family_name_required"
        ]
    },
    {
        "name": "Validate metadata",
        "description": "Validate that metadata, which is a list of key value pairs, does not contain duplicate keys.",
        "possible_errors": [
            "metadata_has_duplicate_keys"
        ]
    },
    {
        "name": "Validate unique property external identifiers",
        "description": "Ensures that <code>property_external_identifier</code> is not repeated across <code>supply_addresses</code> and <code>properties</code>.",
        "possible_errors": [
            "duplicate_property_external_identifiers"
        ]
    },
    {
        "name": "Validate managed account type is allowed",
        "description": "Validate that this instance of Kraken allows managed account types.",
        "possible_errors": [
            "managed_accounts_are_not_allowed"
        ]
    },
    {
        "name": "Validate only portfolio lead has portfolio setting",
        "description": "Validates that if portfolio settings are provided, then the account is marked as the portfolio lead.",
        "possible_errors": [
            "portfolio_settings_included_when_not_lead"
        ]
    },
    {
        "name": "Validate business type and company number not provided for domestic accounts",
        "description": "Validate that neither a business type or company number are provided for domestic accounts.",
        "possible_errors": [
            "business_fields_provided_for_domestic_accounts"
        ]
    },
    {
        "name": "Validate no customers for unknown occupier",
        "description": "Validate that no customers are provided for an unknown occupier.",
        "possible_errors": [
            "customer_with_unknown_occupier"
        ]
    },
    {
        "name": "Validate that a customer given name is provided for business accounts",
        "description": "Validate that a given name is provided for all customers on a business account. Note that this validation only applies if Kraken is configured to send registration flows for this import supplier.",
        "possible_errors": [
            "customer_given_name_required"
        ]
    },
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    },
    {
        "name": "Validate billing address style",
        "description": "Validate that a legacy billing address (<code>billing_address1</code> etc.) and new-style billing address (<code>billing_address</code> object) are not both provided.",
        "possible_errors": [
            "billing_address_new_style_and_legacy"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate supply charge line items covered by a single agreement",
        "description": "Validate each supply charge has a single agreement with matching product code that covers the period defined by it's line items minimum <code>start_date</code> to maximum <code>end_date</code>.",
        "possible_errors": [
            "supply_charge_line_items_not_covered_by_single_agreement"
        ]
    },
    {
        "name": "Validate that Kraken can calculate when to start billing the account",
        "description": "Validate that Kraken can calculate when to start billing the account. This is determined based on the existence of last billed to date, last statement closing date, and agreements.",
        "possible_errors": [
            "cannot_determine_responsible_for_billing_from_date"
        ]
    },
    {
        "name": "Validate historical statement period end must not be in the future",
        "description": "Ensures that the historical statement period end date (last_statement_closing_date or latest transaction_date) is not set in the future.",
        "possible_errors": [
            "historical_statement_period_end_in_future"
        ]
    },
    {
        "name": "Validate that terms with supply type matches a supply point supply type",
        "description": "Validate that for terms containing a <code>supply_type</code> field that there is a supply point in the payload with a matching <code>supply_type</code>.",
        "possible_errors": [
            "term_supply_type_mismatch"
        ]
    },
    {
        "name": "Validate that supply addresses and supply points are provided if account contracts are provided",
        "description": "Validate that if <code>account_contracts</code> have been provided that a supply address with supply points has been provided under <code>supply_addresses</code>",
        "possible_errors": [
            "account_contracts_without_supply_points"
        ]
    },
    {
        "name": "Validate historical statement billing document identifier presence",
        "description": "Ensure that billing document identifiers are only provided for historical statement transactions and only when the relevant feature flag is enabled.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_missing",
            "historical_statement_billing_document_identifier_not_allowed_when_feature_flag_disabled"
        ]
    },
    {
        "name": "Validate current statement transactions do not provide <code>billing_document_identifier</code>",
        "description": "Validate that none of the current statement transactions include a <code>billing_document_identifier</code>, as this field is only applicable to historical statement transactions.",
        "possible_errors": [
            "billing_document_identifier_not_allowed_for_current_statement_transactions"
        ]
    },
    {
        "name": "Validate historical statement transaction billing document identifier",
        "description": "Ensure that the billing document identifier is the same for all historical statement transactions.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_mismatch"
        ]
    },
    {
        "name": "Validate that contract terms' product codes are part of supply agreements",
        "description": "Ensure that any contract terms with product references have corresponding products in supply addresses.",
        "possible_errors": [
            "contract_term_product_code_not_in_agreements"
        ]
    },
    {
        "name": "Validate that business is provided if enforcing business contracts",
        "description": "Validate that the business field is provided if <code>enforce_business_contracts_exist</code> is set to True on the import supplier configuration.",
        "possible_errors": [
            "business_field_required"
        ]
    },
    {
        "name": "Validate that the sum of ledger balances equals the transfer balance",
        "description": "Validate that the sum of all <code>ledger_balance</code> provided for each ledger in <code>ledgers</code> equals the account-level <code>transfer_balance</code>.",
        "possible_errors": [
            "ledger_balances_not_equal_to_transfer_balance"
        ]
    },
    {
        "name": "Validate business user info against customer info",
        "description": "Validates that business user information matches the corresponding customer information for basic fields.",
        "possible_errors": [
            "customer_details_and_user_details_both_provided"
        ]
    },
    {
        "name": "Validate payment preference <code>ledger_identifier</code>",
        "description": "Ensure that the <code>ledger_identifier</code> provided has an equivalent <code>ledger</code> object with the same <code>ledger_identifier</code> .",
        "possible_errors": [
            "invalid_payment_preference_ledger_identifier"
        ]
    },
    {
        "name": "Validate that referenced ledgers are unique in payment preferences",
        "description": "Ensure that each ledger is referenced in at most one payment preference.",
        "possible_errors": [
            "duplicate_ledger_in_payment_preferences"
        ]
    },
    {
        "name": "Validate that valid instruction_identifier provided for <code>ACTIVE_NEW</code> payment preference",
        "description": "Ensure that <code>ACTIVE_NEW</code> payment preference has instruction_identifier from </code>payment_instructions</code> object.",
        "possible_errors": [
            "active_new_payment_preference_invalid_instruction_identifier"
        ]
    },
    {
        "name": "Validate that the transactions for a voucher do not exceed its value",
        "description": "Validate that the sum of all transaction values for a voucher is not greater than the value of the voucher.",
        "possible_errors": [
            "voucher_transactions_sum_greater_than_voucher_value"
        ]
    },
    {
        "name": "Validate that each voucher charge transaction id has a matching transaction id within a transaction of type CHARGE",
        "description": "Validate that each <code>voucher</code> <code>charge_transaction_id</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CHARGE in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_charge_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate that each voucher redemption credit transaction id has a matching transaction id within a transaction of type CREDIT",
        "description": "Validate that every <code>credit_transaction_id</code> in all <code>voucher_redemptions</code> in every <code>voucher</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CREDIT in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_redemption_credit_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate parent property references exist",
        "description": "Validates that all <code>parent_property_reference</code> values in <code>supply_addresses</code> and <code>properties</code> correspond to a <code>property_external_identifier</code> in the payload. This ensures the property hierarchy is valid.",
        "possible_errors": [
            "parent_property_reference_not_found"
        ]
    },
    {
        "name": "Validate auto allocation of operations team",
        "description": "Validate that operations_team_name is provided if auto allocation is not configured.",
        "possible_errors": [
            "operations_team_provided_when_using_auto_allocation",
            "operations_team_should_be_provided"
        ]
    },
    {
        "name": "Validate ledger identifiers are known",
        "description": "Validate ledger identifiers are among supply point identifiers.",
        "possible_errors": [
            "unknown_ledger_identifiers"
        ]
    },
    {
        "name": "Validate identifiers are unique in ledgers",
        "description": "Validate identifier is not declared twice in ledgers.",
        "possible_errors": [
            "duplicate_identifiers_entries_found"
        ]
    },
    {
        "name": "Validate agreements cover last statement closing date",
        "description": "Validate that there is an agreement for each supply point covering each ledger's <code>last_statement_closing_date</code>.",
        "possible_errors": [
            "no_agreement_covering_last_statement_closing_date"
        ]
    },
    {
        "name": "Validate no unbilled period on former supply addresses",
        "description": "Validate that if a customer is no longer at the given supply address they have been fully billed. This check is performed if we are importing supply address history.",
        "possible_errors": [
            "unbilled_former_supply_address"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate that corresponding supply type exists for the account reference",
        "description": "Validate that, if a value is provided for an electricity or gas account reference namespace, a supply point of the corresponding supply type also exists.",
        "possible_errors": [
            "reference_for_invalid_supply_type"
        ]
    },
    {
        "name": "Validate that sales channel and references must either both or neither be of type <code>PRICE_COMPARISON</code>",
        "description": "Validate that if a price comparison reference is provided, the sales channel must be <code>PRICE_COMPARISON</code>, and vice versa.",
        "possible_errors": [
            "invalid_sales_channel_reference_combination"
        ]
    },
    {
        "name": "Validate that billing data is complete",
        "description": "Validate that if one required billing field is provided, the rest must also be provided. This means that if one of <code>last_statement_closing_date</code>, <code>last_statement_balance</code> (both on the relevant <code>ledger</code> object), <code>statements</code> or <code>transfer_readings</code> is provided, the rest must also be provided.",
        "possible_errors": [
            "incomplete_billing_data"
        ]
    },
    {
        "name": "Validate that the given MaLo is not on supply currently or in the future",
        "description": "Validate that the given MaLo is not on supply currently or in the future. A MaLo that is on supply could either belong to a non-migrated or a migrated account.",
        "possible_errors": [
            "duplicate_mpxn_on_supply",
            "duplicate_mpxn_on_supply_in_the_future"
        ]
    },
    {
        "name": "Validate that every supply point identifier is included in a ledger identifiers field",
        "description": "Validate that every <code>supply_point</code> <code>identifier</code> is included in a <code>ledger</code> <code>identifiers</code> list. This is needed so that the supply point can be linked to the correct ledger information.",
        "possible_errors": [
            "identifier_missing_from_ledger_identifiers"
        ]
    }
]
Old
[
    {
        "name": "Validate account type is valid",
        "description": "Validate that only one account type is specified in the payload.",
        "possible_errors": [
            "multiple_account_types_selected"
        ]
    },
    {
        "name": "Validate billing address fields",
        "description": "If a legacy billing address is provided, validate that it is in the correct format.",
        "possible_errors": [
            "invalid_address"
        ]
    },
    {
        "name": "Validate customer family name",
        "description": "Validate the family name is provided for all customers on a domestic account. For Business accounts, set the family name to 'Business' if it is not provided.",
        "possible_errors": [
            "customer_family_name_required"
        ]
    },
    {
        "name": "Validate metadata",
        "description": "Validate that metadata, which is a list of key value pairs, does not contain duplicate keys.",
        "possible_errors": [
            "metadata_has_duplicate_keys"
        ]
    },
    {
        "name": "Validate unique property external identifiers",
        "description": "Ensures that <code>property_external_identifier</code> is not repeated across <code>supply_addresses</code> and <code>properties</code>.",
        "possible_errors": [
            "duplicate_property_external_identifiers"
        ]
    },
    {
        "name": "Validate managed account type is allowed",
        "description": "Validate that this instance of Kraken allows managed account types.",
        "possible_errors": [
            "managed_accounts_are_not_allowed"
        ]
    },
    {
        "name": "Validate only portfolio lead has portfolio setting",
        "description": "Validates that if portfolio settings are provided, then the account is marked as the portfolio lead.",
        "possible_errors": [
            "portfolio_settings_included_when_not_lead"
        ]
    },
    {
        "name": "Validate business type and company number not provided for domestic accounts",
        "description": "Validate that neither a business type or company number are provided for domestic accounts.",
        "possible_errors": [
            "business_fields_provided_for_domestic_accounts"
        ]
    },
    {
        "name": "Validate no customers for unknown occupier",
        "description": "Validate that no customers are provided for an unknown occupier.",
        "possible_errors": [
            "customer_with_unknown_occupier"
        ]
    },
    {
        "name": "Validate that a customer given name is provided for business accounts",
        "description": "Validate that a given name is provided for all customers on a business account. Note that this validation only applies if Kraken is configured to send registration flows for this import supplier.",
        "possible_errors": [
            "customer_given_name_required"
        ]
    },
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    },
    {
        "name": "Validate billing address style",
        "description": "Validate that a legacy billing address (<code>billing_address1</code> etc.) and new-style billing address (<code>billing_address</code> object) are not both provided.",
        "possible_errors": [
            "billing_address_new_style_and_legacy"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate supply charge line items covered by a single agreement",
        "description": "Validate each supply charge has a single agreement with matching product code that covers the period defined by it's line items minimum <code>start_date</code> to maximum <code>end_date</code>.",
        "possible_errors": [
            "supply_charge_line_items_not_covered_by_single_agreement"
        ]
    },
    {
        "name": "Validate that Kraken can calculate when to start billing the account",
        "description": "Validate that Kraken can calculate when to start billing the account. This is determined based on the existence of last billed to date, last statement closing date, and agreements.",
        "possible_errors": [
            "cannot_determine_responsible_for_billing_from_date"
        ]
    },
    {
        "name": "Validate historical statement period end must not be in the future",
        "description": "Ensures that the historical statement period end date (last_statement_closing_date or latest transaction_date) is not set in the future.",
        "possible_errors": [
            "historical_statement_period_end_in_future"
        ]
    },
    {
        "name": "Validate that terms with supply type matches a supply point supply type",
        "description": "Validate that for terms containing a <code>supply_type</code> field that there is a supply point in the payload with a matching <code>supply_type</code>.",
        "possible_errors": [
            "term_supply_type_mismatch"
        ]
    },
    {
        "name": "Validate that supply addresses and supply points are provided if account contracts are provided",
        "description": "Validate that if <code>account_contracts</code> have been provided that a supply address with supply points has been provided under <code>supply_addresses</code>",
        "possible_errors": [
            "account_contracts_without_supply_points"
        ]
    },
    {
        "name": "Validate historical statement billing document identifier presence",
        "description": "Ensure that billing document identifiers are only provided for historical statement transactions and only when the relevant feature flag is enabled.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_missing",
            "historical_statement_billing_document_identifier_not_allowed_when_feature_flag_disabled"
        ]
    },
    {
        "name": "Validate current statement transactions do not provide <code>billing_document_identifier</code>",
        "description": "Validate that none of the current statement transactions include a <code>billing_document_identifier</code>, as this field is only applicable to historical statement transactions.",
        "possible_errors": [
            "billing_document_identifier_not_allowed_for_current_statement_transactions"
        ]
    },
    {
        "name": "Validate historical statement transaction billing document identifier",
        "description": "Ensure that the billing document identifier is the same for all historical statement transactions.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_mismatch"
        ]
    },
    {
        "name": "Validate that contract terms' product codes are part of supply agreements",
        "description": "Ensure that any contract terms with product references have corresponding products in supply addresses.",
        "possible_errors": [
            "contract_term_product_code_not_in_agreements"
        ]
    },
    {
        "name": "Validate that business is provided if enforcing business contracts",
        "description": "Validate that the business field is provided if <code>enforce_business_contracts_exist</code> is set to True on the import supplier configuration.",
        "possible_errors": [
            "business_field_required"
        ]
    },
    {
        "name": "Validate that the sum of ledger balances equals the transfer balance",
        "description": "Validate that the sum of all <code>ledger_balance</code> provided for each ledger in <code>ledgers</code> equals the account-level <code>transfer_balance</code>.",
        "possible_errors": [
            "ledger_balances_not_equal_to_transfer_balance"
        ]
    },
    {
        "name": "Validate business user info against customer info",
        "description": "Validates that business user information matches the corresponding customer information for basic fields.",
        "possible_errors": [
            "customer_details_and_user_details_both_provided"
        ]
    },
    {
        "name": "Validate payment preference <code>ledger_identifier</code>",
        "description": "Ensure that the <code>ledger_identifier</code> provided has an equivalent <code>ledger</code> object with the same <code>ledger_identifier</code> .",
        "possible_errors": [
            "invalid_payment_preference_ledger_identifier"
        ]
    },
    {
        "name": "Validate that referenced ledgers are unique in payment preferences",
        "description": "Ensure that each ledger is referenced in at most one payment preference.",
        "possible_errors": [
            "duplicate_ledger_in_payment_preferences"
        ]
    },
    {
        "name": "Validate that valid instruction_identifier provided for <code>ACTIVE_NEW</code> payment preference",
        "description": "Ensure that <code>ACTIVE_NEW</code> payment preference has instruction_identifier from </code>payment_instructions</code> object.",
        "possible_errors": [
            "active_new_payment_preference_invalid_instruction_identifier"
        ]
    },
    {
        "name": "Validate that the transactions for a voucher do not exceed its value",
        "description": "Validate that the sum of all transaction values for a voucher is not greater than the value of the voucher.",
        "possible_errors": [
            "voucher_transactions_sum_greater_than_voucher_value"
        ]
    },
    {
        "name": "Validate that each voucher charge transaction id has a matching transaction id within a transaction of type CHARGE",
        "description": "Validate that each <code>voucher</code> <code>charge_transaction_id</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CHARGE in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_charge_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate that each voucher redemption credit transaction id has a matching transaction id within a transaction of type CREDIT",
        "description": "Validate that every <code>credit_transaction_id</code> in all <code>voucher_redemptions</code> in every <code>voucher</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CREDIT in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_redemption_credit_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate auto allocation of operations team",
        "description": "Validate that operations_team_name is provided if auto allocation is not configured.",
        "possible_errors": [
            "operations_team_provided_when_using_auto_allocation",
            "operations_team_should_be_provided"
        ]
    },
    {
        "name": "Validate ledger identifiers are known",
        "description": "Validate ledger identifiers are among supply point identifiers.",
        "possible_errors": [
            "unknown_ledger_identifiers"
        ]
    },
    {
        "name": "Validate identifiers are unique in ledgers",
        "description": "Validate identifier is not declared twice in ledgers.",
        "possible_errors": [
            "duplicate_identifiers_entries_found"
        ]
    },
    {
        "name": "Validate agreements cover last statement closing date",
        "description": "Validate that there is an agreement for each supply point covering each ledger's <code>last_statement_closing_date</code>.",
        "possible_errors": [
            "no_agreement_covering_last_statement_closing_date"
        ]
    },
    {
        "name": "Validate no unbilled period on former supply addresses",
        "description": "Validate that if a customer is no longer at the given supply address they have been fully billed. This check is performed if we are importing supply address history.",
        "possible_errors": [
            "unbilled_former_supply_address"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate that corresponding supply type exists for the account reference",
        "description": "Validate that, if a value is provided for an electricity or gas account reference namespace, a supply point of the corresponding supply type also exists.",
        "possible_errors": [
            "reference_for_invalid_supply_type"
        ]
    },
    {
        "name": "Validate that sales channel and references must either both or neither be of type <code>PRICE_COMPARISON</code>",
        "description": "Validate that if a price comparison reference is provided, the sales channel must be <code>PRICE_COMPARISON</code>, and vice versa.",
        "possible_errors": [
            "invalid_sales_channel_reference_combination"
        ]
    },
    {
        "name": "Validate that billing data is complete",
        "description": "Validate that if one required billing field is provided, the rest must also be provided. This means that if one of <code>last_statement_closing_date</code>, <code>last_statement_balance</code> (both on the relevant <code>ledger</code> object), <code>statements</code> or <code>transfer_readings</code> is provided, the rest must also be provided.",
        "possible_errors": [
            "incomplete_billing_data"
        ]
    },
    {
        "name": "Validate that the given MaLo is not on supply currently or in the future",
        "description": "Validate that the given MaLo is not on supply currently or in the future. A MaLo that is on supply could either belong to a non-migrated or a migrated account.",
        "possible_errors": [
            "duplicate_mpxn_on_supply",
            "duplicate_mpxn_on_supply_in_the_future"
        ]
    },
    {
        "name": "Validate that every supply point identifier is included in a ledger identifiers field",
        "description": "Validate that every <code>supply_point</code> <code>identifier</code> is included in a <code>ledger</code> <code>identifiers</code> list. This is needed so that the supply point can be linked to the correct ledger information.",
        "possible_errors": [
            "identifier_missing_from_ledger_identifiers"
        ]
    }
]
Old
{
    "maxItems": 1
}

20 May 2026

New
{
    "x-validators": [
        {
            "name": "Validate S3 key does not already have a file attachment",
            "description": "Validate that the <code>s3_key</code> provided does not already have a file attachment in Kraken.",
            "possible_errors": [
                "s3_key_already_has_file_attachment"
            ]
        },
        {
            "name": "Validate path exists in file store",
            "description": "Validate that the given path corresponds to a file that has previously been uploaded to the migration file store. Note that this validation is disabled by default: get in touch with the Kraken team to check if it has been enabled for this migration.",
            "possible_errors": [
                "path_does_not_exist_in_file_store"
            ]
        }
    ]
}
Old
{
    "x-validators": [
        {
            "name": "Validate S3 key does not already have a file attachment",
            "description": "Validate that the <code>s3_key</code> provided does not already have a file attachment in Kraken.",
            "possible_errors": [
                "s3_key_already_has_file_attachment"
            ]
        }
    ]
}

19 May 2026

No attributes to display
No attributes to display
New
{
    "maxLength": 33
}
Old
{
    "maxLength": 11
}

18 May 2026

No attributes to display
New
{
    "x-enum-descriptions": {
        "EINFACH-COHORT-1": "EINFACH-COHORT-1"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "EINFACH-COHORT-1": "EINFACH-COHORT-1"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "EINFACH-COHORT-1": "EINFACH-COHORT-1"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "EINFACH-COHORT-1": "EINFACH-COHORT-1"
    }
}
Old
{
    "x-enum-descriptions": {}
}

13 May 2026

New
{
    "x-enum-descriptions": {
        "CHARGEBACK": "Chargeback"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
[
    {
        "name": "Validate account type is valid",
        "description": "Validate that only one account type is specified in the payload.",
        "possible_errors": [
            "multiple_account_types_selected"
        ]
    },
    {
        "name": "Validate billing address fields",
        "description": "If a legacy billing address is provided, validate that it is in the correct format.",
        "possible_errors": [
            "invalid_address"
        ]
    },
    {
        "name": "Validate customer family name",
        "description": "Validate the family name is provided for all customers on a domestic account. For Business accounts, set the family name to 'Business' if it is not provided.",
        "possible_errors": [
            "customer_family_name_required"
        ]
    },
    {
        "name": "Validate metadata",
        "description": "Validate that metadata, which is a list of key value pairs, does not contain duplicate keys.",
        "possible_errors": [
            "metadata_has_duplicate_keys"
        ]
    },
    {
        "name": "Validate unique property external identifiers",
        "description": "Ensures that <code>property_external_identifier</code> is not repeated across <code>supply_addresses</code> and <code>properties</code>.",
        "possible_errors": [
            "duplicate_property_external_identifiers"
        ]
    },
    {
        "name": "Validate managed account type is allowed",
        "description": "Validate that this instance of Kraken allows managed account types.",
        "possible_errors": [
            "managed_accounts_are_not_allowed"
        ]
    },
    {
        "name": "Validate only portfolio lead has portfolio setting",
        "description": "Validates that if portfolio settings are provided, then the account is marked as the portfolio lead.",
        "possible_errors": [
            "portfolio_settings_included_when_not_lead"
        ]
    },
    {
        "name": "Validate business type and company number not provided for domestic accounts",
        "description": "Validate that neither a business type or company number are provided for domestic accounts.",
        "possible_errors": [
            "business_fields_provided_for_domestic_accounts"
        ]
    },
    {
        "name": "Validate no customers for unknown occupier",
        "description": "Validate that no customers are provided for an unknown occupier.",
        "possible_errors": [
            "customer_with_unknown_occupier"
        ]
    },
    {
        "name": "Validate that a customer given name is provided for business accounts",
        "description": "Validate that a given name is provided for all customers on a business account. Note that this validation only applies if Kraken is configured to send registration flows for this import supplier.",
        "possible_errors": [
            "customer_given_name_required"
        ]
    },
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    },
    {
        "name": "Validate billing address style",
        "description": "Validate that a legacy billing address (<code>billing_address1</code> etc.) and new-style billing address (<code>billing_address</code> object) are not both provided.",
        "possible_errors": [
            "billing_address_new_style_and_legacy"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate supply charge line items covered by a single agreement",
        "description": "Validate each supply charge has a single agreement with matching product code that covers the period defined by it's line items minimum <code>start_date</code> to maximum <code>end_date</code>.",
        "possible_errors": [
            "supply_charge_line_items_not_covered_by_single_agreement"
        ]
    },
    {
        "name": "Validate that Kraken can calculate when to start billing the account",
        "description": "Validate that Kraken can calculate when to start billing the account. This is determined based on the existence of last billed to date, last statement closing date, and agreements.",
        "possible_errors": [
            "cannot_determine_responsible_for_billing_from_date"
        ]
    },
    {
        "name": "Validate historical statement period end must not be in the future",
        "description": "Ensures that the historical statement period end date (last_statement_closing_date or latest transaction_date) is not set in the future.",
        "possible_errors": [
            "historical_statement_period_end_in_future"
        ]
    },
    {
        "name": "Validate that terms with supply type matches a supply point supply type",
        "description": "Validate that for terms containing a <code>supply_type</code> field that there is a supply point in the payload with a matching <code>supply_type</code>.",
        "possible_errors": [
            "term_supply_type_mismatch"
        ]
    },
    {
        "name": "Validate that supply addresses and supply points are provided if account contracts are provided",
        "description": "Validate that if <code>account_contracts</code> have been provided that a supply address with supply points has been provided under <code>supply_addresses</code>",
        "possible_errors": [
            "account_contracts_without_supply_points"
        ]
    },
    {
        "name": "Validate historical statement billing document identifier presence",
        "description": "Ensure that billing document identifiers are only provided for historical statement transactions and only when the relevant feature flag is enabled.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_missing",
            "historical_statement_billing_document_identifier_not_allowed_when_feature_flag_disabled"
        ]
    },
    {
        "name": "Validate current statement transactions do not provide <code>billing_document_identifier</code>",
        "description": "Validate that none of the current statement transactions include a <code>billing_document_identifier</code>, as this field is only applicable to historical statement transactions.",
        "possible_errors": [
            "billing_document_identifier_not_allowed_for_current_statement_transactions"
        ]
    },
    {
        "name": "Validate historical statement transaction billing document identifier",
        "description": "Ensure that the billing document identifier is the same for all historical statement transactions.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_mismatch"
        ]
    },
    {
        "name": "Validate that contract terms' product codes are part of supply agreements",
        "description": "Ensure that any contract terms with product references have corresponding products in supply addresses.",
        "possible_errors": [
            "contract_term_product_code_not_in_agreements"
        ]
    },
    {
        "name": "Validate that business is provided if enforcing business contracts",
        "description": "Validate that the business field is provided if <code>enforce_business_contracts_exist</code> is set to True on the import supplier configuration.",
        "possible_errors": [
            "business_field_required"
        ]
    },
    {
        "name": "Validate that the sum of ledger balances equals the transfer balance",
        "description": "Validate that the sum of all <code>ledger_balance</code> provided for each ledger in <code>ledgers</code> equals the account-level <code>transfer_balance</code>.",
        "possible_errors": [
            "ledger_balances_not_equal_to_transfer_balance"
        ]
    },
    {
        "name": "Validate business user info against customer info",
        "description": "Validates that business user information matches the corresponding customer information for basic fields.",
        "possible_errors": [
            "customer_details_and_user_details_both_provided"
        ]
    },
    {
        "name": "Validate payment preference <code>ledger_identifier</code>",
        "description": "Ensure that the <code>ledger_identifier</code> provided has an equivalent <code>ledger</code> object with the same <code>ledger_identifier</code> .",
        "possible_errors": [
            "invalid_payment_preference_ledger_identifier"
        ]
    },
    {
        "name": "Validate that referenced ledgers are unique in payment preferences",
        "description": "Ensure that each ledger is referenced in at most one payment preference.",
        "possible_errors": [
            "duplicate_ledger_in_payment_preferences"
        ]
    },
    {
        "name": "Validate that valid instruction_identifier provided for <code>ACTIVE_NEW</code> payment preference",
        "description": "Ensure that <code>ACTIVE_NEW</code> payment preference has instruction_identifier from </code>payment_instructions</code> object.",
        "possible_errors": [
            "active_new_payment_preference_invalid_instruction_identifier"
        ]
    },
    {
        "name": "Validate that the transactions for a voucher do not exceed its value",
        "description": "Validate that the sum of all transaction values for a voucher is not greater than the value of the voucher.",
        "possible_errors": [
            "voucher_transactions_sum_greater_than_voucher_value"
        ]
    },
    {
        "name": "Validate that each voucher charge transaction id has a matching transaction id within a transaction of type CHARGE",
        "description": "Validate that each <code>voucher</code> <code>charge_transaction_id</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CHARGE in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_charge_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate that each voucher redemption credit transaction id has a matching transaction id within a transaction of type CREDIT",
        "description": "Validate that every <code>credit_transaction_id</code> in all <code>voucher_redemptions</code> in every <code>voucher</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CREDIT in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_redemption_credit_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate auto allocation of operations team",
        "description": "Validate that operations_team_name is provided if auto allocation is not configured.",
        "possible_errors": [
            "operations_team_provided_when_using_auto_allocation",
            "operations_team_should_be_provided"
        ]
    },
    {
        "name": "Validate ledger identifiers are known",
        "description": "Validate ledger identifiers are among supply point identifiers.",
        "possible_errors": [
            "unknown_ledger_identifiers"
        ]
    },
    {
        "name": "Validate identifiers are unique in ledgers",
        "description": "Validate identifier is not declared twice in ledgers.",
        "possible_errors": [
            "duplicate_identifiers_entries_found"
        ]
    },
    {
        "name": "Validate agreements cover last statement closing date",
        "description": "Validate that there is an agreement for each supply point covering each ledger's <code>last_statement_closing_date</code>.",
        "possible_errors": [
            "no_agreement_covering_last_statement_closing_date"
        ]
    },
    {
        "name": "Validate no unbilled period on former supply addresses",
        "description": "Validate that if a customer is no longer at the given supply address they have been fully billed. This check is performed if we are importing supply address history.",
        "possible_errors": [
            "unbilled_former_supply_address"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate that corresponding supply type exists for the account reference",
        "description": "Validate that, if a value is provided for an electricity or gas account reference namespace, a supply point of the corresponding supply type also exists.",
        "possible_errors": [
            "reference_for_invalid_supply_type"
        ]
    },
    {
        "name": "Validate that sales channel and references must either both or neither be of type <code>PRICE_COMPARISON</code>",
        "description": "Validate that if a price comparison reference is provided, the sales channel must be <code>PRICE_COMPARISON</code>, and vice versa.",
        "possible_errors": [
            "invalid_sales_channel_reference_combination"
        ]
    },
    {
        "name": "Validate that billing data is complete",
        "description": "Validate that if one required billing field is provided, the rest must also be provided. This means that if one of <code>last_statement_closing_date</code>, <code>last_statement_balance</code> (both on the relevant <code>ledger</code> object), <code>statements</code> or <code>transfer_readings</code> is provided, the rest must also be provided.",
        "possible_errors": [
            "incomplete_billing_data"
        ]
    },
    {
        "name": "Validate that the given MaLo is not on supply currently or in the future",
        "description": "Validate that the given MaLo is not on supply currently or in the future. A MaLo that is on supply could either belong to a non-migrated or a migrated account.",
        "possible_errors": [
            "duplicate_mpxn_on_supply",
            "duplicate_mpxn_on_supply_in_the_future"
        ]
    },
    {
        "name": "Validate that every supply point identifier is included in a ledger identifiers field",
        "description": "Validate that every <code>supply_point</code> <code>identifier</code> is included in a <code>ledger</code> <code>identifiers</code> list. This is needed so that the supply point can be linked to the correct ledger information.",
        "possible_errors": [
            "identifier_missing_from_ledger_identifiers"
        ]
    }
]
Old
[
    {
        "name": "Validate account type is valid",
        "description": "Validate that only one account type is specified in the payload.",
        "possible_errors": [
            "multiple_account_types_selected"
        ]
    },
    {
        "name": "Validate billing address fields",
        "description": "If a legacy billing address is provided, validate that it is in the correct format.",
        "possible_errors": [
            "invalid_address"
        ]
    },
    {
        "name": "Validate customer family name",
        "description": "Validate the family name is provided for all customers on a domestic account. For Business accounts, set the family name to 'Business' if it is not provided.",
        "possible_errors": [
            "customer_family_name_required"
        ]
    },
    {
        "name": "Validate metadata",
        "description": "Validate that metadata, which is a list of key value pairs, does not contain duplicate keys.",
        "possible_errors": [
            "metadata_has_duplicate_keys"
        ]
    },
    {
        "name": "Validate managed account type is allowed",
        "description": "Validate that this instance of Kraken allows managed account types.",
        "possible_errors": [
            "managed_accounts_are_not_allowed"
        ]
    },
    {
        "name": "Validate only portfolio lead has portfolio setting",
        "description": "Validates that if portfolio settings are provided, then the account is marked as the portfolio lead.",
        "possible_errors": [
            "portfolio_settings_included_when_not_lead"
        ]
    },
    {
        "name": "Validate business type and company number not provided for domestic accounts",
        "description": "Validate that neither a business type or company number are provided for domestic accounts.",
        "possible_errors": [
            "business_fields_provided_for_domestic_accounts"
        ]
    },
    {
        "name": "Validate no customers for unknown occupier",
        "description": "Validate that no customers are provided for an unknown occupier.",
        "possible_errors": [
            "customer_with_unknown_occupier"
        ]
    },
    {
        "name": "Validate that a customer given name is provided for business accounts",
        "description": "Validate that a given name is provided for all customers on a business account. Note that this validation only applies if Kraken is configured to send registration flows for this import supplier.",
        "possible_errors": [
            "customer_given_name_required"
        ]
    },
    {
        "name": "Validate portfolio reference provided correctly",
        "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
        "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
        ]
    },
    {
        "name": "Validate billing address style",
        "description": "Validate that a legacy billing address (<code>billing_address1</code> etc.) and new-style billing address (<code>billing_address</code> object) are not both provided.",
        "possible_errors": [
            "billing_address_new_style_and_legacy"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate supply charge line items covered by a single agreement",
        "description": "Validate each supply charge has a single agreement with matching product code that covers the period defined by it's line items minimum <code>start_date</code> to maximum <code>end_date</code>.",
        "possible_errors": [
            "supply_charge_line_items_not_covered_by_single_agreement"
        ]
    },
    {
        "name": "Validate that Kraken can calculate when to start billing the account",
        "description": "Validate that Kraken can calculate when to start billing the account. This is determined based on the existence of last billed to date, last statement closing date, and agreements.",
        "possible_errors": [
            "cannot_determine_responsible_for_billing_from_date"
        ]
    },
    {
        "name": "Validate historical statement period end must not be in the future",
        "description": "Ensures that the historical statement period end date (last_statement_closing_date or latest transaction_date) is not set in the future.",
        "possible_errors": [
            "historical_statement_period_end_in_future"
        ]
    },
    {
        "name": "Validate that terms with supply type matches a supply point supply type",
        "description": "Validate that for terms containing a <code>supply_type</code> field that there is a supply point in the payload with a matching <code>supply_type</code>.",
        "possible_errors": [
            "term_supply_type_mismatch"
        ]
    },
    {
        "name": "Validate that supply addresses and supply points are provided if account contracts are provided",
        "description": "Validate that if <code>account_contracts</code> have been provided that a supply address with supply points has been provided under <code>supply_addresses</code>",
        "possible_errors": [
            "account_contracts_without_supply_points"
        ]
    },
    {
        "name": "Validate historical statement billing document identifier presence",
        "description": "Ensure that billing document identifiers are only provided for historical statement transactions and only when the relevant feature flag is enabled.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_missing",
            "historical_statement_billing_document_identifier_not_allowed_when_feature_flag_disabled"
        ]
    },
    {
        "name": "Validate current statement transactions do not provide <code>billing_document_identifier</code>",
        "description": "Validate that none of the current statement transactions include a <code>billing_document_identifier</code>, as this field is only applicable to historical statement transactions.",
        "possible_errors": [
            "billing_document_identifier_not_allowed_for_current_statement_transactions"
        ]
    },
    {
        "name": "Validate historical statement transaction billing document identifier",
        "description": "Ensure that the billing document identifier is the same for all historical statement transactions.",
        "possible_errors": [
            "historical_statement_billing_document_identifier_mismatch"
        ]
    },
    {
        "name": "Validate that contract terms' product codes are part of supply agreements",
        "description": "Ensure that any contract terms with product references have corresponding products in supply addresses.",
        "possible_errors": [
            "contract_term_product_code_not_in_agreements"
        ]
    },
    {
        "name": "Validate that business is provided if enforcing business contracts",
        "description": "Validate that the business field is provided if <code>enforce_business_contracts_exist</code> is set to True on the import supplier configuration.",
        "possible_errors": [
            "business_field_required"
        ]
    },
    {
        "name": "Validate that the sum of ledger balances equals the transfer balance",
        "description": "Validate that the sum of all <code>ledger_balance</code> provided for each ledger in <code>ledgers</code> equals the account-level <code>transfer_balance</code>.",
        "possible_errors": [
            "ledger_balances_not_equal_to_transfer_balance"
        ]
    },
    {
        "name": "Validate business user info against customer info",
        "description": "Validates that business user information matches the corresponding customer information for basic fields.",
        "possible_errors": [
            "customer_details_and_user_details_both_provided"
        ]
    },
    {
        "name": "Validate payment preference <code>ledger_identifier</code>",
        "description": "Ensure that the <code>ledger_identifier</code> provided has an equivalent <code>ledger</code> object with the same <code>ledger_identifier</code> .",
        "possible_errors": [
            "invalid_payment_preference_ledger_identifier"
        ]
    },
    {
        "name": "Validate that referenced ledgers are unique in payment preferences",
        "description": "Ensure that each ledger is referenced in at most one payment preference.",
        "possible_errors": [
            "duplicate_ledger_in_payment_preferences"
        ]
    },
    {
        "name": "Validate that valid instruction_identifier provided for <code>ACTIVE_NEW</code> payment preference",
        "description": "Ensure that <code>ACTIVE_NEW</code> payment preference has instruction_identifier from </code>payment_instructions</code> object.",
        "possible_errors": [
            "active_new_payment_preference_invalid_instruction_identifier"
        ]
    },
    {
        "name": "Validate that the transactions for a voucher do not exceed its value",
        "description": "Validate that the sum of all transaction values for a voucher is not greater than the value of the voucher.",
        "possible_errors": [
            "voucher_transactions_sum_greater_than_voucher_value"
        ]
    },
    {
        "name": "Validate that each voucher charge transaction id has a matching transaction id within a transaction of type CHARGE",
        "description": "Validate that each <code>voucher</code> <code>charge_transaction_id</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CHARGE in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_charge_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate that each voucher redemption credit transaction id has a matching transaction id within a transaction of type CREDIT",
        "description": "Validate that every <code>credit_transaction_id</code> in all <code>voucher_redemptions</code> in every <code>voucher</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CREDIT in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
        "possible_errors": [
            "voucher_redemption_credit_transaction_id_not_found"
        ]
    },
    {
        "name": "Validate auto allocation of operations team",
        "description": "Validate that operations_team_name is provided if auto allocation is not configured.",
        "possible_errors": [
            "operations_team_provided_when_using_auto_allocation",
            "operations_team_should_be_provided"
        ]
    },
    {
        "name": "Validate ledger identifiers are known",
        "description": "Validate ledger identifiers are among supply point identifiers.",
        "possible_errors": [
            "unknown_ledger_identifiers"
        ]
    },
    {
        "name": "Validate identifiers are unique in ledgers",
        "description": "Validate identifier is not declared twice in ledgers.",
        "possible_errors": [
            "duplicate_identifiers_entries_found"
        ]
    },
    {
        "name": "Validate agreements cover last statement closing date",
        "description": "Validate that there is an agreement for each supply point covering each ledger's <code>last_statement_closing_date</code>.",
        "possible_errors": [
            "no_agreement_covering_last_statement_closing_date"
        ]
    },
    {
        "name": "Validate no unbilled period on former supply addresses",
        "description": "Validate that if a customer is no longer at the given supply address they have been fully billed. This check is performed if we are importing supply address history.",
        "possible_errors": [
            "unbilled_former_supply_address"
        ]
    },
    {
        "name": "Validate agreements are consecutive per supply point",
        "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
        "possible_errors": [
            "gaps_or_overlaps_in_agreement_dates"
        ]
    },
    {
        "name": "Validate that corresponding supply type exists for the account reference",
        "description": "Validate that, if a value is provided for an electricity or gas account reference namespace, a supply point of the corresponding supply type also exists.",
        "possible_errors": [
            "reference_for_invalid_supply_type"
        ]
    },
    {
        "name": "Validate that sales channel and references must either both or neither be of type <code>PRICE_COMPARISON</code>",
        "description": "Validate that if a price comparison reference is provided, the sales channel must be <code>PRICE_COMPARISON</code>, and vice versa.",
        "possible_errors": [
            "invalid_sales_channel_reference_combination"
        ]
    },
    {
        "name": "Validate that billing data is complete",
        "description": "Validate that if one required billing field is provided, the rest must also be provided. This means that if one of <code>last_statement_closing_date</code>, <code>last_statement_balance</code> (both on the relevant <code>ledger</code> object), <code>statements</code> or <code>transfer_readings</code> is provided, the rest must also be provided.",
        "possible_errors": [
            "incomplete_billing_data"
        ]
    },
    {
        "name": "Validate that the given MaLo is not on supply currently or in the future",
        "description": "Validate that the given MaLo is not on supply currently or in the future. A MaLo that is on supply could either belong to a non-migrated or a migrated account.",
        "possible_errors": [
            "duplicate_mpxn_on_supply",
            "duplicate_mpxn_on_supply_in_the_future"
        ]
    },
    {
        "name": "Validate that every supply point identifier is included in a ledger identifiers field",
        "description": "Validate that every <code>supply_point</code> <code>identifier</code> is included in a <code>ledger</code> <code>identifiers</code> list. This is needed so that the supply point can be linked to the correct ledger information.",
        "possible_errors": [
            "identifier_missing_from_ledger_identifiers"
        ]
    }
]

12 May 2026

New
{
    "x-enum-descriptions": {
        "de-de": "German"
    }
}
Old
{
    "x-enum-descriptions": {
        "en-us": "English (US)",
        "fr-fr": "French",
        "es-419": "Spanish (Latin America)"
    }
}

11 May 2026

New
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
Old
{
    "enum": [
        "EVENTS",
        "NEW_TENANT",
        "HIGH_REFERRER",
        "TELESALES",
        "DEFAULT_SUPPLY",
        "BROKER",
        "PARENT_POWER",
        "DEBT_COLLECTION_AGENCY",
        "PEOPLE_POWER",
        "DIRECT",
        "AGGREGATOR",
        "GIFT_OF_KIT",
        "PRICE_COMPARISON",
        "ACQUISITION",
        "DIGI_TELESALES",
        "MOVE_IN",
        "PARTNERSHIPS",
        "FIELD_SALES",
        "LANDLORD",
        "SUPPLIER_OF_LAST_RESORT",
        "WORKS_WITH_OCTOPUS",
        "WORKPLACE_POP_UP"
    ],
    "type": "string",
    "x-spec-enum-id": "1d053d2e63f68e56",
    "x-enum-descriptions": {
        "BROKER": "BROKER",
        "DIRECT": "DIRECT",
        "EVENTS": "EVENTS",
        "MOVE_IN": "MOVE_IN",
        "LANDLORD": "LANDLORD",
        "TELESALES": "TELESALES",
        "AGGREGATOR": "AGGREGATOR",
        "NEW_TENANT": "NEW_TENANT",
        "ACQUISITION": "ACQUISITION",
        "FIELD_SALES": "FIELD_SALES",
        "GIFT_OF_KIT": "GIFT_OF_KIT",
        "PARENT_POWER": "PARENT_POWER",
        "PARTNERSHIPS": "PARTNERSHIPS",
        "PEOPLE_POWER": "PEOPLE_POWER",
        "HIGH_REFERRER": "HIGH_REFERRER",
        "DEFAULT_SUPPLY": "DEFAULT_SUPPLY",
        "DIGI_TELESALES": "DIGI_TELESALES",
        "PRICE_COMPARISON": "PRICE_COMPARISON",
        "WORKPLACE_POP_UP": "WORKPLACE_POP_UP",
        "WORKS_WITH_OCTOPUS": "WORKS_WITH_OCTOPUS",
        "DEBT_COLLECTION_AGENCY": "DEBT_COLLECTION_AGENCY",
        "SUPPLIER_OF_LAST_RESORT": "SUPPLIER_OF_LAST_RESORT"
    }
}
New
{
    "x-enum-descriptions": {}
}
Old
{
    "x-enum-descriptions": {
        "BROKER": "Broker",
        "DIRECT": "Direct",
        "EVENTS": "Events",
        "MOVE_IN": "Move in",
        "LANDLORD": "Landlord",
        "TELESALES": "Telesales",
        "AGGREGATOR": "Aggregator",
        "NEW_TENANT": "New tenant",
        "ACQUISITION": "Acquisition",
        "FIELD_SALES": "Field sales",
        "GIFT_OF_KIT": "Gift of kit",
        "PARENT_POWER": "Parent power",
        "PARTNERSHIPS": "Partnerships",
        "PEOPLE_POWER": "People power",
        "HIGH_REFERRER": "High referrer",
        "DEFAULT_SUPPLY": "Default Supply",
        "DIGI_TELESALES": "Digital telesales",
        "PRICE_COMPARISON": "Price comparison",
        "WORKPLACE_POP_UP": "Workplace pop-up",
        "WORKS_WITH_OCTOPUS": "Works with octopus",
        "DEBT_COLLECTION_AGENCY": "Debt collection agency",
        "SUPPLIER_OF_LAST_RESORT": "Supplier of last resort"
    }
}
No attributes to display

8 May 2026

New
{
    "x-removal-date": "2026-05-25"
}
New
{
    "x-removal-date": "2026-05-25"
}
New
{
    "x-validators": [
        {
            "name": "Validate S3 key does not already have a file attachment",
            "description": "Validate that the <code>s3_key</code> provided does not already have a file attachment in Kraken.",
            "possible_errors": [
                "s3_key_already_has_file_attachment"
            ]
        }
    ]
}
Old
{
    "x-validators": [
        {
            "name": "Validate S3 key does not already have a file attachment",
            "description": "Validate that the <code>s3_key</code> provided does not already have a file attachment in Kraken.",
            "possible_errors": [
                "s3_key_already_has_file_attachment"
            ]
        },
        {
            "name": "Validate path exists in file store",
            "description": "Validate that the given path corresponds to a file that has previously been uploaded to the migration file store. Note that this validation is disabled by default: get in touch with the Kraken team to check if it has been enabled for this migration.",
            "possible_errors": [
                "path_does_not_exist_in_file_store"
            ]
        }
    ]
}

7 May 2026

No attributes to display
New
{
    "x-enum-descriptions": {
        "active_collection_process": "Active Collection Process"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "Active Collection Process": "Active Collection Process"
    }
}
Old
{
    "x-enum-descriptions": {}
}
No attributes to display
No attributes to display

6 May 2026

No attributes to display
No attributes to display

5 May 2026

No attributes to display

4 May 2026

New
{
    "x-enum-descriptions": {}
}
Old
{
    "x-enum-descriptions": {
        "METERING_JOB_SMS": "METERING_JOB_SMS",
        "METERING_JOB_BUSINESS": "METERING_JOB_BUSINESS",
        "SOLR_BALANCE_TRANSFER": "SOLR_BALANCE_TRANSFER",
        "PREPAY_DEBT_ADJUSTMENT": "PREPAY_DEBT_ADJUSTMENT",
        "BUSINESS_ADVANCE_PAYMENT": "BUSINESS_ADVANCE_PAYMENT",
        "NEST_LEARNING_THERMOSTAT_RENTAL": "NEST_LEARNING_THERMOSTAT_RENTAL"
    }
}
New
{
    "x-enum-descriptions": {
        "communication-profile.pa-via-post": "Aus dem Kommunikationsprofil, falls der Kunde es bevorzugten Preisanpassungen per Post zu erhalten.",
        "communication-profile.pa-via-email": "Aus dem Kommunikationsprofil, falls der Kunde es bevorzugten Preisanpassungen per Email zu erhalten.",
        "communication-profile.all-comms-via-post": "Aus dem Kommunikationsprofil, falls der Kunde Post als bevorzugten Kanal f\u00fcr jegliche Kommunikation gew\u00e4hlt hat, ink. Rechnungen.",
        "communication-profile.all-comms-via-email": "Aus dem Kommunikationsprofil, falls der Kunde Email als bevorzugten Kanal f\u00fcr jegliche Kommunikation gew\u00e4hlt hat, ink. Rechnungen.",
        "communication-profile.meter-reading-via-post": "Aus dem Kommunikationsprofil, falls der Kunde es bevorzugten Z\u00e4hlerst\u00e4nde per Post einzureichen.",
        "communication-profile.meter-reading-via-email": "Aus dem Kommunikationsprofil, falls der Kunde es bevorzugten Z\u00e4hlerst\u00e4nde per Email einzureichen."
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "communication-profile.pa-via-post": "Aus dem Kommunikationsprofil, falls der Kunde es bevorzugten Preisanpassungen per Post zu erhalten.",
        "communication-profile.pa-via-email": "Aus dem Kommunikationsprofil, falls der Kunde es bevorzugten Preisanpassungen per Email zu erhalten.",
        "communication-profile.all-comms-via-post": "Aus dem Kommunikationsprofil, falls der Kunde Post als bevorzugten Kanal f\u00fcr jegliche Kommunikation gew\u00e4hlt hat, ink. Rechnungen.",
        "communication-profile.all-comms-via-email": "Aus dem Kommunikationsprofil, falls der Kunde Email als bevorzugten Kanal f\u00fcr jegliche Kommunikation gew\u00e4hlt hat, ink. Rechnungen.",
        "communication-profile.meter-reading-via-post": "Aus dem Kommunikationsprofil, falls der Kunde es bevorzugten Z\u00e4hlerst\u00e4nde per Post einzureichen.",
        "communication-profile.meter-reading-via-email": "Aus dem Kommunikationsprofil, falls der Kunde es bevorzugten Z\u00e4hlerst\u00e4nde per Email einzureichen."
    }
}
Old
{
    "x-enum-descriptions": {}
}

29 April 2026

New
{
    "x-enum-descriptions": {}
}
Old
{
    "x-enum-descriptions": {
        "test-cl": "Testing Customer Lifecycle"
    }
}
New
{
    "x-enum-descriptions": {}
}
Old
{
    "x-enum-descriptions": {
        "Testing Customer Lifecycle": "Testing Customer Lifecycle"
    }
}
No attributes to display
No attributes to display

28 April 2026

No attributes to display
No attributes to display

27 April 2026

New
{
    "x-enum-descriptions": {
        "cl_tests": "Customer Lifecycle Usecases",
        "ops_tests": "Operations Usecases",
        "flex_tests": "Flex Usecases",
        "comms_tests": "Communication Usecases",
        "billing_tests": "Finance - Billing Usecases",
        "payment_tests": "Finance - Payment Usecases",
        "market_usecases": "Market Usecases",
        "commercials_tests": "Commercials Usecases"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "Flex Usecases": "Flex Usecases",
        "Market Usecases": "Market Usecases",
        "Operations Usecases": "Operations Usecases",
        "Commercials Usecases": "Commercials Usecases",
        "Communication Usecases": "Communication Usecases",
        "Finance - Billing Usecases": "Finance - Billing Usecases",
        "Finance - Payment Usecases": "Finance - Payment Usecases",
        "Customer Lifecycle Usecases": "Customer Lifecycle Usecases"
    }
}
Old
{
    "x-enum-descriptions": {}
}
No attributes to display
No attributes to display

20 April 2026

New
{
    "enum": [
        "GOCARDLESS"
    ],
    "type": "string",
    "x-spec-enum-id": "b9083884a967dd4f",
    "x-enum-descriptions": {
        "GOCARDLESS": "GoCardless"
    }
}
Old
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
New
{
    "enum": [
        "GOCARDLESS"
    ],
    "type": "string",
    "x-spec-enum-id": "b9083884a967dd4f",
    "x-enum-descriptions": {
        "GOCARDLESS": "GoCardless"
    }
}
Old
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
New
{
    "x-removal-date": "2026-05-20"
}
New
{
    "x-removal-date": "2026-05-20"
}
Old
{
    "nullable": true
}

17 April 2026

No attributes to display
No attributes to display

15 April 2026

New
{
    "items": {
        "x-enum-descriptions": {
            "VERTRAGSPARTNER": "VERTRAGSPARTNER"
        }
    }
}
Old
{
    "items": {
        "x-enum-descriptions": {}
    }
}
New
{
    "items": {
        "x-enum-descriptions": {
            "VERTRAGSPARTNER": "VERTRAGSPARTNER"
        }
    }
}
Old
{
    "items": {
        "x-enum-descriptions": {}
    }
}
New
{
    "x-enum-descriptions": {
        "VERTRAGSPARTNER": "VERTRAGSPARTNER"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "items": {
        "x-enum-descriptions": {
            "VERTRAGSPARTNER": "VERTRAGSPARTNER"
        }
    }
}
Old
{
    "items": {
        "x-enum-descriptions": {}
    }
}
New
{
    "items": {
        "x-enum-descriptions": {
            "CARER": "CARER",
            "DEBT_RECIPIENT": "DEBT_RECIPIENT",
            "BILLING_RECIPIENT": "BILLING_RECIPIENT"
        }
    }
}
Old
{
    "items": {
        "x-enum-descriptions": {}
    }
}
New
{
    "items": {
        "x-enum-descriptions": {
            "CARER": "CARER",
            "DEBT_RECIPIENT": "DEBT_RECIPIENT",
            "BILLING_RECIPIENT": "BILLING_RECIPIENT"
        }
    }
}
Old
{
    "items": {
        "x-enum-descriptions": {}
    }
}
New
{
    "x-enum-descriptions": {
        "CARER": "CARER",
        "DEBT_RECIPIENT": "DEBT_RECIPIENT",
        "BILLING_RECIPIENT": "BILLING_RECIPIENT"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "items": {
        "x-enum-descriptions": {
            "CARER": "CARER",
            "DEBT_RECIPIENT": "DEBT_RECIPIENT",
            "BILLING_RECIPIENT": "BILLING_RECIPIENT"
        }
    }
}
Old
{
    "items": {
        "x-enum-descriptions": {}
    }
}
New
{
    "x-enum-descriptions": {
        "test-cl": "Testing Customer Lifecycle"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "Testing Customer Lifecycle": "Testing Customer Lifecycle"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "MSB_CREDIT": "MSB_CREDIT"
    }
}
Old
{
    "x-enum-descriptions": {}
}

14 April 2026

New
{
    "x-enum-descriptions": {
        "customersatisfaction.call": "\"Dar\u00fcber hinaus, willige ich ein, dass die E WIE EINFACH GmbH mich zu meiner Zufriedenheit mit ihren Leistungen bis zu meinem Widerruf befragt. Per Telefon\"",
        "customersatisfaction.postal": "Kein Opt-In-Text notwendig. Automatisches Opt-In, welches bei Vertragsabschluss auf \"Accepted\" gesetzt wird. Kunde kann per Anfrage (z.B. E-Mail) Status aber jederzeit auf \"Rejected\" setzen, indem er es aktiv entzieht."
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "customersatisfaction.call": "\"Dar\u00fcber hinaus, willige ich ein, dass die E WIE EINFACH GmbH mich zu meiner Zufriedenheit mit ihren Leistungen bis zu meinem Widerruf befragt. Per Telefon\"",
        "customersatisfaction.postal": "Kein Opt-In-Text notwendig. Automatisches Opt-In, welches bei Vertragsabschluss auf \"Accepted\" gesetzt wird. Kunde kann per Anfrage (z.B. E-Mail) Status aber jederzeit auf \"Rejected\" setzen, indem er es aktiv entzieht."
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "commercial.call": "\"Ich willige ein, dass mich die E WIE EINFACH GmbH zu Werbezwecken f\u00fcr Energie-, Unternehmens- und Haushaltsl\u00f6sungen sowie Vorteilsangebote (z. B. Strom, Erdgas, intelligente Z\u00e4hler sowie Energieliefervertr\u00e4gen (Strom, Gas) mit Bundleprodukt aus den Bereichen Streaming, Haushaltselektronik, Fitness, Mobilit\u00e4tsdienstleistungen) bis zu meinem Widerruf kontaktiert. Per Telefon\"",
        "softoptin.email": "\"Wir nutzen deine E-Mail Adresse auch, um Dir Informationen \u00fcber eigene \u00e4hnliche Produkte und Services zukommen zu lassen. Du kannst dieser werblichen Nutzung jederzeit widersprechen, z.B. per E-Mail, Brief, Telefon, oder Fax (siehe Adressangaben in den AGB). Es entstehen hierf\u00fcr keine anderen Kosten, au\u00dfer den \u00dcbermittlungskosten nach den Basistarifen.\"",
        "commercial.postal": "Kein Opt-In-Text notwendig. Automatisches Opt-In, welches bei Vertragsabschluss auf \"Accepted\" gesetzt wird. Kunde kann per Anfrage (z.B. E-Mail) Status aber jederzeit auf \"Rejected\" setzen, indem er es aktiv entzieht.",
        "commercial.electronic-doi": "\"Ich willige ein, dass mich die E WIE EINFACH GmbH zu Werbezwecken f\u00fcr Energie-, Unternehmens- und Haushaltsl\u00f6sungen sowie Vorteilsangebote (z. B. Strom, Erdgas, intelligente Z\u00e4hler sowie Energieliefervertr\u00e4gen (Strom, Gas) mit Bundleprodukt aus den Bereichen Streaming, Haushaltselektronik, Fitness, Mobilit\u00e4tsdienstleistungen) bis zu meinem Widerruf kontaktiert. Per elektronischer Post (z.B. E-Mail)\"",
        "customersatisfaction.electronic-doi": "\"Dar\u00fcber hinaus, willige ich ein, dass die E WIE EINFACH GmbH mich zu meiner Zufriedenheit mit ihren Leistungen bis zu meinem Widerruf befragt. Per elektronischer Post (z.B. E-Mail)\""
    }
}
Old
{
    "x-enum-descriptions": {
        "marketing.consent-electronic": "Kraken",
        "commercial.consent-electronic": "ISU"
    }
}
New
{
    "x-enum-descriptions": {
        "commercial.call": "\"Ich willige ein, dass mich die E WIE EINFACH GmbH zu Werbezwecken f\u00fcr Energie-, Unternehmens- und Haushaltsl\u00f6sungen sowie Vorteilsangebote (z. B. Strom, Erdgas, intelligente Z\u00e4hler sowie Energieliefervertr\u00e4gen (Strom, Gas) mit Bundleprodukt aus den Bereichen Streaming, Haushaltselektronik, Fitness, Mobilit\u00e4tsdienstleistungen) bis zu meinem Widerruf kontaktiert. Per Telefon\"",
        "softoptin.email": "\"Wir nutzen deine E-Mail Adresse auch, um Dir Informationen \u00fcber eigene \u00e4hnliche Produkte und Services zukommen zu lassen. Du kannst dieser werblichen Nutzung jederzeit widersprechen, z.B. per E-Mail, Brief, Telefon, oder Fax (siehe Adressangaben in den AGB). Es entstehen hierf\u00fcr keine anderen Kosten, au\u00dfer den \u00dcbermittlungskosten nach den Basistarifen.\"",
        "commercial.postal": "Kein Opt-In-Text notwendig. Automatisches Opt-In, welches bei Vertragsabschluss auf \"Accepted\" gesetzt wird. Kunde kann per Anfrage (z.B. E-Mail) Status aber jederzeit auf \"Rejected\" setzen, indem er es aktiv entzieht.",
        "commercial.electronic-doi": "\"Ich willige ein, dass mich die E WIE EINFACH GmbH zu Werbezwecken f\u00fcr Energie-, Unternehmens- und Haushaltsl\u00f6sungen sowie Vorteilsangebote (z. B. Strom, Erdgas, intelligente Z\u00e4hler sowie Energieliefervertr\u00e4gen (Strom, Gas) mit Bundleprodukt aus den Bereichen Streaming, Haushaltselektronik, Fitness, Mobilit\u00e4tsdienstleistungen) bis zu meinem Widerruf kontaktiert. Per elektronischer Post (z.B. E-Mail)\"",
        "customersatisfaction.electronic-doi": "\"Dar\u00fcber hinaus, willige ich ein, dass die E WIE EINFACH GmbH mich zu meiner Zufriedenheit mit ihren Leistungen bis zu meinem Widerruf befragt. Per elektronischer Post (z.B. E-Mail)\""
    }
}
Old
{
    "x-enum-descriptions": {
        "marketing.consent-electronic": "Kraken",
        "commercial.consent-electronic": "ISU"
    }
}
New
{
    "x-enum-descriptions": {
        "marketing.consent-electronic": "Kraken",
        "commercial.consent-electronic": "ISU"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "marketing.consent-electronic": "Kraken",
        "commercial.consent-electronic": "ISU"
    }
}
Old
{
    "x-enum-descriptions": {}
}

13 April 2026

New
{
    "x-enum-descriptions": {}
}
Old
{
    "x-enum-descriptions": {
        "OPT_MKT_CALL": "Call Marketing (Kraken)",
        "OPT_MKT_ELEC": "Elektronisch Marketing (Kraken)",
        "OPT_MKT_POST": "Post Marketing (Kraken)",
        "OPT_CSAT_POST": "Post Einwilligung Kundenzufriedenheit (ISU)",
        "OPT_SOFT_EMAIL": "Bestandskundenprivileg E-Mail (ISU / Kraken)"
    }
}
New
{
    "x-enum-descriptions": {}
}
Old
{
    "x-enum-descriptions": {
        "OPT_MKT_CALL": "Call Marketing (Kraken)",
        "OPT_MKT_ELEC": "Elektronisch Marketing (Kraken)",
        "OPT_MKT_POST": "Post Marketing (Kraken)",
        "OPT_CSAT_POST": "Post Einwilligung Kundenzufriedenheit (ISU)",
        "OPT_SOFT_EMAIL": "Bestandskundenprivileg E-Mail (ISU / Kraken)"
    }
}
New
{
    "x-enum-descriptions": {}
}
Old
{
    "x-enum-descriptions": {
        "OPT_COM_CALL": "Telefonie Werbeeinwilligung (ISU)",
        "OPT_COM_ELEC": "Elektronisch Werbeeinwilligung (ISU)",
        "OPT_COM_POST": "Post Werbeeinwilligung (ISU)",
        "OPT_CSAT_CALL": "Telefonie Einwilligung Kundenzufriedenheit (ISU)",
        "OPT_CSAT_ELEC": "Elektronisch Einwilligung Kundenzufriedenheit (ISU)"
    }
}
New
{
    "x-enum-descriptions": {}
}
Old
{
    "x-enum-descriptions": {
        "OPT_COM_CALL": "Telefonie Werbeeinwilligung (ISU)",
        "OPT_COM_ELEC": "Elektronisch Werbeeinwilligung (ISU)",
        "OPT_COM_POST": "Post Werbeeinwilligung (ISU)",
        "OPT_CSAT_CALL": "Telefonie Einwilligung Kundenzufriedenheit (ISU)",
        "OPT_CSAT_ELEC": "Elektronisch Einwilligung Kundenzufriedenheit (ISU)"
    }
}

10 April 2026

New
{
    "ZIP_CODE": "#/components/schemas/ZipCodeCharacteristic",
    "CONSUMPTION_BANDS": "#/components/schemas/ConsumptionBandsCharacteristic",
    "NB_ASSOCIATION_NUMBER": "#/components/schemas/NbAssociationNumberCharacteristic",
    "POINT_OF_COMMON_COUPLING": "#/components/schemas/PointOfCommonCouplingCharacteristic"
}
New
[
    {
        "$ref": "#/components/schemas/ZipCodeCharacteristic"
    },
    {
        "$ref": "#/components/schemas/PointOfCommonCouplingCharacteristic"
    },
    {
        "$ref": "#/components/schemas/ConsumptionBandsCharacteristic"
    },
    {
        "$ref": "#/components/schemas/SalesChannelCharacteristic"
    },
    {
        "$ref": "#/components/schemas/NbAssociationNumberCharacteristic"
    }
]
Old
[
    {
        "$ref": "#/components/schemas/SalesChannelCharacteristic"
    }
]

9 April 2026

New
{
    "x-enum-descriptions": {
        "POLE": "Pole",
        "LIGHT": "Light"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "POLE": "Pole",
        "LIGHT": "Light"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "OPT_COM_CALL": "Telefonie Werbeeinwilligung (ISU)",
        "OPT_COM_ELEC": "Elektronisch Werbeeinwilligung (ISU)",
        "OPT_COM_POST": "Post Werbeeinwilligung (ISU)",
        "OPT_MKT_CALL": "Call Marketing (Kraken)",
        "OPT_MKT_ELEC": "Elektronisch Marketing (Kraken)",
        "OPT_MKT_POST": "Post Marketing (Kraken)",
        "OPT_CSAT_CALL": "Telefonie Einwilligung Kundenzufriedenheit (ISU)",
        "OPT_CSAT_ELEC": "Elektronisch Einwilligung Kundenzufriedenheit (ISU)",
        "OPT_CSAT_POST": "Post Einwilligung Kundenzufriedenheit (ISU)",
        "OPT_SOFT_EMAIL": "Bestandskundenprivileg E-Mail (ISU / Kraken)"
    }
}
Old
{
    "x-enum-descriptions": {
        "marketing.general-consent-electronic": "Werbeeinwilligung (elektronisch)"
    }
}
New
{
    "x-enum-descriptions": {
        "OPT_COM_CALL": "Telefonie Werbeeinwilligung (ISU)",
        "OPT_COM_ELEC": "Elektronisch Werbeeinwilligung (ISU)",
        "OPT_COM_POST": "Post Werbeeinwilligung (ISU)",
        "OPT_MKT_CALL": "Call Marketing (Kraken)",
        "OPT_MKT_ELEC": "Elektronisch Marketing (Kraken)",
        "OPT_MKT_POST": "Post Marketing (Kraken)",
        "OPT_CSAT_CALL": "Telefonie Einwilligung Kundenzufriedenheit (ISU)",
        "OPT_CSAT_ELEC": "Elektronisch Einwilligung Kundenzufriedenheit (ISU)",
        "OPT_CSAT_POST": "Post Einwilligung Kundenzufriedenheit (ISU)",
        "OPT_SOFT_EMAIL": "Bestandskundenprivileg E-Mail (ISU / Kraken)"
    }
}
Old
{
    "x-enum-descriptions": {
        "marketing.general-consent-electronic": "Werbeeinwilligung (elektronisch)"
    }
}
New
{
    "x-enum-descriptions": {
        "WEP": "...",
        "marketing.general-consent-electronic": "Werbeeinwilligung (elektronisch)"
    }
}
Old
{
    "x-enum-descriptions": {
        "WEC": "D...",
        "WEP": "Das ist das Opt-In...."
    }
}
New
{
    "x-enum-descriptions": {
        "WEP": "...",
        "marketing.general-consent-electronic": "Werbeeinwilligung (elektronisch)"
    }
}
Old
{
    "x-enum-descriptions": {
        "WEC": "D...",
        "WEP": "Das ist das Opt-In...."
    }
}

8 April 2026

New
{
    "x-enum-descriptions": {
        "WEC": "D...",
        "WEP": "Das ist das Opt-In...."
    }
}
Old
{
    "x-enum-descriptions": {
        "test-marketing": "something"
    }
}
New
{
    "x-enum-descriptions": {
        "WEC": "D...",
        "WEP": "Das ist das Opt-In...."
    }
}
Old
{
    "x-enum-descriptions": {
        "test-marketing": "something"
    }
}
New
{
    "enum": [
        "test-marketing"
    ],
    "type": "string",
    "x-spec-enum-id": "6771c2a30b57b510",
    "x-enum-descriptions": {
        "test-marketing": "something"
    }
}
Old
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
New
{
    "enum": [
        "test-marketing"
    ],
    "type": "string",
    "x-spec-enum-id": "6771c2a30b57b510",
    "x-enum-descriptions": {
        "test-marketing": "something"
    }
}
Old
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
New
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
Old
{
    "enum": [
        "test-consent"
    ],
    "type": "string",
    "x-spec-enum-id": "9d346767e9c04e8e",
    "x-enum-descriptions": {
        "test-consent": "test-consent"
    }
}
New
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
Old
{
    "enum": [
        "test-consent"
    ],
    "type": "string",
    "x-spec-enum-id": "9d346767e9c04e8e",
    "x-enum-descriptions": {
        "test-consent": "test-consent"
    }
}

2 April 2026

New
{
    "x-enum-descriptions": {
        "peter_k_test": "Peter K. Test Daten"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "Peter K. Test Daten": "Peter K. Test Daten"
    }
}
Old
{
    "x-enum-descriptions": {}
}

30 March 2026

No attributes to display
No attributes to display

27 March 2026

New
{
    "x-enum-descriptions": {
        "CUSTOM": "Custom"
    }
}
Old
{
    "x-enum-descriptions": {}
}

24 March 2026

New
{
    "x-removal-date": "2026-04-29"
}

19 March 2026

New
{
    "enum": [
        "test-consent"
    ],
    "type": "string",
    "x-spec-enum-id": "9d346767e9c04e8e",
    "x-enum-descriptions": {
        "test-consent": "test-consent"
    }
}
Old
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
New
{
    "enum": [
        "test-consent"
    ],
    "type": "string",
    "x-spec-enum-id": "9d346767e9c04e8e",
    "x-enum-descriptions": {
        "test-consent": "test-consent"
    }
}
Old
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
New
{
    "x-enum-descriptions": {
        "test-campaign": "Test Campaign"
    }
}
Old
{
    "x-enum-descriptions": {}
}
New
{
    "x-enum-descriptions": {
        "Test Campaign": "Test Campaign"
    }
}
Old
{
    "x-enum-descriptions": {}
}

12 March 2026

New
{
    "enum": [
        "Einfach-Cohort-1"
    ],
    "type": "string",
    "x-spec-enum-id": "49576876bc51b577",
    "x-enum-descriptions": {
        "Einfach-Cohort-1": "Einfach-Cohort-1"
    }
}
Old
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
New
{
    "enum": [
        "Einfach-Cohort-1"
    ],
    "type": "string",
    "x-spec-enum-id": "49576876bc51b577",
    "x-enum-descriptions": {
        "Einfach-Cohort-1": "Einfach-Cohort-1"
    }
}
Old
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
New
{
    "enum": [
        "Einfach-Cohort-1"
    ],
    "type": "string",
    "x-spec-enum-id": "49576876bc51b577",
    "x-enum-descriptions": {
        "Einfach-Cohort-1": "Einfach-Cohort-1"
    }
}
Old
{
    "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here.",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}
New
{
    "enum": [
        "Einfach-Cohort-1"
    ],
    "type": "string",
    "x-spec-enum-id": "49576876bc51b577",
    "x-enum-descriptions": {
        "Einfach-Cohort-1": "Einfach-Cohort-1"
    }
}
Old
{
    "x-comment": "<p>Import supplier choices will be available once suppliers are created in the system.</p>",
    "x-spec-enum-id": "4f53cda18c2baa0c"
}