Data Import REST API Changelog
This page shows recent changes to Data Import REST API.
Deprecated fields
These fields are currently deprecated. Update integrations before they are removed.
25 fields
ElectricityMeterPointWithMarketSupplyAgreement.dc_to_appoint
Use instead:
agents.dc_contract
Removed by
November 2026
BusinessWithExistingContracts.business_contract_identifier
Use instead:
business_contracts
Removed by
January 2027
AccountNote.account_number
Use instead:
external_account_number
Removed by
January 2027
View all deprecated fields
EnergyMarketSupplyAccount.unknown_occupier
Use instead:
account_type
Removed by
January 2027
Transactions.account_number
Use instead:
external_account_number
Removed by
January 2027
AccountCampaign.campaign_name
Use instead:
slug
Removed by
January 2027
Address.name
No replacement specified
Removed by
January 2027
Address.organization
No replacement specified
Removed by
January 2027
Payment.display_note
No replacement specified
Removed by
January 2027
BusinessContract.terms
Use instead:
versions
Removed by
February 2027
TerminationFee.amount
Use instead:
market_configs
Removed by
June 2027
TerminationFee.fee_type
Use instead:
market_configs
Removed by
June 2027
TerminationFee.supply_type
Use instead:
market_configs
Removed by
June 2027
BusinessUser.details
Use instead:
user_details
Date not announced
BusinessWithExistingContracts.business_contract_identifiers
Use instead:
business_contracts
Date not announced
Customer.customer_preferences
Use instead:
consents
Date not announced
Customer.details
Use instead:
user_details
Date not announced
ElectricityMeterPointWithMarketSupplyAgreement.mop_to_appoint
Use instead:
agents.mop_contract
Date not announced
PropertyAdministrator.address1
No replacement specified
Date not announced
PropertyAdministrator.address2
No replacement specified
Date not announced
PropertyAdministrator.address3
No replacement specified
Date not announced
PropertyAdministrator.address4
No replacement specified
Date not announced
PropertyAdministrator.address5
No replacement specified
Date not announced
PropertyAdministrator.postcode
No replacement specified
Date not announced
Repayment.display_note
No replacement specified
Date not announced
28 October 2026 - Latest
No attributes to display
27 October 2026
New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V36",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.8",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V36",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.8",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.8"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V35",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.7",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V35",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.7",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.7"
}
}New
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V36": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V36",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.8": "ABP - Next EV Renewals 2R - Next Drive Smart v7.8",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V36": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V36",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.8": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.8",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.8": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.8"
}
}Old
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V35": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V35",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.7": "ABP - Next EV Renewals 2R - Next Drive Smart v7.7",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V35": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V35",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.7": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.7",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.7": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.7"
}
}New
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V47"
}
}Old
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V46"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V47": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V47"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V46": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V46"
}
}
No attributes to display
No attributes to display
New
{
"x-enum-descriptions": {
"CUSTOM": "CUSTOM"
}
}Old
{
"x-enum-descriptions": {}
}26 October 2026
No attributes to display
No attributes to display
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v80"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v79"
}
}New
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v80": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v80"
}
}Old
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v79": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v79"
}
}New
{
"x-enum-descriptions": {
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 12m v98 & Next Secure Fixed 24m v54)",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v98 & Next Secure Fixed 24m v54)"
}
}Old
{
"x-enum-descriptions": {
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 12m v97 & Next Secure Fixed 24m v53)",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v97 & Next Secure Fixed 24m v53)"
}
}New
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 12m v98 & Next Secure Fixed 24m v54)": "ABP - Defaults (Next Secure Fixed 12m v98 & Next Secure Fixed 24m v54)",
"ABP - Q4 Renewals (Next Secure Fixed 12m v98 & Next Secure Fixed 24m v54)": "ABP - Q4 Renewals (Next Secure Fixed 12m v98 & Next Secure Fixed 24m v54)"
}
}Old
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 12m v97 & Next Secure Fixed 24m v53)": "ABP - Defaults (Next Secure Fixed 12m v97 & Next Secure Fixed 24m v53)",
"ABP - Q4 Renewals (Next Secure Fixed 12m v97 & Next Secure Fixed 24m v53)": "ABP - Q4 Renewals (Next Secure Fixed 12m v97 & Next Secure Fixed 24m v53)"
}
}New
{
"x-enum-descriptions": {
"get-smart-kids-pass-success": "Smart Incentives - [Success] Kid's Pass Trial"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Smart Incentives - [Success] Kid's Pass Trial": "Smart Incentives - [Success] Kid's Pass Trial"
}
}Old
{
"x-enum-descriptions": {}
}22 October 2026
New
{
"x-enum-descriptions": {
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 12m v97 & Next Secure Fixed 24m v53)",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v97 & Next Secure Fixed 24m v53)"
}
}Old
{
"x-enum-descriptions": {
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 12m v97",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v97"
}
}New
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 12m v97 & Next Secure Fixed 24m v53)": "ABP - Defaults (Next Secure Fixed 12m v97 & Next Secure Fixed 24m v53)",
"ABP - Q4 Renewals (Next Secure Fixed 12m v97 & Next Secure Fixed 24m v53)": "ABP - Q4 Renewals (Next Secure Fixed 12m v97 & Next Secure Fixed 24m v53)"
}
}Old
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 12m v97": "ABP - Defaults (Next Secure Fixed 12m v97",
"ABP - Q4 Renewals (Next Secure Fixed 12m v97": "ABP - Q4 Renewals (Next Secure Fixed 12m v97"
}
}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": "Derive occupier billing address from supply address",
"description": "When an occupier account has no explicit billing address and exactly one supply address is provided, copy the supply address into the billing address fields.",
"possible_errors": []
},
{
"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 that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]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": "Derive occupier billing address from supply address",
"description": "When an occupier account has no explicit billing address and exactly one supply address is provided, copy the supply address into the billing address fields.",
"possible_errors": []
},
{
"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 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 that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]
No attributes to display
21 October 2026
New
{
"x-enum-descriptions": {
"EON_NEXT_B2B": "EON NEXT B2B"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_NEXT_B2B": "EON NEXT B2B"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_NEXT_B2B": "EON NEXT B2B"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_NEXT_B2B": "EON NEXT B2B"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_NEXT_B2B": "EON NEXT B2B"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_NEXT_B2B": "EON NEXT B2B"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_NEXT_B2B": "EON NEXT B2B"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_NEXT_B2B": "EON NEXT B2B"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_NEXT_B2B": "EON NEXT B2B"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_NEXT_B2B": "EON NEXT B2B"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_NEXT_B2B": "EON NEXT B2B"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V46"
}
}Old
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V45"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V46": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V46"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V45": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V45"
}
}New
{
"items": {
"$ref": "#/components/schemas/LedgerRecordWithTransactions"
}
}Old
{
"items": {
"$ref": "#/components/schemas/LedgerRecordWithBillingDocuments"
}
}20 October 2026
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v79",
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 12m v97",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v97"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v162",
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 12m v95",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v96"
}
}New
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 12m v97": "ABP - Defaults (Next Secure Fixed 12m v97",
"ABP - Q4 Renewals (Next Secure Fixed 12m v97": "ABP - Q4 Renewals (Next Secure Fixed 12m v97",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v79": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v79"
}
}Old
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 12m v96": "ABP - Defaults (Next Secure Fixed 12m v96",
"ABP - Q4 Renewals (Next Secure Fixed 12m v95": "ABP - Q4 Renewals (Next Secure Fixed 12m v95",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v162": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v162"
}
}New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V35",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V45",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.7",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V35",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.7",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.7"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V34",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V41",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.6",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V34",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.6",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.6"
}
}New
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V35": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V35",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.7": "ABP - Next EV Renewals 2R - Next Drive Smart v7.7",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V35": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V35",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.7": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.7",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.7": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.7",
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V45": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V45"
}
}Old
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V34": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V34",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.6": "ABP - Next EV Renewals 2R - Next Drive Smart v7.6",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V34": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V34",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.6": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.6",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.6": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.6",
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V41": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V41"
}
}New
[
{
"name": "Validate that current statement transactions are after the last statement closing date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are after the <code>last_statement_closing_date</code>, if this date is given.",
"possible_errors": [
"current_statement_transaction_before_last_statement_closing_date"
]
},
{
"name": "Validate that there are no current statement transactions for unbillable ledger",
"description": "Validate that transactions for ledgers that will never issue any bills are only in <code>historical_statement_transactions</code>.",
"possible_errors": [
"unbillable_ledger_transactions_in_current_statement_transactions"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate billing document type matches provided historical billing documents' type",
"description": "Validate that the provided <code>billing_document_type</code> matches the type of all provided historical billing documents.",
"possible_errors": [
"billing_document_type_does_not_match_historical_billing_documents_type"
]
},
{
"name": "Validate additional transaction billing document identifiers match billing documents",
"description": "Validate that any <code>billing_document_identifier</code> provided on additional historical transactions matches an identifier in the provided historical billing documents.",
"possible_errors": [
"additional_transaction_billing_document_identifier_mismatch"
]
},
{
"name": "Validate that the sum of all transactions matches the ledger balance",
"description": "Validate that the sum of all transactions in <code>historical_billing_documents</code> plus <code>current_statement_transactions</code> plus <code>additional_historical_transactions</code> equals the <code>ledger_balance</code>. When <code>historical_billing_documents</code> is empty, a balance-transfer transaction for <code>last_statement_balance</code> is included in the expected balance.",
"possible_errors": [
"historical_billing_documents_balance_mismatch"
]
},
{
"name": "Validate line item periods in all transactions",
"description": "Validate that no line items overlap (checked per supply point, product, and rate band combination) or have gaps (checked per supply point only) for all supply charge transactions in <code>historical_billing_documents</code> and <code>additional_historical_transactions</code>.",
"possible_errors": [
"gaps_or_overlaps_in_periods"
]
},
{
"name": "Validate payment allocation transaction IDs match additional historical payments",
"description": "Validate that each <code>transaction_id</code> in <code>payment_allocations</code> matches a <code>PAYMENT</code> in the provided additional historical transactions.",
"possible_errors": [
"payment_allocation_transaction_id_mismatch"
]
},
{
"name": "Validate payment allocation billing document identifiers match billing documents",
"description": "Validate that each <code>billing_document_identifier</code> in <code>payment_allocations</code> matches an identifier in the provided historical billing documents.",
"possible_errors": [
"payment_allocation_billing_document_identifier_mismatch"
]
},
{
"name": "Validate payment allocations are not combined with a payment billing document identifier",
"description": "Validate that a payment listed in <code>payment_allocations</code> does not also provide its own <code>billing_document_identifier</code>.",
"possible_errors": [
"payment_billing_document_identifier_and_payment_allocations_both_provided"
]
},
{
"name": "Validate payment allocation billing documents are not targeted by a payment billing document identifier",
"description": "Validate that a billing document listed in <code>payment_allocations</code> is not also the <code>billing_document_identifier</code> of a payment in the provided additional historical transactions.",
"possible_errors": [
"billing_document_targeted_by_payment_billing_document_identifier_and_payment_allocations"
]
},
{
"name": "Validate payment allocations do not exceed payment amounts",
"description": "Validate that, for each payment, the <code>payment_allocations</code> amounts do not total more than the payment <code>amount</code>.",
"possible_errors": [
"payment_allocations_exceed_payment_amount"
]
},
{
"name": "Validate payment allocations do not exceed billing document totals",
"description": "Validate that, for each historical billing document, the <code>payment_allocations</code> amounts do not total more than the total of the billing document's transactions.",
"possible_errors": [
"payment_allocations_exceed_billing_document_total"
]
}
]Old
[
{
"name": "Validate that current statement transactions are after the last statement closing date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are after the <code>last_statement_closing_date</code>, if this date is given.",
"possible_errors": [
"current_statement_transaction_before_last_statement_closing_date"
]
},
{
"name": "Validate that there are no current statement transactions for unbillable ledger",
"description": "Validate that transactions for ledgers that will never issue any bills are only in <code>historical_statement_transactions</code>.",
"possible_errors": [
"unbillable_ledger_transactions_in_current_statement_transactions"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate billing document type matches provided historical billing documents' type",
"description": "Validate that the provided <code>billing_document_type</code> matches the type of all provided historical billing documents.",
"possible_errors": [
"billing_document_type_does_not_match_historical_billing_documents_type"
]
},
{
"name": "Validate additional transaction billing document identifiers match billing documents",
"description": "Validate that any <code>billing_document_identifier</code> provided on additional historical transactions matches an identifier in the provided historical billing documents.",
"possible_errors": [
"additional_transaction_billing_document_identifier_mismatch"
]
},
{
"name": "Validate that the sum of all transactions matches the ledger balance",
"description": "Validate that the sum of all transactions in <code>historical_billing_documents</code> plus <code>current_statement_transactions</code> plus <code>additional_historical_transactions</code> equals the <code>ledger_balance</code>. When <code>historical_billing_documents</code> is empty, a balance-transfer transaction for <code>last_statement_balance</code> is included in the expected balance.",
"possible_errors": [
"historical_billing_documents_balance_mismatch"
]
},
{
"name": "Validate line item periods in all transactions",
"description": "Validate that no line items overlap (checked per supply point, product, and rate band combination) or have gaps (checked per supply point only) for all supply charge transactions in <code>historical_billing_documents</code> and <code>additional_historical_transactions</code>.",
"possible_errors": [
"gaps_or_overlaps_in_periods"
]
}
]
No attributes to display
19 October 2026
New
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V17"
}
}Old
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V16"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V17": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V17"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V16": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V16"
}
}16 October 2026
No attributes to display
No attributes to display
15 October 2026
No attributes to display
New
{
"items": {
"$ref": "#/components/schemas/LedgerRecordWithBillingDocuments"
}
}Old
{
"items": {
"$ref": "#/components/schemas/LedgerRecordWithTransactions"
}
}New
{
"x-enum-descriptions": {
"zuno_solar_battery": "Zuno Solar and Battery"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Zuno Solar and Battery": "Zuno Solar and Battery"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"mm_migrated": "MM Migrated"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"MM Migrated": "MM Migrated"
}
}Old
{
"x-enum-descriptions": {}
}New
[
{
"name": "Validate campaign slug is provided",
"description": "Validates that a campaign slug is provided in the payload, either directly or resolved from a campaign name.",
"possible_errors": [
"campaign_slug_required"
]
},
{
"name": "Validate campaign exists",
"description": "Validates that a campaign passed in the payload exists in Kraken.",
"possible_errors": [
"campaign_not_found"
]
},
{
"name": "Validate <code>\u2068expiry_date\u2069</code> not before or equal to <code>\u2068start_date\u2069</code>",
"description": "Validates that <code>\u2068expiry_date\u2069</code>, if given, is strictly later than \u2068start_date\u2069.",
"possible_errors": [
"start_date_same_as_end_date"
]
}
]Old
[
{
"name": "Validate campaign name or slug provided",
"description": "Validate that a campaign name or slug is provided in the payload.",
"possible_errors": [
"campaign_name_and_slug_provided",
"campaign_name_or_slug_not_provided"
]
},
{
"name": "Validate campaign exists",
"description": "Validates that a campaign passed in the payload exists in Kraken.",
"possible_errors": [
"campaign_not_found"
]
},
{
"name": "Validate <code>\u2068expiry_date\u2069</code> not before or equal to <code>\u2068start_date\u2069</code>",
"description": "Validates that <code>\u2068expiry_date\u2069</code>, if given, is strictly later than \u2068start_date\u2069.",
"possible_errors": [
"start_date_same_as_end_date"
]
}
]New
{
"x-removal-date": "2027-01-23"
}Old
{
"default": ""
}14 October 2026
New
{
"x-enum-descriptions": {
"LEGACY_REFUND": "Legacy Refund"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"HRA": "HRA",
"HUD": "HUD",
"HEAP": "HEAP",
"EDI_820": "EDI_820",
"ONESTEP": "ONESTEP",
"ACH_PAYMENT": "ACH_PAYMENT",
"DSS_PAYMENT": "DSS_PAYMENT",
"DSS_UTX_TAPE": "DSS_UTX_TAPE",
"CARE_AND_SHARE": "CARE_AND_SHARE",
"DIRECT_DEPOSIT": "DIRECT_DEPOSIT",
"LEGACY_PAYMENT": "LEGACY_PAYMENT",
"FUEL_ASSISTANCE": "FUEL_ASSISTANCE",
"TRUNCATED_CHECK": "TRUNCATED_CHECK",
"FIELD_COLLECTION": "FIELD_COLLECTION",
"EMERGENCY_PAYMENT": "EMERGENCY_PAYMENT",
"BANKRUPTCY_TRUSTEE": "BANKRUPTCY_TRUSTEE",
"LIHEAP_PAYMENT_PRIMARY": "LIHEAP_PAYMENT_PRIMARY",
"MIXED_PAYMENT_CASH_CHECK": "MIXED_PAYMENT_CASH_CHECK",
"RPPS_THIRD_PARTY_PAYMENT": "RPPS_THIRD_PARTY_PAYMENT"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"CALISEN": "Calisen Metering Services"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v162",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v96"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v161",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v95"
}
}New
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 12m v96": "ABP - Defaults (Next Secure Fixed 12m v96",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v162": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v162"
}
}Old
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 12m v95": "ABP - Defaults (Next Secure Fixed 12m v95",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v161": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v161"
}
}New
{
"x-enum-descriptions": {
"EON_JOIN_CONNECT_NDS": "EON_JOIN_CONNECT_NDS",
"EON_NDS_CONNECTION_TO_APP": "EON_NDS_CONNECTION_TO_APP"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-validators": [
{
"name": "Validate required customer details namespaces provided",
"description": "No required namespaces configured. Validation skipped.",
"possible_errors": [
"required_customer_details_namespace_missing"
]
},
{
"name": "Validate that user_details does not contain duplicate namespaces",
"description": "Validate that <code>user_details</code> does not contain more than one entry for the same <code>namespace</code>.",
"possible_errors": [
"duplicate_user_detail_namespaces"
]
}
]
}Old
{
"x-validators": [
{
"name": "Validate required customer details namespaces provided",
"description": "No required namespaces configured. Validation skipped.",
"possible_errors": [
"required_customer_details_namespace_missing"
]
}
]
}New
{
"x-validators": [
{
"name": "Validate required customer details namespaces provided",
"description": "No required namespaces configured. Validation skipped.",
"possible_errors": [
"required_customer_details_namespace_missing"
]
},
{
"name": "Validate that user_details does not contain duplicate namespaces",
"description": "Validate that <code>user_details</code> does not contain more than one entry for the same <code>namespace</code>.",
"possible_errors": [
"duplicate_user_detail_namespaces"
]
}
]
}Old
{
"x-validators": [
{
"name": "Validate required customer details namespaces provided",
"description": "No required namespaces configured. Validation skipped.",
"possible_errors": [
"required_customer_details_namespace_missing"
]
}
]
}
No attributes to display
New
{
"x-validators": [
{
"name": "Validate tax item amount is a whole number of the minor unit",
"description": "Validates that a tax item's <code>amount</code> is a whole number in the currency's minor unit, for example <code>2000</code> pence rather than <code>2000.75</code>.",
"possible_errors": [
"tax_item_amount_not_whole_minor_unit"
]
}
]
}13 October 2026
New
{
"enum": [
"cais.customer-references",
"eon.paypoint-client-reference-numbers",
"sainsburys.nectar-card-number-hashes"
],
"x-spec-enum-id": "483715d62e266e4e",
"x-enum-descriptions": {
"cais.customer-references": "Cais customer reference",
"sainsburys.nectar-card-number-hashes": "Sainsburys nectar card number hashe",
"eon.paypoint-client-reference-numbers": "Eon paypoint client reference number"
}
}New
{
"x-enum-descriptions": {
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 12m v95",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v95"
}
}Old
{
"x-enum-descriptions": {
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 12m v94",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v94"
}
}New
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 12m v95": "ABP - Defaults (Next Secure Fixed 12m v95",
"ABP - Q4 Renewals (Next Secure Fixed 12m v95": "ABP - Q4 Renewals (Next Secure Fixed 12m v95"
}
}Old
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 12m v94": "ABP - Defaults (Next Secure Fixed 12m v94",
"ABP - Q4 Renewals (Next Secure Fixed 12m v94": "ABP - Q4 Renewals (Next Secure Fixed 12m v94"
}
}New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v161"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v160"
}
}New
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v161": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v161"
}
}Old
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v160": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v160"
}
}New
{
"x-enum-descriptions": {
"demandshift_poc_1_5": "\u2068DemandShift - PoC\u2069 1.5"
}
}Old
{
"x-enum-descriptions": {
"demandshift_poc": "DemandShift - PoC"
}
}New
{
"x-enum-descriptions": {
"\u2068DemandShift - PoC\u2069 1.5": "\u2068DemandShift - PoC\u2069 1.5"
}
}Old
{
"x-enum-descriptions": {
"DemandShift - PoC": "DemandShift - PoC"
}
}New
{
"x-use-instead": "kraken_account_number",
"x-removal-date": "2027-01-31"
}12 October 2026
New
{
"x-enum-descriptions": {
"zoom_ev_renewals": "Zoom EV Renewals"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Zoom EV Renewals": "Zoom EV Renewals"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-removal-date": "2027-01-30"
}New
{
"x-removal-date": "2026-11-09"
}9 October 2026
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v160",
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 12m v94",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v94",
"get-smart-kids-pass": "Smart Incentives - Kid's Pass Trial"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v76",
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 12m v93",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v93"
}
}New
{
"x-enum-descriptions": {
"Smart Incentives - Kid's Pass Trial": "Smart Incentives - Kid's Pass Trial",
"ABP - Defaults (Next Secure Fixed 12m v94": "ABP - Defaults (Next Secure Fixed 12m v94",
"ABP - Q4 Renewals (Next Secure Fixed 12m v94": "ABP - Q4 Renewals (Next Secure Fixed 12m v94",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v160": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v160"
}
}Old
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 12m v93": "ABP - Defaults (Next Secure Fixed 12m v93",
"ABP - Q4 Renewals (Next Secure Fixed 12m v93": "ABP - Q4 Renewals (Next Secure Fixed 12m v93",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v76": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v76"
}
}New
{
"x-removal-date": "2027-01-20"
}New
{
"x-removal-date": "2027-01-20"
}8 October 2026
New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V34",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.6",
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v76",
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 12m v93",
"abp_000076": "ABP - Defaults (Next Secure Fixed 12m v93",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V34",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.6",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.6"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V33",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.5",
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v159",
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 24m v52",
"abp_000076": "ABP - Defaults (Next Secure Fixed 24m v52",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V33",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.5",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.5"
}
}New
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 12m v93": "ABP - Defaults (Next Secure Fixed 12m v93",
"ABP - Q4 Renewals (Next Secure Fixed 12m v93": "ABP - Q4 Renewals (Next Secure Fixed 12m v93",
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V34": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V34",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.6": "ABP - Next EV Renewals 2R - Next Drive Smart v7.6",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V34": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V34",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.6": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.6",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.6": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.6",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v76": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 24m v76"
}
}Old
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 24m v52": "ABP - Defaults (Next Secure Fixed 24m v52",
"ABP - Q4 Renewals (Next Secure Fixed 24m v52": "ABP - Q4 Renewals (Next Secure Fixed 24m v52",
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V33": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V33",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.5": "ABP - Next EV Renewals 2R - Next Drive Smart v7.5",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V33": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V33",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.5": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.5",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.5": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.5",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v159": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v159"
}
}New
{
"x-enum-descriptions": {
"micro_business": "Micro Business"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Micro Business": "Micro Business"
}
}Old
{
"x-enum-descriptions": {}
}7 October 2026
New
{
"x-enum-descriptions": {
"NON_STANDARD_METER_ADJUSTMENT_TWENTY": "NON_STANDARD_METER_ADJUSTMENT_TWENTY"
}
}Old
{
"x-enum-descriptions": {}
}
No attributes to display
New
{
"x-enum-descriptions": {
"NON_STANDARD_METER_ADJUSTMENT_ZERO": "NON_STANDARD_METER_ADJUSTMENT_ZERO"
}
}Old
{
"x-enum-descriptions": {}
}6 October 2026
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v159",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v52)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v52)",
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 24m v52",
"abp_000076": "ABP - Defaults (Next Secure Fixed 24m v52"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v158",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v51)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v51)",
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 24m v51",
"abp_000076": "ABP - Defaults (Next Secure Fixed 24m v51"
}
}New
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 24m v52": "ABP - Defaults (Next Secure Fixed 24m v52",
"ABP - Q4 Renewals (Next Secure Fixed 24m v52": "ABP - Q4 Renewals (Next Secure Fixed 24m v52",
"ABP Selections - Renewals Q3 (Next Secure Fixed 24m v52)": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v52)",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v159": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v159",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v52)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v52)"
}
}Old
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 24m v51": "ABP - Defaults (Next Secure Fixed 24m v51",
"ABP - Q4 Renewals (Next Secure Fixed 24m v51": "ABP - Q4 Renewals (Next Secure Fixed 24m v51",
"ABP Selections - Renewals Q3 (Next Secure Fixed 24m v51)": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v51)",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v158": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v158",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v51)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v51)"
}
}New
{
"x-enum-descriptions": {
"EON_REMOVE_DUPLICATE_STANDING_CHARGE_0": "EON_REMOVE_DUPLICATE_STANDING_CHARGE_0"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_REVENUE_PROTECTION_BILLING_ELEC_0": "EON_REVENUE_PROTECTION_BILLING_ELEC_0"
}
}Old
{
"x-enum-descriptions": {}
}5 October 2026
New
{
"x-enum-descriptions": {
"EON_EV_REWARD": "EON_EV_REWARD",
"EON_EV_CONNECTION_BONUS": "EON_EV_CONNECTION_BONUS",
"EON_HOT_WATER_STEERING_TRIAL": "EON_HOT_WATER_STEERING_TRIAL"
}
}Old
{
"x-enum-descriptions": {}
}
No attributes to display
2 October 2026
New
{
"x-removal-date": "2027-01-20"
}Old
{
"x-removal-date": "2026-12-10"
}1 October 2026
New
{
"x-enum-descriptions": {
"INSTANT_BONUS": "Instantbonus",
"INSTANT_BONUS_PAID_OUT_MIGRATION": "Paid Instant Bonus (Migrated)"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"BANK_TRANSFER": "BANK_TRANSFER"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"vat_confirmation_date": "vat_confirmation_date"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"od_draftproofing": "OD Draft Proofing"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"OD Draft Proofing": "OD Draft Proofing"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-validators": [
{
"name": "Requested supply start date within the COS gain processing window",
"description": "Ensure that the <code>requested_supply_start_date</code> value is not past the <code>MIGRATION_COS_GAIN_PROCESSING_WINDOW</code>",
"possible_errors": [
"requested_supply_start_date_later_than_cos_gain_processing_window"
]
}
]
}Old
{
"x-validators": [
{
"name": "Validate <code>\u2068requested_supply_start_date\u2069</code> is at least \u206828\u2069 days in the future",
"description": "Ensure that the field <code>\u2068requested_supply_start_date\u2069</code> is dated at least \u206828\u2069 days in the future.",
"possible_errors": [
"date_not_in_future"
]
}
]
}New
{
"x-validators": [
{
"name": "Requested supply start date within the COS gain processing window",
"description": "Ensure that the <code>requested_supply_start_date</code> value is not past the <code>MIGRATION_COS_GAIN_PROCESSING_WINDOW</code>",
"possible_errors": [
"requested_supply_start_date_later_than_cos_gain_processing_window"
]
}
]
}Old
{
"x-validators": [
{
"name": "Validate <code>\u2068requested_supply_start_date\u2069</code> is at least \u206828\u2069 days in the future",
"description": "Ensure that the field <code>\u2068requested_supply_start_date\u2069</code> is dated at least \u206828\u2069 days in the future.",
"possible_errors": [
"date_not_in_future"
]
}
]
}30 September 2026
New
{
"x-enum-descriptions": {
"SE_GIFTCARD": "SE_GIFTCARD",
"EON_REMOVE_DUPLICATE_STANDING_CHARGE_5": "EON_REMOVE_DUPLICATE_STANDING_CHARGE_5",
"EON_REMOVE_DUPLICATE_STANDING_CHARGE_20": "EON_REMOVE_DUPLICATE_STANDING_CHARGE_20"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_REVENUE_PROTECTION_BILLING_ELEC_5": "EON_REVENUE_PROTECTION_BILLING_ELEC_5",
"EON_REVENUE_PROTECTION_BILLING_ELEC_20": "EON_REVENUE_PROTECTION_BILLING_ELEC_20"
}
}Old
{
"x-enum-descriptions": {}
}29 September 2026
New
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V41"
}
}Old
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V39"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V41": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V41"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V39": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V39"
}
}28 September 2026
New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v51)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v51)",
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 24m v51",
"abp_000076": "ABP - Defaults (Next Secure Fixed 24m v51"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v50)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v50)",
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 24m v50",
"abp_000076": "ABP - Defaults (Next Secure Fixed 24m v50"
}
}New
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 24m v51": "ABP - Defaults (Next Secure Fixed 24m v51",
"ABP - Q4 Renewals (Next Secure Fixed 24m v51": "ABP - Q4 Renewals (Next Secure Fixed 24m v51",
"ABP Selections - Renewals Q3 (Next Secure Fixed 24m v51)": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v51)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v51)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v51)"
}
}Old
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 24m v50": "ABP - Defaults (Next Secure Fixed 24m v50",
"ABP - Q4 Renewals (Next Secure Fixed 24m v50": "ABP - Q4 Renewals (Next Secure Fixed 24m v50",
"ABP Selections - Renewals Q3 (Next Secure Fixed 24m v50)": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v50)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v50)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v50)"
}
}25 September 2026
New
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V16"
}
}Old
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V15"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V16": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V16"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V15": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V15"
}
}24 September 2026
New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V33",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.5",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V33",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.5",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.5"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V32",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.4",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V32",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.4",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.4"
}
}New
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V33": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V33",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.5": "ABP - Next EV Renewals 2R - Next Drive Smart v7.5",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V33": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V33",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.5": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.5",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.5": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.5"
}
}Old
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V32": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V32",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.4": "ABP - Next EV Renewals 2R - Next Drive Smart v7.4",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V32": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V32",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.4": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.4",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.4": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.4"
}
}22 September 2026
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v158"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v157"
}
}New
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v158": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v158"
}
}Old
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v157": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v157"
}
}New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v50)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v50)",
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 24m v50",
"abp_000076": "ABP - Defaults (Next Secure Fixed 24m v50"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v49)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v49)",
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 24m v49",
"abp_000076": "ABP - Defaults (Next Secure Fixed 24m v49"
}
}New
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 24m v50": "ABP - Defaults (Next Secure Fixed 24m v50",
"ABP - Q4 Renewals (Next Secure Fixed 24m v50": "ABP - Q4 Renewals (Next Secure Fixed 24m v50",
"ABP Selections - Renewals Q3 (Next Secure Fixed 24m v50)": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v50)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v50)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v50)"
}
}Old
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 24m v49": "ABP - Defaults (Next Secure Fixed 24m v49",
"ABP - Q4 Renewals (Next Secure Fixed 24m v49": "ABP - Q4 Renewals (Next Secure Fixed 24m v49",
"ABP Selections - Renewals Q3 (Next Secure Fixed 24m v49)": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v49)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v49)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v49)"
}
}New
{
"x-enum-descriptions": {
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 24m v49",
"abp_000076": "ABP - Defaults (Next Secure Fixed 24m v49"
}
}Old
{
"x-enum-descriptions": {
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 24m v48",
"abp_000076": "ABP - Defaults (Next Secure Fixed 24m v48"
}
}New
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 24m v49": "ABP - Defaults (Next Secure Fixed 24m v49",
"ABP - Q4 Renewals (Next Secure Fixed 24m v49": "ABP - Q4 Renewals (Next Secure Fixed 24m v49"
}
}Old
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 24m v48": "ABP - Defaults (Next Secure Fixed 24m v48",
"ABP - Q4 Renewals (Next Secure Fixed 24m v48": "ABP - Q4 Renewals (Next Secure Fixed 24m v48"
}
}17 September 2026
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v157",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v49)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v49)"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v156",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v48)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v48)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 24m v49)": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v49)",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v157": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v157",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v49)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v49)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 24m v48)": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v48)",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v156": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v156",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v48)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v48)"
}
}15 September 2026
New
{
"x-validators": [
{
"name": "Validate <code>\u2068requested_supply_start_date\u2069</code> is at least \u206828\u2069 days in the future",
"description": "Ensure that the field <code>\u2068requested_supply_start_date\u2069</code> is dated at least \u206828\u2069 days in the future.",
"possible_errors": [
"date_not_in_future"
]
}
]
}New
{
"x-validators": [
{
"name": "Validate <code>\u2068requested_supply_start_date\u2069</code> is at least \u206828\u2069 days in the future",
"description": "Ensure that the field <code>\u2068requested_supply_start_date\u2069</code> is dated at least \u206828\u2069 days in the future.",
"possible_errors": [
"date_not_in_future"
]
}
]
}14 September 2026
New
{
"x-enum-descriptions": {
"abp_000075": "ABP - Q4 Renewals (Next Secure Fixed 24m v48",
"abp_000076": "ABP - Defaults (Next Secure Fixed 24m v48"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"ABP - Defaults (Next Secure Fixed 24m v48": "ABP - Defaults (Next Secure Fixed 24m v48",
"ABP - Q4 Renewals (Next Secure Fixed 24m v48": "ABP - Q4 Renewals (Next Secure Fixed 24m v48"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {}
}Old
{
"x-enum-descriptions": {
"Test for Data": "Test for Data"
}
}New
{
"x-enum-descriptions": {}
}Old
{
"x-enum-descriptions": {
"Test for Data": "Test for Data"
}
}New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v156",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v48)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v48)"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v155",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v47)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v47)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 24m v48)": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v48)",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v156": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v156",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v48)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v48)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 24m v47)": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v47)",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v155": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v155",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v47)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v47)"
}
}New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V32",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.4",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V32",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.4",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.4"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V31",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.3",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V31",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.3",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.3"
}
}New
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V32": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V32",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.4": "ABP - Next EV Renewals 2R - Next Drive Smart v7.4",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V32": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V32",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.4": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.4",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.4": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.4"
}
}Old
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V31": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V31",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.3": "ABP - Next EV Renewals 2R - Next Drive Smart v7.3",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V31": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V31",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.3": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.3",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.3": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.3"
}
}New
{
"x-removal-date": "2026-10-28"
}Removal date
2026-12-10
Use instead
account_type
10 September 2026
New
{
"x-enum-descriptions": {
"Business Plus": "Business Plus",
"Business Essentials": "Business Essentials",
"Strategic Customers": "Strategic Customers"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Business Plus": "Business Plus",
"Business Essentials": "Business Essentials",
"Strategic Customers": "Strategic Customers"
}
}Old
{
"x-enum-descriptions": {}
}9 September 2026
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v155",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v47)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v47)"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v154",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v92 & Next Secure Fixed 24m v46)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v92 & Next Secure Fixed 24m v46)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 24m v47)": "ABP Selections - Renewals Q3 (Next Secure Fixed 24m v47)",
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v155": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v155",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v47)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 24m v47)"
}
}Old
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v154": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v154",
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v92 & Next Secure Fixed 24m v46)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v92 & Next Secure Fixed 24m v46)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v92 & Next Secure Fixed 24m v46)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v92 & Next Secure Fixed 24m v46)"
}
}New
{
"x-enum-descriptions": {
"playmaker_unsupported_complex": "Playmaker Unsupported Complex",
"playmaker_unsupported_multi_property": "Playmaker Unsupported Multi Property",
"playmaker_unsupported_classic_prepayment": "Playmaker Unsupported Classic Prepayment"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Playmaker Unsupported Complex": "Playmaker Unsupported Complex",
"Playmaker Unsupported Multi Property": "Playmaker Unsupported Multi Property",
"Playmaker Unsupported Classic Prepayment": "Playmaker Unsupported Classic Prepayment"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"COMPLAINTS_EV_CUSTOMER_SERVICE_GESTURE": "COMPLAINTS_EV_CUSTOMER_SERVICE_GESTURE"
}
}Old
{
"x-enum-descriptions": {}
}7 September 2026
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v154",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v92 & Next Secure Fixed 24m v46)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v92 & Next Secure Fixed 24m v46)"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v153",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v46)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v46)"
}
}New
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v154": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v154",
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v92 & Next Secure Fixed 24m v46)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v92 & Next Secure Fixed 24m v46)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v92 & Next Secure Fixed 24m v46)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v92 & Next Secure Fixed 24m v46)"
}
}Old
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v153": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v153",
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v46)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v46)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v46)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v46)"
}
}New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v46)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v46)"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v45)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v45)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v46)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v46)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v46)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v46)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v45)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v45)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v45)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v45)"
}
}New
{
"x-enum-descriptions": {
"next_optimise_dashboard_banner_v3": "Next Optimise Dashboard Banner V3"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Next Optimise Dashboard Banner V3": "Next Optimise Dashboard Banner V3"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V15"
}
}Old
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V14"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V15": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V15"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V14": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V14"
}
}4 September 2026
New
{
"x-enum-descriptions": {
"next_optimise_dashboard_banner_v2": "Next Optimise Dashboard Banner V2"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Next Optimise Dashboard Banner V2": "Next Optimise Dashboard Banner V2"
}
}Old
{
"x-enum-descriptions": {}
}3 September 2026
New
{
"maxLength": 50
}Old
{
"maxLength": 10
}New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V31",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.3",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V31",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.3",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.3"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V29",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.1",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V29",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.1",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.1"
}
}New
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V31": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V31",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.3": "ABP - Next EV Renewals 2R - Next Drive Smart v7.3",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V31": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V31",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.3": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.3",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.3": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.3"
}
}Old
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V29": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V29",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.1": "ABP - Next EV Renewals 2R - Next Drive Smart v7.1",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V29": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V29",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.1": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.1",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.1": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.1"
}
}New
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V39"
}
}Old
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V37"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V39": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V39"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V37": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V37"
}
}2 September 2026
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v153",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v45)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v45)"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v152",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v45)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v45)"
}
}New
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v153": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v153",
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v45)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v45)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v45)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v91 & Next Secure Fixed 24m v45)"
}
}Old
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v152": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v152",
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v45)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v45)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v45)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v45)"
}
}New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v45)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v45)"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v44)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v44)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v45)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v45)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v45)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v45)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v44)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v44)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v44)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v44)"
}
}New
{
"x-enum-descriptions": {}
}Old
{
"x-enum-descriptions": {
"demand_shift_invited": "Demand Shift - Invited",
"demand_shift_pilot_exclude_from_upcoming": "Demand Shift - Pilot (Exclude from upcoming)"
}
}New
{
"x-enum-descriptions": {}
}Old
{
"x-enum-descriptions": {
"Demand Shift - Invited": "Demand Shift - Invited",
"Demand Shift - Pilot (Exclude from upcoming)": "Demand Shift - Pilot (Exclude from upcoming)"
}
}1 September 2026
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v152",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v44)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v44)"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v151",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v43)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v43)"
}
}New
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v152": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v152",
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v44)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v44)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v44)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v90 & Next Secure Fixed 24m v44)"
}
}Old
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v151": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v151",
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v43)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v43)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v43)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v43)"
}
}31 August 2026
New
[
{
"name": "Validate that account data is staged and account created",
"description": "Validate that an account exists for the <code>external_account_number</code> and <code>import_supplier</code> code. This means that the import data must already have been staged and processed into an account.",
"possible_errors": [
"account_not_found",
"import_process_does_not_exist"
]
},
{
"name": "Validate that migration is ongoing",
"description": "Validate whether or not an import supplier is open for further data migration.",
"possible_errors": [
"import_supplier_migration_not_ongoing"
]
},
{
"name": "Validate that either <code>\u2068instruction_reference\u2069</code> or <code>\u2068reference\u2069</code> are provided",
"description": "Validate that exactly one of <code>\u2068instruction_reference\u2069</code> or <code>\u2068reference\u2069</code> is provided.",
"possible_errors": [
"mutually_exclusive_field_required"
]
},
{
"name": "Validate card type is only given for card instructions",
"description": "Validates that a card type is only provided when the payment instruction is a card.",
"possible_errors": [
"card_type_on_non_card_instruction"
]
}
]Old
[
{
"name": "Validate that account data is staged and account created",
"description": "Validate that an account exists for the <code>external_account_number</code> and <code>import_supplier</code> code. This means that the import data must already have been staged and processed into an account.",
"possible_errors": [
"account_not_found",
"import_process_does_not_exist"
]
},
{
"name": "Validate that migration is ongoing",
"description": "Validate whether or not an import supplier is open for further data migration.",
"possible_errors": [
"import_supplier_migration_not_ongoing"
]
},
{
"name": "Validate that either <code>\u2068instruction_reference\u2069</code> or <code>\u2068reference\u2069</code> are provided",
"description": "Validate that exactly one of <code>\u2068instruction_reference\u2069</code> or <code>\u2068reference\u2069</code> is provided.",
"possible_errors": [
"mutually_exclusive_field_required"
]
}
]
No attributes to display
28 August 2026
New
{
"items": {
"$ref": "#/components/schemas/Transaction"
}
}Old
{
"items": {
"$ref": "#/components/schemas/EnergyTransaction"
}
}New
{
"CHARGE": "#/components/schemas/Charge",
"CREDIT": "#/components/schemas/Credit",
"PAYMENT": "#/components/schemas/Payment",
"REPAYMENT": "#/components/schemas/Repayment",
"SUPPLY_CHARGE": "#/components/schemas/SupplyCharge"
}Old
{
"CHARGE": "#/components/schemas/EnergyCharge",
"CREDIT": "#/components/schemas/EnergyCredit",
"PAYMENT": "#/components/schemas/EnergyPayment",
"REPAYMENT": "#/components/schemas/EnergyRepayment",
"SUPPLY_CHARGE": "#/components/schemas/EnergySupplyCharge"
}New
[
{
"$ref": "#/components/schemas/Credit"
},
{
"$ref": "#/components/schemas/Charge"
},
{
"$ref": "#/components/schemas/Payment"
},
{
"$ref": "#/components/schemas/Repayment"
},
{
"$ref": "#/components/schemas/SupplyCharge"
}
]Old
[
{
"$ref": "#/components/schemas/EnergyCredit"
},
{
"$ref": "#/components/schemas/EnergyCharge"
},
{
"$ref": "#/components/schemas/EnergyPayment"
},
{
"$ref": "#/components/schemas/EnergyRepayment"
},
{
"$ref": "#/components/schemas/EnergySupplyCharge"
}
]New
{
"GAS": "#/components/schemas/GasMeterPointWithMarketSupplyAgreement",
"ELECTRICITY": "#/components/schemas/ElectricityMeterPointWithMarketSupplyAgreement"
}Old
{
"GAS": "#/components/schemas/GasMeterPoint",
"ELECTRICITY": "#/components/schemas/ElectricityMeterPoint"
}New
[
{
"$ref": "#/components/schemas/ElectricityMeterPointWithMarketSupplyAgreement"
},
{
"$ref": "#/components/schemas/GasMeterPointWithMarketSupplyAgreement"
}
]Old
[
{
"$ref": "#/components/schemas/ElectricityMeterPoint"
},
{
"$ref": "#/components/schemas/GasMeterPoint"
}
]27 August 2026
No attributes to display
No attributes to display
No attributes to display
New
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V14"
}
}Old
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V13"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V14": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V14"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V13": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V13"
}
}New
{
"x-enum-descriptions": {
"EON_APP_REWARDS_SHIFT_AND_EARN": "EON_APP_REWARDS_SHIFT_AND_EARN"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"required": true
}New
[
{
"name": "Validate <code>\u2068effective_to\u2069</code> not before <code>\u2068effective_from\u2069</code>",
"description": "Validates that <code>\u2068effective_to\u2069</code>, if given, is on or later than <code>\u2068effective_from\u2069</code>.",
"possible_errors": [
"start_date_later_than_end_date"
]
},
{
"name": "Validate that the rate bands given in the rate overrides are valid for the product code",
"description": "Validate that the rate bands given in the rate overrides exist for the agreement's product.",
"possible_errors": [
"invalid_period",
"rate_band_does_not_exist"
]
},
{
"name": "Validate that required product characteristics are provided",
"description": "Validates that when an agreement's product is linked to a specification defining product characteristics, a value for each required characteristic is provided in <code>characteristics</code>.",
"possible_errors": [
"missing_required_product_characteristics"
]
},
{
"name": "Validate that either <code>register_id</code> or <code>rate_type</code> are provided for bespoke tariff rate registers",
"description": "Ensure that all registers associated with a bespoke tariff rate have got at least a <code>register_id</code> or a <code>rate_type</code> set.",
"possible_errors": [
"no_register_id_or_rate_type_provided_for_bespoke_elec_rate"
]
},
{
"name": "Validate effective to provided for end dated gas product",
"description": "Validate that the effective to date is provided for an gas product that has an end date.",
"possible_errors": [
"open_ended_agreement_for_end_dated_product"
]
}
]Old
[
{
"name": "Validate <code>\u2068effective_to\u2069</code> not before <code>\u2068effective_from\u2069</code>",
"description": "Validates that <code>\u2068effective_to\u2069</code>, if given, is on or later than <code>\u2068effective_from\u2069</code>.",
"possible_errors": [
"start_date_later_than_end_date"
]
},
{
"name": "Validate that the rate bands given in the rate overrides are valid for the product code",
"description": "Validate that the rate bands given in the rate overrides exist for the agreement's product.",
"possible_errors": [
"invalid_period",
"rate_band_does_not_exist"
]
},
{
"name": "Validate that either <code>register_id</code> or <code>rate_type</code> are provided for bespoke tariff rate registers",
"description": "Ensure that all registers associated with a bespoke tariff rate have got at least a <code>register_id</code> or a <code>rate_type</code> set.",
"possible_errors": [
"no_register_id_or_rate_type_provided_for_bespoke_elec_rate"
]
},
{
"name": "Validate effective to provided for end dated gas product",
"description": "Validate that the effective to date is provided for an gas product that has an end date.",
"possible_errors": [
"open_ended_agreement_for_end_dated_product"
]
}
]New
[
{
"name": "Validate <code>\u2068effective_to\u2069</code> not before <code>\u2068effective_from\u2069</code>",
"description": "Validates that <code>\u2068effective_to\u2069</code>, if given, is on or later than <code>\u2068effective_from\u2069</code>.",
"possible_errors": [
"start_date_later_than_end_date"
]
},
{
"name": "Validate that the rate bands given in the rate overrides are valid for the product code",
"description": "Validate that the rate bands given in the rate overrides exist for the agreement's product.",
"possible_errors": [
"invalid_period",
"rate_band_does_not_exist"
]
},
{
"name": "Validate that required product characteristics are provided",
"description": "Validates that when an agreement's product is linked to a specification defining product characteristics, a value for each required characteristic is provided in <code>characteristics</code>.",
"possible_errors": [
"missing_required_product_characteristics"
]
},
{
"name": "Validate that either <code>register_id</code> or <code>rate_type</code> are provided for bespoke tariff rate registers",
"description": "Ensure that all registers associated with a bespoke tariff rate have got at least a <code>register_id</code> or a <code>rate_type</code> set.",
"possible_errors": [
"no_register_id_or_rate_type_provided_for_bespoke_elec_rate"
]
},
{
"name": "Validate effective to provided for end dated electricity product",
"description": "Validate that the effective to date is provided for an electricity product that has an end date.",
"possible_errors": [
"open_ended_agreement_for_end_dated_product"
]
}
]Old
[
{
"name": "Validate <code>\u2068effective_to\u2069</code> not before <code>\u2068effective_from\u2069</code>",
"description": "Validates that <code>\u2068effective_to\u2069</code>, if given, is on or later than <code>\u2068effective_from\u2069</code>.",
"possible_errors": [
"start_date_later_than_end_date"
]
},
{
"name": "Validate that the rate bands given in the rate overrides are valid for the product code",
"description": "Validate that the rate bands given in the rate overrides exist for the agreement's product.",
"possible_errors": [
"invalid_period",
"rate_band_does_not_exist"
]
},
{
"name": "Validate that either <code>register_id</code> or <code>rate_type</code> are provided for bespoke tariff rate registers",
"description": "Ensure that all registers associated with a bespoke tariff rate have got at least a <code>register_id</code> or a <code>rate_type</code> set.",
"possible_errors": [
"no_register_id_or_rate_type_provided_for_bespoke_elec_rate"
]
},
{
"name": "Validate effective to provided for end dated electricity product",
"description": "Validate that the effective to date is provided for an electricity product that has an end date.",
"possible_errors": [
"open_ended_agreement_for_end_dated_product"
]
}
]26 August 2026
New
{
"x-enum-descriptions": {
"fusion_test": "Fusion Test"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Fusion Test": "Fusion Test"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v43)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v43)"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v42)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v42)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v43)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v43)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v43)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v43)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v42)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v42)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v42)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v42)"
}
}25 August 2026
New
{
"x-enum-descriptions": {
"next_optimise_dashboard_banner": "Next Optimise Dashboard Banner"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Next Optimise Dashboard Banner": "Next Optimise Dashboard Banner"
}
}Old
{
"x-enum-descriptions": {}
}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 dummy meter exchanges are valid",
"description": "Ensure that if multiple meters with shared serial numbers are provided that they are dummy meter exchanges. Dummy meters are only valid if they are commissioned 1 day after a meter with the same serial number was decommissioned. This validates that the appropriate commission and decommission dates are appropriate and that the DMEX meter hasn't been marked as a non-dummy meter.",
"possible_errors": [
"multiple_non_dmex_meters_with_serial_number"
]
},
{
"name": "Validate the current active supplier for a gas meter point",
"description": "Ensures that the provided MPID is the current active supplier for the gas meter point, according to industry.",
"possible_errors": [
"invalid_active_meter_point_supplier",
"industry_unreachable"
]
}
]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 dummy meter exchanges are valid",
"description": "Ensure that if multiple meters with shared serial numbers are provided that they are dummy meter exchanges. Dummy meters are only valid if they are commissioned 1 day after a meter with the same serial number was decommissioned. This validates that the appropriate commission and decommission dates are appropriate and that the DMEX meter hasn't been marked as a non-dummy meter.",
"possible_errors": [
"multiple_non_dmex_meters_with_serial_number"
]
}
]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 dummy meter exchanges are valid",
"description": "Ensure that if multiple meters with shared serial numbers are provided that they are dummy meter exchanges. Dummy meters are only valid if they are commissioned 1 day after a meter with the same serial number was decommissioned. This validates that the appropriate commission and decommission dates are appropriate and that the DMEX meter hasn't been marked as a non-dummy meter.",
"possible_errors": [
"multiple_non_dmex_meters_with_serial_number"
]
},
{
"name": "Validate that registers are present for active meters",
"description": "Validate that every active meter has at least one register.",
"possible_errors": [
"registers_missing_for_active_electricity_meter"
]
},
{
"name": "Validate that TPRs are present for all non half-hourly meter points",
"description": "Validate that all non half-hourly meter point registers have a TPR.",
"possible_errors": [
"registers_missing_for_active_electricity_meter"
]
},
{
"name": "Validate that the agent contract references exists",
"description": "Validate that the agent contract references exist within Kraken for each agents given <code>contract_reference</code>, <code>service_reference</code> and <code>service_level_reference</code> data in the payload.",
"possible_errors": [
"agent_contract_reference_does_not_exist",
"multiple_active_agent_contract_references"
]
},
{
"name": "Validate that either agents or MPIDs to appoint are provided, or none are provided",
"description": "Validate that the <code>agents</code> field or a combination of <code>dc_to_appoint</code>, <code>da_to_appoint</code> and <code>mop_to_appoint</code> are not provided together.",
"possible_errors": [
"agents_and_mpids_to_appoint_provided"
]
},
{
"name": "Validate the current active supplier for an electricity meter point",
"description": "Ensures that the provided MPID is the current active supplier for the electricity meter point, according to industry.",
"possible_errors": [
"invalid_active_meter_point_supplier",
"industry_unreachable"
]
}
]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 dummy meter exchanges are valid",
"description": "Ensure that if multiple meters with shared serial numbers are provided that they are dummy meter exchanges. Dummy meters are only valid if they are commissioned 1 day after a meter with the same serial number was decommissioned. This validates that the appropriate commission and decommission dates are appropriate and that the DMEX meter hasn't been marked as a non-dummy meter.",
"possible_errors": [
"multiple_non_dmex_meters_with_serial_number"
]
},
{
"name": "Validate that registers are present for active meters",
"description": "Validate that every active meter has at least one register.",
"possible_errors": [
"registers_missing_for_active_electricity_meter"
]
},
{
"name": "Validate that TPRs are present for all non half-hourly meter points",
"description": "Validate that all non half-hourly meter point registers have a TPR.",
"possible_errors": [
"registers_missing_for_active_electricity_meter"
]
},
{
"name": "Validate that the agent contract references exists",
"description": "Validate that the agent contract references exist within Kraken for each agents given <code>contract_reference</code>, <code>service_reference</code> and <code>service_level_reference</code> data in the payload.",
"possible_errors": [
"agent_contract_reference_does_not_exist",
"multiple_active_agent_contract_references"
]
},
{
"name": "Validate that either agents or MPIDs to appoint are provided, or none are provided",
"description": "Validate that the <code>agents</code> field or a combination of <code>dc_to_appoint</code>, <code>da_to_appoint</code> and <code>mop_to_appoint</code> are not provided together.",
"possible_errors": [
"agents_and_mpids_to_appoint_provided"
]
}
]New
{
"x-enum-descriptions": {
"sam_routing": "SAM Routing",
"live_fuel_direct": "LIVE - Fuel Direct"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"SAM Routing": "SAM Routing",
"LIVE - Fuel Direct": "LIVE - Fuel Direct"
}
}Old
{
"x-enum-descriptions": {}
}24 August 2026
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v151",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v42)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v42)"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v150",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v41)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v41)"
}
}New
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v151": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v151",
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v42)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v42)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v42)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v89 & Next Secure Fixed 24m v42)"
}
}Old
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v150": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v150",
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v41)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v41)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v41)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v41)"
}
}21 August 2026
New
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V13"
}
}Old
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V12"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V13": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V13"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V12": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V12"
}
}New
{
"x-enum-descriptions": {
"APP": "APP",
"WEBSITE": "WEBSITE"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"APP": "App",
"WEBSITE": "Website"
}
}Old
{
"x-enum-descriptions": {}
}20 August 2026
No attributes to display
No attributes to display
New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V29",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.1",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V29",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.1",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v7.1"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V27",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.9",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V27",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.9",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v6.9"
}
}New
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V29": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V29",
"ABP - Next EV Renewals 2R - Next Drive Smart v7.1": "ABP - Next EV Renewals 2R - Next Drive Smart v7.1",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V29": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V29",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v7.1": "ABP - Next Drive Fixed Renewals - Next Drive Smart v7.1",
"ABP - Next Drive Smart Renewals - Next Drive Smart v7.1": "ABP - Next Drive Smart Renewals - Next Drive Smart v7.1"
}
}Old
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V27": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V27",
"ABP - Next EV Renewals 2R - Next Drive Smart v6.9": "ABP - Next EV Renewals 2R - Next Drive Smart v6.9",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V27": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V27",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v6.9": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.9",
"ABP - Next Drive Smart Renewals - Next Drive Smart v6.9": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.9"
}
}New
{
"x-enum-descriptions": {
"demandshift_poc": "DemandShift - PoC"
}
}Old
{
"x-enum-descriptions": {
"demandshift_poc_1": "DemandShift - PoC User Test 1"
}
}New
{
"x-enum-descriptions": {
"DemandShift - PoC": "DemandShift - PoC"
}
}Old
{
"x-enum-descriptions": {
"DemandShift - PoC User Test 1": "DemandShift - PoC User Test 1"
}
}19 August 2026
No attributes to display
New
{
"x-enum-descriptions": {
"ADVANCE_PAYMENT": "Advance Payment"
}
}Old
{
"x-enum-descriptions": {}
}18 August 2026
No attributes to display
No attributes to display
No attributes to display
No attributes to display
No attributes to display
No attributes to display
No attributes to display
17 August 2026
New
{
"x-removal-date": "2026-09-14"
}14 August 2026
New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v41)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v41)"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v40)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v40)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v41)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v41)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v41)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v41)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v40)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v40)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v40)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v40)"
}
}New
{
"x-enum-descriptions": {
"NO_CONTRACT": "No contract",
"OVERPAYMENT": "Overpayment",
"TRANSFER_ISU": "Transfer (ISU)",
"DD_FAILURE_ISU": "Direct debit failure (ISU)",
"CONTRACT_CANCELLATION": "Contract cancellation"
}
}Old
{
"x-enum-descriptions": {}
}New
[
{
"name": "Validate that smart fields are only provided for smart meters",
"description": "Ensure that smart fields are only present if the meter is a smart meter.",
"possible_errors": [
"smart_details_provided_for_non_smart_meter"
]
},
{
"name": "Validate that prepay fields are only provided for prepay meters",
"description": "Ensure that prepay fields are only present if the meter is a prepay meter.",
"possible_errors": [
"prepay_details_on_non_prepay_meter"
]
},
{
"name": "Validate that <code>\u2068electricity_prepayment_details\u2069</code> and <code>\u2068prepay_details\u2069</code> are not both provided",
"description": "Validate that \u2068electricity_prepayment_details\u2069 and \u2068prepay_details\u2069 are not both provided.",
"possible_errors": [
"fields_are_mutually_exclusive"
]
}
]Old
[
{
"name": "Validate that smart fields are only provided for smart meters",
"description": "Ensure that smart fields are only present if the meter is a smart meter.",
"possible_errors": [
"smart_details_provided_for_non_smart_meter"
]
},
{
"name": "Validate that prepay fields are only provided for prepay meters",
"description": "Ensure that prepay fields are only present if the meter is a prepay meter.",
"possible_errors": [
"prepay_details_on_non_prepay_meter"
]
}
]
No attributes to display
New
{
"x-removal-date": "2026-08-28"
}New
{
"x-removal-date": "2026-08-28"
}New
[
{
"name": "Validate that smart fields are only provided for smart meters",
"description": "Ensure that smart fields are only present if the meter is a smart meter.",
"possible_errors": [
"smart_details_provided_for_non_smart_meter"
]
},
{
"name": "Validate that prepay fields are only provided for prepay meters",
"description": "Ensure that prepay fields are only present if the meter is a prepay meter.",
"possible_errors": [
"prepay_details_on_non_prepay_meter"
]
},
{
"name": "Validate that <code>\u2068electricity_prepayment_details\u2069</code> and <code>\u2068prepay_details\u2069</code> are not both provided",
"description": "Validate that \u2068electricity_prepayment_details\u2069 and \u2068prepay_details\u2069 are not both provided.",
"possible_errors": [
"fields_are_mutually_exclusive"
]
},
{
"name": "Validate electricity prepay meter has customer reference number",
"description": "Validate that an active electricity prepay meter has a <code>prepay_customer_reference_number</code> provided. An active meter is one that does not have a <code>removed_on</code> date and has the <code>is_prepay</code> flag set to true.",
"possible_errors": [
"electricity_prepay_meter_without_customer_reference_number"
]
},
{
"name": "Validate that transfer readings belong to active meter register IDs",
"description": "Validate that all transfer readings have a register ID and that the register ID is on the list of given IDs for that meter.",
"possible_errors": [
"reading_register_id_not_recognised",
"reading_without_register_id"
]
},
{
"name": "Validate that historical readings have existing register IDs",
"description": "Validate that the register IDs associated with historical readings exist for the meter.",
"possible_errors": [
"historical_reading_register_id_not_recognised",
"no_register_id_for_reading"
]
}
]Old
[
{
"name": "Validate that smart fields are only provided for smart meters",
"description": "Ensure that smart fields are only present if the meter is a smart meter.",
"possible_errors": [
"smart_details_provided_for_non_smart_meter"
]
},
{
"name": "Validate that prepay fields are only provided for prepay meters",
"description": "Ensure that prepay fields are only present if the meter is a prepay meter.",
"possible_errors": [
"prepay_details_on_non_prepay_meter"
]
},
{
"name": "Validate electricity prepay meter has customer reference number",
"description": "Validate that an active electricity prepay meter has a <code>prepay_customer_reference_number</code> provided. An active meter is one that does not have a <code>removed_on</code> date and has the <code>is_prepay</code> flag set to true.",
"possible_errors": [
"electricity_prepay_meter_without_customer_reference_number"
]
},
{
"name": "Validate that transfer readings belong to active meter register IDs",
"description": "Validate that all transfer readings have a register ID and that the register ID is on the list of given IDs for that meter.",
"possible_errors": [
"reading_register_id_not_recognised",
"reading_without_register_id"
]
},
{
"name": "Validate that historical readings have existing register IDs",
"description": "Validate that the register IDs associated with historical readings exist for the meter.",
"possible_errors": [
"historical_reading_register_id_not_recognised",
"no_register_id_for_reading"
]
}
]
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": "Derive occupier billing address from supply address",
"description": "When an occupier account has no explicit billing address and exactly one supply address is provided, copy the supply address into the billing address fields.",
"possible_errors": []
},
{
"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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
},
{
"name": "Validate that <code>\u2068dd_reference\u2069</code> and <code>\u2068payment_instructions\u2069</code> are not both provided",
"description": "Validate that \u2068dd_reference\u2069 and \u2068payment_instructions\u2069 are not both provided.",
"possible_errors": [
"fields_are_mutually_exclusive"
]
}
]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": "Derive occupier billing address from supply address",
"description": "When an occupier account has no explicit billing address and exactly one supply address is provided, copy the supply address into the billing address fields.",
"possible_errors": []
},
{
"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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]New
{
"x-removal-date": "2026-09-30"
}New
{
"x-removal-date": "2026-08-28"
}New
{
"x-removal-date": "2026-10-16"
}13 August 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"
]
},
{
"name": "Validate that <code>\u2068business_contract_identifiers\u2069</code> and <code>\u2068business_contracts\u2069</code> are not both provided",
"description": "Validate that \u2068business_contract_identifiers\u2069 and \u2068business_contracts\u2069 are not both provided.",
"possible_errors": [
"fields_are_mutually_exclusive"
]
}
]Old
[
{
"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
Use instead
business_contracts
New
{
"x-use-instead": "business_contracts"
}Old
{
"x-use-instead": "business_contract_identifiers"
}12 August 2026
New
{
"x-enum-descriptions": {
"field_exclusion": "HRV Field Exclusion"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"HRV Field Exclusion": "HRV Field Exclusion"
}
}Old
{
"x-enum-descriptions": {}
}11 August 2026
New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v40)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v40)"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v39)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v39)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v40)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v40)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v40)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v40)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v39)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v39)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v39)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v39)"
}
}New
{
"x-enum-descriptions": {
"demand_shift_invited": "Demand Shift - Invited"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Demand Shift - Invited": "Demand Shift - Invited"
}
}Old
{
"x-enum-descriptions": {}
}10 August 2026
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v150",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v39)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v39)"
}
}Old
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26",
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v38)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v38)"
}
}New
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v150": "ABP - Low SC Trial June26 - Next Lower Daily Fixed 12m v150",
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v39)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v39)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v39)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v88 & Next Secure Fixed 24m v39)"
}
}Old
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26": "ABP - Low SC Trial June26",
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v38)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v38)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v38)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v38)"
}
}7 August 2026
New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v38)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v38)"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v37)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v37)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v38)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v38)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v38)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v38)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v37)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v37)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v37)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v37)"
}
}New
{
"oneOf": [
{
"type": "string",
"format": "email",
"maxLength": 254
},
{
"type": "string",
"maxLength": 0
}
]
}Old
{
"type": "string",
"format": "email",
"maxLength": 254
}New
{
"oneOf": [
{
"type": "string",
"format": "email",
"maxLength": 254
},
{
"type": "string",
"maxLength": 0
}
]
}Old
{
"type": "string",
"format": "email",
"maxLength": 254
}New
{
"oneOf": [
{
"type": "string",
"format": "email",
"maxLength": 254
},
{
"type": "string",
"maxLength": 0
}
]
}Old
{
"type": "string",
"format": "email",
"maxLength": 254
}New
{
"oneOf": [
{
"type": "string",
"format": "email",
"maxLength": 254
},
{
"type": "string",
"maxLength": 0
}
]
}Old
{
"type": "string",
"format": "email",
"maxLength": 254
}5 August 2026
New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v37)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v37)"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v86 & Next Secure Fixed 24m v36)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v86 & Next Secure Fixed 24m v36)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v37)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v37)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v37)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v87 & Next Secure Fixed 24m v37)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v86 & Next Secure Fixed 24m v36)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v86 & Next Secure Fixed 24m v36)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v86 & Next Secure Fixed 24m v36)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v86 & Next Secure Fixed 24m v36)"
}
}New
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V37"
}
}Old
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V34"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V37": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V37"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V34": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V34"
}
}4 August 2026
New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V27",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.9",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V27",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.9",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v6.9"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V25",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.7",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V25",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.7",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v6.7"
}
}New
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V27": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V27",
"ABP - Next EV Renewals 2R - Next Drive Smart v6.9": "ABP - Next EV Renewals 2R - Next Drive Smart v6.9",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V27": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V27",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v6.9": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.9",
"ABP - Next Drive Smart Renewals - Next Drive Smart v6.9": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.9"
}
}Old
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V25": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V25",
"ABP - Next EV Renewals 2R - Next Drive Smart v6.7": "ABP - Next EV Renewals 2R - Next Drive Smart v6.7",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V25": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V25",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v6.7": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.7",
"ABP - Next Drive Smart Renewals - Next Drive Smart v6.7": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.7"
}
}3 August 2026
New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v86 & Next Secure Fixed 24m v36)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v86 & Next Secure Fixed 24m v36)"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v36)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v36)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v86 & Next Secure Fixed 24m v36)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v86 & Next Secure Fixed 24m v36)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v86 & Next Secure Fixed 24m v36)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v86 & Next Secure Fixed 24m v36)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v36)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v36)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v36)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v36)"
}
}New
{
"x-enum-descriptions": {
"next_optimise_applied": "Next Optimise Applied",
"next_optimise_waitlist": "Next Optimise Waitlist",
"next_optimise_zuno_customer": "Next Optimise Zuno Customer",
"next_optimise_customer_quoted": "Next Optimise Customer Quoted",
"next_optimise_customer_quote_accepted_in_progress": "Next Optimise Customer Quote Accepted In Progress"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Next Optimise Applied": "Next Optimise Applied",
"Next Optimise Waitlist": "Next Optimise Waitlist",
"Next Optimise Zuno Customer": "Next Optimise Zuno Customer",
"Next Optimise Customer Quoted": "Next Optimise Customer Quoted",
"Next Optimise Customer Quote Accepted In Progress": "Next Optimise Customer Quote Accepted In Progress"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v36)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v36)"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v35)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v35)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v36)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v36)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v36)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v36)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v35)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v35)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v35)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v35)"
}
}30 July 2026
New
{
"x-enum-descriptions": {
"smart_saver_24m_retention_online": "Smart Saver 24m Retention Online"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Smart Saver 24m Retention Online": "Smart Saver 24m Retention Online"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"enum": [
"Test for Data"
],
"type": "string",
"x-spec-enum-id": "6d7817637c4ff799",
"x-enum-descriptions": {
"Test for Data": "Test for Data"
}
}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 for Data"
],
"type": "string",
"x-spec-enum-id": "6d7817637c4ff799",
"x-enum-descriptions": {
"Test for Data": "Test for Data"
}
}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"
],
"type": "string",
"x-spec-enum-id": "597ae7d9619c7b2b",
"x-enum-descriptions": {
"Test": "Test"
}
}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"
],
"type": "string",
"x-spec-enum-id": "597ae7d9619c7b2b",
"x-enum-descriptions": {
"Test": "Test"
}
}New
{
"enum": [
"Test"
],
"type": "string",
"x-spec-enum-id": "597ae7d9619c7b2b",
"x-enum-descriptions": {
"Test": "Test"
}
}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"
],
"type": "string",
"x-spec-enum-id": "597ae7d9619c7b2b",
"x-enum-descriptions": {
"Test": "Test"
}
}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": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v35)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v35)"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v34)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v34)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v35)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v35)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v35)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v35)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v34)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v34)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v34)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v34)"
}
}29 July 2026
New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v34)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v34)"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v33)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v33)"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v34)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v34)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v34)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v34)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v33)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v33)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v33)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v33)"
}
}27 July 2026
New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v33)",
"abp_000073": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v33)"
}
}Old
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3",
"abp_000073": "ABP Selections - SVT defaults Q3 2026"
}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v33)": "ABP Selections - Renewals Q3 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v33)",
"ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v33)": "ABP Selections - SVT defaults Q3 2026 (Next Secure Fixed 12m v85 & Next Secure Fixed 24m v33)"
}
}Old
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3": "ABP Selections - Renewals Q3",
"ABP Selections - SVT defaults Q3 2026": "ABP Selections - SVT defaults Q3 2026"
}
}24 July 2026
New
{
"x-enum-descriptions": {
"SWEB": "EDF Energy Customers Ltd (SWEB)"
}
}Old
{
"x-enum-descriptions": {}
}22 July 2026
New
{
"x-validators": [
{
"name": "Validate that each child has a unique combination of values for the <code>\u2068payment_date, payment_type\u2069</code> fields",
"description": "Validate that each child has a unique combination of values for the <code>\u2068payment_date, payment_type\u2069</code> fields.",
"possible_errors": [
"children_with_duplicate_values"
]
}
]
}Old
{
"x-validators": [
{
"name": "Validate that each child has unique values for the <code>\u2068payment_date\u2069</code> field",
"description": "Validate that each child has unique values for the <code>\u2068payment_date\u2069</code> field.",
"possible_errors": [
"children_with_duplicate_values"
]
}
]
}New
{
"x-enum-descriptions": {
"2222_FREE_MILE_FIRST": "2222_FREE_MILE_FIRST",
"2222_FREE_MILE_SECOND": "2222_FREE_MILE_SECOND"
}
}Old
{
"x-enum-descriptions": {}
}21 July 2026
No attributes to display
17 July 2026
No attributes to display
16 July 2026
No attributes to display
New
{
"x-enum-descriptions": {
"WB_CHARGE_REIMBURSEMENT": "WB_CHARGE_REIMBURSEMENT"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"playmaker_smart_multi-account_2": "Playmaker Smart Multi-Account 2"
}
}Old
{
"x-enum-descriptions": {
"playmaker_smart_multi-account": "Playmaker Smart Multi-Account"
}
}New
{
"x-enum-descriptions": {
"Playmaker Smart Multi-Account 2": "Playmaker Smart Multi-Account 2"
}
}Old
{
"x-enum-descriptions": {
"Playmaker Smart Multi-Account": "Playmaker Smart Multi-Account"
}
}Old
{
"x-validators": [
{
"name": "Validate alternative phone number is not in kraken",
"description": "Validate the alternative phone number provided does not exist in the database.",
"possible_errors": [
"alternative_phone_numbers_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": "Derive occupier billing address from supply address",
"description": "When an occupier account has no explicit billing address and exactly one supply address is provided, copy the supply address into the billing address fields.",
"possible_errors": []
},
{
"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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]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": "Derive occupier billing address from supply address",
"description": "When an occupier account has no explicit billing address and exactly one supply address is provided, copy the supply address into the billing address fields.",
"possible_errors": []
},
{
"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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]Old
{
"x-validators": [
{
"name": "Validate alternative phone number is not in kraken",
"description": "Validate the alternative phone number provided does not exist in the database.",
"possible_errors": [
"alternative_phone_numbers_already_exists"
]
}
]
}New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v82"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v81"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v82": "ABP - Renewals Next Secure Fixed 12m v82"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v81": "ABP - Renewals Next Secure Fixed 12m v81"
}
}New
{
"x-enum-descriptions": {
"ESSENTIAL_WATER_FIELD": "Essential Water Field Services"
}
}Old
{
"x-enum-descriptions": {}
}15 July 2026
New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V25",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.7",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V25",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.7",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v6.7"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V24",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.6",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V24",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.6",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v6.6"
}
}New
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V25": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V25",
"ABP - Next EV Renewals 2R - Next Drive Smart v6.7": "ABP - Next EV Renewals 2R - Next Drive Smart v6.7",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V25": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V25",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v6.7": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.7",
"ABP - Next Drive Smart Renewals - Next Drive Smart v6.7": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.7"
}
}Old
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V24": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V24",
"ABP - Next EV Renewals 2R - Next Drive Smart v6.6": "ABP - Next EV Renewals 2R - Next Drive Smart v6.6",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V24": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V24",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v6.6": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.6",
"ABP - Next Drive Smart Renewals - Next Drive Smart v6.6": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.6"
}
}New
{
"x-enum-descriptions": {}
}Old
{
"x-enum-descriptions": {
"ESSENTIAL_WATER_FIELD": "Essential Water Field Services"
}
}New
{
"x-enum-descriptions": {
"abp_000074": "Next Weekend Saver Trial"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Next Weekend Saver Trial": "Next Weekend Saver Trial"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"ESSENTIAL_WATER_FIELD": "Essential Water Field Services"
}
}Old
{
"x-enum-descriptions": {}
}New
[
{
"name": "Validate <code>\u2068end_date\u2069</code> not before <code>\u2068start_date\u2069</code>",
"description": "Validates that <code>\u2068end_date\u2069</code>, if given, is on or later than <code>\u2068start_date\u2069</code>.",
"possible_errors": [
"start_date_later_than_end_date"
]
},
{
"name": "Validate fixed payment schedule has amount",
"description": "Validates that a fixed payment schedule has an non zero amount provided in the payload. A fixed schedule is defined as a payment schedule with a trigger that is not type BILL.",
"possible_errors": [
"zero_payment_schedule_amount"
]
},
{
"name": "Validate regular payment schedule frequency provided",
"description": "Validates that a fixed regular payment schedule has a frequency provided in the payload.",
"possible_errors": [
"fixed_payment_schedule_missing_frequency"
]
},
{
"name": "Validate payment schedule balance threshold provided",
"description": "Validates that a payment schedule with a balance trigger has a balance threshold provided in the payload. This balance threshold is the amount the ledger balance must drop below to trigger a payment.",
"possible_errors": [
"balance_triggered_schedule_missing_threshold"
]
},
{
"name": "Validate debt repayment end date provided",
"description": "Validates that a debt repayment end date is provided in the payload if a debt repayment element is provided.",
"possible_errors": [
"debt_repayment_missing_end_date"
]
},
{
"name": "Validate debt repayment end date is not later than schedule end date",
"description": "Validates that a debt repayment end date is not later than the payment schedule end date if both are provided.",
"possible_errors": [
"debt_repayment_end_date_after_schedule_end_date"
]
},
{
"name": "Validate exempt from payment adequacy is applied only to regular schedule",
"description": "Validates that only a regular payment schedule is marked as exempted from payment adequacy, so as to create a fixed regular payment schedule.",
"possible_errors": [
"invalid_payment_schedule_to_exempt_from_payment_adequacy"
]
},
{
"name": "Validate fixed payment schedule has payment day",
"description": "Validates that a fixed payment schedule has a day of month in the payload. A fixed schedule is defined as a payment schedule with a trigger of type REGULAR.",
"possible_errors": [
"fixed_payment_schedule_missing_day_of_month"
]
},
{
"name": "Validate instalments is provided if trigger is PLAN",
"description": "Validate that the instalment field is not empty if payment schedule trigger is PLAN.",
"possible_errors": [
"payment_instalments_not_provided"
]
},
{
"name": "Validate instalment payment amounts sum to total amount",
"description": "Validate instalment payment amounts sum to total amount given.",
"possible_errors": [
"payment_instalments_do_not_sum_to_total"
]
},
{
"name": "Validate instalment payment date is within payment schedule active period",
"description": "Validate instalment payment date is within the period between start date and end date provided.",
"possible_errors": [
"payment_instalments_date_outside_of_payment_schedule_active_period"
]
},
{
"name": "Validate that the delayer days is set if delayer strategy is set",
"description": "Validate that the delayer days is set if delayer strategy is set",
"possible_errors": [
"payment_schedule_delay_must_have_bill_trigger",
"payment_schedule_delay_strategy_missing_delay_days"
]
},
{
"name": "Validate that the payment amount for fixed payment schedules is within the minor currency unit range of \u20680\u2069 - \u2068upper_bound\u2069",
"description": "Validate that the payment amount for any fixed payment schedule is within the major currency unit range of \u2068lower_limit\u2069 - \u2068UNLIMITED\u2069.",
"possible_errors": [
"fixed_payment_schedule_amount_out_of_range"
]
},
{
"name": "Standalone payment request method code is unexpected",
"description": "Validates that standalone_payment_request_method_code is only provided for MANUAL payment schedules.",
"possible_errors": [
"standalone_payment_request_method_code_unexpected"
]
},
{
"name": "Standalone payment request method code is valid",
"description": "Validates that standalone_payment_request_method_code matches a registered method.",
"possible_errors": [
"standalone_payment_request_method_code_invalid"
]
}
]Old
[
{
"name": "Validate <code>\u2068end_date\u2069</code> not before <code>\u2068start_date\u2069</code>",
"description": "Validates that <code>\u2068end_date\u2069</code>, if given, is on or later than <code>\u2068start_date\u2069</code>.",
"possible_errors": [
"start_date_later_than_end_date"
]
},
{
"name": "Validate fixed payment schedule has amount",
"description": "Validates that a fixed payment schedule has an non zero amount provided in the payload. A fixed schedule is defined as a payment schedule with a trigger that is not type BILL.",
"possible_errors": [
"zero_payment_schedule_amount"
]
},
{
"name": "Validate regular payment schedule frequency provided",
"description": "Validates that a fixed regular payment schedule has a frequency provided in the payload.",
"possible_errors": [
"fixed_payment_schedule_missing_frequency"
]
},
{
"name": "Validate payment schedule balance threshold provided",
"description": "Validates that a payment schedule with a balance trigger has a balance threshold provided in the payload. This balance threshold is the amount the ledger balance must drop below to trigger a payment.",
"possible_errors": [
"balance_triggered_schedule_missing_threshold"
]
},
{
"name": "Validate debt repayment end date provided",
"description": "Validates that a debt repayment end date is provided in the payload if a debt repayment element is provided.",
"possible_errors": [
"debt_repayment_missing_end_date"
]
},
{
"name": "Validate debt repayment end date is not later than schedule end date",
"description": "Validates that a debt repayment end date is not later than the payment schedule end date if both are provided.",
"possible_errors": [
"debt_repayment_end_date_after_schedule_end_date"
]
},
{
"name": "Validate exempt from payment adequacy is applied only to regular schedule",
"description": "Validates that only a regular payment schedule is marked as exempted from payment adequacy, so as to create a fixed regular payment schedule.",
"possible_errors": [
"invalid_payment_schedule_to_exempt_from_payment_adequacy"
]
},
{
"name": "Validate fixed payment schedule has payment day",
"description": "Validates that a fixed payment schedule has a day of month in the payload. A fixed schedule is defined as a payment schedule with a trigger of type REGULAR.",
"possible_errors": [
"fixed_payment_schedule_missing_day_of_month"
]
},
{
"name": "Validate instalments is provided if trigger is PLAN",
"description": "Validate that the instalment field is not empty if payment schedule trigger is PLAN.",
"possible_errors": [
"payment_instalments_not_provided"
]
},
{
"name": "Validate instalment payment amounts sum to total amount",
"description": "Validate instalment payment amounts sum to total amount given.",
"possible_errors": [
"payment_instalments_do_not_sum_to_total"
]
},
{
"name": "Validate instalment payment date is within payment schedule active period",
"description": "Validate instalment payment date is within the period between start date and end date provided.",
"possible_errors": [
"payment_instalments_date_outside_of_payment_schedule_active_period"
]
},
{
"name": "Validate that the delayer days is set if delayer strategy is set",
"description": "Validate that the delayer days is set if delayer strategy is set",
"possible_errors": [
"payment_schedule_delay_must_have_bill_trigger",
"payment_schedule_delay_strategy_missing_delay_days"
]
},
{
"name": "Validate that the payment amount for fixed payment schedules is within the minor currency unit range of \u20680\u2069 - \u2068upper_bound\u2069",
"description": "Validate that the payment amount for any fixed payment schedule is within the major currency unit range of \u2068lower_limit\u2069 - \u2068UNLIMITED\u2069.",
"possible_errors": [
"fixed_payment_schedule_amount_out_of_range"
]
}
]13 July 2026
New
{
"x-enum-descriptions": {
"abp_000072": "ABP Selections - Renewals Q3",
"abp_000073": "ABP Selections - SVT defaults Q3 2026"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"ABP Selections - Renewals Q3": "ABP Selections - Renewals Q3",
"ABP Selections - SVT defaults Q3 2026": "ABP Selections - SVT defaults Q3 2026"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V34"
}
}Old
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V33"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V34": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V34"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V33": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V33"
}
}10 July 2026
New
{
"x-enum-descriptions": {
"jmi_retention_web": "JMI retention Web"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"JMI retention Web": "JMI retention Web"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"GSP_CORRECTION": "GSP_CORRECTION"
}
}Old
{
"x-enum-descriptions": {}
}9 July 2026
No attributes to display
New
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V12"
}
}Old
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V11"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V12": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V12"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V11": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V11"
}
}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": "Derive occupier billing address from supply address",
"description": "When an occupier account has no explicit billing address and exactly one supply address is provided, copy the supply address into the billing address fields.",
"possible_errors": []
},
{
"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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]8 July 2026
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v81"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v80"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v81": "ABP - Renewals Next Secure Fixed 12m v81"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v80": "ABP - Renewals Next Secure Fixed 12m v80"
}
}New
{
"x-enum-descriptions": {
"nectar_details_gift_card": "Add Nectar Details - \u00a350 Gift Card"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Add Nectar Details - \u00a350 Gift Card": "Add Nectar Details - \u00a350 Gift Card"
}
}Old
{
"x-enum-descriptions": {}
}7 July 2026
New
{
"x-enum-descriptions": {
"next_drive_lite_test": "Next Drive Lite Test"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Next Drive Lite Test": "Next Drive Lite Test"
}
}Old
{
"x-enum-descriptions": {}
}2 July 2026
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v28",
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v80"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v27",
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v79"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v80": "ABP - Renewals Next Secure Fixed 12m v80",
"ABP - Renewals Next Secure Fixed 24m v28": "ABP - Renewals Next Secure Fixed 24m v28"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v79": "ABP - Renewals Next Secure Fixed 12m v79",
"ABP - Renewals Next Secure Fixed 24m v27": "ABP - Renewals Next Secure Fixed 24m v27"
}
}Old
{
"maxItems": 1
}1 July 2026
New
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V33"
}
}Old
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V32"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V33": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V33"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V32": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V32"
}
}30 June 2026
No attributes to display
New
[
{
"name": "Ensures only <code>user_details</code> or <code>details</code> are provided",
"description": "Ensures that only <code>user_details</code> or <code>details</code> are provided, not both.",
"possible_errors": [
"customer_details_and_user_details_both_provided"
]
},
{
"name": "Validate no contact details for occupier",
"description": "Validates that a customer identified as \"The Occupier\" does not have contact details. If contact details are provided it implies that the identity of the customer is known, and it therefore not an unknown occupier.",
"possible_errors": [
"contact_details_for_occupier"
]
},
{
"name": "Validate that the customer's name is not \"The Occupier\"",
"description": "Validate that the customer's name is not \"The Occupier\". To indicate an occupier account, use the <code>unknown_occupier</code> flag at the account-level.",
"possible_errors": [
"customer_may_not_be_named_the_occupier"
]
},
{
"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 user role",
"description": "Validates that at least one user role is provided through <code>portfolio_roles</code> or <code>account_roles</code>.",
"possible_errors": [
"required_user_role"
]
},
{
"name": "Validate exclusive role assignment",
"description": "Validates that an exclusively-assignable role is not assigned to a user alongside any other role, whether in the same payload or already held by the user.",
"possible_errors": [
"customer_has_exclusive_role_conflict"
]
},
{
"name": "Validate that <code>\u2068customer_preferences\u2069</code> and <code>\u2068consents\u2069</code> are not both provided",
"description": "Validate that \u2068customer_preferences\u2069 and \u2068consents\u2069 are not both provided.",
"possible_errors": [
"fields_are_mutually_exclusive"
]
}
]Old
[
{
"name": "Ensures only <code>user_details</code> or <code>details</code> are provided",
"description": "Ensures that only <code>user_details</code> or <code>details</code> are provided, not both.",
"possible_errors": [
"customer_details_and_user_details_both_provided"
]
},
{
"name": "Validate no contact details for occupier",
"description": "Validates that a customer identified as \"The Occupier\" does not have contact details. If contact details are provided it implies that the identity of the customer is known, and it therefore not an unknown occupier.",
"possible_errors": [
"contact_details_for_occupier"
]
},
{
"name": "Validate that the customer's name is not \"The Occupier\"",
"description": "Validate that the customer's name is not \"The Occupier\". To indicate an occupier account, use the <code>unknown_occupier</code> flag at the account-level.",
"possible_errors": [
"customer_may_not_be_named_the_occupier"
]
},
{
"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 user role",
"description": "Validates that at least one user role is provided through <code>portfolio_roles</code> or <code>account_roles</code>.",
"possible_errors": [
"required_user_role"
]
},
{
"name": "Validate that <code>\u2068customer_preferences\u2069</code> and <code>\u2068consents\u2069</code> are not both provided",
"description": "Validate that \u2068customer_preferences\u2069 and \u2068consents\u2069 are not both provided.",
"possible_errors": [
"fields_are_mutually_exclusive"
]
}
]
No attributes to display
No attributes to display
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v27",
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v79"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v26",
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v11"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v79": "ABP - Renewals Next Secure Fixed 12m v79",
"ABP - Renewals Next Secure Fixed 24m v27": "ABP - Renewals Next Secure Fixed 24m v27"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v11": "ABP - Renewals Next Secure Fixed 13m v11",
"ABP - Renewals Next Secure Fixed 24m v26": "ABP - Renewals Next Secure Fixed 24m v26"
}
}New
{
"x-enum-descriptions": {
"next_weekend_saver": "Next Weekend Saver"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Next Weekend Saver": "Next Weekend Saver"
}
}Old
{
"x-enum-descriptions": {}
}26 June 2026
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"
]
}
]25 June 2026
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v26",
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v11"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v25",
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v10"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v11": "ABP - Renewals Next Secure Fixed 13m v11",
"ABP - Renewals Next Secure Fixed 24m v26": "ABP - Renewals Next Secure Fixed 24m v26"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v10": "ABP - Renewals Next Secure Fixed 13m v10",
"ABP - Renewals Next Secure Fixed 24m v25": "ABP - Renewals Next Secure Fixed 24m v25"
}
}23 June 2026
No attributes to display
22 June 2026
New
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V32"
}
}Old
{
"x-enum-descriptions": {
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V29"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V32": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V32"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V29": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V29"
}
}New
{
"x-enum-descriptions": {
"vwan": "VWAN"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"VWAN": "VWAN"
}
}Old
{
"x-enum-descriptions": {}
}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
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v25",
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v10",
"drive_evcharger": "Drive EV Charger",
"od_loftinsulation": "OD Loft Insulation"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v24",
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v9"
}
}New
{
"x-enum-descriptions": {
"Drive EV Charger": "Drive EV Charger",
"OD Loft Insulation": "OD Loft Insulation",
"ABP - Renewals Next Secure Fixed 13m v10": "ABP - Renewals Next Secure Fixed 13m v10",
"ABP - Renewals Next Secure Fixed 24m v25": "ABP - Renewals Next Secure Fixed 24m v25"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v9": "ABP - Renewals Next Secure Fixed 13m v9",
"ABP - Renewals Next Secure Fixed 24m v24": "ABP - Renewals Next Secure Fixed 24m v24"
}
}
No attributes to display
18 June 2026
No attributes to display
New
{
"gbr-gas.payment-method": "#/components/schemas/Gbr-gas.payment-methodCharacteristic"
}New
[
{
"$ref": "#/components/schemas/Gbr-gas.payment-methodCharacteristic"
},
{
"$ref": "#/components/schemas/SalesChannelCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-gas.meter-point-grid-supply-point-equivalentCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.meter-rate-profileCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.payment-methodCharacteristic"
}
]Old
[
{
"$ref": "#/components/schemas/SalesChannelCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.payment-methodCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-gas.meter-point-grid-supply-point-equivalentCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.meter-rate-profileCharacteristic"
}
]
No attributes to display
New
{
"gbr-gas.meter-point-grid-supply-point-equivalent": "#/components/schemas/Gbr-gas.meter-point-grid-supply-point-equivalentCharacteristic"
}New
[
{
"$ref": "#/components/schemas/Gbr-gas.meter-point-grid-supply-point-equivalentCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.meter-rate-profileCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.payment-methodCharacteristic"
},
{
"$ref": "#/components/schemas/SalesChannelCharacteristic"
}
]Old
[
{
"$ref": "#/components/schemas/Gbr-electricity.meter-rate-profileCharacteristic"
},
{
"$ref": "#/components/schemas/SalesChannelCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.payment-methodCharacteristic"
}
]17 June 2026
No attributes to display
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v24",
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v9"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v23",
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v8"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v9": "ABP - Renewals Next Secure Fixed 13m v9",
"ABP - Renewals Next Secure Fixed 24m v24": "ABP - Renewals Next Secure Fixed 24m v24"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v8": "ABP - Renewals Next Secure Fixed 13m v8",
"ABP - Renewals Next Secure Fixed 24m v23": "ABP - Renewals Next Secure Fixed 24m v23"
}
}16 June 2026
New
{
"x-enum-descriptions": {
"od_solar": "OD Solar",
"od_boiler": "OD Boiler",
"od_cavity": "OD Cavity",
"od_roominroof": "OD Room In Roof",
"od_underfloor": "OD Under floor",
"od_externalwall": "OD External Wall",
"od_internalwall": "OD Internal Wall",
"od_storageheaters": "OD Storage Heaters",
"od_districtheating": "OD DistrictHeating",
"od_heatingcontrols": "OD Heating Controls",
"od_airsourceheatpump": "OD AirSource Heat Pump",
"od_flatroofinsulation": "OD Flat Roof Insulation",
"od_groundsourceheatpump": "OD Ground Source Heat Pump"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"OD Solar": "OD Solar",
"OD Boiler": "OD Boiler",
"OD Cavity": "OD Cavity",
"OD Under floor": "OD Under floor",
"OD Room In Roof": "OD Room In Roof",
"OD External Wall": "OD External Wall",
"OD Internal Wall": "OD Internal Wall",
"OD DistrictHeating": "OD DistrictHeating",
"OD Storage Heaters": "OD Storage Heaters",
"OD Heating Controls": "OD Heating Controls",
"OD AirSource Heat Pump": "OD AirSource Heat Pump",
"OD Flat Roof Insulation": "OD Flat Roof Insulation",
"OD Ground Source Heat Pump": "OD Ground Source Heat Pump"
}
}Old
{
"x-enum-descriptions": {}
}15 June 2026
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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]
No attributes to display
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v23"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v22"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v23": "ABP - Renewals Next Secure Fixed 24m v23"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v22": "ABP - Renewals Next Secure Fixed 24m v22"
}
}12 June 2026
No attributes to display
New
{
"x-enum-descriptions": {
"jmi_retention": "JMI retention"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"JMI retention": "JMI retention"
}
}Old
{
"x-enum-descriptions": {}
}
No attributes to display
11 June 2026
New
{
"x-enum-descriptions": {
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V29",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V29"
}
}Old
{
"x-enum-descriptions": {
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V28",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V28"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V29": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V29",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V29": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V29"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V28": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V28",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V28": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V28"
}
}10 June 2026
New
{
"x-enum-descriptions": {
"sea_referral": "SEA Referral"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"SEA Referral": "SEA Referral"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"sea_support": "SEA Support"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"SEA Support": "SEA Support"
}
}Old
{
"x-enum-descriptions": {}
}9 June 2026
New
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V11"
}
}Old
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V12"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V11": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V11"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V12": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V12"
}
}New
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V12"
}
}Old
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V11"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V12": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V12"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V11": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V11"
}
}New
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V11"
}
}Old
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V9"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V11": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V11"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V9": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V9"
}
}New
{
"x-enum-descriptions": {
"flatsave_customer_live": "FlatSave - Customer Live",
"low_bill_customer_live": "Low Bill - Customer Live",
"low_bill_assets_in_progress": "Low Bill - Assets in Progress",
"flatsave_registered_interest": "FlatSave - Registered Interest",
"low_bill_registered_interest": "Low Bill - Registered Interest"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"FlatSave - Customer Live": "FlatSave - Customer Live",
"Low Bill - Customer Live": "Low Bill - Customer Live",
"Low Bill - Assets in Progress": "Low Bill - Assets in Progress",
"FlatSave - Registered Interest": "FlatSave - Registered Interest",
"Low Bill - Registered Interest": "Low Bill - Registered Interest"
}
}Old
{
"x-enum-descriptions": {}
}8 June 2026
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v22",
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v8"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v21",
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v7"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v8": "ABP - Renewals Next Secure Fixed 13m v8",
"ABP - Renewals Next Secure Fixed 24m v22": "ABP - Renewals Next Secure Fixed 24m v22"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v7": "ABP - Renewals Next Secure Fixed 13m v7",
"ABP - Renewals Next Secure Fixed 24m v21": "ABP - Renewals Next Secure Fixed 24m v21"
}
}5 June 2026
New
{
"x-enum-descriptions": {
"outstandingvmo2_3g_north_switch_off": "OutstandingVMO2 3G North Switch Off"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"OutstandingVMO2 3G North Switch Off": "OutstandingVMO2 3G North Switch Off"
}
}Old
{
"x-enum-descriptions": {}
}4 June 2026
New
{
"x-enum-descriptions": {
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V28",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V28"
}
}Old
{
"x-enum-descriptions": {
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V27",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V27"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V28": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V28",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V28": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V28"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V27": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V27",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V27": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V27"
}
}
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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]New
{
"x-enum-descriptions": {
"SYSTEM": "System"
}
}Old
{
"x-enum-descriptions": {}
}3 June 2026
New
{
"x-enum-descriptions": {
"EON_FLATSAVE": "EON_FLATSAVE"
}
}Old
{
"x-enum-descriptions": {
"EON_SOLSHARE": "EON_SOLSHARE"
}
}New
{
"x-enum-descriptions": {
"playmaker_spayg": "Playmaker SPAYG",
"playmaker__complex": "Playmaker Complex",
"playmaker_smart_gas_only": "Playmaker Smart Gas Only",
"playmaker_smart_multi-rate": "Playmaker Smart Multi-Rate",
"playmaker_smart_multi-account": "Playmaker Smart Multi-Account",
"playmaker_smart_unhealthy_fdd": "Playmaker Smart Unhealthy - FDD",
"playmaker_smart_unhealthy_svt": "Playmaker Smart Unhealthy - SVT",
"playmaker_smart_unhealthy_vdd": "Playmaker Smart Unhealthy - VDD",
"playmaker_smart_unhealthy_fixed": "Playmaker Smart Unhealthy - Fixed",
"playmaker_smart_unhealthy_porob": "Playmaker Smart Unhealthy - POROB"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Playmaker SPAYG": "Playmaker SPAYG",
"Playmaker Complex": "Playmaker Complex",
"Playmaker Smart Gas Only": "Playmaker Smart Gas Only",
"Playmaker Smart Multi-Rate": "Playmaker Smart Multi-Rate",
"Playmaker Smart Multi-Account": "Playmaker Smart Multi-Account",
"Playmaker Smart Unhealthy - FDD": "Playmaker Smart Unhealthy - FDD",
"Playmaker Smart Unhealthy - SVT": "Playmaker Smart Unhealthy - SVT",
"Playmaker Smart Unhealthy - VDD": "Playmaker Smart Unhealthy - VDD",
"Playmaker Smart Unhealthy - Fixed": "Playmaker Smart Unhealthy - Fixed",
"Playmaker Smart Unhealthy - POROB": "Playmaker Smart Unhealthy - POROB"
}
}Old
{
"x-enum-descriptions": {}
}2 June 2026
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v7"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v6"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v7": "ABP - Renewals Next Secure Fixed 13m v7"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v6": "ABP - Renewals Next Secure Fixed 13m v6"
}
}New
{
"x-enum-descriptions": {
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V27",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V27"
}
}Old
{
"x-enum-descriptions": {
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V19",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V19"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V27": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V27",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V27": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V27"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V19": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V19",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V19": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V19"
}
}New
{
"x-enum-descriptions": {
"SME_WINBACK_CAMPAIGN": "SME_WINBACK_CAMPAIGN"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-validators": [
{
"name": "Validate that the market participant exists",
"description": "Validate that the market participant ID passed in the payload exists in Kraken.",
"possible_errors": [
"market_participant_not_found",
"supply_type_not_recognised"
]
}
]
}1 June 2026
New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V24",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.6",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V24",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.6",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v6.6"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V23",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.5",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V23",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.5",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v6.5"
}
}New
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V24": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V24",
"ABP - Next EV Renewals 2R - Next Drive Smart v6.6": "ABP - Next EV Renewals 2R - Next Drive Smart v6.6",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V24": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V24",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v6.6": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.6",
"ABP - Next Drive Smart Renewals - Next Drive Smart v6.6": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.6"
}
}Old
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V23": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V23",
"ABP - Next EV Renewals 2R - Next Drive Smart v6.5": "ABP - Next EV Renewals 2R - Next Drive Smart v6.5",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V23": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V23",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v6.5": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.5",
"ABP - Next Drive Smart Renewals - Next Drive Smart v6.5": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.5"
}
}29 May 2026
New
{
"x-enum-descriptions": {
"demand_shift_pilot_exclude_from_upcoming": "Demand Shift - Pilot (Exclude from upcoming)"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Demand Shift - Pilot (Exclude from upcoming)": "Demand Shift - Pilot (Exclude from upcoming)"
}
}Old
{
"x-enum-descriptions": {}
}28 May 2026
New
{
"x-enum-descriptions": {
"abp_000071": "ABP - Low SC Trial June26"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"ABP - Low SC Trial June26": "ABP - Low SC Trial June26"
}
}Old
{
"x-enum-descriptions": {}
}27 May 2026
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v6"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v5"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v6": "ABP - Renewals Next Secure Fixed 13m v6"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v5": "ABP - Renewals Next Secure Fixed 13m v5"
}
}26 May 2026
New
{
"x-enum-descriptions": {
"demand_shift_pilot": "Demand Shift - Pilot"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Demand Shift - Pilot": "Demand Shift - Pilot"
}
}Old
{
"x-enum-descriptions": {}
}24 May 2026
No attributes to display
No attributes to display
No attributes to display
22 May 2026
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v21",
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v5"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v20",
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v4"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v5": "ABP - Renewals Next Secure Fixed 13m v5",
"ABP - Renewals Next Secure Fixed 24m v21": "ABP - Renewals Next Secure Fixed 24m v21"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v4": "ABP - Renewals Next Secure Fixed 13m v4",
"ABP - Renewals Next Secure Fixed 24m v20": "ABP - Renewals Next Secure Fixed 24m v20"
}
}21 May 2026
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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]Old
{
"maxItems": 1
}19 May 2026
No attributes to display
No attributes to display
New
{
"x-enum-descriptions": {
"abp_000070": "ABP - Pledge - July 2026 Fix (v2)"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"ABP - Pledge - July 2026 Fix (v2)": "ABP - Pledge - July 2026 Fix (v2)"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"EON_SOLSHARE": "EON_SOLSHARE"
}
}Old
{
"x-enum-descriptions": {}
}18 May 2026
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v20"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v19"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v20": "ABP - Renewals Next Secure Fixed 24m v20"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v19": "ABP - Renewals Next Secure Fixed 24m v19"
}
}New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v4"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v3"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v4": "ABP - Renewals Next Secure Fixed 13m v4"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v3": "ABP - Renewals Next Secure Fixed 13m v3"
}
}15 May 2026
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v3"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v2"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v3": "ABP - Renewals Next Secure Fixed 13m v3"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v2": "ABP - Renewals Next Secure Fixed 13m v2"
}
}New
{
"x-enum-descriptions": {
"boiler_launch_may_26": "boiler launch may 26"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"boiler launch may 26": "boiler launch may 26"
}
}Old
{
"x-enum-descriptions": {}
}14 May 2026
New
{
"x-enum-descriptions": {
"issuance_migrated": "Issuance migrated",
"market_supply_migration_completed": "Market Supply migration: Completed",
"market_supply_migration_in_progress": "Market Supply migration: In progress"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Issuance migrated": "Issuance migrated",
"Market Supply migration: Completed": "Market Supply migration: Completed",
"Market Supply migration: In progress": "Market Supply migration: In progress"
}
}Old
{
"x-enum-descriptions": {}
}
No attributes to display
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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]12 May 2026
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v19"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v18"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v19": "ABP - Renewals Next Secure Fixed 24m v19"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v18": "ABP - Renewals Next Secure Fixed 24m v18"
}
}11 May 2026
New
{
"x-enum-descriptions": {
"HMC_GUARANTEE_FULL": "Hourly Matching Credit Guarantee Full rate (pence per kWh) for business tariffs",
"HMC_GUARANTEE_ADVANCE": "Hourly Matching Credit Guarantee Advance rate (pence per kWh) for business tariffs"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {}
}Old
{
"x-enum-descriptions": {
"smartflex_multiple_ev_tester": "ResiFlex Multi-EV Tester"
}
}New
{
"x-enum-descriptions": {}
}Old
{
"x-enum-descriptions": {
"ResiFlex Multi-EV Tester": "ResiFlex Multi-EV Tester"
}
}New
{
"x-enum-descriptions": {
"abp_000069": "ABP - Pledge - July 2026 Fix"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"ABP - Pledge - July 2026 Fix": "ABP - Pledge - July 2026 Fix"
}
}Old
{
"x-enum-descriptions": {}
}
No attributes to display
8 May 2026
New
{
"x-removal-date": "2026-05-25"
}New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v2"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v1"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v2": "ABP - Renewals Next Secure Fixed 13m v2"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v1": "ABP - Renewals Next Secure Fixed 13m v1"
}
}
No attributes to display
No attributes to display
7 May 2026
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 13m v1"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v78"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 13m v1": "ABP - Renewals Next Secure Fixed 13m v1"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v78": "ABP - Renewals Next Secure Fixed 12m v78"
}
}
No attributes to display
No attributes to display
No attributes to display
6 May 2026
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v78"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v77"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v78": "ABP - Renewals Next Secure Fixed 12m v78"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v77": "ABP - Renewals Next Secure Fixed 12m v77"
}
}
No attributes to display
No attributes to display
5 May 2026
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v77"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v76"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v77": "ABP - Renewals Next Secure Fixed 12m v77"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v76": "ABP - Renewals Next Secure Fixed 12m v76"
}
}New
{
"x-enum-descriptions": {
"SAP": "SAP"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"demandshift_internal": "DemandShift - Internal Testers"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"DemandShift - Internal Testers": "DemandShift - Internal Testers"
}
}Old
{
"x-enum-descriptions": {}
}1 May 2026
New
{
"x-enum-descriptions": {
"broker_or_3rd_party_retentions": "Broker or 3rd party retentions"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Broker or 3rd party retentions": "Broker or 3rd party retentions"
}
}Old
{
"x-enum-descriptions": {}
}30 April 2026
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v18"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v17"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v18": "ABP - Renewals Next Secure Fixed 24m v18"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v17": "ABP - Renewals Next Secure Fixed 24m v17"
}
}New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v76"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v75"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v76": "ABP - Renewals Next Secure Fixed 12m v76"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v75": "ABP - Renewals Next Secure Fixed 12m v75"
}
}New
{
"x-enum-descriptions": {
"abp_000068": "ABP - TEST FOR FUTURE DATED FIX"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"ABP - TEST FOR FUTURE DATED FIX": "ABP - TEST FOR FUTURE DATED FIX"
}
}Old
{
"x-enum-descriptions": {}
}29 April 2026
No attributes to display
No attributes to display
28 April 2026
No attributes to display
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v75"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v74"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v75": "ABP - Renewals Next Secure Fixed 12m v75"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v74": "ABP - Renewals Next Secure Fixed 12m v74"
}
}27 April 2026
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v74"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v73"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v74": "ABP - Renewals Next Secure Fixed 12m v74"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v73": "ABP - Renewals Next Secure Fixed 12m v73"
}
}New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V23",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.5",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V23",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.5",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v6.5"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V17",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v5.9",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V17",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v5.9",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v5.9"
}
}New
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V23": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V23",
"ABP - Next EV Renewals 2R - Next Drive Smart v6.5": "ABP - Next EV Renewals 2R - Next Drive Smart v6.5",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V23": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V23",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v6.5": "ABP - Next Drive Fixed Renewals - Next Drive Smart v6.5",
"ABP - Next Drive Smart Renewals - Next Drive Smart v6.5": "ABP - Next Drive Smart Renewals - Next Drive Smart v6.5"
}
}Old
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V17": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V17",
"ABP - Next EV Renewals 2R - Next Drive Smart v5.9": "ABP - Next EV Renewals 2R - Next Drive Smart v5.9",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V17": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V17",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v5.9": "ABP - Next Drive Fixed Renewals - Next Drive Smart v5.9",
"ABP - Next Drive Smart Renewals - Next Drive Smart v5.9": "ABP - Next Drive Smart Renewals - Next Drive Smart v5.9"
}
}24 April 2026
No attributes to display
New
{
"gbr-electricity.payment-method": "#/components/schemas/Gbr-electricity.payment-methodCharacteristic"
}New
[
{
"$ref": "#/components/schemas/Gbr-electricity.meter-rate-profileCharacteristic"
},
{
"$ref": "#/components/schemas/SalesChannelCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.payment-methodCharacteristic"
}
]Old
[
{
"$ref": "#/components/schemas/SalesChannelCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.meter-rate-profileCharacteristic"
}
]New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v73"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v72"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v73": "ABP - Renewals Next Secure Fixed 12m v73"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v72": "ABP - Renewals Next Secure Fixed 12m v72"
}
}23 April 2026
Old
{
"gbr-electricity.payment-method": "#/components/schemas/Gbr-electricity.payment-methodCharacteristic"
}New
[
{
"$ref": "#/components/schemas/SalesChannelCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.meter-rate-profileCharacteristic"
}
]Old
[
{
"$ref": "#/components/schemas/Gbr-electricity.meter-rate-profileCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.payment-methodCharacteristic"
},
{
"$ref": "#/components/schemas/SalesChannelCharacteristic"
}
]
No attributes to display
22 April 2026
New
{
"x-enum-descriptions": {}
}Old
{
"x-enum-descriptions": {
"GBE": "National Grid GBE"
}
}New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v72"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v71"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v72": "ABP - Renewals Next Secure Fixed 12m v72"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v71": "ABP - Renewals Next Secure Fixed 12m v71"
}
}21 April 2026
New
{
"x-enum-descriptions": {
"advanced_billed_hh_data": "Advanced - Billed to HH Data",
"advanced_billed_to_readings": "Advanced - Billed to readings"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Advanced - Billed to HH Data": "Advanced - Billed to HH Data",
"Advanced - Billed to readings": "Advanced - Billed to readings"
}
}Old
{
"x-enum-descriptions": {}
}20 April 2026
New
{
"x-removal-date": "2026-05-20"
}New
{
"x-removal-date": "2026-05-20"
}Old
{
"nullable": true
}17 April 2026
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v71"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v70"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v71": "ABP - Renewals Next Secure Fixed 12m v71"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v70": "ABP - Renewals Next Secure Fixed 12m v70"
}
}New
{
"x-enum-descriptions": {
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V19",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V19"
}
}Old
{
"x-enum-descriptions": {
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V17",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V17"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V19": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V19",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V19": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V19"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V17": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V17",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V17": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V17"
}
}New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v70"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v69"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v70": "ABP - Renewals Next Secure Fixed 12m v70"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v69": "ABP - Renewals Next Secure Fixed 12m v69"
}
}
No attributes to display
No attributes to display
15 April 2026
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 12m v69"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 15m v4"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 12m v69": "ABP - Renewals Next Secure Fixed 12m v69"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 15m v4": "ABP - Renewals Next Secure Fixed 15m v4"
}
}
No attributes to display
14 April 2026
New
{
"x-enum-descriptions": {
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V17",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V17"
}
}Old
{
"x-enum-descriptions": {
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V15",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V15"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V17": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V17",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V17": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V17"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V15": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V15",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V15": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V15"
}
}13 April 2026
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v17",
"abp_000067": "ABP - Renewals Next Secure Fixed 15m v4"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v16",
"abp_000067": "ABP - Renewals Next Secure Fixed 15m v3"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 15m v4": "ABP - Renewals Next Secure Fixed 15m v4",
"ABP - Renewals Next Secure Fixed 24m v17": "ABP - Renewals Next Secure Fixed 24m v17"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 15m v3": "ABP - Renewals Next Secure Fixed 15m v3",
"ABP - Renewals Next Secure Fixed 24m v16": "ABP - Renewals Next Secure Fixed 24m v16"
}
}10 April 2026
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v16"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v15"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v16": "ABP - Renewals Next Secure Fixed 24m v16"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v15": "ABP - Renewals Next Secure Fixed 24m v15"
}
}9 April 2026
New
{
"x-enum-descriptions": {}
}Old
{
"x-enum-descriptions": {
"terminal_illness": "Terminal Illness"
}
}New
{
"x-enum-descriptions": {}
}Old
{
"x-enum-descriptions": {
"Terminal Illness": "Terminal Illness"
}
}New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 15m v3"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 15m v2"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 15m v3": "ABP - Renewals Next Secure Fixed 15m v3"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 15m v2": "ABP - Renewals Next Secure Fixed 15m v2"
}
}7 April 2026
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 15m v2"
}
}Old
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 15m v1"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 15m v2": "ABP - Renewals Next Secure Fixed 15m v2"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 15m v1": "ABP - Renewals Next Secure Fixed 15m v1"
}
}New
{
"x-enum-descriptions": {
"test_tou_app": "Test TOU App"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Test TOU App": "Test TOU App"
}
}Old
{
"x-enum-descriptions": {}
}2 April 2026
New
{
"x-enum-descriptions": {
"abp_000067": "ABP - Renewals Next Secure Fixed 15m v1",
"zuno_boiler": "Zuno Boiler"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Zuno Boiler": "Zuno Boiler",
"ABP - Renewals Next Secure Fixed 15m v1": "ABP - Renewals Next Secure Fixed 15m v1"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"res_sold_account": "RES sold account",
"sme_sold_account": "SME sold account"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"RES sold account": "RES sold account",
"SME sold account": "SME sold account"
}
}Old
{
"x-enum-descriptions": {}
}1 April 2026
New
{
"x-enum-descriptions": {
"IFS": "IFS"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v15"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v14"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v15": "ABP - Renewals Next Secure Fixed 24m v15"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v14": "ABP - Renewals Next Secure Fixed 24m v14"
}
}30 March 2026
No attributes to display
No attributes to display
27 March 2026
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v14",
"sme_insolv_mvl": "SME Insolv MVL",
"sold_account_closed_with_purchaser": "Sold account closed with purchaser"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v13"
}
}New
{
"x-enum-descriptions": {
"SME Insolv MVL": "SME Insolv MVL",
"Sold account closed with purchaser": "Sold account closed with purchaser",
"ABP - Renewals Next Secure Fixed 24m v14": "ABP - Renewals Next Secure Fixed 24m v14"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v13": "ABP - Renewals Next Secure Fixed 24m v13"
}
}New
{
"x-enum-descriptions": {
"CUSTOM": "Custom"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"CUSTOM": "Custom"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"app_rewards_instant_win": "App Rewards: Spin the Wheel"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"App Rewards: Spin the Wheel": "App Rewards: Spin the Wheel"
}
}Old
{
"x-enum-descriptions": {}
}26 March 2026
New
{
"x-enum-descriptions": {
"EON_APP_REWARDS_INSTANT_WIN": "EON_APP_REWARDS_INSTANT_WIN"
}
}Old
{
"x-enum-descriptions": {}
}25 March 2026
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v13"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v12"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v13": "ABP - Renewals Next Secure Fixed 24m v13"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v12": "ABP - Renewals Next Secure Fixed 24m v12"
}
}24 March 2026
New
{
"x-removal-date": "2026-04-29"
}23 March 2026
New
{
"x-enum-descriptions": {
"abp_000066": "ABP - Renewals Next Secure Fixed 24m v12"
}
}Old
{
"x-enum-descriptions": {
"abp_000066": "NEXT_SECURE_FIXED_24M_V11"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals Next Secure Fixed 24m v12": "ABP - Renewals Next Secure Fixed 24m v12"
}
}Old
{
"x-enum-descriptions": {
"NEXT_SECURE_FIXED_24M_V11": "NEXT_SECURE_FIXED_24M_V11"
}
}22 March 2026
New
{
"x-enum-descriptions": {
"playmaker_tou": "Playmaker TOU"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"Playmaker TOU": "Playmaker TOU"
}
}Old
{
"x-enum-descriptions": {}
}20 March 2026
New
{
"x-enum-descriptions": {
"abp_000066": "NEXT_SECURE_FIXED_24M_V11"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"NEXT_SECURE_FIXED_24M_V11": "NEXT_SECURE_FIXED_24M_V11"
}
}Old
{
"x-enum-descriptions": {}
}17 March 2026
New
{
"x-enum-descriptions": {
"abp_000065": "ABP - Renewals - Next Secure Fixed 24m v9"
}
}Old
{
"x-enum-descriptions": {
"abp_000065": "ABP - Renewals - Next Secure Fixed 24m v8"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 24m v9": "ABP - Renewals - Next Secure Fixed 24m v9"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 24m v8": "ABP - Renewals - Next Secure Fixed 24m v8"
}
}16 March 2026
No attributes to display
New
{
"gbr-electricity.meter-rate-profile": "#/components/schemas/Gbr-electricity.meter-rate-profileCharacteristic"
}New
[
{
"$ref": "#/components/schemas/SalesChannelCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.payment-methodCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.meter-rate-profileCharacteristic"
}
]Old
[
{
"$ref": "#/components/schemas/SalesChannelCharacteristic"
},
{
"$ref": "#/components/schemas/Gbr-electricity.payment-methodCharacteristic"
}
]13 March 2026
New
{
"x-enum-descriptions": {
"GBE": "National Grid GBE"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"abp_000065": "ABP - Renewals - Next Secure Fixed 24m v8"
}
}Old
{
"x-enum-descriptions": {
"abp_000065": "ABP - Renewals - Next Secure Fixed 24m v7"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 24m v8": "ABP - Renewals - Next Secure Fixed 24m v8"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 24m v7": "ABP - Renewals - Next Secure Fixed 24m v7"
}
}11 March 2026
New
{
"x-enum-descriptions": {
"EON_WRITE_OFF_PPM_FINAL": "EON_WRITE_OFF_PPM_FINAL"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V15",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V15"
}
}Old
{
"x-enum-descriptions": {
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V11",
"abp_000058": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V8"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V15": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V15",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V15": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V15"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V8": "ABP - Next Smart Saver Renewals - NEXT_SMART_SAVER_FIXED_12M_V8",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V11": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V11"
}
}New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V17",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v5.9",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V17",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v5.9",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v5.9"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V13",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v5.5",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V13",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v5.5",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v5.5"
}
}New
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V17": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V17",
"ABP - Next EV Renewals 2R - Next Drive Smart v5.9": "ABP - Next EV Renewals 2R - Next Drive Smart v5.9",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V17": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V17",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v5.9": "ABP - Next Drive Fixed Renewals - Next Drive Smart v5.9",
"ABP - Next Drive Smart Renewals - Next Drive Smart v5.9": "ABP - Next Drive Smart Renewals - Next Drive Smart v5.9"
}
}Old
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V13": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V13",
"ABP - Next EV Renewals 2R - Next Drive Smart v5.5": "ABP - Next EV Renewals 2R - Next Drive Smart v5.5",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V13": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V13",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v5.5": "ABP - Next Drive Fixed Renewals - Next Drive Smart v5.5",
"ABP - Next Drive Smart Renewals - Next Drive Smart v5.5": "ABP - Next Drive Smart Renewals - Next Drive Smart v5.5"
}
}New
{
"x-enum-descriptions": {}
}Old
{
"x-enum-descriptions": {
"av_campaign": "AV Campaign"
}
}New
{
"x-enum-descriptions": {}
}Old
{
"x-enum-descriptions": {
"AV Campaign": "AV Campaign"
}
}10 March 2026
New
{
"x-enum-descriptions": {
"abp_000065": "ABP - Renewals - Next Secure Fixed 24m v7"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 24m v7": "ABP - Renewals - Next Secure Fixed 24m v7"
}
}Old
{
"x-enum-descriptions": {}
}2 March 2026
New
{
"x-enum-descriptions": {
"abp_000060": "ABP - Renewals - Next Secure Fixed 12m v68"
}
}Old
{
"x-enum-descriptions": {
"abp_000060": "ABP - Renewals - Next Secure Fixed 14m v6"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 12m v68": "ABP - Renewals - Next Secure Fixed 12m v68"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 14m v6": "ABP - Renewals - Next Secure Fixed 14m v6"
}
}27 February 2026
New
{
"x-enum-descriptions": {
"q1_ashp_ending_soon_test_campaign": "q1 ashp ending soon test campaign"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"q1 ashp ending soon test campaign": "q1 ashp ending soon test campaign"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"abp_000063": "ABP - Renewals - Next Secure Fixed 24m v6"
}
}Old
{
"x-enum-descriptions": {
"abp_000063": "ABP - Renewals - Next Secure Fixed 24m v5"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 24m v6": "ABP - Renewals - Next Secure Fixed 24m v6"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 24m v5": "ABP - Renewals - Next Secure Fixed 24m v5"
}
}New
{
"x-validators": [
{
"name": "Validate <code>organisation_number</code>",
"description": "Validate that the given <code>organisation_number</code> has a corresponding organisation registered in the database.",
"possible_errors": [
"partner_organisation_does_not_exist"
]
}
]
}26 February 2026
New
{
"x-enum-descriptions": {
"abp_000060": "ABP - Renewals - Next Secure Fixed 14m v6"
}
}Old
{
"x-enum-descriptions": {
"abp_000060": "ABP - Renewals - Next Secure Fixed 16m v4"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 14m v6": "ABP - Renewals - Next Secure Fixed 14m v6"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 16m v4": "ABP - Renewals - Next Secure Fixed 16m v4"
}
}25 February 2026
New
{
"x-enum-descriptions": {
"abp_000064": "ABP - Next Drive Fixed Renewals - Next Drive Lite V2"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"ABP - Next Drive Fixed Renewals - Next Drive Lite V2": "ABP - Next Drive Fixed Renewals - Next Drive Lite V2"
}
}Old
{
"x-enum-descriptions": {}
}24 February 2026
New
{
"x-enum-descriptions": {
"abp_000060": "ABP - Renewals - Next Secure Fixed 16m v4"
}
}Old
{
"x-enum-descriptions": {
"abp_000060": "ABP - Renewals - Next Secure Fixed 14m v5"
}
}New
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 16m v4": "ABP - Renewals - Next Secure Fixed 16m v4"
}
}Old
{
"x-enum-descriptions": {
"ABP - Renewals - Next Secure Fixed 14m v5": "ABP - Renewals - Next Secure Fixed 14m v5"
}
}New
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V13",
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V11",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v5.5",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V13",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v5.5"
}
}Old
{
"x-enum-descriptions": {
"abp_000041": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V12",
"abp_000057": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V8",
"abp_000059": "ABP - Next Drive Smart Renewals - Next Drive Smart v5.4",
"abp_000041v2": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V12",
"test_ev_cyplv2": "ABP - Next EV Renewals 2R - Next Drive Smart v5.4"
}
}New
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V13": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V13",
"ABP - Next EV Renewals 2R - Next Drive Smart v5.5": "ABP - Next EV Renewals 2R - Next Drive Smart v5.5",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V13": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V13",
"ABP - Next Drive Smart Renewals - Next Drive Smart v5.5": "ABP - Next Drive Smart Renewals - Next Drive Smart v5.5",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V11": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V11"
}
}Old
{
"x-enum-descriptions": {
"ABP - Sainsburys EV Renewals - SAINSBURYS EV V12": "ABP - Sainsburys EV Renewals - SAINSBURYS EV V12",
"ABP - Next EV Renewals 2R - Next Drive Smart v5.4": "ABP - Next EV Renewals 2R - Next Drive Smart v5.4",
"ABP - Sainsburys EV Renewals 2R - Sainsburys EV V12": "ABP - Sainsburys EV Renewals 2R - Sainsburys EV V12",
"ABP - Next Drive Smart Renewals - Next Drive Smart v5.4": "ABP - Next Drive Smart Renewals - Next Drive Smart v5.4",
"ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V8": "ABP - Next Store & Save Renewals - NEXT_SMART_SAVER_FIXED_12M_V8"
}
}New
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V9",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v5.5"
}
}Old
{
"x-enum-descriptions": {
"abp_000056": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V7",
"test_ev_cypl": "ABP - Next Drive Fixed Renewals - Next Drive Smart v5.4"
}
}New
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V9": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V9",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v5.5": "ABP - Next Drive Fixed Renewals - Next Drive Smart v5.5"
}
}Old
{
"x-enum-descriptions": {
"ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V7": "ABP - Next Pumped Renewals - NEXT_PUMPED_FIXED_12M_V7",
"ABP - Next Drive Fixed Renewals - Next Drive Smart v5.4": "ABP - Next Drive Fixed Renewals - Next Drive Smart v5.4"
}
}
No attributes to display
23 February 2026
New
{
"x-enum-descriptions": {
"demandshift_poc_1": "DemandShift - PoC User Test 1"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"DemandShift - PoC User Test 1": "DemandShift - PoC User Test 1"
}
}Old
{
"x-enum-descriptions": {}
}19 February 2026
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 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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]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 contracts are consecutive per supply point",
"description": "Validate that the contracts provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for contracts provided before the current supply period for the supply point. Contracts 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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]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 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 contracts are consecutive per supply point",
"description": "Validate that the contracts provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for contracts provided before the current supply period for the supply point. Contracts 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 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 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 that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]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 contracts are consecutive per supply point",
"description": "Validate that the contracts provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for contracts provided before the current supply period for the supply point. Contracts 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 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 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 all contracts have supply points",
"description": "Validates that contracts provided in the payload have a corresponding supply point.",
"possible_errors": [
"agreement_has_no_matching_meter_point"
]
},
{
"name": "Validate that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
"possible_errors": [
"historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
]
},
{
"name": "Validate unique transaction IDs",
"description": "Validate that all transaction IDs provided are unique.",
"possible_errors": [
"duplicate_transaction_ids",
"missing_transaction_id"
]
},
{
"name": "Validate current statement transactions are after historical statement transactions",
"description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
"possible_errors": [
"historical_statement_transaction_after_current_statement_transaction"
]
},
{
"name": "Validate that there are no historical statement transactions after the last statement closing date",
"description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"historical_statement_transaction_after_last_statement_closing_date"
]
},
{
"name": "Validate that the last statement issue date is on or after the last statement closing date",
"description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
"possible_errors": [
"last_statement_issued_before_closing_date"
]
},
{
"name": "Validate no duplicated ledgers are provided",
"description": "Validate no duplicated ledger codes are in `ledgers` section.",
"possible_errors": [
"duplicate_ledger_entries_found"
]
},
{
"name": "Validate identifiers are unique in ledgers",
"description": "Validate identifier is not declared twice in ledgers.",
"possible_errors": [
"duplicate_identifiers_entries_found"
]
},
{
"name": "Validate ledger identifiers are known",
"description": "Validate ledger identifiers are among supply point identifiers.",
"possible_errors": [
"unknown_ledger_identifiers"
]
},
{
"name": "Validate payment adequacy changes or last payment review date not both",
"description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
"possible_errors": [
"payment_adequacy_changes_and_last_payment_review_date_provided"
]
},
{
"name": "Validate that payment plans and payment schedules for the same ledger are not both in payload",
"description": "Validate that if there are payment plans in the payload, there are not also payment schedules on the same ledger because payment plans create a schedule containing all of the planned payments.",
"possible_errors": [
"payment_plan_and_payment_schedule_not_allowed_on_same_ledger"
]
},
{
"name": "Validate no more than one property for unknown occupier",
"description": "Validate that no more than one property is provided for an unknown occupier account.",
"possible_errors": [
"occupier_account_with_multiple_supply_addresses"
]
},
{
"name": "Validate no direct debit reference for the occupier",
"description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
"possible_errors": [
"dd_reference_for_occupier_account"
]
},
{
"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 that agreements cover the last billed to date",
"description": "Validate that there is an agreement covering the last billed to date for each supply point.",
"possible_errors": [
"no_agreement_covering_last_billed_to_date"
]
},
{
"name": "Validate debt and debts",
"description": "Validates that both debt and debts are not specified in the payload.",
"possible_errors": [
"debt_and_debts_are_defined"
]
},
{
"name": "Validate that a last billed to date has been provided correctly",
"description": "Validate that, for each meter, a last billed to date has been provided in the appropriate place. For electricity meters, it must be provided on each of the meter's settlement registers. For gas meters, it must be provided on the meter. This validation does not apply to meters with half-hourly billing, or meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
"possible_errors": [
"last_billed_to_date_not_found"
]
},
{
"name": "Validate that current statement transactions are not before the current statement opening date",
"description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date. Note that any prepay vend transactions are not included in the above check.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
"description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"balance_mismatch_on_transfer_balance"
]
},
{
"name": "Validate that the summed historical statement transactions match the last statement balance",
"description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>. Prepay transactions (those with the <code>to_prepay_meter_serial_number</code> field on the transaction) are filtered out as these are treated separately during account creation.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"name": "Validate next bill due date provided for quarterly billing",
"description": "Validate that if <code>use_industry_billing</code> is false in the account billing options and the <code>period_length</code> is <code>QUARTERLY</code>, then a <code>next_bill_due_date</code> is provided.",
"possible_errors": [
"next_bill_to_date_not_provided_for_quarterly_billing"
]
},
{
"name": "Validate account billing options",
"description": "Validate that account billing options have only been provided for business accounts.",
"possible_errors": [
"account_billing_options_provided_for_domestic_accounts"
]
},
{
"name": "Validate alternative phone number is unique",
"description": "Validate customers defined in the payload do not have the same alternative phone numbers.",
"possible_errors": [
"duplicated_alternative_phone_numbers"
]
},
{
"name": "Validate that prepay transactions target initialised prepay meters",
"description": "Validate that if <code>current_statement_transactions</code> or <code>historical_statement_transactions</code> target a prepay meter (i.e. has the <code>to_prepay_meter_serial_number</code> field), then a prepay meter with that serial number exists in the payload. A prepay meter is identified in the payload by the presence of <code>prepay_details</code>.",
"possible_errors": [
"transactions_target_non_initialised_prepay_meter"
]
},
{
"name": "Validate tax exemption for appropriate account type",
"description": "Validate that the tax exemption is only in place for business accounts.",
"possible_errors": [
"tax_exemptions_provided_for_domestic_account"
]
},
{
"name": "Validate prepay transfer vend read dates match last billed to date",
"description": "Validate that the transfer vend read dates match the last billed to date. This only applies to prepay meters.The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
"possible_errors": [
"prepay_details_on_fully_billed_meter",
"transfer_vend_read_date_must_match_last_billed_to_date"
]
},
{
"name": "Validate that the tariff type and meter point type match",
"description": "Validate that the tariff we have on a given contract matches the meter point type. For example, check eco7 (2-rate) meter points don't have single-rate tariffs or vice versa.",
"possible_errors": [
"tariff_type_does_not_match_meter_point_type"
]
},
{
"name": "Validate bespoke rates",
"description": "Validate that if bespoke rates have been set the account is business.",
"possible_errors": [
"business_fields_provided_for_domestic_accounts"
]
},
{
"name": "Validate billing address provided",
"description": "Validate <code>billing_address1</code> and <code>billing_postcode</code> are provided for non-occupier accounts.",
"possible_errors": [
"billing_address_not_provided"
]
},
{
"name": "Validate current AQ for billable meter point",
"description": "Check that we have a currently valid AQ for a billable MPRN.",
"possible_errors": [
"no_current_or_future_aq_entry_found"
]
},
{
"name": "Validate all billable meter points are covered by agreements in the payload",
"description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
"possible_errors": [
"meter_point_with_no_agreement",
"meterpoint_with_agreement_not_on_supply"
]
},
{
"name": "Validate transfer readings exist on active gas meters",
"description": "Validate that each active gas meter has a single transfer reading provided.",
"possible_errors": [
"active_gas_meter_with_multiple_transfer_readings",
"active_gas_meter_without_transfer_reading",
"reading_meter_fully_billed"
]
},
{
"name": "Validate EACs provided for active registers",
"description": "Validate that EACs are provided in the <code>eac_history</code> array for each active electricity register. EACs are matched to registers using the <code>tpr</code> field present on both the EAC and register objects.",
"possible_errors": [
"missing_eacs_for_active_register_tpr"
]
},
{
"name": "Validate that prepay meters are matched to agreements of the correct type",
"description": "Validate that each prepay meter has a matching agreement on a prepay tariff, and similarly non-prepay meters on non-prepay tariffs. Note that this validation only applies for active meters and agreements.",
"possible_errors": [
"tariff_type_does_not_match_meter_type"
]
},
{
"name": "Validate each agreement is not effective before the product is available",
"description": "Ensures that the agreement <code>effective_from</code> is not before the datetime the agreement's product is available from. We check this if Kraken will be responsible for billing before the product is available and the product is a variable or tracker product.",
"possible_errors": [
"agreement_effective_from_before_product_available_from"
]
},
{
"name": "Validate that all variable products on a contract have start dates after the product start date",
"description": "Validate that any variable products that are part of a contract only become effective after the product is available.",
"possible_errors": [
"agreement_cannot_start_before_product_available"
]
},
{
"name": "Validate that no meter points are ending supply in the future",
"description": "Ensure that all meters points have either ended supply or are not planned for supply to end.",
"possible_errors": [
"future_supply_end_date"
]
},
{
"name": "Validate that all off supply meter points with meters have a final reading",
"description": "Ensure that all off supply meter points which have meters have a final reading on their end date.",
"possible_errors": [
"no_reading_on_supply_end_date"
]
},
{
"name": "Validate that no billable meter points are starting supply in the future",
"description": "Validate that no billable meter points are set to start supply in the future.",
"possible_errors": [
"future_supply_start_date"
]
},
{
"name": "Validate that all billable meter points have active meters",
"description": "Ensure that all meter points that are billable have active meters or have an unmetered measurement class provided in the payload.",
"possible_errors": [
"meter_point_with_no_meters"
]
},
{
"name": "Validate that at least one of the meter points needs billing",
"description": "Ensure that at least one of the meter points for this account are billable.",
"possible_errors": [
"no_supply_point_on_supply"
]
},
{
"name": "Validate that a domestic account does not have any business only supply points",
"description": "Validate that a domestic account does not have supply points with supply types <code>REGOS_EXPORT_CERTIFICATES</code> or <code>ROCS_EXPORT_CERTIFICATES</code> which are business only supply types.",
"possible_errors": [
"business_supply_type_on_domestic_account"
]
},
{
"name": "Validate business account has account billing options with <code>period_start_day</code> and <code>period_length</code>",
"description": "Validate that business account's <code>account_billing_options</code> include period start day and period length if <code>account_billing_options</code> is being provided. If <code>account_billing_options</code> is not provided then the defaults of 1 for <code>period_start_day</code> and \"MONTHLY\" for <code>period_length</code> will be used.",
"possible_errors": [
"business_account_missing_billing_options"
]
},
{
"name": "Validate that customers provided for business accounts",
"description": "Validate that at least one customer is provided for business accounts. Customers are needed for business accounts to ensure that meter points can be successfully registered for supply.",
"possible_errors": [
"business_account_missing_customers"
]
},
{
"name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
"description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
"possible_errors": [
"current_statement_transaction_before_last_billed_to_date"
]
},
{
"name": "Validate transfer readings exist on active electricity registers",
"description": "Validate that each active electricity meter register has a single transfer reading provided.",
"possible_errors": [
"missing_transfer_reading_for_register",
"multiple_transfer_readings_for_register"
]
}
]