Data Import REST API Changelog
This page shows recent changes to Data Import REST API.
17 April 2026 - Latest
New
{
"items": {
"x-enum-descriptions": {
"PAYER": "PAYER"
}
}
}Old
{
"items": {
"x-enum-descriptions": {}
}
}New
{
"items": {
"x-enum-descriptions": {
"PAYER": "PAYER"
}
}
}Old
{
"items": {
"x-enum-descriptions": {}
}
}New
{
"x-enum-descriptions": {
"PAYER": "PAYER"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"items": {
"x-enum-descriptions": {
"PAYER": "PAYER"
}
}
}Old
{
"items": {
"x-enum-descriptions": {}
}
}
No attributes to display
7 April 2026
No attributes to display
No attributes to display
New
{
"allOf": [
{
"$ref": "#/components/schemas/JpnFuelBasedAccount"
}
]
}Old
{
"allOf": [
{
"$ref": "#/components/schemas/JpnAccount"
}
]
}New
{
"allOf": [
{
"$ref": "#/components/schemas/JpnFuelBasedAccount"
}
]
}Old
{
"allOf": [
{
"$ref": "#/components/schemas/JpnAccount"
}
]
}31 March 2026
No attributes to display
30 March 2026
No attributes to display
No attributes to display
27 March 2026
New
{
"x-enum-descriptions": {
"CUSTOM": "Custom"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"CUSTOM": "Custom"
}
}Old
{
"x-enum-descriptions": {}
}26 March 2026
New
{
"x-enum-descriptions": {
"usage_billing_notification_web": "\u304a\u5ba2\u3055\u307e\u304c\u6bce\u6708\u306e\u300c\u3054\u4f7f\u7528\u91cf\u30fb\u6599\u91d1\u306e\u304a\u77e5\u3089\u305b\u300d\u3092Web\u660e\u7d30\u3067\u53d7\u3051\u53d6\u308b",
"usage_billing_notification_post": "\u304a\u5ba2\u3055\u307e\u304c\u6bce\u6708\u306e\u300c\u3054\u4f7f\u7528\u91cf\u30fb\u6599\u91d1\u306e\u304a\u77e5\u3089\u305b\u300d\u3092\u7d19\u3067\u53d7\u3051\u308b",
"usage_billing_notification_email": "\u304a\u5ba2\u3055\u307e\u304c\u6bce\u6708\u306e\u300c\u3054\u4f7f\u7528\u91cf\u30fb\u6599\u91d1\u306e\u304a\u77e5\u3089\u305b\u300d\u3092Email\u3067\u53d7\u3051\u308b"
}
}Old
{
"x-enum-descriptions": {
"usage_billing_notificationmethod_consent": "\u304a\u5ba2\u3055\u307e\u304c\u6bce\u6708\u306e\u300c\u3054\u4f7f\u7528\u91cf\u30fb\u6599\u91d1\u306e\u304a\u77e5\u3089\u305b\u300d\u3092\u7d19\u30fbWeb\u30fb\u30e1\u30fc\u30eb\u30fb\u4e0d\u8981\u306e\u3069\u308c\u3067\u53d7\u3051\u308b\u304b\u306e\u5e0c\u671b\u3092\u7ba1\u7406"
}
}New
{
"x-enum-descriptions": {
"usage_billing_notification_web": "\u304a\u5ba2\u3055\u307e\u304c\u6bce\u6708\u306e\u300c\u3054\u4f7f\u7528\u91cf\u30fb\u6599\u91d1\u306e\u304a\u77e5\u3089\u305b\u300d\u3092Web\u660e\u7d30\u3067\u53d7\u3051\u53d6\u308b",
"usage_billing_notification_post": "\u304a\u5ba2\u3055\u307e\u304c\u6bce\u6708\u306e\u300c\u3054\u4f7f\u7528\u91cf\u30fb\u6599\u91d1\u306e\u304a\u77e5\u3089\u305b\u300d\u3092\u7d19\u3067\u53d7\u3051\u308b",
"usage_billing_notification_email": "\u304a\u5ba2\u3055\u307e\u304c\u6bce\u6708\u306e\u300c\u3054\u4f7f\u7528\u91cf\u30fb\u6599\u91d1\u306e\u304a\u77e5\u3089\u305b\u300d\u3092Email\u3067\u53d7\u3051\u308b"
}
}Old
{
"x-enum-descriptions": {
"usage_billing_notificationmethod_consent": "\u304a\u5ba2\u3055\u307e\u304c\u6bce\u6708\u306e\u300c\u3054\u4f7f\u7528\u91cf\u30fb\u6599\u91d1\u306e\u304a\u77e5\u3089\u305b\u300d\u3092\u7d19\u30fbWeb\u30fb\u30e1\u30fc\u30eb\u30fb\u4e0d\u8981\u306e\u3069\u308c\u3067\u53d7\u3051\u308b\u304b\u306e\u5e0c\u671b\u3092\u7ba1\u7406"
}
}New
{
"x-enum-descriptions": {
"KYUDEN_MVP": "Kyuden MVP"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"KYUDEN_MVP": "Kyuden MVP"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"KYUDEN_MVP": "Kyuden MVP"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"KYUDEN_MVP": "Kyuden MVP"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"KYUDEN_MVP": "Kyuden MVP"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"x-enum-descriptions": {
"KYUDEN_MVP": "Kyuden MVP"
}
}Old
{
"x-enum-descriptions": {}
}New
{
"enum": [
"contract_electronic_consent",
"usage_billing_notificationmethod_consent",
"Web_statement_delivery_channel_consent",
"Marketing_offer_consent"
],
"type": "string",
"x-spec-enum-id": "59eeb091ca826bc0",
"x-enum-descriptions": {
"Marketing_offer_consent": "My\u4e5d\u96fb\u3067\u306e\u300c\u304a\u77e5\u3089\u305b\u30e1\u30fc\u30eb\uff0f\u30e1\u30eb\u30de\u30ac\u53d7\u4fe1\u53ef\u5426\u300d\u306e\u30aa\u30d7\u30c8\u30a4\u30f3\uff0f\u30aa\u30d7\u30c8\u30a2\u30a6\u30c8\u7ba1\u7406\u3002CFS\u5185\u306e\u4f1a\u54e1\u60c5\u5831\u30fb\u5171\u901aID API\u306e\u4e21\u65b9\u3067\u53c2\u7167\u3055\u308c\u3001\u30de\u30fc\u30b1\u30c6\u30a3\u30f3\u30b0\u7cfb\u30e1\u30fc\u30eb\u914d\u4fe1\u306e\u53ef\u5426\u5224\u5b9a\u306b\u4f7f\u7528\u3002",
"contract_electronic_consent": "\u96fb\u6c17\u4e8b\u696d\u6cd5\u306e\u300c\u6d88\u8cbb\u8005\u8aac\u660e\u66f8\u9762\u300d\u3092Web\u3067\u95b2\u89a7\u3059\u308b\u3053\u3068\u306b\u540c\u610f\u3057\u3066\u3044\u308b\u304b\uff08\u96fb\u78c1\u7684\u65b9\u6cd5\uff09\u3092\u5951\u7d04\u5358\u4f4d\u3067\u7ba1\u7406\u3002Web\u540c\u610f\u6e08\u307f\u304b\u3069\u3046\u304b\u3092\u5f8c\u7d9a\u5e33\u7968\u30fb\u901a\u77e5\u30ed\u30b8\u30c3\u30af\u3067\u53c2\u7167\u3002",
"Web_statement_delivery_channel_consent": "\u4f7f\u7528\u91cf\u304a\u77e5\u3089\u305b\u65b9\u6cd5\u304cWeb\u660e\u7d30\u306b\u306a\u3063\u305f\u969b\u3001\u300cWeb\u660e\u7d30\u958b\u59cb\u306e\u3054\u6848\u5185\u300d\u3092\u3069\u306e\u30c1\u30e3\u30cd\u30eb\u3067\u9001\u308b\u304b\uff0f\u9001\u3089\u306a\u3044\u304b\u306e\u5e0c\u671b\u3092\u7ba1\u7406\u3002",
"usage_billing_notificationmethod_consent": "\u304a\u5ba2\u3055\u307e\u304c\u6bce\u6708\u306e\u300c\u3054\u4f7f\u7528\u91cf\u30fb\u6599\u91d1\u306e\u304a\u77e5\u3089\u305b\u300d\u3092\u7d19\u30fbWeb\u30fb\u30e1\u30fc\u30eb\u30fb\u4e0d\u8981\u306e\u3069\u308c\u3067\u53d7\u3051\u308b\u304b\u306e\u5e0c\u671b\u3092\u7ba1\u7406"
}
}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": [
"contract_electronic_consent",
"usage_billing_notificationmethod_consent",
"Web_statement_delivery_channel_consent",
"Marketing_offer_consent"
],
"type": "string",
"x-spec-enum-id": "59eeb091ca826bc0",
"x-enum-descriptions": {
"Marketing_offer_consent": "My\u4e5d\u96fb\u3067\u306e\u300c\u304a\u77e5\u3089\u305b\u30e1\u30fc\u30eb\uff0f\u30e1\u30eb\u30de\u30ac\u53d7\u4fe1\u53ef\u5426\u300d\u306e\u30aa\u30d7\u30c8\u30a4\u30f3\uff0f\u30aa\u30d7\u30c8\u30a2\u30a6\u30c8\u7ba1\u7406\u3002CFS\u5185\u306e\u4f1a\u54e1\u60c5\u5831\u30fb\u5171\u901aID API\u306e\u4e21\u65b9\u3067\u53c2\u7167\u3055\u308c\u3001\u30de\u30fc\u30b1\u30c6\u30a3\u30f3\u30b0\u7cfb\u30e1\u30fc\u30eb\u914d\u4fe1\u306e\u53ef\u5426\u5224\u5b9a\u306b\u4f7f\u7528\u3002",
"contract_electronic_consent": "\u96fb\u6c17\u4e8b\u696d\u6cd5\u306e\u300c\u6d88\u8cbb\u8005\u8aac\u660e\u66f8\u9762\u300d\u3092Web\u3067\u95b2\u89a7\u3059\u308b\u3053\u3068\u306b\u540c\u610f\u3057\u3066\u3044\u308b\u304b\uff08\u96fb\u78c1\u7684\u65b9\u6cd5\uff09\u3092\u5951\u7d04\u5358\u4f4d\u3067\u7ba1\u7406\u3002Web\u540c\u610f\u6e08\u307f\u304b\u3069\u3046\u304b\u3092\u5f8c\u7d9a\u5e33\u7968\u30fb\u901a\u77e5\u30ed\u30b8\u30c3\u30af\u3067\u53c2\u7167\u3002",
"Web_statement_delivery_channel_consent": "\u4f7f\u7528\u91cf\u304a\u77e5\u3089\u305b\u65b9\u6cd5\u304cWeb\u660e\u7d30\u306b\u306a\u3063\u305f\u969b\u3001\u300cWeb\u660e\u7d30\u958b\u59cb\u306e\u3054\u6848\u5185\u300d\u3092\u3069\u306e\u30c1\u30e3\u30cd\u30eb\u3067\u9001\u308b\u304b\uff0f\u9001\u3089\u306a\u3044\u304b\u306e\u5e0c\u671b\u3092\u7ba1\u7406\u3002",
"usage_billing_notificationmethod_consent": "\u304a\u5ba2\u3055\u307e\u304c\u6bce\u6708\u306e\u300c\u3054\u4f7f\u7528\u91cf\u30fb\u6599\u91d1\u306e\u304a\u77e5\u3089\u305b\u300d\u3092\u7d19\u30fbWeb\u30fb\u30e1\u30fc\u30eb\u30fb\u4e0d\u8981\u306e\u3069\u308c\u3067\u53d7\u3051\u308b\u304b\u306e\u5e0c\u671b\u3092\u7ba1\u7406"
}
}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"
}24 March 2026
New
{
"x-removal-date": "2026-04-29"
}27 February 2026
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"
]
}
]
}24 February 2026
New
{
"enum": [
"DUMMY"
],
"type": "string",
"x-spec-enum-id": "a7ccaa5ad6269135",
"x-enum-descriptions": {
"DUMMY": "Dummy processor"
}
}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": [
"DUMMY"
],
"type": "string",
"x-spec-enum-id": "a7ccaa5ad6269135",
"x-enum-descriptions": {
"DUMMY": "Dummy processor"
}
}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": [
"DUMMY"
],
"type": "string",
"x-spec-enum-id": "a7ccaa5ad6269135",
"x-enum-descriptions": {
"DUMMY": "Dummy processor"
}
}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"
}
No attributes to display
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 and normalize customer family name",
"description": "Validate that customers linked to non-business accounts have a family name. If a business account customer does not have a family name, normalize the family and kanji to 'Business' and kana name to \u30d3\u30b8\u30cd\u30b9.",
"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 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 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 a last billed to date has been provided correctly",
"description": "Validate that last billed to date has been provided for electricity, gas and water meters. This validation does not apply to 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 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 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.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"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 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 <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.",
"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>.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"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 no agreements start before the supply start date",
"description": "Validate that no agreements start before the supply start date of the associated meter point.",
"possible_errors": [
"agreement_starting_before_meter_point_ssd"
]
},
{
"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 portfolio lead account has no agreement since it makes no sense for it to have one",
"description": "Validate that a portfolio lead account has no agreement.",
"possible_errors": [
"portfolio_lead_has_an_agreement"
]
},
{
"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 multiple properties not allowed",
"description": "Ensure that there is only one supply address.",
"possible_errors": [
"multiple_properties_not_allowed"
]
},
{
"name": "Validate if account type matches business information",
"description": "Ensure that is_business flag is set to True if business information is provided, and vice versa.",
"possible_errors": [
"is_business_must_be_false",
"is_business_must_be_true"
]
},
{
"name": "Check that agreement period covers billing period",
"description": "Ensure that agreement period covers entire billing period.",
"possible_errors": [
"agreement_should_cover_unbilled_period"
]
},
{
"name": "Validate portfolio lead account has last_statement_closing_date",
"description": "Ensure that last statement closing date is provided for portfolio lead accounts.",
"possible_errors": [
"lead_account_must_have_last_statement_closing_date"
]
},
{
"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"
]
}
]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 and normalize customer family name",
"description": "Validate that customers linked to non-business accounts have a family name. If a business account customer does not have a family name, normalize the family and kanji to 'Business' and kana name to \u30d3\u30b8\u30cd\u30b9.",
"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 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 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 a last billed to date has been provided correctly",
"description": "Validate that last billed to date has been provided for electricity, gas and water meters. This validation does not apply to 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 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 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.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"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 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 <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.",
"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>.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"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 no contracts start before the supply start date",
"description": "Validate that no contracts start before the supply start date of the associated meter point.",
"possible_errors": [
"agreement_starting_before_meter_point_ssd"
]
},
{
"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 portfolio lead account has no agreement since it makes no sense for it to have one",
"description": "Validate that a portfolio lead account has no agreement.",
"possible_errors": [
"portfolio_lead_has_an_agreement"
]
},
{
"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 multiple properties not allowed",
"description": "Ensure that there is only one supply address.",
"possible_errors": [
"multiple_properties_not_allowed"
]
},
{
"name": "Validate if account type matches business information",
"description": "Ensure that is_business flag is set to True if business information is provided, and vice versa.",
"possible_errors": [
"is_business_must_be_false",
"is_business_must_be_true"
]
},
{
"name": "Check that agreement period covers billing period",
"description": "Ensure that agreement period covers entire billing period.",
"possible_errors": [
"agreement_should_cover_unbilled_period"
]
},
{
"name": "Validate portfolio lead account has last_statement_closing_date",
"description": "Ensure that last statement closing date is provided for portfolio lead accounts.",
"possible_errors": [
"lead_account_must_have_last_statement_closing_date"
]
},
{
"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"
]
}
]New
[
{
"name": "Validate <code>\u2068supply_end_date\u2069</code> not before <code>\u2068supply_start_date\u2069</code>",
"description": "Validates that <code>\u2068supply_end_date\u2069</code>, if given, is on or later than <code>\u2068supply_start_date\u2069</code>.",
"possible_errors": [
"start_date_later_than_end_date"
]
},
{
"name": "Validate agreements do not start before supply start date",
"description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
"possible_errors": [
"agreement_start_date_before_supply_start_date"
]
},
{
"name": "Validate that exactly one active agreement is provided",
"description": "Validate that exactly one active agreement is provided for the supply point if it is already on supply. If the <code>supply_start_date</code> is in the future or the <code>supply_end_date</code> is in the past then we do not check for an active agreement.",
"possible_errors": [
"exactly_one_active_agreement_required"
]
},
{
"name": "Validate that a future agreement provided if supply start date is in the future",
"description": "Validate that exactly one future agreement is provided if the supply start date is in the future. This future agreement must start on the supply start date.",
"possible_errors": [
"future_agreement_required"
]
},
{
"name": "Validate single gas supply details for gas supply point",
"description": "Ensure that there is only one gas supply details entry for any given gas supply point.",
"possible_errors": [
"multiple_gas_supply_details_not_allowed"
]
},
{
"name": "Validate supply detail's valid_from_date and last_billed_to_date",
"description": "Ensure that valid_from_date is prior to last_billed_to_date",
"possible_errors": [
"supply_details_must_be_before_last_billed_to_date"
]
},
{
"name": "Validate correct supply details type for supply type",
"description": "Ensure that the supply details type matches the given supply type.",
"possible_errors": [
"mismatched_supply_details_for_supply_type",
"missing_supply_details_for_supply_type"
]
},
{
"name": "Validate Supply Point Identification Number (SPIN) for provided market type",
"description": "Check that the Supply Point Identification Number (SPIN) is valid for the provided market type.",
"possible_errors": [
"invalid_spin_for_market"
]
}
]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 single gas supply details for gas supply point",
"description": "Ensure that there is only one gas supply details entry for any given gas supply point.",
"possible_errors": [
"multiple_gas_supply_details_not_allowed"
]
},
{
"name": "Validate supply detail's valid_from_date and last_billed_to_date",
"description": "Ensure that valid_from_date is prior to last_billed_to_date",
"possible_errors": [
"supply_details_must_be_before_last_billed_to_date"
]
},
{
"name": "Validate correct supply details type for supply type",
"description": "Ensure that the supply details type matches the given supply type.",
"possible_errors": [
"mismatched_supply_details_for_supply_type",
"missing_supply_details_for_supply_type"
]
},
{
"name": "Validate Supply Point Identification Number (SPIN) for provided market type",
"description": "Check that the Supply Point Identification Number (SPIN) is valid for the provided market type.",
"possible_errors": [
"invalid_spin_for_market"
]
}
]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 and normalize customer family name",
"description": "Validate that customers linked to non-business accounts have a family name. If a business account customer does not have a family name, normalize the family and kanji to 'Business' and kana name to \u30d3\u30b8\u30cd\u30b9.",
"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 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 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 a last billed to date has been provided correctly",
"description": "Validate that last billed to date has been provided for electricity, gas and water meters. This validation does not apply to 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 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 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.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"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 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 <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.",
"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>.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"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 no contracts start before the supply start date",
"description": "Validate that no contracts start before the supply start date of the associated meter point.",
"possible_errors": [
"agreement_starting_before_meter_point_ssd"
]
},
{
"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 portfolio lead account has no agreement since it makes no sense for it to have one",
"description": "Validate that a portfolio lead account has no agreement.",
"possible_errors": [
"portfolio_lead_has_an_agreement"
]
},
{
"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 multiple properties not allowed",
"description": "Ensure that there is only one supply address.",
"possible_errors": [
"multiple_properties_not_allowed"
]
},
{
"name": "Validate if account type matches business information",
"description": "Ensure that is_business flag is set to True if business information is provided, and vice versa.",
"possible_errors": [
"is_business_must_be_false",
"is_business_must_be_true"
]
},
{
"name": "Check that agreement period covers billing period",
"description": "Ensure that agreement period covers entire billing period.",
"possible_errors": [
"agreement_should_cover_unbilled_period"
]
},
{
"name": "Validate portfolio lead account has last_statement_closing_date",
"description": "Ensure that last statement closing date is provided for portfolio lead accounts.",
"possible_errors": [
"lead_account_must_have_last_statement_closing_date"
]
},
{
"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"
]
}
]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 and normalize customer family name",
"description": "Validate that customers linked to non-business accounts have a family name. If a business account customer does not have a family name, normalize the family and kanji to 'Business' and kana name to \u30d3\u30b8\u30cd\u30b9.",
"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 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 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 a last billed to date has been provided correctly",
"description": "Validate that last billed to date has been provided for electricity, gas and water meters. This validation does not apply to 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 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 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.",
"possible_errors": [
"current_statement_transaction_before_current_statement_opening_date"
]
},
{
"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 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 <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.",
"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>.",
"possible_errors": [
"historical_statement_transactions_balance_mismatch"
]
},
{
"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 no contracts start before the supply start date",
"description": "Validate that no contracts start before the supply start date of the associated meter point.",
"possible_errors": [
"agreement_starting_before_meter_point_ssd"
]
},
{
"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 portfolio lead account has no agreement since it makes no sense for it to have one",
"description": "Validate that a portfolio lead account has no agreement.",
"possible_errors": [
"portfolio_lead_has_an_agreement"
]
},
{
"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 multiple properties not allowed",
"description": "Ensure that there is only one supply address.",
"possible_errors": [
"multiple_properties_not_allowed"
]
},
{
"name": "Validate if account type matches business information",
"description": "Ensure that is_business flag is set to True if business information is provided, and vice versa.",
"possible_errors": [
"is_business_must_be_false",
"is_business_must_be_true"
]
},
{
"name": "Check that contract period covers billing period",
"description": "Ensure that contract period covers entire billing period.",
"possible_errors": [
"contract_should_cover_unbilled_period"
]
},
{
"name": "Validate portfolio lead account has last_statement_closing_date",
"description": "Ensure that last statement closing date is provided for portfolio lead accounts.",
"possible_errors": [
"lead_account_must_have_last_statement_closing_date"
]
},
{
"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"
]
}
]18 February 2026
New
{
"ELEC_TARIFF_TYPE": "#/components/schemas/ElecTariffTypeCharacteristic"
}New
[
{
"$ref": "#/components/schemas/SalesChannelCharacteristic"
},
{
"$ref": "#/components/schemas/ElecTariffTypeCharacteristic"
}
]Old
[
{
"$ref": "#/components/schemas/SalesChannelCharacteristic"
}
]13 February 2026
Use instead
consents